Education
Experience
I ship ASP.NET Core microservices, Azure Functions, and containerised workers that handle tens of thousands of jobs a day without manual intervention. Earlier work on NVIDIA Jetson edge software taught me to respect memory budgets and latency ceilings.
Comfortable extending into cloud infrastructure (Azure, AWS), DevOps, and frontend when the problem requires it — TypeScript, React, Node.js, Terraform, Ansible.
Based in Birmingham, UK.
Notable projects
Redesigned a legacy offence-package pipeline into a serverless, encrypted routing system processing tens of thousands of submissions per day.
The legacy pipeline was an in-process monolith that held submissions on disk between stages — a throughput ceiling and a compliance risk. Re-architected onto Azure Functions with Queues as the only durable surface, Key Vault for rotation, and a small Blob Storage write-through for the large binary bodies. Every hop signs and encrypts with AES-256 using per-tenant keys.
Centralised camera-access platform. Passwordless, role-scoped, multi-region — the single auth surface for every camera in the estate.
Built around the REPR pattern so every endpoint has a single request, endpoint, and response type — trivial to test, trivial to reason about. xUnit + TestContainers for the auth paths; end-to-end with Playwright against a live B2C tenant.
Containerised services that transform offence packages into each UK police force's idiosyncratic format. Runs 24/7 without manual intervention.
Each force gets a dedicated transformer service with per-force contract tests. The fleet scales independently on K8s with RabbitMQ as the work queue. A bad format deploy can only take down its own force — blast radius was a primary design constraint.
A modular monolith for CV tailoring and application tracking. Multi-provider AI over SSE, a scraping worker, and a browser extension that pulls jobs into the queue.
9+ vertical-slice modules inside a single process — each owns its storage, its endpoints, its tests. Provider abstraction sits in front of every LLM so swapping provider is a config change. Infra is all Terraform; deploys are boring.
Advanced ANPR infrastructure for tracking technology deployed across West Midlands, UK. Increased illegal plate detection accuracy by 70% using YOLO v8 AI.
Built real-time graph and insight generation from over a million database records, surfaced through a React frontend designed for non-technical customers. YOLO v8 drives the AI detection layer on edge hardware.
Cross-platform dev-environment provisioning — same machine every time, whether it's Ubuntu, Fedora/RHEL, or macOS.
CI runs the playbook inside a fresh Ubuntu 24.04 container on every PR; the resulting image is published to GHCR so anyone can pull the fully-provisioned environment without running the playbook themselves.