Experience
What we delivered for the organisations we worked with.
What we delivered for the organisations we worked with.
Joined as a DevOps engineer supporting numerous projects and initiatives across the organisation, and eventually grew into the architect and technical lead of two enterprise platforms. One is a complex service-oriented R&D platform that helps drive critical business processes for over 1000 users, with over 100 people involved in its development. The other is a multi-cloud data analysis and reporting platform using machine learning models for metrics, transformation and prediction. The result: teams that release with confidence and choose the right tools for their own use cases.
Direct influence over core architectural, development and platform-wide technical decisions. Designed the platform APIs and the microservice architecture and coached developers through the implementation.
Designed and tested disaster-recovery plans for multiple projects, with backup and data-retention mechanisms behind them.
Provided the teams with full visibility into application behaviour: a monitoring layer on the Grafana stack with Loki, Mimir and Tempo, OpenTelemetry integrated into the application code with a reusable instrumentation skill, detailed dashboards and early-warning alerting, and training that enables the teams to operate it independently.
Designed an event-driven architecture on the CloudEvents specification, built around resource objects. Domain-driven design is applied consistently across every module. Four large modules were integrated with the core platform on these APIs.
Designed a URN-based permission system with access hierarchies seven levels deep. Added user management and access control that opened the platform to 700 users with distinct rights in one seamless rollout.
Architect of an enterprise ML platform for data preparation, transformation and prediction models, spanning AWS and Azure. The platform includes chatbots, agents and agentic workflows.
Provided the data teams with orchestration and parallel execution on the same CI/CD process: Airflow for pipelines, Ray and Spark for parallel and remote workloads.
Built an AI command centre: an LLM-powered knowledge and project hub adopted on two platforms. It pulls in meetings, Git, Jira and Confluence, manages tasks and helps analyse and fix production issues. Added a conversational agent so anyone on the programme can learn the project by chatting with it. It reduces the bus factor: knowledge of the programme is captured in one place instead of depending on a few individuals.
Built an agentic UI on the Vercel AI SDK where users create and edit dashboard panels through chat. Built a further AI application on LangChain and Langfuse. Introduced agents that prepare code changes and run DevOps tasks, with changes reviewed before they reach production.
Designed and built a full user tracking system with AI-assisted development. Created AI workflows used widely across the platform.
Established repeatable deployments across projects: GitOps with Flux became the standard, and a single Flux configuration now manages Kubernetes clusters and deployments across AWS and Azure.
Led the seamless migration of 130+ services from Azure to AWS onto that deployment setup. Brought 15–20 more services from a third project onto the same platform and replaced its ad-hoc development and release process with the same methodology. Trained its developers and DevOps support so they can maintain the solution independently.
Provisioned dedicated EKS clusters compliant with strict enterprise restrictions and procedures, with certificate automation through cert-manager and traffic management through Envoy and the Gateway API.
Enabled the data team to deliver Snowflake changes and data movement through CI/CD like any other code: Terraform modules and GitHub Actions pipelines, alongside contributions to the agile release process.
Reduced database cost by sharing RDS instances across applications and environments through automated, idempotent provisioning with Liquibase. Provided central logging on an ELK stack via the Elastic Operator, stable in operation for over four years.
Resolved live production incidents quickly. Fixed performance problems by scaling the infrastructure and the service layer, optimising code and running the performance tests personally.
Led the technology direction of platform efforts for teams of 30+ engineers and shaped the architecture of a programme of over 100 people. Mentored developers and DevOps engineers alike: trained a team of 10 DevOps engineers, several of whom are now seniors and managers, and the SRE team coached along the way reuses these patterns across many projects. Trained and onboarded development and DevOps teams across a globally distributed organisation, from the US through Europe to India.
Took over delivery of a financial-risk startup's prediction platform for banks and turned an early-stage codebase into a production-ready product: deployments from a laptop replaced with CI/CD, versioned and tested builds, and separate environments for safe releases. The owner got a product that could be released safely and demonstrated to bank directors.
Owned all DevOps. Replaced deployments from a laptop with CI/CD and automated, versioned and tested Docker builds.
Introduced Flux and GitOps deployments, and Terraform for the AWS infrastructure including Lambda and S3. Created multiple environments and testing procedures for safe releases.
Advised the company owner on software delivery and release management. Presented and pitched the product to bank directors during sales calls.
Architected a model management platform for versioning ML models and tracking their full lifecycle, reviews and test results. Used domain-driven design to produce the OpenAPI and software specifications. Led the development team in implementing it.
Shaped a platform spanning data-science experimentation in Jupyter, a Spark execution engine and a UI frontend. Established versioning and release processes for data models with the data science team.
Led most backend development in Java with a GraphQL API, including the Spark integration and progress tracking.
Refactored a intricate multi-phase prediction pipeline, branching into many steps and converging into several prediction models, into well-tested, maintainable code. Rewrote large parts of the original codebase for readability and reliability.
Gave Outfront Media an advertisement scheduling backend it could rely on for the digital screens across the New York and Boston subways: the data model and APIs at the core of the platform, request tracing across services, and authentication with audit logging.
Designed the data model and APIs for crucial parts of the advertisement scheduling platform. Presented and agreed those designs with the head of development, shaping the system's architecture.
Helped drive the move to an event-driven architecture with Kafka integration, for performance and scale.
Developed core features of the Java scheduling backend. Built distributed tracing that lets the team follow a user request across the layers of services when diagnosing issues.
Delivered authentication, authorisation and audit logging for the platform.
Strengthened the CI/CD pipelines with automated testing and deployment configuration. Debugged and evolved the services on Kubernetes.
Contributed to the AWS infrastructure, including S3 provisioning and Lambda execution.
Led development and monitoring across the platform. Oversaw delivery quality, making sure the implementation matched the specifications.
Mentored the other developers on the team.
Architecture and technical direction on Sky's rebuild of its monolithic video streaming platform into microservices, serving 10 million active users across on-demand, live streaming and downloads. Two years of biweekly releases with zero broken releases, and monitoring that caught issues before customers noticed.
Member of the architecture board for six months, shaping the design of the platform's core services.
Architected the platform's front door: the API gateway and download service. They orchestrate entitlements, geolocation, stream and CDN selection, ad insertion and bookmarking for every playback request.
Built the high-performance Java services that took the first hit of all incoming traffic behind the load balancers. Tuned them through profiling.
Hardened circuit breaking with custom timeout strategies and a tested wrapper around the Hystrix library. Found a failure mode the standard timeouts missed, a transfer crawling just below the HTTP timeout, named it the “network dribble” and added a timeout that catches it.
Built the authentication and authorisation services for the platform. Practised strict TDD and BDD throughout.
Owned the delivery pipeline end to end: Jenkins CI/CD, Ansible infrastructure configuration and the move to Docker containers.
Engineered zero-downtime deployments on AWS with a custom Python tool that drained, replaced and re-registered EC2 nodes behind the load balancer, so releases did not interrupt service.
Two years of biweekly releases with zero broken releases. Backed by staged environments and mandatory performance testing before every release.
Built proactive monitoring with a real-time health wall, Dynatrace and Grafana. The team repeatedly caught and resolved issues before customers noticed.
Led production incident response down to Wireshark-level network diagnosis across load balancers, Nginx and services. Once traced intermittent errors to a load balancer dropping connections and a timeout mismatch between the balancer, Nginx and the service.
Carried the project forward when the senior part of the team left, guiding mid-level developers until the team was rebuilt.
Recruited, trained and mentored engineers in TDD, BDD and DevOps practices.
Java backend engineer on a leading online gaming platform with 5 million users. Worked in the Wallet team that managed users' funds, keeping player money safe and consistent at 400–500 operations per second.
Designed the microservices and APIs for a large US partner integration. Each service owned its own database, with key functionality extracted from the monolith.
Designed the APIs and functionality of an elaborate system for managing players' wallets and funds. It supported several fund types and flexible ways for users to manage them.
Built heavily optimised Java services handling 400–500 operations per second.
Implemented the integration services from that design and took them through a smooth launch of the partner integration.
Worked within a well-structured modular codebase built on isolated libraries. Managed the build and automated-testing pipelines.
Onboarded and trained new engineers on the codebase and the development practices.
Helped HMRC reach and authenticate citizens across the UK: the messaging APIs behind Self Assessment communications and the low-latency identity service the whole platform depended on, in Scala with a functional paradigm.
Designed the APIs and business flows for platform-wide messaging: templating, delivery tracking and journalling of user interactions.
Built the citizen messaging service, reaching users through the app and by email.
Delivered low-latency authentication and fine-grained authorisation, the core identity service the entire platform depended on.
Optimised throughput with async IO, threading optimisation and parallel execution. Practised strict TDD and BDD with strong test coverage.
Configured the Jenkins builds and CI, integrating automated test runs into continuous delivery. Wrote the application deployment configuration scripts and helped prepare releases.
Mentored junior developers and QA engineers.
Helped DWP turn legacy benefit processes into digital services on Universal Credit, the national system used by offices across the country, released safely through staged environments with TDD and BDD.
Analysed and translated legacy business processes into modern digital services in Java. Shaped the service architecture while digitising those complex business flows.
Practised TDD and BDD in an agile delivery team. Released software safely through staged environments.
Mentored the team's junior developers and QA, as at HMRC.
Platform engineer on Nordea's internal cloud platform, a Kubernetes-like system for running and scheduling applications. It hosted many of the bank's important projects.
Built the software that provisioned and ran the bank's internal cloud: scheduling of services and workflows, virtual-machine management and Kubernetes-style orchestration offered to teams across the bank.
Built the core platform software in Java, with extensive Python development and scripting.
Mentored several junior developers throughout the project.
Engineer on Intel's automated USB device testing platform. It validated the newest Intel USB chips against real-world devices through networked, remotely controlled USB switching hardware.
Built the Linux client of a distributed test platform coordinating executors, multiple clients and networked switch devices. Owned that Java client in a multi-language system alongside C# server and Windows components.
Wrote a native C Linux driver for a custom USB device able to emulate any USB device type. Built a Bluetooth client library implementing transfer protocols. Engineered demanding mutex-based concurrent processing close to the hardware.
Established a reproducible build and shared version control for the project: introduced Maven and drove the adoption of Git across the entire project.
Laid the technical foundation for a large portion of the platform's later development. Delivered a substantial amount of functionality, vastly increasing the platform's testing capabilities. Mentored junior developers.
Machine learning and computer vision engineer on the Mayday 2012 research project. Built automated disease detection for endoscopic videos in partnership with the Medical University of Gdańsk.
Implemented image feature extraction methods from the scientific literature to build training and detection datasets. Trained and evaluated SVM and neural network models on specificity, sensitivity, precision and recall.
Developed the automated detection of conditions such as tumours and bleeding in endoscopic video, in C++. The learning and detection pipelines ran as jobs on a supercomputer cluster.
Built a C# viewer application on the MVVM pattern for reviewing videos and the detected frames.
Worked closely with gastroenterology specialists to label video frames and build the training data.
Applied prior computer vision expertise from a Master's thesis on crowd anomaly detection using optical flow and OpenCV.
Tell us about your project. We’ll start with a short conversation.
WRITE TO US{{tx.p8}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}
{{bx.first}}
{{it.t}}