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 prototype web and desktop tool for querying data with an LLM and building interactive dashboards.
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!
A custom SQL parser, query rewriting, and validation engine for schema-aware SQL transformation.
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!
My work at Hublsoft has left me as the individual leading architectural change and transformation of our product. I have been central to initiating and building the core frameworks and initial implementations behind new product capabilities, including AI orchestration loops and the integration of LLM tooling into the platform. This included creating the foundations for how we design, coordinate and evolve AI-driven workflows, turning early exploratory ideas into production-ready patterns that the wider team could build on.
I also lead and own our deployment, CI and local development workflows, moving us from a company reliant on shared remote resources for even the simplest of local development to a setup where we can spin up and develop the complete product stack locally, and run the full application in a local or remote Kubernetes cluster without depending on the corporate network.
The bulk of my early work to get us to this point included migrating our codebase from .NET Framework to .NET Core, moving our build process from an on-prem TeamCity server to GitHub Actions, producing Linux container images for all our services, and continuing to support and evolve our on-premises/VM-based deployment model orchestrated via Octopus Deploy.
As an individual contributing member of the engineering management team (alongside other lead engineers, the CTO and CEO), I have a high level of ownership over the technical direction of the product, with a primary focus on the .NET backend system and hosting architecture, while also contributing to broader architectural decisions across the product and spearheading key front-end initiatives.
Another major focus here has been developer productivity. I have built tools and frameworks to help the rest of the team iterate quickly without worrying about how the underlying systems fit together during their inner development loop. This includes spearheading administrative tooling for managing, tracking, validating and monitoring our data ingestion pipeline, giving the team visibility into pipeline health, data quality and operational status 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