build 214 · uptime: 6 yrs · deps: 0

Growing software, slowly.

A dev blog about small tools, honest commits, and code that outlives its comments. Everything here was learned the slow way, in production, at 2 a.m., at least once.

[ tooling ] · 2026-10-17 · rue

Delete your dotfiles (most of them)

A config file is a garden. Anything you haven't pruned in a year is now landscape, not settings.

My vimrc was 214 lines. Seven of them were load-bearing. The rest were plugins I'd stopped using, a colorscheme from a job I'd left, and comments apologizing to a future self who turned out to be less sentimental than expected. The new file is 31 lines and I have missed exactly none of it in three months.

The same audit ran across my shell config, git aliases, and a tmux file I'd forgotten I had. The tool that helped most wasn't a tool — it was opening each file and asking one question: when did this line last do anything? Version control keeps the archaeology if the nostalgia hits.

gitvim3 files pruned
[ debugging ] · 2026-10-09 · rue

The bug that only happened on Tuesdays

A job that ran fine six days a week and failed on the seventh, at roughly the same hour, with no obvious trigger. It took four Tuesdays and one very calm colleague to find: a weekly cron in UTC, a server in a timezone that had just changed its clocks, and a report generated for a date that didn't exist yet.

The postmortem produced one rule now taped to the monitor: every scheduled thing states its timezone out loud, in the name of the job itself. The bug took four weeks. Naming it would have taken four seconds.

cronUTCjournalctl
[ git ] · 2026-10-02 · kai

Readable commits, one rule

Every style guide for commit messages eventually collapses into the same single test, and it fits on a sticky note: your subject line should complete the sentence 'if applied, this commit will ___'. If it doesn't, you've written a chapter title, not a commit.

Rewriting your history before pushing is free. Rewriting your memory six months later is not. The log is the only documentation that has never once lied to me about what changed — as long as I wrote it like someone would read it. Someone is you, and you'll be in a hurry.

[ notes ] · 2026-09-25 · kai

One rule for naming things

Count to three. If a name needs a fourth word to distinguish it from its neighbors, the problem isn't the name — it's that three things are standing too close together. Rename the space, not the object.

Names are cheap in the first week and expensive forever after. The rule I actually follow: rename freely while the code is young, and treat every rename past month three as a small ceremony — tested, committed alone, and announced, so nobody's muscle memory files a bug report.