Everything I’ve written
Newest first. Each one came out of something I had to build and then keep running.

The CORS Error That Was a Race Condition
The browser console said the request had been blocked by CORS policy, that no Access-Control-Allow-Origin header was present on the requested resource.
- 16 min read
- webdev
- PostgreSQL

My Idle Background Worker Was the Most Expensive Thing I Owned
I opened the Cloud Run billing breakdown expecting the database to be the villain. Failing that, the AI generation, which calls out to a model and streams tokens back and feels expensive, in the way…
- 20 min read
- Python
- devop
No fetch, No Storage: Shipping Inside a Sandboxed Host
The answer came back in writing, from the vendor, and it amounted to: yes, and you'll be building it yourself. The question had been a simple one. The platform we build on has an agent feature.
- 13 min read
- JavaScript
- #ai-tools

Instructions Are Hints: Guardrails for an LLM Tool Loop
I wrote the same rule three times. Once in the tool description, so the model would read it while deciding what to call. Once in the system prompt, in capitals, because the first one wasn't holding.
- 13 min read
- #ai-tools
- Developer Tools

Code Graphs for AI Coding Agents: Better Repository Context and Safer Refactoring
You've probably watched this happen. You ask an agent to add a rule to checkout. It opens CheckoutPage.tsx, then CheckoutButton.tsx, then checkout.css, because they all have "checkout" in the name…
- 21 to 8 tool calls
- 22,203 to 4,269 tokens
- 49% cheaper per task

Build a TypeScript Code Graph with the Compiler API
Have you ever written a helper function, opened a pull request, and had someone comment "we already have this"? I have. More than once, in the same codebase.
- 771 source files
- 2,795 nodes, 17,985 edges
- 13.1s rebuild