Eight years of building.
In production, in public, mostly on purpose.
// I’m a full stack engineer who likes the boring half of the stack — the half that handles money, audits, and 2am pages. I lead small teams, ship products that have to survive contact with real users, and write about what I learn along the way.
Boring is a feature.
// The most expensive systems I’ve worked on were the ones whose authors mistook novelty for taste. The most resilient ones used a Postgres, a queue, a couple of caches, and a lot of discipline. I default to the boring choice and only deviate when I can write down, in two sentences, the specific pain the boring choice can’t handle.
A senior portfolio is not loud. Neither is a senior architecture.
The four things I optimize for, in order.
- 01Reversibility. Can I undo this decision in a week, or am I stuck for two years?
- 02Legibility. Can the next engineer read this without me on the call?
- 03Correctness under retry. Idempotent or not? If not, why not?
- 04Speed. Always last. Always still important.
Joined as employee №3 to own the rewrite of the core ledger and consolidate four legacy tools.
- Designed an append-only ledger handling 2.4M txns/day.
- Grew the platform team to five engineers, set the technical bar.
- Cut nightly reconciliation from 14h to 4 minutes.
Built a headless content platform from prototype to ~300 paying teams and a $14M Series A.
- Designed the schema engine and Rust-powered edge layer (p50 11ms globally).
- Shipped the TS SDK adopted by all customers.
- Hired and onboarded engineers 2–6.
Self-serve analytics for non-technical PMs. Built the SQL-to-NL query layer that became the wedge.
- ~8M queries / month at p95 380ms.
- Promoted to tech lead after 14 months.
- First production exposure to ClickHouse and DuckDB.
Software consultancy. Six client engagements across fintech, e-comm, and edtech.
- Learned to ship fast and survive client demos.
- First Postgres-in-production scars. Still healing.
Built three things that mattered: a mess management app the campus still uses, a competitive programming habit that taught me to read code carefully, and a deep suspicion of frameworks I haven’t personally debugged.
Async by default
I write design docs before I write PRs. Meetings are for decisions, not status. Linear + Slack threads beat 3-person standups.
Ownership end-to-end
I’d rather own a thing badly than co-own it well. If it breaks at 03:00, page me. If it ships, blame me.
Product, then engineering
The cleanest architecture means nothing if it solves a problem nobody has. I’ll push back on specs as much as I push back on code reviews.
Calm under fire
I’ve been on call for production incidents involving real money. The room gets quieter, not louder, when I’m in it.
Strong opinions, weakly held
I’ll fight for a position with diagrams, benchmarks, and references. I’ll drop it the moment yours are better. Track record matters more than seniority.
Writing as engineering
Half of my output is prose. RFCs, runbooks, post-mortems, decision logs. If a system can’t be explained in 500 words, it isn’t done.
Climbing
Bouldering 3x/week at Equilibrium. Projecting V6, frustrated by V7s that should be easier than they are. Mostly there for the puzzle.
Hindustani classNameical
Learning theory casually — raga structure, taals, how Kishori Amonkar thinks about phrasing. The closest thing to engineering I’ve found that isn’t engineering.
Reading
DDIA on permanent reread. Currently slow-reading Deutsch’s The Beginning of Infinity. Last fiction: Piranesi by Susanna Clarke, which broke my brain.
Mentoring
Quietly pairing with 4–5 mid-level engineers at any given time, mostly via ADPList. The questions get me out of my own head.
Cooking
House specialty: a dal that takes 5 hours and I refuse to apologize for. Mostly South Indian, occasional Sichuan.
Writing public
42 essays and counting. The discipline of writing weekly is the single biggest career upgrade I’ve given myself.