I've been working in software since 2008, first as a full-stack engineer
and since 2018 as a software architect. Over that time my focus has
shifted from building individual features to shaping the systems those
features live in — their boundaries, their failure modes, and the
contracts between them.
My technical roots are in message-oriented middleware. The discipline of
designing for asynchrony, back-pressure, and eventual consistency still
informs how I approach distributed problems today. More recently that work
has evolved into cloud-native architecture, microservices, and
behaviour-driven design — building systems that are observable, testable,
and honest about what they do.
Lately I've been spending time on AI from an orchestration angle:
how models fit into larger systems, where the boundaries of reliability
sit, and how to use them without handing over control. That interest
directly shapes the tools I build.