Blog

Notes on backend engineering, scalable systems, and things I've learned building production APIs.

Oct 8, 2026

Race Conditions: A Simple Example and Four Ways to Fix It

A practical walkthrough of a classic check-then-act race condition, how to reproduce it locally with multiple instances, and four ways to fix it: optimistic locking, single-processor queues, application-level mutexes, and database row-level locking.

backendconcurrencyrace-conditiondatabasesystem-design
Oct 2, 2026

Distributed Systems: What They Are and Why You Can't Avoid Them Anymore

A practical breakdown of distributed systems - core concepts, why modern applications need them, the real challenges they introduce, common architectures, and a guide to designing one that actually holds up in production.

distributed-systemsbackendsystem-designarchitecture
Sep 23, 2026

Building Backend Infrastructure That Actually Scales

A practical, experience-driven look at what really matters when designing backend systems for scale - from distributed computing challenges to the mistakes that keep showing up.

backendsystem-designdistributed-systemsscalability
Sep 1, 2026

How a 'Simple' CSV Export Crashed Our Node Service (And the One-Line Fix That Wasn't)

A postmortem on a memory-crashing CSV export bug, and how switching to Knex streams with Node's pipeline() fixed it for good.

nodejsbackendknexstreamsbackpressurepostmortemsystem design
Aug 26, 2026

Redis Will Go Down. Make Sure Your Node.js App Doesn't.

A practical framework for deciding what should happen when your cache, session store, or job queue can't reach Redis - classification, fallback patterns, and the client config details that actually matter in production.

redisnodejsbackendperformancescalingarchitecture
Aug 20, 2026

Database Tuning at Scale: What Actually Moves the Needle in Whitelabel Systems

Lessons from tuning PostgreSQL and MySQL in large, multi-tenant whitelabel platforms - the mistakes, the wins, and the things nobody tells you until 3 AM.

postgresqlmysqldatabaseperformancebackendscaling
Aug 19, 2026

Learning About Analytics Led Me to Parquet Files - Here's What I Found

A backend developer's dive into why Parquet is the default choice over CSV for analytics workloads - column-oriented storage, compression, schema, and a hands-on PostgreSQL export comparison.

Data AnalyticsParquetPostgreSQLNode.js