Work
Recurring work, removed
Each of these started as something I was doing by hand, on a schedule, forever. They are grouped by the kind of problem rather than by the year I built them.
Group one
Chores that now do themselves
Small, mandatory steps that came due at the worst possible moment, and now happen without anybody remembering them.
-
67 PRs
30 daysThe merge that files its own paperwork
A five-minute poller that watches for my merged pull requests and does everything that used to follow by hand: moving the linked tickets, opening the build, and coming back later for the ones CI has not started yet.
-
5–12 tabs
every morningThe inbox I stopped opening
Runs when I unlock the laptop and has the code reviews that need me already open in one window. The output is not a summary of my morning — it is the morning, arranged.
Group two
Systems that know where to stop
Both of these use a model for the part that needs judgment and then refuse to let it act. The interesting decision in an AI system is where you take the authority away.
-
8 in, 0 built
$11.81The idea pipeline that mostly says no
Two mandatory human gates, enforced by the state table rather than by policy. In its first two days it took in eight ideas, rejected six, parked two, and built none — which is the system working.
-
4 streams
1 of 4 destinationsWhere the lesson lands
A retrospective nobody has to remember to write, which then routes each lesson to the highest layer that could prevent it recurring automatically. A timeboxed spike, and honest about it.
Group three
Shorter write-ups
Smaller tools that still had one idea in them worth keeping — including the ones where the idea turned out to be that I had misjudged the problem.
-
~10 seconds
savedTwo seams, one worth closing
A browser-to-terminal bridge that prepares a worktree and briefs an agent, and a four-line hook that opens a pull request the moment one exists. The elaborate one saves ten seconds. The trivial one I would not give up.
-
an index,
not the bookSearch results built for an agent
A code search that writes a compact index to disk instead of returning raw JSON, and deliberately omits the snippets. Tool output is a user interface, and sometimes the user is a model.
-
a map
in a minuteOnboarding docs that regenerate themselves
Enumerate an unfamiliar database, sample a few rows per table, and emit a Markdown map with a plain sentence about each. Documentation rots because writing it is a separate act; this one is cheap enough to throw away.
-
two endpoints,
two commitmentsVoice to worktree
An idea spoken to my phone either becomes a prepared branch with an agent already working, or joins a queue that must clear two human gates. I choose which, out loud, while I still know the answer.
-
no network
in the loopSample library, local-first
A bounded sync onto local disk, then a local app that searches instantly and drags into the DAW. Below a certain speed you explore; above it you plan, and planning is a worse way to find a sound.
-
64 days
no gapsThe habit tracker I actually kept using
A dozen habit apps failed the same way: they punished the day I missed. This one holds an unbroken record because it forgives that day instead. Designed around the miss, not the streak.
Group four
Smaller things I built because I got annoyed
No detail pages. They are here because the habit is the point: this is what twenty-odd small automations look like when nobody is grading them.
Personal
- palette-garden Browse, search, generate and export colour palettes from a folder of images. Live · source.
- chord-forge Click chords into a progression, shape them with modifiers, export the MIDI.
- lift-log A workout log built around progressive overload rather than around logging.
- bank-analyzer Reads bank statement PDFs entirely in the browser. Nothing is uploaded anywhere.
- pro-tools-indexer Indexes an external drive full of Pro Tools sessions, with a browser to search them.
- voice-memo-garden Imports Apple Voice Memos into a searchable local index you can annotate.
- mac-indexer Crawls the filesystem into a database so the whole disk becomes queryable.
- drive-deduper Compares two drives and writes a consolidation plan rather than deleting anything.
- streaming-recommender Finds things worth watching on the services I already pay for. Source.
- product-tier-finder Turns community recommendations into a shortlist when I need to buy something.
- instagram-recs Pulls restaurant recommendations out of an export of my own messages.
At work
Described without names: these were built for an employer and the names are theirs.
- A notification helper the other tools share, so anything can raise a toast.
- A countdown timer that stays visible in the corner of the screen.
- Something that merges stray browser windows back into one.
- Something that opens the applications I open every morning anyway.
- Something that starts the background tools I always want running.
- Something that opens the video call at the moment it starts.
- A cleanup job for retained CI builds nobody needs any more.
Still to come
More of it
More short write-ups and a list of the smaller things — the tools I built because something annoyed me twice — are being added as I write them. If you want the method rather than the inventory, how I work is the short version.