Blog
2026
- An MCP gateway with constant context cost: 116 tools behind 7ai
- LLM routing: race four models instead of guessing oneai
- Build a monitor, not a dashboard: the Cloudflare Zaraz false negativeweb
- AI agent guardrails: read-only by constructionai
- RAG chunking: split by tokens, not charactersai
- Claude Code in Slack: one bot, many isolated agent sessionsai
- LLM guardrails: assert before you renderai
- AI agent testing: catch the failures that look like successai
- AGENTS.md and a codebase AI coding agents can work inai
- Data migration testing: when the oracle is wrongdata
- AWS to Azure Government migration: the small things that breakinfrastructure
- Seven rounds to a fast mobile PageSpeed scoreweb
- Zero of 129 pages indexed: a Next.js canonical URL bugweb
2025
2024
2023
2022
2021
2020
2019
2018
2017
- Webhook best practices: acknowledge fast, process laterarchitecture
- Preview environments per pull request, before they were a checkboxdevops
- MoyaJS: the network layer I never finishedtypescript
- Yeoman generators: code conventions you can runreact
- Designing a gamification points system people can't farmnode
- Spinning a second app out of the first: fork or white label?ios
2016
- An offline upload queue that never stalled, and never complainedios
- Docker layer caching for Node: copy package.json firstdocker
- Regex anchors, and three commits to validate one IDFAruby
- Facebook Pixel firing twice: one pixel, one initanalytics
- The unglamorous WordPress security checklist for a small business siteweb