Bright, enthusiastic hard‑worker with over ten years’ experience across multiple industries, working as part of a team and supervising others. Frequent open source contributor with high standards of documentation and testing. Excellent problem‑solving skills, fast learner, and a great eye for detail.
Equally comfortable building large-scale UI-driven applications, real-time streaming data libraries, developer tools, or CLI applications, I love tackling big problems and take pride in front-end application architecture and framework/API design. I’m highly self-motivated and a very strong team member who knows how to ship quality code.
Frameworks / Technologies
Strong expertise in TypeScript, ES2015+, React, Redux, Node.js, Jest/Mocha/Chai/Jasmine, RxJS/Most, lodash/Underscore, Webpack/Babel, Electron, JSDoc, and various other buzzwords.
I particulary enjoy functional coding, reactive/stream programming, and anything involving AST transformation/analysis. I like to learn new concepts from first principles, so have written lots of my own libraries for streams, transducers, virtual DOM, etc.
- September 2018 - present: Canvas Composer, Founder
- August 2016 - August 2018: Deutsche Bank / DWS, Lead Open-Source Developer (freelance)
- May 2016 - July 2016: Toaster, Senior Front-End Developer (freelance)
- September 2015 - April 2016: Filecanvas, Founder
- July 2015 - August 2015: Kayako, Senior Front-End Developer (freelance)
- September 2013 - April 2015: Fathom, Lead Developer
- February 2013 - August 2013: R/GA London, Senior Front‑End Developer (freelance)
- August 2011 - January 2013: Burberry, Senior Front‑End Developer (freelance)
- February 2010 - July 2011: Mohu, Lead Developer
- Summer 2006 - February 2010: Ralph, ActionScript Developer
Selected Open Source Projects
Popular utility libraries
Larger standalone projects
- Skivvy (2015) – Modular task runner for reusable build systems
- Factory (2015) – Quick and easy template scaffolding for Node
- T‑Bone (2013) – Backbone.js view/binding component framework
Selected Job Roles and Responsibilities
Canvas Composer (September 2018 - present)
Singlehandledly built a large-scale IDE for rapid development of React applications (canvascomposer.com, currently in alpha). Intuitive UI builder allows toggling between visual drag-and-drop workspace and source code editor. Component library plugins and integrated zero-config build tools and allow rapid application prototyping within a graphical interface. Extensive static JSX source analysis of existing code allows prototypes to be seamlessly integrated within a real codebase.
Currently packaged as an Electron app written in React/Redux/Node.js, hovever client/server model and highly modular plugin-based architecture allow for easy repurposing to hosted web service.
Deutsche Bank / DWS (August 2016 - August 2018)
Lead architect/developer on a graph-based streaming data framework (Muster, now open-source), used to power data-driven front-end applications across Deutsche Asset Management (now DWS).
Muster is a flexible data language that provides a simple unified interface to coordinate synchronous, asynchronous and streaming data sources. Its virtual graph API combines all an application’s data – whether local or remote, synchronous or asynchronous – into a single unified data structure that seamlessly spans client and server, allowing client applications to handle remote data sources as easily as in-app data. Extensive standard library allows smart queries, live mutations, and limitless transformations on real-time data streams (mapping/filtering/combining/etc).
Project responsibilities included product direction, API/architecture design, core library implementation, development of bespoke unit-testing framework and browser plugin for developer tools. Consumers reported large productivity gains and vastly decreased bug count.
Filecanvas (September 2015 - April 2016)
Singlehandedly planned, prototyped, designed, built, and shipped a fully-featured SaaS product (filecanvas.com) over the course of six months, in order to better understand the process of creating a product all the way from ideas generation to launch. Sole founder/programmer status meant roles included everything from planning, to coding, to devops, to user testing, to logo design and copywriting.
Technical stack: containerised service-oriented backend architecture (Node.js + Express, nginx + Lua, MongoDB, Redis, Docker Compose), hosted on AWS (Elastic Beanstalk, ECS, ECR, S3), with extensive Dropbox and Google Drive API integration, vanilla JS front-end with highly interactive virtual-dom template editor, and automated one-line build/deploy via Bash scripts. Combined front-end/back-end codebase is currently around 40,000 lines.
Fathom (September 2013 - April 2015)
Lead front‑end developer for a highly interactive real‑time trading platform application and accompanying component suite. Responsibilities included application architecture, development of in‑house component library, performance tuning/profiling, internal build tools, technical leadership, teaching and supervising other developers, hiring new developers.
Burberry (August 2011 - January 2013)
Development of all interactive experiences on burberry.com, creation of in-house JS/CSS Framework (used across all campaign sites, live streamed fashion shows, press kits and in‑house tools), development of in-house internationalization tools, automation / build process improvements, technical research, hiring and supervising new developers.
- 2005 - 2008: Trinity College, University of Cambridge (BA degree in Philosophy, 2:2)
- 2003 - 2005: Sevenoaks School (International Baccalaureate Diploma, 45 out of 45)