Distributed systems
Designing services that stay predictable across boundaries, under load, and when parts of the system inevitably fail.
I focus on distributed systems, backend engineering and system design, where reliability, correctness and scalability matter.
What I work on
Clearer architecture. Safer change. Software built to keep its promises.
Core expertise
Designing services that stay predictable across boundaries, under load, and when parts of the system inevitably fail.
Building robust application cores, APIs, data models and integrations around the realities of the business.
Making architecture, ownership and trade-offs clear enough for software to evolve without losing coherence.
Moving critical systems forward safely while improving observability, correctness and operational confidence.
How I think
My background is in backend engineering, databases, event-driven systems and platform architecture, particularly in complex financial and transactional environments.
I think carefully about how systems behave under failure, how to modernise them safely, and how to keep them understandable as they grow.
Correctness before cleverness.
Failure is a design input.
Complexity must earn its place.
Software should serve the business.
Latest writing
A practical way to make failure a useful design input without turning every service into a fortress.
Read article →Why stable ownership and data rules matter more than drawing smaller boxes around code.
Read article →How to reason about duplicate work in transactional systems where retrying is unavoidable.
Read article →About
I work on the difficult parts of software: distributed behaviour, backend foundations, architecture, data and the operational reality around them.
More about me →Speaking
I’m available for conference talks, meetups, podcasts, panels and internal engineering sessions.
Speaking topics →