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 3, 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 19, 2026·9 min read
Internal ToolsUX

Designing an admin panel that engineers do not hate

Internal tools tend to rot the moment they leave the founding team. We rebuilt our admin from scratch around three principles: every action should be auditable, nothing should require a tribal-knowledge runbook, and there should be exactly one button that resolves the on-call page.

MMei Watanabe·May 7, 2026·8 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·May 27, 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·Apr 13, 2026·5 min read