Your AI Reviewer Takes Orders From Strangers. That Is the New Arena.
Eighteen months ago the comment thread was the territory. Now it is the prompt - and the prompt is written by whoever opened the pull request.
Writing
Notes, deep dives, and updates - synced from Substack.
Eighteen months ago the comment thread was the territory. Now it is the prompt - and the prompt is written by whoever opened the pull request.
For years, the pull request was as much about politics as correctness. Something quietly changed - and we should ask what it cost.
I built a small GitHub Action for automerging maintenance bot PRs from Dependabot, Snyk, Renovate, etc.
Inline images, AI-powered commands, live theme switching, and more — all built in or under 20 lines of Python.
After 10 years on iTerm2, I had Claude Code migrate me to Kitty in under 10 minutes of AI execution time.
Once LLM systems move from prototype to production, a specific failure mode kicks in. Prompts drift - not dramatically, but incrementally. Someone adjusts wording. Someone switches the model. Someone adds a paragraph of context. Each change seems fine on its own. Nobody measures the cumulative effect.
How I built a Cursor 2.4 skill with subagents that generates full-stack Next.js apps from simple prompts. No clarifying questions, just working code.
The Christmas 2025 Condé Nast breach wasn't sophisticated. It was preventable. And the organizational failures that followed the initial compromise made everything worse.
Ignoring the noise and staying focused on the craft of building.
What if building a powerful, smart AI feature for your app or business could be as intuitive as following a simple checklist?
REST, GraphQL, gRPC, and tRPC are not just protocol choices. They are political choices between teams. Here is when each one works best, and when it will fight you.
How Amazon's haunted shopping cart bug taught us that 'eventually consistent' isn't broken—it's a feature
How tracking energy, mistakes, and meetings transformed my performance in 8 weeks
Why GitHub chose to freeze for 5 hours instead of serving stale data