Writing
Notes on building software with AI, and the occasional link worth your time.
A week ago I made a message bus out of a git repo. Then more AI agents piled onto it, and I had to answer the question the first version ducked: who decides what each one is allowed to do?
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.I wanted a few AI assistants I do not own to talk to each other and to me, without handing any of them a credential whose loss costs more than one rotatable token and one repo. The channel turned out to be a git repo.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.I wanted my assistant to read a message and send a reply. iOS said no, and that no turns out to be one of the most deliberately built walls in consumer software.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.I moved my voice assistant off a $40 desk screen and onto the phone I actually carry. The phone forced a clean split: it handles the senses, my own computers handle the brain.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.The last two posts turned a forty dollar screen into a careful voice assistant. This one is the opposite. I filled the same screen with tiny toys: a morning oracle that reads my real calendar, a bedtime storyteller for the kids, a math duel, and a magic 8-ball you shake.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.A voice assistant lives or dies on two numbers: how long you wait and what each question costs. So I picked a small, fast, cheap model, and built a harness that skips the model whenever it can.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.I turned a forty dollar touchscreen into a voice assistant by putting no AI on it. The board captures sound and draws pixels, the Mac does the thinking, and they talk over wifi.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.The macOS system voice is rough, and paid text to speech is metered per character, so I run an 82M parameter model on my Mac instead. It turns a 2,000 word article into 15 minutes of speech in 37 seconds and costs nothing per word.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.Steph Ango's 'Design is compromise' is beautiful, concise, and pre-AI. Compromise reads as a dirty word now, and 'both/and' is worse. Tradeoff is the honest one, and with AI you are making them constantly.
Written by handNo AI in the writing. Every word of the post is mine. If a footer or a build receipt below it was generated, it says so.I handed Claude two school PDFs and asked it to put the first day, the last day, and the drop-off runs on our calendar. It corrected my start date before it wrote anything, and then merging the two calendars told me something neither one said on its own.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.The same notes, run through Claude and published unedited. When you add a vendor, a tool, a company, or a person to a system, the bar isn't whether the thing is good. It's whether everything already there gets better. The handwritten version is posted alongside it.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.The raw version, written by hand. When you add a vendor, a tool, a company, or a person to a system, the bar isn't whether the thing is good. It's whether everything already there gets better. An AI-written version of the same notes is posted alongside it.
Written by handNo AI in the writing. Every word of the post is mine. If a footer or a build receipt below it was generated, it says so.Your AI agrees with you all day, and the more senior you get, the more the people around you do too. Agreement is the house default in both systems. Here's a block you can paste in front of the model to turn some of it off, and the way that fix fails.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.I kept typing /usage and opening the settings page too many times a day, so I put my 5-hour and weekly Claude limits in the menu bar. The number was sitting in the statusline Claude Code hands you the whole time. I almost built the version that reads your keychain instead.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.I keep every Claude Code session as a file. Then I needed to find one. grep across a couple thousand JSONL transcripts is slow and dumb, so I built a local hybrid search over them.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.I set cleanupPeriodDays to 365. A pinned, older Claude Code could not parse my settings file, threw the whole file away, and fell back to deleting after 30 days.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.One build session at work ran a month without restarting. It summarized itself and kept going 26 times, and most of it happened after hours from a phone. What steering an agent that never resets actually looks like.
Written by AIAI wrote this one end to end from my notes. The words are the model's, not mine. Whether I touched it afterward is spelled out in the post's footer.Claude Code deletes your session transcripts after 30 days by default. That breaks files are king, so I changed one setting and now they stick around for a year.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.I want a clean Claude Code session always waiting on my phone, separate from whatever I am deep in. Here is the launchd agent that guarantees one.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.A starter post that shows the AI-authorship badge, code highlighting, and the general shape of things. Replace it with your own.
AI-assistedI directed the piece and edited it; AI helped draft. How hard I edited varies by post, which is why the badge is here.