Tools I needed and nobody had built.
Writing code since 1985, paid for it since around 1990 — Fortran77, Oracle Forms, LAMP, Angular, and whatever the current generation calls itself. Long enough to tell what will still be here in ten years from what is merely loud right now.
Programming is a puzzle and a craft at the same time: solve the problem, then make the code simpler than the problem was. I find a problem, I build a tool — lately in Python and TypeScript, on the command line and against whatever API is in the way. Nobody asked for any of these — the good ones never are.
Boring beats clever. Readable code beats a smart abstraction every time. The clever version is a debt someone pays later, usually me.
Context decides. A prototype may take shortcuts. Something people depend on may not. Knowing which one you are writing is most of the job.
No dependency without a reason. Every package is a promise someone else has to keep. Standards outlive vendors.
A view must not be able to disagree with its source. Anything derived gets recomputed, never kept by hand in a second place — two versions of the truth start drifting the day you write the second one.
Write down why, not just what. A decision that took an afternoon to reach should not take an afternoon to reconstruct.
logseq-cli: read and write a
Logseq graph from a shell or an AI agent. Python, click, no vendor
coupling. Verified writes, because the API answers a failed one with
HTTP 200 and null.
roadmapper: derive a Notion roadmap from GitLab epics and milestones. One way only: the board is a view, so it cannot drift from the tracker. TypeScript, two dependencies, one command for cron. Progress is a sum over the issue tree, which is the one thing a field mapping cannot do.
task-line: a Claude Code mod that draws one line per task list above the prompt: the current task, a progress bar and the count. It reads the lists Claude keeps and creates none, and looks the same in the terminal and the desktop app. TypeScript, no network, no files.
enable-todo-tools: a
Claude Code mod with one job. Newer models leave Claude's todo tools out, so
anything that reads the list has nothing to show; this sets
CLAUDE_CODE_ENABLE_TODO_TOOLS=1 at session start. Opt-in, and the companion
to task-line.
sweet-spot: a Claude Code mod that
never acts in the middle of a turn. It waits for a pause, counts down with a
"Not now", and holds back while a subagent is running. Only then does it hand
a long session over before the context gets too big, to a fresh session that
starts from a handoff or by Claude Code's own /compact. The 200k default
comes from a measurement, not a feeling: most of the cost in real sessions came
from calls above it. TypeScript, no network, writes nothing.
Germany. Off the keyboard: a gravel bike, daily, non-negotiable.

