Ask HN: Have you coded any productivity software just for yourself?

51 points by marckohlbrugge ↗ HN
I posted this question on my Twitter and got a lot of interesting replies[1]

Curious to hear what HN is building for private use.

[1] https://twitter.com/marckohlbrugge/status/1786658603769991375

95 comments

[ 0.58 ms ] story [ 419 ms ] thread
I have very many tools just for myself on all platforms I work on/with. I tend to automate whatever I do (or anticipate to do) more than once. I started doing this in the 80s.
This is where I'm at currently.

I'm finally in a position to be able to create custom scripts (Powershell) to help automate tasks. The ease of using Powershell+SQLite to creat minimalist "programs" has been incredibly addictive.

Yes, quite a lot (but eventually shared with other people); examples:

- https://github.com/rochus-keller/CrossLine

- https://github.com/rochus-keller/FlowLine2

- https://github.com/rochus-keller/WorkTree

- https://github.com/DoorScope

The first one I'm still using every day and there are several hundered downloads each month.

You've got pretty impressive ideas and projects on GitHub.

I think you would get way more traction if the build instructions from hell would be eased up, and libraries would be managed with a package manager like [1] conan.

Is there a specific reason for not using a package/dependency manager in your projects? I mean, at this point, git submodules would be easier, and that's not something good to talk about because of all the --init --recursive pitfalls.

[1] https://docs.conan.io/2/tutorial.html

Thanks.

Getting traction is not the primary goal ;-)

Actually CrossLine, which is the tool I still use and maintain, is pretty easy to build. When I implemented these tools, there were no package managers; and I actually don't like tools, which download an unbounded number of misterious things of any size, but prefer to be in charge myself.

And that is precisely the advantage of open source: if someone thinks that something can be done better, they can just do it.

Not exactly coding but I have been nerding out of Alfred workflows. With the ability to open browsers tabs based on url patterns and fire JavaScript or click the mouse on x,y coordinates I am saving a lot of time of repetitive actions. I’m not sure how I lived without Alfred for so long.
Got any code examples you can share? I’ve been using Alfred as a glorified app launcher forever (with a few ither integrations) but never did anything too fancy with it.
One of my unfinished side project is a physical time tracking. Nothing fancy, just few color buttons, an ESP32, an MQTT server and a unfinished frontend.

Just need to find the time to finish it and release open source.

I have my own shell scripting replacement that I use for all my scripting tasks now. It's based on Kotlin and has a lot of quality-of-life features that bash/zsh/python etc don't have.

I uploaded the docs to share the details with friends and it can be downloaded [1], but at this time it's not productized in any way. The public-facing docs are incomplete (there are more that I have private), it doesn't commit to backwards compatibility, it needs to be faster to compile scripts and I'd need to improve the IntelliJ plugin etc.

Every so often I think about open sourcing it so I can use it in more contexts than just private use, but running open source projects can be a lot of work, it depends on some libraries that would have to go first, and I have customers to attend to so I just end up not getting around to it.

[1] https://hshell.hydraulic.dev/14.1.100/

I'm not much of a developer, but I found these useful:

1) An auto-start manager for i3/Sway. A script around a structured config... with things I want to run on-login, under certain circumstances.

When a work day, when the weekend, etc. Conditional automatic setup of my apps, windows, and their arrangement

2) A note taker/organizer, run by the first thing. Basically a wrapper around 'vim' with a calendar week per file/tab. I open this week and the previous week by default

I made a bunch, as far as I know I'm the only one using them:

An advanced TODO list app with calendar and development-oriented features: https://github.com/DexterLagan/todo-master

A MySQL database manager: https://github.com/DexterLagan/database-master

A CSV->SQL tool: https://github.com/DexterLagan/csv-to-sql

A one-click invoicing tool: https://github.com/DexterLagan/invoicer

A photo folder organization tool: https://github.com/DexterLagan/picture-mover

A photo dupe killer (fixes botched Adobe imports from SD cards and cameras): https://github.com/DexterLagan/delete-duplicate-pics

A Hosts file installer for winhelp2002: https://github.com/DexterLagan/hosts-installer

A tax filing helper: https://github.com/DexterLagan/tax-helper

A CSV file analyzer for programmers: https://github.com/DexterLagan/csv-analyzer

A tiny Web browser meant to automatically search for text on the clipboard: https://github.com/DexterLagan/auto-search

A clipboard dashboard-type app: https://github.com/DexterLagan/paster

A Gnome .desktop file generator: https://github.com/DexterLagan/launcher-maker

I've made simple tool to make invocation traces in java. I had to fix errors in BIG project where sometimes invocation goes throught several layers (gui -> local coordinator -> remote coordinator -> remote server and result back again through another round of functions back to gui) and some of the interactions are configurable at runtime. So I've made java agent which can install logger in methods and classes specified by regex (like "com\.company\.project\.class\.method\(.+"), which then logs all calls along with arguments. VERY usable for checking which path was actually taken for invalid executions. Not in releasable state yet, but I will someday release it.
Yes! Finally something relevant I can post to hacker news

I use this little script https://github.com/jmacc93/paste-to-tmux-script daily. Its for pasting your current clipboard item to a target tmux session, along with very simple dsl for controlling which tmux target to send to, opening the tmux target, killing tmux sessions, etc. It makes a vastly, vastly better and more productive repl for me. The workflow for using it looks like typically is like: use `@sw name_of_target`, `@open`, `name_of_executable`, then move my cursor to something I want to evaluate, use ctrl-c to copy the line, and ctrl-. to send it to tmux

I think I've changed stuff around since I last updated that repo, though, but the general idea and skeleton is there, if anyone wants to use it / hack on it. And I'm gonna do a rewrite of it soon, I think, so that instead of using a dsl (the `@...` forms above) it uses `!...` or some similar form to execute arbitrary shell commands

I'm hoping to (soon hopefully) integrate it with my https://github.com/jmacc93/noca notebook canvas program as well

My most used tool is a command line script I made which takes copied text input and applies some formatting to it, with flags that control what exactly is done. The primary use-case is formatting text from Excel documents/csv into SQL lists or table inserts. It's saved me tens of hours at least in the ~year since I completed it, maybe more.
I started efforts on a script to take voice recordings from my iPhone and transcribe them into markdown I can load into Obsidian. I still like to take handwritten notes, but it is tedious to always type these out into Obsidian.

This solution lets me just quickly read them in to the default voice recording app on the iPhone.

I built a platform for developing "mini" webapps. My thesis is that "one size does not fit all" in many domains, such a productivity, life-logging, health tracking, etc. So by using my platform you can build many useful apps with just JS code that runs in the browser and syncs back to a "primitive server" (the server just implements a couple of basic operations). In principle you can use any front-end framework, but in my work I just use vanilla JS that composes HTML strings and plugs it into div tags.

Main repo: https://github.com/comperical/WebWidgets/

Open core install guide: https://github.com/comperical/WebWidgets/tree/main/server/sc...

Home page (currently rehabbing): https://webwidgets.io/

This is super cool. I don't know if motivation to build custom widget but very nice architecture.
I made https://github.com/JoshuaEstes/pms to help me learn different shells and to also make it easier to work on the CLI for me. It makes it a lot easier to setup my laptop and such as well. It also helps me manage my dotfiles.

https://github.com/JoshuaEstes/CheatSheets was used to help me learn different shortcut keys for different programs and apps (tmux, vim, mutt, git, etc.). It's just a collection of what I found useful or found myself always looking up the same stuff. Now it's mostly used as a reference from time to time.

WebExtension for new tab control, with custom shortcuts, embedded simple kanban (trello and notes).

Keeps sticky note off desktop for quick notes and easy reminders. Win/win.

Yes, I have written extensions or simple functions for emacs.

My latest one is a minor mode called markdown-notebook [1]. It lets you add and execute python codeblocks into markdown files. The results of the codeblock are inserted just below the codeblock. It's a reasonable way to add code examples to your readme or github wiki without having to copy and paste things from the terminal.

Still need to do some work to get it to paste images (say from matplotlib) into the markdown document.

[1] https://gist.github.com/abdullahkhalids/83055b1abbd2cdf2416a...

Not super fancy & most people have moved on from Bash to ZSH these days (or at least feels that way), but [1] is mine for managing bash. The big features are breaking down a big giant mess of bashrc into reusable modules that you can take from company to company and between OSes. Better PATH management out of the box too. You just append a set of paths to add and if you reload the path module it'll compute and apply a delta instead of just blindly appending (it'll also remove paths no longer listed). You can also indicate which paths should be prepended instead of appended. There's also out of the box features like git/hg support for inserting the branch/feature name, colorizing PS1, injecting the status code of the last run command, etc.

[1] https://github.com/vlovich/bashrc-wrangler

Windows service for tracking how much time I spend in each app.