Writing

Longer articles, implementation reflections, and engineering lessons. Separate from my Engineering Notes, which are shorter, concept-focused explanations.

Nothing published yet. The entries below are drafts in progress.

Thinking in goroutines: a practical mental model

Go's concurrency model is simple in its primitives but easy to misuse. This piece explores the mental model I've built for reasoning about goroutines, channels, and when to reach for each.

Why I keep reaching for SQLC over ORMs

ORMs promise productivity but hide what's happening in the database. SQLC keeps SQL explicit and the code readable. A reflection on the trade-off.

Building a small OTP system from scratch

What I learned building GoTP — how OTP verification works, the problems of idempotency and rate limiting, and the engineering decisions behind keeping the system simple.

What concurrent bank transfers taught me about database transactions

Building Simple Bank required thinking carefully about ACID properties, lock ordering, and what actually happens inside a PostgreSQL transaction. This is what I learned.