I'm a developer and love to build innovative software solutions, that meet your business needs. My favourite work is creating simple solutions for complex problems, working in an agile environment; refining, improving code, and learning new technologies.
My favourite language is JavaScript/TypeScript, I have the most experience with it and love the flexibility that a multi-paradigm language provides. As per the JS ecosystem, I'm a big fan of React, Next.js, and NodeJS on the server. I love learning about new technologies and how they can provide real business solutions. As such I have been learning Rust when I get some spare time, and out of my own interest I've been playing around with Flutter too.
Currently I am a Cloud Engineer at Rapha, and work building AWS infrastructure for our backend services. I love cycling and love working for such a great brand in the industry.
I leverage modern AI tools to help me build better software faster. I don't know if AI will replace software engineers but I am always learning to use it to improve the software I deliver.
In my spare time you'll find me travelling with my wife, road cycling, mountain biking or playing my guitar.
Experience
Rapha
Cloud Engineer (Backend)
Integration with US based warehouse:
- -A new US based warehouse provider was required to streamline the US order process.
- -Integrated our order flow with their API, using API gateway, SQS and Lambda Functions deployed via Terraform and Serverless.
- -Saved costs as orders were initially being manually sent by the admin team.
- -Orders could then be processed round the clock helping the Warehouse Provider and customer experience.
- -SQS Queues and Batch processing Lambda to process orders, catching any errors. As well as ensuring orders are not lost.
- -Communication with the US provider was key to overcoming issues and ensuring the order flow was smooth.
- -Setup of Graphana Dashboards and alerts, for observability and monitoring of the system.
NodeJs
Terraform
NX
AWS
S3
SQS
EventBridge
Serverless
TypeScript
Jest
Graphana
GitLab
Maintenance of older code and bugfixes:
- -BAU bug fixing and maintenance of code. Updated repos to use newer technologies such as ESBuild to replace Webpack when bundling Typescript Lambdas (faster builds/smaller bundles).
- -Updating and adding tests, to ensure code quality and stability.
NodeJs
Terraform
NX
AWS
S3
SQS
EventBridge
Serverless
TypeScript
Jest
Graphana
GitLab
Groundsure - from July 2022 to September 2025
Full stack software engineer
New admin system:
- -Replacing legacy admin system with new React application, allowing for better UI/UX for groundsure staff, more functionality, with an easier to maintain and update codebase.
- -Order management for customer services much quicker and easier, faster response times leading to better service generating more sales through retention of customers.
- -We incorporated developer tools to monitor errors in our report generation allowing for better observability of our systems, using NewRelic and AWS queues as part of this.
- -Updated our orders API and pricing model, whilst still supporting some legacy XML orders for customers who have not yet migrated to the new system.
React
StyledComponents
NodeJs
Express
MongoDB
AWS
Serverless
NewRelic
TypeScript
Replacing x2 legacy ordering systems:
- -The business had a need to replace the outdated ordering systems which were written in Java, C# and used SQL Server. The legacy codebase had become unmaintainable having been written by a 3rd party and become outdated. We had to reverse engineer aspects to understand some business logic needed.
- -Re-built the ordering platforms using React, Next.js, Express, MongoDB deployed to AWS. Which created a much more modern, user friendly UX/UI and improved the overall performance of the system.
- -Our reports require drawing on maps, so we built our own mapping library using MapLibre GL and built out our own custom drawing tools for this (such as an auto-fill drawing tool).
- -We also incorporated hundreds of layers for our customers to apply to the map and analyse, such has Flood risks, Radon levels, and many more.
React
Next.js
Tailwind Css
Express
MongoDB
AWS
MapLibreGl
Zustand
TypeScript
New interactive online product - Groundsure Explorer:
- -Building new interactive map, displaying over 50 historic map layers from our in-house records and tile servers. Previously we only provided actual pdfs of the historic maps.
- -Customers can now view their historic maps online to interrogate their sites for potential historic risks.
- -Added the ability to add annotations (Points, Polygons and Labels) to the map which have their own notes and tags.
- -Hundreds of data layers can be applied to the map to allow for location analysis, provided again by our own tile servers.
- -Built back end routes to support this functionality, using Express and MongoDB, so users can save their changes.
React
Next.js
Express
Mongo
AWS
MapLibreGl
Tailwind Css
SST
TypeScript
Turf.js
New report for Australian market:
- -Building a new report which we launched in Australia, highlighting risks regarding property and land purchases.
- -Puppeteer was used on the server for the report generation on the server, hosted on AWS backend, SQS for queueing and processing, and S3 for storage.
React
Next.js
Puppeteer
PostgresSql
Express
Mongo
AWS
MapLibreGl
TypeScript
Ordnance Survey Mapping Product:
- -Bringing a specialist product we sold in house. External contractor was producing these for us but at a high cost and limited control.
- -Helped adjust and integrate with the Python API built by the GIS team to provide to scale mapping.
- -Setup the deployment to AWS lambda and SQS queue architecture to produce maps saved to S3 and send messages to process the report.
- -Created a to scale report template which used the images produced to pdf build reports to the design spec and deliver to customers.
- -Setup a report preview with React to provide a faster and better developer experience.
React
Python
Tailwind Css
NodeJs
AWS
SQS
S3
Serverless
NewRelic
TypeScript
Maintaining our BAU report generation system:
- -Updating our Ruby based report generation system which is hosted on AWS using docker containers.
- -Ruby PrawnPdf used for PDF generation, with SQS used heavily for queueing and processing.
- -I have taken the opportunity to work on this a number of times to broaden my coding knowledge and experience as well as supporting the business.
Ruby
PrawnPdf
Docker
PostgresSql
AWS
IT Career Switch - from Aug 2021 to Jun 2022
Coding Traineeship – Full Stack Software Developer
Course:
- -During the Traineeship I had to demonstrate a very competent level of the following: HTML5, CSS3, JavaScript, PHP, SQL, Python, Java, C#, GitHub, and more.
- -Passed the Microsoft MTA: Introduction to Programming Using HTML and CSS exam.
- -We incorporated developer tools to monitor errors in our report generation allowing for better observability of our systems, using NewRelic and AWS queues as part of this.
- -Updated our orders API and pricing model, whilst still supporting some legacy XML orders for customers who have not yet migrated to the new system.
HTML
CSS
JavaScript
PHP
SQL
Python
Java
C#
Final project 1 - Gazetteer map application:
- -Creating a “Gazetteer” web app using LAMP stack, using LeafletJs which allowed users to click on countries to find information such as population, currency etc. using API calls to provide this data from a range of sources.
- -Provided multiple other sources of information such as country capital weather, top 5 news articles, and more.
- -I'm a big fan of Formula 1 so I also used the a Formula 1 API (Ergast) to highlight all the races on for the current year and provide other information about these.
LeafletJs
JavaScript
Bootstrap
FTP
PHP
CSS
jQuery
Final project 2 - Company Directory:
- -A user requirements document was needed to be prepared which was checked for sign off, before developing a “mobile first” full stack REST application.
- -Frontend built to add, edit, delete, search and filter company personnel.
- -Backend built to support the above CRUD operations using PHP, MySQL, and a REST API.
- -Rules implemented to ensure delete operations were safe (eg. Employee cannot be deleted if belong to department).
- -Validations implemented on the frontend and backend to ensure data is entered correctly and stored securely.
JavaScript
HTML
CSS
SQL
PHP
LAMP
Bootstrap Css
jQuery
Other projects
Studio Sunlight
Software Engineer
- -Much like this website. Setup github workflow for continuous deployment of website to cheap Hostinger Shared hosting.
- -Custom domain name and SSL certificate provided by Hostinger.
- -NextJs used for frontend, with Typescript and Tailwind CSS for styling - compiled into a static website.
- -Very minimal reliance on external Libraries - all custom code for Modals, Image Carousel, and form validation etc. to reduce maintenance burden, provide more control and flexibility.
- -PHP mailer used to send emails from the website contact form to custom email address.
- -Built a Rust Image processing CLI tool to convert .png images to .AVIF format for faster loading on the website (10x times smaller but still great quality).
- -I used AI tools to help me with SEO optimisation, incorporating a sitemap.xml, robots.txt file and meta tags for each page.
NextJs
Hostinger
TypeScript
Jest
GitHub Actions
PHP
Tailwind CSS
AVIF
AI Tools
SEO Optimisation
Other