Twelve ways a multi-agent team broke, and the rule each one produced
Twelve real incidents from a five-person, five-agent engineering team, and the written rule each one produced.
Writing
Series · 5 essays
What changes when five engineers each drive their own AI coding assistant against one repository: coordination, decisions, and where the bottleneck moves.
Twelve real incidents from a five-person, five-agent engineering team, and the written rule each one produced.
A coordination process that worked was quietly burning 136K tokens per session on every machine. How we measured it, and the ten rules that cut it.
With five engineers and five AI assistants, the repository is the only context they all share. What follows from that.
Turning 'never assume' into a pipeline of questions, rulings and records that agents and humans both follow.
A five-point work package went from claimed to delivered in about fifty minutes. What that does to planning, review and the schedule.
Series · 9 essays
Patterns from production LLM services: where to trust the model, where to take the decision away from it, and how to test what is left.
Why the model should propose and code should execute: a state machine for external writes, with tamper detection.
Let the model judge each criterion and let code compute the score. Fixing a match score users could not explain.
A compliance panel that looked real and computed nothing, and how we replaced it with deterministic rules and an LLM fallback.
Cosine scores for right and wrong matches overlap across 0.20 to 0.62. Use vectors to rank and structured filters to decide.
A Python dict rendered in the UI, truncated output, and the timeout cliff: three LLM JSON failures and the guardrails that held.
How to rewrite a working assistant as a tool-calling agent behind flags that leave prompts byte-identical, using shadow mode.
Why approval limits, tolerances and cut-offs live in a per-tenant config service, and the bugs that taught us to keep two read paths.
2,804 tests and zero recorded LLM calls: what mocking buys, what SQLite hid, and how to evaluate the model itself.
Design docs said inputs were sanitized and the code said otherwise. Why drift is normal, and the habit of writing limitations down.
Archive
Common architecture antipatterns and how to avoid them
Navigating the rough seas of software architecture with stability patterns.
How to build data import/export for your SaaS with Firebase Cloud Functions, and add fast full-text search with MeiliSearch.
A guide on new features in typescript 5.0
How Generative Adversarial Networks work: the generator, the discriminator, and the adversarial game between them.
Learn how to gracefully handle errors in React applications using Error Boundaries.
When prop drilling gets painful: how React Context shares state across your component tree, and when to reach for it.
Explanation of common architecture patterns
The core ideas of machine learning explained from first principles: models, training, and how machines learn from data.
A practical introduction to Amazon RDS: what it gives you over self-managed databases, and how to get started.