About
I am a software engineer focused on building production systems that operate reliably at the intersection of backend engineering, data platforms, and applied machine learning. My work centres on systems where the primary challenges are not isolated algorithms, but long-term behaviour: data quality, system evolution, failure handling, observability, and safe iteration.
I am particularly interested in problems that sit between disciplines: ML-enabled services that must behave like dependable software, event-driven platforms that support multiple teams, and data-intensive systems where contracts and operational tooling determine whether a system scales or fragments. Across both professional roles and personal projects, I tend to work end to end, from shaping problem statements and system boundaries through to deployment, monitoring, and long-term stewardship.
This site serves as a professional home for selected work, technical writing, and the principles that guide how I design and operate production systems.
Background
My background spans software engineering and applied machine learning, with most of my work focused on building and operating real-world systems rather than isolated prototypes. I have worked on backend and distributed systems, data pipelines, and ML-enabled services where reliability, clarity of interfaces, and operational robustness are first-class requirements.
In industry settings, my work has typically involved designing components within larger platforms: defining data and service contracts, building ingestion and processing pipelines, introducing deployment and rollback mechanisms, and developing observability so systems can be understood while they are running. These environments have reinforced a systems-oriented approach, where architectural decisions are evaluated in terms of their long-term impact on teams, operability, and change.
Alongside professional work, I build end-to-end personal systems to explore ideas more deeply. This includes designing and operating a production data platform in the specialty coffee space, covering ingestion from heterogeneous sources, data normalisation, cloud deployment, recovery mechanisms, and historical analysis. That combination of industry and independent work has shaped a practice grounded in system design, continuous iteration, and long-term maintainability.
Focus areas
Production ML systems
Data pipelines, model deployment, monitoring/observability, reliability, and iteration loops that keep ML valuable after initial launch.
Backend and distributed systems
Service design, event-driven architectures, performance and scaling considerations, and pragmatic trade-offs that keep teams shipping.
Engineering effectiveness
Tooling, automation, and operational patterns that improve developer productivity and reduce on-call burden.
How I work
- Clarity first: I make trade-offs explicit and document decisions.
- Incremental delivery: I prefer small, reversible steps with measurable value.
- Operational mindset: Reliability, observability, and maintainability are part of “done.”
- Collaboration: I align stakeholders early and communicate progress with low noise.
What I am looking for
I am looking for senior-level software engineering roles where I can work on backend and distributed systems with real-world impact, particularly in data-intensive or ML-adjacent environments. I am most interested in teams building platforms or products where reliability, observability, and thoughtful system design are first-class concerns, and where engineering is approached as a long-term practice rather than a short-term delivery function. I enjoy problems that sit at the intersection of architecture, operational robustness, and pragmatic delivery. I am UK-based and open to remote or hybrid roles.
For a quick overview, see Experience and Work. If you want to reach out, use Contact.