Notes from distributed systems in production.
Essays and field reports from building and operating high-traffic, polyglot platforms — Kubernetes, AWS, incident response, iGaming scale.
Redis Cache Invalidation: Four Patterns From Production
Cache invalidation is famously "one of the two hard things in CS." True — but the hard part isn't the magic, it's choosing the right pattern for your shape of system. Four field-tested patterns from iGaming production.
Zero-Downtime Database Migrations: The Expand-Contract Pattern
Schema changes are the most-feared deploys in most systems. With the right approach, zero downtime is achievable. The expand-contract pattern I've used for years and the step-by-step plan.
Background Jobs: Idempotency, Retries, and DLQs
Async job queues are the silent backbone of production. Get them wrong and you ship duplicate operations, lost messages, and data inconsistency. Three patterns that have kept us safe in production.
Scaling WebSockets: Connections, State, Broadcast
Scaling an HTTP API to tens of thousands of users is relatively easy. Managing the same load over WebSocket connections is a different game. Four years of multiplayer production.
Feature Flags: How They Actually Work in Production
Feature flags sound simple — "on/off switch." Done badly, they fill your codebase with zombie code over a year. Six years of production experience on what they're for and what they aren't.
Code Review Culture: The Practice That Makes or Breaks a Team
Done well, code review raises a team's standard over time. Done badly, it kills motivation. Thirteen years of lessons on what actually matters in review.
Engineering On-Call: Surviving It and Improving It
On-call rotation is the most disliked and most valuable practice in engineering teams. Done wrong it burns the team out; done right it's one of the strongest engineering practices around. Six years of iGaming on-call lessons.
Why Software Estimation Is Hard — And How to Be Less Wrong
Software estimates are wrong constantly. The cause isn't your skill — it's the nature of the problem. The cone of uncertainty and the practical estimation discipline I use in production.
Burnout and a Sustainable Software Career
Across 13 years in software, I came close to burnout twice. Early signals, practical ways to draw boundaries, the truth that recovery isn't a vacation — honestly.
How AI Is Reshaping Software Development — For the Better
Cursor and Claude Code have roughly 5×'d my output over the past year. Here's what actually changed in production work, which skills got commoditized, and which got more valuable — a senior developer's field report.
Working With Legacy Code: Don't Fall Into the Rewrite Trap
Every senior engineer faces legacy code repeatedly. "Let's rewrite" is tempting and dangerous. Strangler fig, test-before-refactor, evolving in small steps — lessons from years of practice.
On-prem to AWS + Kubernetes: migrating a 20+ microservice iGaming platform
Notes from the 2023 rebuild of a high-traffic multiplayer platform serving 10,000+ concurrent users — polyglot stack, Istio mesh, and the decisions that actually paid off.