I am an experienced and diligent, self-taught, full-stack developer.
I have been building websites for ten years and writing clean,
maintainable programs and user interfaces in JavaScript and Python
for over five. A life learner, forever focused on ways to improve
with exceptional communication and interpersonal skills to boot.
Skills at a Glance
Agile
Git
TDD
Pair-Programming
CI
Scrum
Kanban
Languages
JavaScript
TypeScript
Python
HTML5/CSS3
UNIX-CLI
Bash
SQL
JavaScript
ES6-ES2021
Node
Promises
Async/await
Generators
Streams
React
Hooks
Context
React-Intl
React-Window
CSS-in-JS
React-Spring
React-Router
Redux
Redux-Toolkit
Reselect
Redux-Saga
Redux-Thunk
Normalizr
Libraries/Tools
Express
Webpack
Xstate
Immutable
Immer
Create-React-App
SocketIO
Testing
Jest
React-Testing-Library
Xstate-Test
Enzyme
Nose
CSS
UI/UX
Responsive Design
Flexbox
CSS-Grid
Animations
Bootsrap
SASS
Devops
Docker
Azure-Devops
Azure-Portal
Telemetry
Nginx
Jenkins
Tech Employment
React Developer
Auction Technology Group
~ Jan 2019 - present
-
Nominated by my peers to win ATGs best newcomer of the year 2019 and
best team in 2020.
-
Delivered 3 major front-end projects, re-writing legacy Flash apps with
TypeScript, React, Redux and Xstate.
-
A real-time live auction dashboard reporting the auction state and
incoming online bids for auctioneers.
-
The operator console. A complex user interface to control every
aspect of a running auction.
-
A configurable slideshow application to display the auction lots
around the auction house.
-
Wrote a Redux middleware library to handle the main complexities of the
slideshow application, chopping the logic up into tiny functions to
improve readability, write-ability testability and debug-ability.
-
Executed the improvement of the Redux middleware concept by replacing
it with the Xstate statecharts library to manage the greater complexity
of the operator console.
-
Co-developed and co-conducted an interview assessment for a Senior
React Developer.
-
Introduced push builds to prevent individual pull requests from
breaking master.
-
Progressed ATG developer testing by integrating unit and integration
tests as part of the build.
-
Enforced team discipline and reduced technical debt by introducing
ESLint and Prettier as part of the build.
-
Held a well received 90-minute presentation on the fundamentals of how
git works under the hood.
Software Developer
Pivigo
~ July 2018 - December 2018
-
Lead the front-end development of the companies flagship product
AI-Mentor, a recommendation and training engine for data scientists
built with React, Redux, Redux-Saga, Immutable & Flow.
-
Contributed to the Python/PostgreSQL back-end. A Turbogears framework
following the MVC pattern.
-
Learned the TDD methodology, testing JavaScript with Jest and Enzyme and
testing Python with Nose.
-
Practiced the Agile methodology, learning new disciplines like
pair-programming, Scrum and Kanban.
-
Gave a 30 minute lecture on advanced git usage, introducing my team to
powerful tools and concepts such as squashing, rebasing, and the DAG.
JavaScript Developer [freelance - remote]
erbridge ltd
~ September 2015 - February 2016
-
Built and shipped a multi-room, live web-chat middleware from scratch
with Node & websockets.
-
Designed the initial structure in collaboration with my manager before
becoming the sole contributor.
-
Taught myself Express, Handlebars and the poorly documented SocketIO
without any prior experience.
-
Wrote an event based commands system for users to DM admins and for
admins to moderate rooms.
-
Under my managers superb mentorship I developed a modular, clean code
style, learned a powerful Git methodology, discovered linting, design
patterns and greatly advanced my vanilla JavaScript skills.
Selected Past Projects
Howlin Karaoke
-
My passion project. A karaoke party app built with React, Redux, Express
and PostgreSQL.
-
Developed a client-server architecture where the client allows guests to
request songs, the DJ to control the party and the screen to play videos
via HTTP requests, WS messages and node streams to/from the server.
-
Designed an intuitive UX that allows party guests to to browse or filter
by era, genre, or artist when requesting songs.
Splat-a-Pat
-
A fun whack-a-mole type game built with React and my own Redux
middleware state chart library.
bash.howlin.app
-
Engineered a modular site architecture as a Docker image composed of my
Jekyll portfolio site, my rubygem packaged theme (now with over 6000
downloads) and a separate Git submodule for the blogposts repository.
-
Built a CI/CD pipeline with Bash, Git and Docker to provide a seamless
CLI based development workflow that facilitates blog publishing,
development, testing, staging and deployment of the theme or the site.
-
Orchestrated a production server with Docker compose of five containers
providing An NGINX reverse proxy server, a staging server and
auto-renewing TLS encryption provided by LetsEncrypt.
Todo
A versatile Trello-like organiser. Built with Bash and Vimscript
Bisto
Scrapes the latest jobs from popular job-boards. Built with Python, SQLite and w3m.
Selected Non-Tech Employment
Visitor Services Assistant
British Film Institute
~ 2008 - 2018
-
Formulated and refined an effective method to handle anti-social
customers by helping them using patient and compassionate
communication. One of my proudest achievements in life.
Chinese Production Manager
Guvnor Ltd. ~ 2001 – 2007
-
Headed the start up of the first Chinese production office for Guvnor
guitars in Guangzhou, China.
-
Physically oversaw and built tools to track the production of 3
factories in Guangzhou and Tianjin.
-
Excelled in sales; progressed from finance assistant to logistics
manager before heading to China.
Education
Birkbeck UoL ~ 2009 – 2012 (Incomplete)
B.A. Global Politics and International Relations
Hobbies
Music: Guitar, Bass, Piano, DJ, Karaoke.
FOSS, Cooking, Politics, Cinema, Cycling, Travel.