[email protected] github.com/codeinabox
Highly motivated and passionate senior full-stack developer. University educated with a major in computer science, I bring a structured approach to development, employing processes of best practice, object orientated design, test driven development, behaviour driven development and agile iterations. I am able to grasp new technologies and legacy systems quickly. I'm also interested in playing a pivotal role in the team culture in terms of pairing, candid retrospectives and an ongoing focus on psychological safety and team cohesion.
- Versed in a diverse set of languages with strong experience using JavaScript, TypeScript, SQL, PHP and intermediate experience with Golang, Ruby, and Java
- On the front-end strong experience of both vanilla JS and using React and Redux particularly making use of hooks and functional components
- Advocate of domain driven design (DDD) in complex systems and using hexagonal architecture to separate domain logic from implementation concerns
- Strong believer in a test driven (TDD) approach to development where the acceptance criteria is the main driver
- Using pair programming, code reviews and architecture design records to enable knowledge sharing within the team
- Ability to take on DevOps responsibilities using Docker, managing deployments with CircleCI and BitBucket pipelines and working with AWS, Google Cloud and Heroku managed infrastructure
- Infrastructure as code using tools including Ansible, Terraform and Terragrunt
- Building custom dashboards and monitoring in Google Cloud
- Data modelling using relational databases and NoSQL schema-less databases
- Document indexing and search using Apache Solr and Elasticsearch
- Social media APIs including Instagram, Foursquare and Facebook's Graph API, FQL, and canvas
November 2022 - June 2023
Cultivated a schema driven approach to development and collaborated with the platform team to create a validation middle-ware, that enabled Zoa, a tech startup that span out of Bulb, to rapidly build a white label energy platform.
Stack: React, React Native, TypeScript, Zod, PostgreSQL, Docker, Kubernetes
September 2022 - November 2022
Delivered smart insights features to help customers better understand their energy usage, as part of the smart insights team.
Stack: React, React Native, TypeScript, NextJS, Apollo GraphQL, PostgreSQL, Docker, Kubernetes
Nov 2020 - June 2022
Consulted with online car retailer Cazoo as part of a team focussed on customer payments, during which I helped them both technically and shaping the team culture with a focus on pairing and fostering psychological safety. Key achievements were enabling open banking for UK customers and adding more payment methods in Europe including Sofort and SEPA bank transfers.
Stack: TypeScript, Serverless, Step Functions, Event Bridge, Terraform, React
July 2020 - October 2020
Rapidly developed a coffee subscription service for Pret as part of their digital transformation starting with a small trial in Manchester quickly followed by a nationwide launch. In addition to the service code I played a pivotal role creating custom dashboards and monitoring tools managed using Terraform for the launch.
Stack: Node, Fastify, Next, Chargebee, Braze, Terraform, Terragrunt, Google Cloud Run
February 2020 - May 2020
Helped a start up mature their development process with unit testing and architecture decision records whilst adding real time capabilities to their platform using WebSockets.
Stack: Node, React, Redux, Socket.io, PostgreSQL, Knex, Objection
April 2019 - November 2019
Helped the front end team deliver a React application and cultivate the following best practices: controlled atomic components, avoiding unnecessary use of component state, previewing components independently using Storybook, unit testing with Enzyme to verify component behaviour and drive the implementation, pairing with team members to share knowledge and eliminate blockers
Stack: TypeScript, React, Redux Saga, Ramda, Docker, Bitbucket Pipelines, Storybook
January 2019 - March 2019
Developed a home renovations site that allowed users to explore product options and combinations.
Stack: TypeScript, React, Redux Saga, Reselect
October 2018 - November 2018
Developed room planning tool with virtual tour functionality.
Stack: TypeScript, Angular, RxJS, A-Frame
November 2017 - September 2018
Developed internal facing dashboard for the subscription sales team and mentored junior developers in the team with white boarding and pair programming sessions
Stack: JavaScript, TypeScript, Heroku, Lambda, Serverless
February 2017 - September 2017
Developed features and refactored the Flyt platform. The extreme programming practices of pairing and TDD were used to ensure the highest quality code was delivered and knowledge was shared amongst the team.
Stack: PHP, Golang, JavaScript / Node, Jest, Serverless, Lambda, Docker
November 2016 - February 2017 Built state driven user interfaces composed of reusable and mostly stateless functional UI components.
Stack: Node, ES6, React, ImmutableJS, Lodash, Webpack, Enzyme
May 2016 - October 2016
Developed new features for a RESTful API consumed by iOS and Android mobile apps. Refactored the legacy code towards a decoupled hexagonal architecture with a well tested domain, added API versioning and setup automated scripts for deployments and ensuring code quality.
Stack: PHP, Symfony, PHPSpec, Ansible, PostgreSQL
March 2016
Assisted sound artists Yuri Suzuki and So Kanno deploy and configure an installation using a Node back-end and Spark / Particle IoT hardware.
May 2015 - May 2016
Built RESTful micro-services consumed by the SmartShop app, written in PHP and Go with a domain driven approach to clearly define service boundaries and establish a ubiquitous domain language. Ansible was used to provision and deploy the services to AWS.
Stack: Nginx, Vagrant, Ansible, Go, PHP, Symfony, Doctrine, Behat
April 2015
Helped out on this MEAN.JS based project, adding a feature flag system and new functionality to the Node server and the Angular client. Implemented a reproducible development environment using Vagrant, and deploy workflow using Ansible.
Stack: Nginx, Node, Express, MongoDB, Angular, Grunt, Vagrant, Ansible, Karma, Mocha, Supertest, Should
March 2015
Created bespoke website with a CMS built upon Symfony's Sonata bundles. The front end was written with performance in mind, all JavaScript was vanilla weighing in at only 1kb and only served to modern browsers using the "cut the mustard" technique.
Stack: Symfony, Sonata, Mustache, Zurb Foundation, Node, Heroku, Gulp
September 2014 – December 2014
Created reusable components using AngularJS directives, unit tested with Jasmine and integration tested against a Node mock back-end.
Stack: AngularJS, Express, Node, Bootstrap, Jasmine, Grunt, Less
July 2014 – August 2014
Bespoke e-commerce site for sportswear brand, KJUS, built using Akeneo the open source PIM for Symfony. During the course of development we submitted several pull requests to the Akeneo community edition.
Stack: Akeneo, Oro, Twig, Doctrine, Symfony, Behat, PHPUnit, PHPSpec
October 2013 – April 2014
Senior developer on the BBC News responsive team, responsible for pairing with junior developers, reviewing pull requests and developing new page components. Helped standardise the code base by adding for Mustache templating, upgraded to Pimple 2 and changed the logging to be PSR-3 compliant. Also involved in developing the news stream for the 2014 local elections.
Stack: BBC Forge PAL, Zend, Sinon, Grunt, Cucumber, PhantomJs, Phake, Pimple, Mustache, Sass, Ruby
August 2013 – October 2013
Developed RESTful endpoint for a single page JavaScript game, implemented a Vagrant based reproducible development environment and managed provisioning and deployments using Ansible. Extensive load tests were conducted using Loader.io, and static assets were deployed over CDN using CloudFront.
Stack: Silex, Grunt, Varnish, Ansible, CloudFront, EC2, Vagrant
April 2013 – August 2013
Undertook the responsive rebuild of BBC Academy a BBC Forge project with an Atom data store. Also involved in the responsive makeover of the BBC events system which it it used for BBC Glastonbury 2013.
Stack: BBC Forge PAL, Zend, Pimple, Zepto, Hammer.js
December 2012 – February 2013
Developed bespoke application consisting of a REST server using the Zend framework 2, and JavaScript client using the MVC framework Agility.js, Flatiron Director for routing, Twitter Bootstrap components and styling, RequireJs and Jasmine for BDD and unit tests.
Stack: Zend 2, Agility.js, Flatiron Director, Bootstrap, Jasmine
- Code Club volunteer in late 2014
- Volunteered at a youth employment workshop and hackday run by Tessa Cooper, editor of The Start Out & product manager at FutureLearn
- Created Go Go Value Object, a Golang implementation of value objects
- Contributed to several Vim plug-ins: vim-go, vim-test, CtrlP Symfony2, vim-snippets, apiblueprint.vim, Neomake
Bachelor of Arts & Science (1997 - 2003) Majors: Computer Science, Gender Studies, and Semiotic
Beginners Japanese I (2009)
- Level 5 proficiency (2009)
- Level 4 proficiency (2012)