Full-stack software engineer based in the UK with 7 years’ professional experience making innovative web apps.

May 2023Current

doxy.me

Senior Full-Stack Software Engineer
·
Remote
Aug 2021Apr 2023

Optibus

Software Engineer
·
Remote

Building a modern, end-to-end transport platform used in 2,000+ cities worldwide, in a global team.

Technical expertise

  • Created new web apps from scratch with TypeScript and React, involving developers and product managers early on for shared ownership.

  • Designed and presented technical approach to incrementally migrate from Ember to React.

  • Added TypeScript and Storybook to the frontend monolith to modernise the codebase.

  • Improved reliability and speed of Cypress e2e tests, using fixtures and carefully thought‑out scenarios.

Leadership

  • Paired with developers (in and out of my team) to share skills and best practice: TypeScript, React, Redux and TDD with Jest and Testing Library.

  • Founding member of a cross‑team initiative to share experience and raise engineering quality.

  • Presented a tech talk on Storybook and Component‑Driven Development to hundreds of developers, with live coding.

  • Led a Hackathon team of 10.

  • Active participant in product meetings with customers.

Calendar

Lead developer of the new Optibus platform homepage: a chronological grid of planned schedules, with statistics aggregation and export options.

Built using TypeScript, React, Redux, Node and Storybook.

PDF export

Created a PDF report of bus and crew schedules, adapted to A4 paper, using React, TypeScript, SVG, VisX, Puppeteer and AWS.

Overlapping timeline labels are abbreviated and nudged by an iterative algorithm.

Real‑time editing

For my ‘10% time’ project, I decided to make the Calendar UI collaborative, so everyone sees data updates instantly, like Google Sheets.

I wrote a blog post to explain my approach:

How I’m making our Calendar collaborative in real-time with Redux and Operational Transformation

Hackathon

Enlisted 10 people from across the company to build upon my ‘10% time’ project and design, code and produce a video.

The feature shows the presence and selections of other users in the app. Users can also 'follow' each other. Think of it as a crossover of Figma, Mira and Google Sheets.

Presented a live demo and answered questions from R&D, customers and investors. We came 4th of 14!

Refactoring

Refactored ‘move’, ‘swap’ and ‘pin’ actions of an Ember component to make ‘single’ and ‘batch’ modes behave consistently and work between tables.

The code paths are now consolidated, so the UX is reliable and bug‑free.

Sep 2019Jul 2021

British Broadcasting Corporation

Software Engineer
·
Bristol, UK / Remote

Developed internal React apps and cloud services on AWS in an agile team with extreme programming principles.

Design & development

  • Designed event-sourced data structure with memoised CQRS algorithms and integrated with React hooks with full TDD.

  • Contributed to 4 web apps and 14 microservices in Node.js, Python and Java.

  • Migrated 4 live PHP apps from shared Apache to AWS cloud. Reverse engineered and containerised the build pipeline and runtime environment using Docker and Xdebug.

Cloud

Co-developed serverless AWS architecture (Lambda, DynamoDB, SQS, SNS, S3) to add new features for BBC iPlayer and Sounds.

Performance

  • Sped up React app load up to 4x and reduced total lines of code, with HTTP compression and PHP to Node.js rewrite.

  • Improved CI duration 2.3x from 14 to 6 minutes with parallelisation and Node.js dependency caching.

  • Applied experience of OS fundamentals and TCP/IP to diagnose file and network issues.

Modern tools

  • Introduced TypeScript with incremental adoption strategy, to ease refactoring, avoid runtime errors and navigate our React codebase.

  • Introduced Storybook as an innovative way to develop React components in isolation with mock data and build up a reusable library.

Collaboration

  • Mentored team mates on React in regular pairing sessions, and encouraged them to lead in team demos to build confidence and share knowledge.

  • Visually engaged my team with PlantUML.

    • Diagrams made with code are easy to change. A Makefile generates PNG/SVG.

    • My diagrams get everyone on the same page, highlight issues and save time.

Test-driven development

  • Introduced Jest and React Testing Library to facilitate TDD.

    • Migrated existing Enzyme tests.

    • Updating Jest tests are trivial in contrast to fixing hundreds of lines of Enzyme. (Kent C. Dodds recommends to test the external interface.)

    • Jest Snapshots catch more bugs with fewer lines of code.

  • Introduced Cypress for end-to-end testing.

    • Cypress screenshots catch visual regressions which were difficult to assert in code.

Jul 2016Sep 2019 *

ZigZag Education

Software Engineer
·
Bristol, UK

Developed customer‑facing and internal systems, working across departments to elicit requirements and solve problems.

CopyCat

  • Created bespoke plagiarism checker.

  • Developed event-driven backend, with Node.js, MySQL, priority queues and Puppeteer.

  • Built web app with React, Apollo GraphQL, and Ant Design.

  • Automatic health checks keep the system up 24/7/365.

“No one had to tell me how to use it.”

The intuitive UI shows progress and full details of each document, with live updates and email reports.

Agile

  • Introduced Git and set up GitLab on-premises to automate delivery, enable collaboration and increase productivity.

  • Introduced Agile project management with GitLab kanban board to replace ad‑hoc emails and Word documents.

  • Introduced Docker to simplify development and deployment.

These tools and practices enabled us to develop features and fixes quickly and concurrently, and deploy in seconds with confidence.

Customer website

  • Redesigned customer website, focusing on UX and SEO.

  • Built with React, PHP 7 and MySQL.

  • Created personalised product recommendation engine.

  • End‑to‑end tested with Puppeteer.

  • Migrated to dedicated host using Docker and Traefik for significant performance gain.

Business support

  • Unified Intranet with MVC to consolidate PHP scripts.

  • Migrated 7 websites to DigitalOcean using Docker, Traefik and Let’s Encrypt to improve performance and reduce hosting cost.

  • Migrated Access databases to SQL Server.

  • Optimised SQL query plans.

  • Mentored 4 software developers using code reviews and pairing to share ideas and foster a culture of trust.

  • Assisted in hiring programmers and updated the proficiency test.

2015 – 2019

University of the West of England

Bristol, UK

Degree

🎓 BEng. (Honours) Computing for Embedded Systems (First class)

Awards

🏆 CSCT department prize for the student that showed the most innovation in their work · 2019

🏆 Dean’s Award for Academic Excellence · 2016

Extra

Led twice-weekly 'Peer Assisted Learning' classes for first‑year students · 2016–17

Secondary

  • 3 A Levels: ABB
  • 10 GCSEs: A*–B

Transcript

First Year · 201516

BSc Computer Science. Joined ZigZag Education in the summer.

  • Principles of Computing · 99%
  • Computer and Network Systems · 97%
  • Introduction to Artificial Intelligence · 87%
  • Introduction to OO Systems Development · 84%

Second Year · 201617

Facilitated PAL study sessions for first year students twice a week.

  • Computer Networks and Operating Systems · 91%
  • Design and Analysis of Data Structures and Algorithms · 88%
  • Object-Oriented Systems Development · 86%
  • Intelligent Systems · 85%
  • Peer Assisted Learning · Pass

Placement Year · 201718

Changed to BEng Computing for Embedded Systems, which required an extra module. Continued at ZigZag Education.

  • C++ Development · 96%
  • Professional Experience · 86%

Final Year · 201819

  • Digital Systems Project · 86%
  • Cryptography · 83%
  • Parallel Computing · 79% (Master’s level)
  • Embedded Systems Development · 79%
  • Building and Porting Embedded Operating Systems · 78%

Final Year Project · 2018–19

Automated Generation of Software Design from Functional Requirements in Natural Language

Developed a tool that generates a UML class diagram and Typescript code from English using NLP.

  • UI built with React, Bootstrap, Node.js and SQLite.

  • Project report built dynamically with Makefile, Pandoc, LaTeX, PlantUML, Node.js and Mocha.

  • 6 month project with Agile methodology and rigorous academic research.

Jun 2020Current

SourGo

Personal project

Creating an IoT device to track sourdough starter.

Hardware

  • Designed double-sided PCB in KiCad.

  • ESP32 (Wi‑Fi) microcontroller, OLED display and ToF laser.

  • Soldered by hand. Flashed with custom pogo‑pin jig.

Firmware

Developed ESP32 software using C/C++, ESP‑IDF, FreeRTOS and LVGL.

Cloud App

  • Architected a simple backend using Node.js, Postgres, and custom TLS/TCP FlatBuffers protocol.

  • Created web UI with React, Next, Visx, date‑fns and GraphQL.

OpenSCAD
KiCad
May 2014

Hex Snake

Personal project

Hex Snake is a 3D game in a hexagonal arena, with multiplayer and an A* path-finding algorithm.

Made with Three.js and inspired by hexagonal grids to explore the capabilities of the web platform.

Unfortunately, the source code of the original version is lost.

Fortunately, I made a 2nd version with automatic A* pathfinding, playable here.

2011 – 2015

Freelance

Web Developer

Self-taught web development by creating websites for local businesses using HTML, CSS and PHP.