Scan contact card
Senior software engineer with a strong background in full-stack development, with a focus on C#, JavaScript, and TypeScript. I build and evolve complex platforms, drive engineering strategy, and deliver reliable production systems that support distributed teams and users at scale, leveraging my engineering, DevOps, and CI/CD skills.
A tool developed to automate setup and development of our core product on both development machines using minikube and remote Kubernetes clusters alike
A conversational data analysis tool where an LLM safely queries your database and every figure links back to the query behind it.
This suite of interdependent systems that together manage the Policy management system for an insurance company.
This is a complex enterprise application and framework to provide a simplified workflow for send out mail to clients and other third parties.
This was a massive enterprise scale webB application servicing all schools across all of England and Wales. The system provided was a self validation and tracking platform to improve the health and wellbeing of schools and pupils. This platform had massive reporting and a strict hierarchical security model.
See all Creations for more examples!
Built a SQL query engine that abstracts underlying data sources behind a virtual schema, rewriting and planning queries for execution across remote databases and other providers.
A cli for exposing the services and ingresses of a Kubernetes cluster to be accessible from the users local machine.
ImageSharp is a new, fully featured, fully managed, cross-platform, 2D graphics API. Think System.Drawing but sane.
ImageSharp is a new, fully featured, fully managed, cross-platform, 2D graphics API. Think System.Drawing but sane.
A template driven code generator for converting graphql queries into a strongly typed classes for both TypeScript and C#.
See all Open Source Contributions for more examples!
I lead architectural change across Hublsoft’s product and am part of the engineering management team alongside the CTO, CEO and other lead engineers. I own the technical direction of the .NET backend and hosting architecture, contribute to wider architectural decisions, and drive key front-end initiatives.
Most recently I have been central to the company’s AI work. I built the core frameworks and first implementations for AI orchestration loops and LLM tooling, turning exploratory ideas into production-ready patterns the wider team builds on. I designed both of the product’s data query layers: a restricted custom SQL dialect built as a DSL over an existing query engine, and, for AI-Canvas (see Creations), a newer Tabliq-based layer that accepts general SQL and validates and rewrites it safely. I remain the backend lead as AI-Canvas moves from alpha towards a beta rollout, with a larger front-end team building on top of it.
I also own our build, deployment and local development workflows. I migrated the codebase from .NET Framework to .NET Core, moved builds from an on-premises TeamCity server to GitHub Actions, produced Linux container images for all our services, and continue to evolve our VM-based deployment model orchestrated through Octopus Deploy. Developer productivity has been a consistent focus: I built Localdev, which replaced a setup process that could take up to a week with a single command and lets the full stack run locally or in a remote Kubernetes cluster without depending on the corporate network. I also led the administrative tooling for monitoring and validating our data ingestion pipeline, giving the team visibility into pipeline health and data quality at scale.
While working at MD Insurance Services, I proved my vision and architectural design skills, starting as a Senior Developer and becoming instrumental in promoting best practices such as code reviews and CI/CD. I worked closely with business users to shape a design that matched their goals and guided a wider team of senior and junior developers toward the agreed technical vision, leading to my promotion to Lead Developer.
Alongside guiding the overall architectural design of our in-house developed system, I provided direct support and mentoring to team members and helped them find solutions to their development tasks.
The major project I was responsible for was the CRiSP risk and policy management system, which became the core platform for much of the business, supporting onboarding for new clients via public-facing portals and specialist internal tools for surveying and field operations.
In addition to the design and direction of the platform, I was also responsible for maintaining a large suite of QA environments, deploying and monitoring production systems, and developing a robust DevOps pipeline that supported low-downtime releases and ongoing re-platforming work.
During my time at 2020 Legal, I was directly responsible for improving development practices and delivering high-impact systems.
In my role, I had complete autonomy over the technical architecture and was instrumental in shaping the direction of the development team. This included introducing best-practice development procedures, migrating the company from SVN to Git, adopting the GitFlow development pattern, improving the continuous build and deployment workflow by moving to Octopus Deploy as a central deployment solution, and transitioning internal systems toward a service-oriented architecture. I implemented a middleware service wrapping CRM data to provide a clean, two-way API for integrating new tools, and as a proof of concept, migrated the existing customer portals to run exclusively from it.
I produced a wide range of technical systems for 2020 Legal, from small integration pieces that worked around CRM limitations to large-scale systems affecting every employee, including solutions for managing outgoing mail, printing, and document handling (see EDS and PEX).
In addition to these projects, as a full-stack developer, I rebuilt most of the company’s websites using Umbraco.
Over the period I was employed at ICE, I progressed from junior developer to mid-level/senior developer. In my role, I acted as the technical lead and architect for the software produced, making key decisions on both backend and frontend development choices. I was responsible not only for leading the technical direction of the team but also for delivering full-stack solutions for internal and external clients alike.
During my time at ICE, I worked on a wide variety of projects. My first project, the Healthy Schools Programme website, involved refactoring a hybrid VB.NET/C# single-layer WebForms solution into an n-tier C# application and later re-developing it as a multi-application MVC system while continually improving and expanding the feature set.
As my skills developed, I took on increasing responsibility across the full development lifecycle, from scoping through to development and deployment. Two internal projects I owned end-to-end were a bespoke CRM for our in-house stop-smoking service and our SaaS hosting platform. The CRM used a WinForms front end with a local CouchDB datastore for offline multi-master replication, supported by a customized reporting solution built on CouchDB’s map/reduce capabilities. The SaaS platform was built around core MVC and WebAPI solutions, with satellite Umbraco-based sites linking in as data, user, and settings stores.
In addition to these projects, as a full-stack developer, I was responsible for producing countless client websites, from implementing designs and wiring JavaScript to backend web services I developed. These ranged from simple brochure sites to complex web applications used for tracking physical activity.
My experience extended beyond websites. I was also responsible for developing web-connected mobile applications using both PhoneGap and Titanium Mobile, as well as systems running on touchscreen kiosks using web technologies.
During my time here, much of my role involved taking help desk calls, reproducing issues, and investigating problems reported by users of a bespoke software system being used across multiple NHS trusts and hospitals. I also performed data preparation by writing SQL scripts to extract live data from databases for later updates and reporting.
My responsibilities also included managing the office network as the primary technical support contact, with a focus on maintaining the web, SQL, and file servers. In the role of Technical Support Officer, I was also responsible for supporting the technical network solutions for our clients.
During this period, I developed key skills in project management, teamwork, programming, internet development tools, and internet technologies.
A Levels: Computing, Maths
AS Levels: Advanced Maths, Physics