Full-stack software engineer based in the UK with 7 years’ professional experience making innovative web apps.
Optibus
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.
British Broadcasting Corporation
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.
ZigZag Education
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.
University of the West of England
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 · 2015–16
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 · 2016–17
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 · 2017–18
Changed to BEng Computing for Embedded Systems, which required an extra module. Continued at ZigZag Education.
- C++ Development · 96%
- Professional Experience · 86%
Final Year · 2018–19
- 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.
SourGo
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.
Hex Snake
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.