Building a GraphQL API That Doesn’t Become a Performance Disaster
GraphQL is powerful, but it ships with a class of performance problems that REST doesn’t have. Here’s how to build for production from day one.
The Database Architecture Decision That Took Us 18 Months to Undo
We chose the wrong database model for our use case. Here’s the honest story of what happened, why, and how we eventually fixed it.
API Design Patterns We Wish We’d Known in Year One
APIs are forever. The design decisions you make in year one are the decisions you’ll be backwards-compatible with in year five. Here’s how to get them right.
How We Scaled PostgreSQL to 50 Million Rows Without Breaking a Sweat
The queries that run fine at 5 million rows start failing at 50 million in specific, predictable ways. Here’s the playbook we followed to scale without a rewrite.
Python Performance: Why Your Code Is Slow and How to Fix It
Python is famously slow — but most Python performance problems aren’t language problems. They’re code pattern problems. Here’s how to diagnose and fix them.
The Case for Boring Technology
The technology choices that make for exciting conference talks are often the same choices that make for painful on-call rotations. Here’s the argument for deliberately boring.
The Database Migration Strategy That Doesn’t Take Down Your Production System
Schema migrations are one of the riskiest operations in production systems. Here’s the expand/contract pattern that makes them safe and reversible.
How We Reduced Our p99 Latency by 80% Without Rewriting Anything
Tail latency was making our SLA commitments impossible to keep. The root cause wasn’t what we expected, and the fix was simpler than we feared.
Multi-Tenant Architecture: Patterns for Building SaaS That Scales
Multi-tenancy is one of the most consequential architecture decisions in SaaS development. Here’s how to get the data isolation model right from the start.