The blog
Notes on engineering,
systems, and craft.
What I'm building, breaking, and learning. New posts appear here first, and in the RSS feed.
12 posts
01How Dragonfly Outruns Redis — A Backend Engineer's TourDragonfly serves millions of QPS on a single box where Redis caps around 100k. I read the source to find out which three decisions — and one fast-path trick — actually do the work.12 min readsystemsarchitectureperformance02Deterministic AI: Let the Model Interpret, Let Code DecideThe reliable way to ship LLM features isn't a better prompt — it's shrinking the model's job until everything around it is plain, testable code.3 min readaillmsystems03Two AI Coding Agents, Not One: How I Actually ShipMost engineers now run Cursor and Claude Code in parallel — here's how I split the work between them, and why code-review discipline matters more than ever.5 min readaitoolsproductivity04Evals as CI: Catching Agent Regressions Before They ShipLLM features rot silently — a prompt tweak or model upgrade quietly breaks a case you fixed weeks ago. The fix: run evals in CI like tests.6 min readllmevalsagents05When to Use an LLM Agent vs Plain CodeAgents add latency, non-determinism, and real cost per run — so plain code is the default. Here's the decision framework I actually use.5 min readaiagentsllm06A Go Event Pipeline at 100k Events/Day, Sub-200msHow we built a serverless SQS → Lambda → DynamoDB pipeline in Go that handles 100k events a day at sub-200ms end-to-end latency with 99.99% uptime — and what broke along the way.6 min readgoawssystems07MCP in Practice: Tools for an Agent Without the N×M MessMCP collapses the N×M agent-tool integration problem into one server per tool — here's what that means for how you actually design and scope tool contracts.5 min readmcpagentsllm08Cutting PostgreSQL Query Latency on a Reporting EndpointA slow reporting endpoint, a missing composite index, an unsargable predicate, and what EXPLAIN ANALYZE actually told us — a debugging walkthrough.5 min readpostgresbackendperformance09Python or Go? How I Actually Choose for a Backend ServiceA practical decision framework from shipping real services in both — concrete tiebreakers most teams underweight before they're forced to care.4 min readpythongobackend10Context Engineering Is the New Prompt EngineeringPrompt engineering tunes the question; context engineering controls what tokens the model even sees — and the job is keeping that set ruthlessly small.5 min readaillmcontext-engineering11Building a RAG Pipeline in Python You Can Actually TestRAG feels untestable because generation is non-deterministic — the move is to decompose the pipeline into layers and test each one differently.5 min readragllmpython12Routing Between LLMs Without Blowing the BudgetHow I built a routing layer for a bank's GenAI chatbot that cut resolution time ~30% while keeping model spend controlled — and when not to bother.5 min readllmaiarchitecture