Essays
Longer arguments than a consulting page has room for.
Your late data has a postcode
Daily numbers that never reconcile, and a multi-region migration proposed to fix them. The migration buys milliseconds while the real tail runs to hours, because most pipelines overwrite event time at ingest and stop being able to measure the gap at all. Ends on the uncomfortable part: a percentile watermark drops the same badly-connected markets every quarter, and that becomes the lens the business reads its own map through.
30 September 2026
Read on Substack →
Zomato was a PHP shop, and a proud one
A PHP monolith that was maintained on purpose rather than tolerated: APCu tuning, CI gates against known bad patterns, XHProf on the bottlenecks, and Go services only where one team's load diverged from the rest. The argument is about what actually earns an extraction — a piece that turns out orthogonal to the spine — rather than a monolith that has simply started to feel old.
2 September 2026
Read on Substack →
When business rules contaminate our recommendation model
A sponsored-placement rule engine layered on a production recommender, and the closed feedback loop it creates: pin an item to rank one, harvest the clicks that position alone produced, retrain on them, and the model learns that whatever it was forced to show is what people love. Names the two mechanisms underneath it — MNAR removal and position bias — and what actually corrects for them.
20 June 2026
Read on Substack →
Everything else is on the Substack. Shorter notes from work in progress go up on LinkedIn.