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
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:1Side Projects
Please review my side projects.