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.

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 days

    The 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 morning

    The 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.

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.81

    The 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 destinations

    Where 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.

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
    saved

    Two 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 book

    Search 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 minute

    Onboarding 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 commitments

    Voice 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 loop

    Sample 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 gaps

    The 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.

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.

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.