Featured · Databases · Operations

A practical guide to writing migrations you can actually run on Friday

Most database migrations fail not because the SQL is wrong but because nobody tested them against a realistic dataset. We share the rollout checklist we use for every schema change, including the awkward question of when to lock a table and when to live with the inconsistency.

SSam Lee·Jun 5, 2026·11 min read

Latest writing

Distributed SystemsPostmortem

Why we replaced our message queue (and what we learned)

After two years of running a custom message broker we finally pulled the plug and migrated everything to NATS JetStream. The migration took six weeks of careful planning, three weekends of late-night cutovers and one production incident that we are still apologising for.

AAlex Chen·May 7, 2026·9 min read
PostgresKubernetes

Notes on running Postgres on Kubernetes in 2026

Five years ago this would have been a controversial post. Today we have battle-tested operators, decent storage classes and a community that has finally agreed on backup tooling. Here is the stack we landed on for a fleet of around forty clusters.

HHassan Idris·Apr 1, 2026·10 min read
Engineering Culture

Feature flags are not a substitute for testing

Every team eventually discovers the joy of shipping behind a flag. Fewer teams discover the misery of cleaning up flags two years later when the original author has long since left the company. A short rant and a longer guide.

PPriya Raman·Jun 3, 2026·5 min read