Writing
Production lessons, written the way I’d explain them on a whiteboard.
Short engineering notes about the awkward states: concurrency windows, asynchronous confirmation, and the mismatch between a model and the real system.
October 1, 2026 · 4 min read
Payment Success Is Not a Boolean
A remainder of R3.05 left a failed charge, a hold stuck on a card, and a balance showing as owed. Nothing was down. My model of 'paid' was too small.
- payments
- distributed-systems
- idempotency
- pre-authorization
August 7, 2026 · 5 min read
The Simulator That Couldn't Be Wrong
I built an interactive model of a distributed lock so people could attack it. The first version was too correct to demonstrate anything — and fixing that taught me more than building it did.
- simulation
- distributed-systems
- testing
- concurrency
August 4, 2026 · 4 min read
The 10-Second Fix: Surviving a Payment Callback Race in Production
Users watched successful payments show up as failures. The bug wasn't in our code or Razorpay's — it lived in the gap between them.
- payments
- distributed-systems
- production
- razorpay
Editorial rule: fewer posts, stronger connection to the systems elsewhere on the site. Each article links back to the relevant case study or Architecture Lab entry.