he best thing I shipped last year was a 200-line Node script that watches a folder and auto-renames screenshots based on their content using a local vision model. Nobody asked for it. It doesn't have tests. The README is a single line. It runs every time I take a screenshot and I never think about it.
That's the thing about small tools: when they work, they disappear.
1The learning multiplier
Big projects teach you coordination. Small tools teach you craft. There's no committee to defer decisions to, no deadline that justifies cutting a corner, no existing architecture to blame for a weird tradeoff. It's just you, the problem, and the implementation.
~ tools from last year ~
A local bookmark deduplicator. A markdown-to-structured-JSON transformer. A tiny Express wrapper for consistent error envelopes. The screenshot renamer. None on GitHub. All used daily.
A tool that does one thing well is worth more than a platform that does ten things adequately.
— the Unix philosophy, still holding up2The only rule
I have one rule for personal tools: they have to be useful to me within the first ten minutes. If I'm still fighting the implementation when the itch they were supposed to scratch is already fading, I stop. This is the opposite of how I approach work projects, which is probably why it's enjoyable.
Side projects that stay small and serve a real personal need are how I remember that programming can be fun. Not as a career move. Not as a portfolio piece. Just a thing that did not exist, and now it does, and it makes the folder full of screenshots slightly less chaotic.