Software engineering
Building reliable applications with clear boundaries, thoughtful tradeoffs and room to evolve.

I work across engineering, architecture, product thinking and people. The value is in connecting them well.
Building reliable applications with clear boundaries, thoughtful tradeoffs and room to evolve.
Giving teams clarity, trust and the foundations to do their best work.
Connecting engineering decisions to useful outcomes for people and businesses.
Reducing complexity so systems stay understandable and maintainable.
Designing scalable services and application foundations around real needs.
Taking ideas from interface and APIs through data, deployment and iteration.
Creating tools and patterns that help other engineers move confidently.
Using AI with strong conventions and human judgement to improve delivery.
Pioneering ways to make AI a first-class part of software delivery. Focused on giving coding agents the right architecture, conventions and constraints so they can produce useful, maintainable software with less manual intervention.
Designing systems and reusable foundations that reduce unnecessary complexity, establish sensible defaults and allow developers to concentrate on business behaviour.
Building tools, patterns and practices that make other developers more effective. Responsible for technical direction across a 12-developer team and for helping engineers adopt new approaches, particularly around AI-assisted development.
More than 16 years of software development experience across the full application stack, providing the technical grounding needed to design, evaluate and guide modern application development.
Long-standing advocate for repeatable environments, containerisation, automated delivery and removing unnecessary friction between development and production.
Open to new opportunities, interesting projects, or just a great conversation.