Lead Software Engineer with 15+ years' experience building reliable, evolvable systems using DDD, event sourcing, AWS Serverless, and event-driven architectures. Outside of client work, I build practical AI-assisted developer tools, including coding-agent harnesses, MCP servers, and tools for local development workflows. I also host Compiled Conversations, interviewing practitioners in software architecture, databases, AI tooling, and engineering practice.
Building end-to-end systems across embedded firmware, cellular telemetry, and cloud-native SaaS, with current engagements in the UK railway signalling sector.
Built a multi-tenant SaaS for parsing and reporting level-crossing signalling logs across multiple register formats. Delivered using Laravel, AWS Lambda, CDK, Twilio, and web-push.
Built ESP32 telemetry firmware with cellular GPRS, publishing radar-speed and barrier-strike events over MQTT to a Terraform-managed AWS ingest pipeline.
Owned delivery for operator clients, from domain modelling of crossing event semantics through trackside hardware to cloud-side reporting and alerting.
Instapro
Lead Software Engineer
–
Promoted to Lead Software Engineer after the MyBuilder and Instapro merger, shaping technical direction and leading key greenfield projects in a larger organisation.
Led a major retailer integration service, running event storming sessions and collaborating with stakeholders from design to rollout. Delivered using React, TypeScript, PHP, and AWS Serverless.
Built a chat platform as a micro-frontend vertical-slice service, enabling rapid delivery and experimentation with custom markup and Slack-like features.
Drove architectural decisions and guided teams in breaking up the monolith, adopting vertical-slice service ownership, and designing around subdomains and bounded contexts.
MyBuilder
Site Reliability Engineer
–
Transitioned to a Site Reliability Engineer role to focus on cloud-native infrastructure and platform enablement, supporting development teams and contributing to architectural decisions.
Led the development of a greenfield insurance application and underwriting system (MyBuilder Plus), delivered in under six months using DDD, Event Sourcing, CQRS, Hexagonal Architecture, Terraform, and Serverless technologies.
Migrated all services to Serverless (AWS Lambda), reducing operational overhead, empowering teams to focus on business value, and accelerating delivery.
Created internal developer tooling, including a CLI to streamline service discovery and local development, significantly improving developer productivity.
MyBuilder
Senior Software Engineer
–
Promoted to Senior Software Engineer, leading major product features, mentoring junior engineers, and shaping infrastructure strategy.
Led migration from on-premises to AWS using Terraform and many AWS services.
Built an event-sourced Tradespeople shortlist billing bounded context within the modular monolith.
MyBuilder
Software Engineer
–
Worked in a small, agile team applying modern engineering practices across the stack. Delivered both greenfield and brownfield projects, deepening my technical and business domain expertise.
Drove key product features that contributed to MyBuilder's acquisition by IAC in 2017.
Supported the migration to a modular monolith architecture, helping discover subdomains and architect bounded contexts.
Built a greenfield RESTful microservice for Tradespeople trade assessments, ensuring qualification standards on the platform.
Freelance
Web Developer
–
Took time out to travel internationally, with selected freelance web development engagements alongside.
360 Software Solutions
Web Developer
–
Delivered tailored web solutions for diverse clients, balancing new and legacy projects while honing communication and problem-solving skills.
Designed and implemented a modular MVC PHP content management platform, enabling rapid and efficient client website development.
Led the end-to-end development of a large-scale, web-based mobile search engine start-up, overseeing architecture and delivery.
Developed and launched a cross-platform mobile application for iOS and Android using Titanium, expanding client reach.
An educational Python coding agent built from primitives - extension-based architecture, multi-surface delivery (TUI, CLI, and FastAPI + WebSockets web shell), and provider-agnostic LLM support.
A personal AI assistant on a Raspberry Pi, accessible via Telegram. Self-extends through code-first skills with persistent memory, used daily for household tracking, reminders, and ad-hoc tooling.
Six MCP servers bridging LLMs to personal services - WhatsApp, Strava, Garmin Connect, Plex, Intervals.icu, and Obsidian - with paired CLI tools for the most-used integrations.
A SaaS that turns saved articles into narrated podcast episodes using LLMs for summarisation and text-to-speech, delivered directly to your podcast app.
A functional, C-like programming language designed for Advent of Code puzzles, with five independent implementations spanning tree-walking interpreters, a bytecode VM, and an LLVM compiler across Rust, Kotlin, and TypeScript.
RSVP web-application built using DDD, CQRS, Hexagonal Architecture, Event Sourcing, and deployed on AWS Lambda - a public reference for the architectural practices used in client work.
A Serverless Framework plugin for managing long-running Fargate ECS tasks, averaging over 18,000 weekly downloads on NPM.
Interests
Podcasting
Host of Compiled Conversations, interviewing leading practitioners in software and architecture - guests have included Scott Wlaschin (Domain Modeling Made Functional), Bruce Momjian (PostgreSQL core team), Chris Brousseau (LLMs in Production), and Vlad Khononov (Learning Domain-Driven Design).
Co-hosted Three Devs and a Maybe (2013-2019) with guests including Dan Abramov, Taylor Otwell, and Adam Wathan.
Chess
Designing a PCB-based electronic chessboard with local and remote play, exploring electronics and embedded systems.
Building chess-GPT variants to explore tokenisation, transformers, and LLM internals hands-on.
Running
Long-distance runner with 20+ marathons and an ultra completed.