About

Backend engineer. Distributed systems and reliability.

My work spans fintech, travel, commerce, and HR, but the through-line is money-movement, where the failure modes are expensive: a duplicated charge, a repayment that never lands, an audit trail that disagrees with itself. Those do not show up under "it usually works," so most of my effort goes into the paths that only happen under load, retries, and duplicate callbacks.

In practice that is a few habits. The lifecycle is an explicit state machine, so illegal states cannot be represented. History lives in an append-only log, so past states are events I can read back rather than values I overwrote. Operations are idempotent, so a retry or a duplicate callback settles once. The Vida recovery engine is that under real financial stakes. The Job Hunt CRM is the same approach in code you can read end to end.

I came to this from law. I did an LLB before moving into backend work full time, and the habit that carried over is looking for the edge case that bites later. That is most of what reliability work is.

Experience

Tools

Things I have shipped production systems on.

Core. TypeScript and Node, NestJS, PostgreSQL, MongoDB, Redis.

Async and scale. BullMQ, event-driven services, multi-tier caching, webhooks.

Also. Python and Flask, Elasticsearch, Docker, AWS, CI/CD.

Elsewhere