On Building Tools

I have a habit of building tools no one asked for. A CLI to rename files in a specific way. A script that auto-organizes my downloads folder. A tiny web app just for me.

Most of them never leave my machine. But I keep building them.

The value of useless tools

The framing "useless" is wrong. These tools are useful — just only to me, and only sometimes. But that's not really the point.

Building a small tool forces you to:

  • define a problem precisely
  • make API decisions (even if you're the only user)
  • ship something, even if small

That last one matters most. Shipping changes how you think. A tool that runs on your machine is different from an idea in a notebook.

Constraints as features

The best small tools I've built had tight constraints. One input, one output. No config files. Opinionated defaults. These constraints aren't laziness — they're a feature.

A tool that does one thing clearly is easier to trust than one that tries to do everything.