LootLocker
[Oct 2022 β Present]
Senior Software Engineer
[Remote]
Backend engineer on the core Go service, the developer console, and the platform's self-hosted infrastructure.
Moved the production data store off managed infrastructure onto self-hosted bare-metal MySQL on Hetzner (deliberately outside the cluster) and built the k3s platform around it: deploys, failover, backups and monitoring.
Designed the cross-platform identity system: platform account linking, conflict authorisation and merge flows with a declarative scenario test harness, later reused as the foundation for publisher-scoped cross-game progressions.
Platform commerce: catalogues, currencies, wallets, entitlements and real-money IAP across Apple, Google, PlayStation, Steam and Epic, with defensive entitlement recording, refund processing and vendor failure surfacing for self-service debugging.
Database engineering end-to-end: a code-based, feature-flagged schema migration engine, the GORMβsqlx migration, and InnoDB-level fixes such as eliminating a gap-lock deadlock by inserting before locking.
Shipped GDPR compliance as engineering: Art. 28 DPA acceptance flows, PII classification on onboarding data, admin audit logging, and bulk player right-to-erasure.
Migrated auth.game from Next.js to Go server-side rendering, consolidating the auth surface onto the core stack.
Plus the rest of the platform: game/server/admin APIs, leaderboards, Redis-backed presence, email campaigns, the Next.js developer console, a Go + templ + HTMX publisher analytics platform, and internal libraries like go-filestorage and mysql-retry.
Benefex
[Nov 2021 β Oct 2022]
Staff Software Engineer
[Southampton, UK]
Focused on improving the tech stack and service efficiency.
Created internal libraries to assist moving the company's systems to Go.
Defined and refined the process for re-architecting services in Go.
Introduced Prometheus metrics to the Go services.
Built an asset optimisation pipeline to make file uploads faster and more efficient.
Utility Warehouse
[Jan 2021 β Oct 2021]
Engineering Team Lead
[London, UK]
Built the Digital Experience team from the ground up.
Defined process, audited the team's entire codebase, produced architecture diagrams and targeted strategic improvements.
Drove the replacement of the customer portal PHP monolith with a micro-frontend application powered by React and GraphQL.
Quality push on customer-facing services reduced call volume and support tickets; the UW app went from 2.1 to 4.5 stars on the App Store.
1:1s, mentoring and the usual management aspects of the role.
[Aug 2020 β Jan 2021]
Senior Software Engineer
[London, UK]
Part of the digital experience team.
Improved usability and security of the login system via trusted third-party identity providers and 2FA support.
Helped define and establish better documentation practices.
LUSH Digital
[Oct 2019 β Jul 2020]
Technical Architect
[Poole, UK]
Principal Engineer duties minus the people management, stepping back to focus on the tech as an individual contributor.
[Nov 2018 β Oct 2019]
Principal Engineer
[Poole, UK]
Shared leadership of a 30-strong team alongside another Principal Engineer.
Spearheaded the technical design of the Lush Pay tills back-end and oversaw its deployment across the UK, Italy and Japan.
Designed and architected technical projects; introduced standardised methods of handling data across the business.
Kept the usual 1:1s, reviews, holiday & pay management and mentorship, plus hands-on backend engineering.
[Jul 2017 β Nov 2018]
Senior Software Engineer
[Bournemouth, UK]
Go & PHP microservices as part of the SOA team and commerce squad.
Mentoring and support for new Gophers.
Development and maintenance of open-source software including LUSHDigital/core, LUSHDigital/modelgen and ladydascalie/v.
3SidedCube
[Apr 2016 β Jul 2017]
PHP Developer
[Bournemouth, UK]
API & backend work as part of the server team.
Worked on the Emergencies app suite, chained-crowdsourcing and the ATLAS preparedness backend.
AWS services ranging from RDS to DynamoDB, SQS, SES and SNS.