Curriculum vitae

Personal Statement

I'm Phil, a Senior Full-Stack Web Developer currently residing in Reading and working remotely. I have over 15 years of commercial experience in the world of web development. Technology has changed a lot and I pride myself on keeping up to date with new and exciting tech. My aim is to build useful web-based software solutions that solve real world problems. I have a full spectrum of experience across the full stack of Frontend, Backend and DevOps, as well as all parts of the software lifecycle. Although I am primarily a developer (working mostly in Node.js & Typescript), I like to visualise the end-product and how it will solve the problem, so I have a real passion for systems design. I work well in a team and have excellent communication skills but can also take responsibility on my own if necessary. I also have interests in scalable architecture and event-based systems. I enjoy football and poker.

Please continue reading below for my professional experience. You can also view my side projects, and the code for them on my personal github.

Technical Skills

  • Main Tech
    • Node.js
    • Typescript
    • React.js
    • MongoDB
    • Redis
    • Docker
    • Express, Middleware
    • Webpack
    • Kubernetes
    • Google Cloud Platform
    • Git, GitHub Actions
    • Linux/Shell
    • Show more
  • Key Skills
    • Excellent Communication
    • Understanding Technical Requirements
    • Problem solving
    • Solution design
    • Analysis of data
    • Database design
    • Hitting the ground running
    • Time management
    • Seeing the big picture

Employment History

Forsman & Bodenfors Inhouse ABApril 2016 - Now

Lead Web Developer

Worked on a range of exciting projects at this digital agency for 7 years. Most of the above skills I have learnt and applied in this role. I became Lead Web Developer in 2021 and have been responsible for putting in place the mechanisms & processes that maximise the productivity of the digital team today. Today my workload is split between mentoring, systems design & systems development.
More details

STS - Student Travel Schools AB2013 - April 2016

Web Developer

My main role was to extend the existing Web CMS solution with useful web-based features which the marketing team could utilise. We focussed on responsive design, user experience and web 2.0. I also developed a PHP/MySQL system from the ground up to calculate complex package deals for one of the products.

Self Employed2010 - 2013

Web Developer

Implemented web software solutions for clients using LAMP stack (PHP & MySQL). My main client was working on a Tax/Accountancy solution in PHP with a Maths heavy focus. The software spoke with HMRC APIs, generated PDF files and automatically added semantic tagging to tax documents for electronic submission to Companies House and HMRC.

Fusion Advertising & Design Ltd2006 - 2010

Junior Web Developer

I was trained by a colleague. We developed web software for Sales & Lettings estate agents using LAMP stack with Postgres. The role included using Linux terminal for server admin and various bash scripts for manual deployments.

Commercial Experience

Brief details about some of the digital projects we have completed recently.

Vehicles Recalls System

  • Automatic bulk sendout of vehicle recalls when a safety defect is found.
  • System is supplied a list of Vehicle Identification Numbers (VINs) which need to be looked up and grouped in to lists using complex business logic.
  • Collection of 10 microservices to separate the different concerns of importing, processing, sorting, sending out, generating PDFs and various frontends.
  • Backends using Node.js, Typescript & Mongo DB
  • Frontends using React & Next.js
  • File received via IBM MQ queue using an official Node.js connector npm package.
  • DVLA equivalent API integration for vehicle data fetching.
  • Some vehicle data services exposed using federated GraphQL
  • VIN worker processor written as stateless and scalable for asynchronous execution, recoverability and to control throughput levels.
  • Individual sendouts via a print mailing API or electronic mailbox API where supported.
  • PDF generation of recall notice using npm libraries.
  • Sensitive social security number encryption & decryption system integration.

Shuffleticket

  • A ticket website where you can purchase a random ticket to an upcoming but unknown event in one of Sweden's three largest cities.
  • A physical ticket is sent with a secret code (underneath a scratchable area) that gives access to the ticket.
  • Countdown to next ticket drop on the frontend to cause surges in demand.
  • Resource allocation; database design will not allow duplicate booking of a ticket.
  • Asset import scripts to store raw ticket PDF files in Google Storage Buckets for automatic access.
  • Payment gateway integration with asynchronous callback mechanism once payment is accepted.

QA Checklists

  • Mechanics (in different markets) needed a printable checklist of quality assurance items that they can tick off during quality checks of vehicles leaving the factory.
  • Base checklists are made in English and each item must be translated in to a target language for the document to be generated in that language.
  • Tracking changes in base templates and auto sending email notifications to translators.
  • Browser Web Sockets signal live document changes to avoid the need for row level locking or document locking between users.
  • PDF Generation using Puppeteer & Headless Chrome.
  • Authentication via OAuth 2.0 SSO (single sign-on) identity provider.
  • Local timezone used to render dates stored in the database in UTC.
  • JWTs used to assert login claims to the backend.

Soft Toy Competition

  • A campaign, targetted at children, to receive photo subissions of designs for the next soft toy to be mass produced.
  • User login via RESTful API integration.
  • Mongo DB collection of submissions with star rating for sorting.
  • Integration with AWS Simple Storage Service (S3) API.
  • PDF generation of a certificate after upload using 3rd party npm libraries.
  • Client side image resizing before upload using native browser.

Education

The University of BirminghamAutumn 2002 - Summer 2005

BEng (Hons) Computer Science with Software Engineering, 2:1

Side Projects

Please review my side projects.