writing
Notes on building software.
Short essays on the parts of shipping production software that don't fit on a ticket — payments, data that has to stay correct, and working with AI in the loop.
all entries4 posts
How to show 2 years of revenue when Stripe only remembers 3 monthsI built a dashboard that promised founders 2 years of revenue history. The data source it relied on only kept the last 3 months. This is the story of that contradiction, told so it makes sense whether or not you write code.AI is leverage. It's not autocomplete.Most engineers use AI to type faster. A smaller group uses it to ship faster. The gap between those two is the entire story of what changed about this job in the last 18 months.The agent that worked while I sleptI set up a Claude Code loop to refactor a noisy module overnight. I woke up to a clean diff, 47 passing tests, and a commit message that was funnier than mine usually are. Here's what I learned about scoping work for an agent that doesn't sleep.The hardest part of working with AI agents isn't the AIAfter a year of building with agents in the loop, the bottleneck has stopped being the model and started being me. Specifically: my ability to say what I want clearly enough that an agent can execute it without supervision.