Independent
Building systems that stay understandable.
I mainly work on Go and .NET services, APIs and data flows. I prefer simple boundaries, explicit failure handling and code that is easy for the next engineer to change.
Lead Software Engineer
Go · Backend services · Distributed systems
I’m a Lead Software Engineer based in Manchester. I mainly work with Go, backend services and distributed systems, leading projects from early technical decisions through to production while staying close to the code.
Experience
A concise view of my experience. My work is described at a deliberately high level.
Independent
bet365
bet365
bet365
Fujitsu
How I work
Employer work is deliberately kept high-level here.
I mainly work on Go and .NET services, APIs and data flows. I prefer simple boundaries, explicit failure handling and code that is easy for the next engineer to change.
Reliable software needs useful monitoring, sensible rollout plans and clear operational behaviour. I try to make those decisions during development, not after release.
I help teams shape solutions, make trade-offs, break work into deliverable stages and learn from each other. I still contribute code, reviews and production support.
Selected projects
A growing collection of independent products and technical experiments, from production software to focused developer tools.
Tournament management software that brings entries, draws, scheduling and results into one place.
Why I built it Tournament organisers were still coordinating complex events through spreadsheets and message threads. I wanted to turn that fragmented process into one clear workflow.
An explainable email risk analyser that scores saved messages and shows exactly which warning signs it found.
Why I built it Spam tools often return a verdict without showing their reasoning. I wanted to explore a transparent, testable approach where every point in the risk score can be understood.
A concurrent webhook delivery service that persists events, signs requests and retries failures without creating duplicate jobs.
Why I built it Webhook delivery looks simple until receivers fail or clients retry. I built RelayForge to explore how Go worker pools, PostgreSQL locking and idempotency combine into reliable infrastructure.