Selected Work & Roles

Finch (2014–present)

Node.js, MongoDB, Redis, RabbitMQ, React, Flux, NW.js

My flagship project; ‘Software as a Service’ product allowing secure, instant previews of local websites on any internet connected device. Finch was born out of the frustration of not being able to preview development websites on real mobile & tablet devices at a number of companies I’ve worked with in recent years. After initially prototyping a solution in 2013 I spent the first quarter of 2014 turning the prototype into a product.

That product comprises of the website itself, a Node.JS command-line application and a desktop application written using React, Flux and NW.js. Despite the increase in scope of the project and scale of the customer base over the years the application is still managed entirely by myself.

Crimson Digital—Director (2015—present)

Node.js, React, Flux, MySQL, Redis

One half of Crimson Digital Ltd involved in the planning, development and running of a 24/7, heavily trafficked SPA website. This system involved a free-to-play online game which attracted a huge amount of visitors from all around the world and as such required a rock-solid infrastructure and a unique, captivating game style. One of the most fast-paced and intense projects to date which ran for 6 months during 2015.

Valtech—Software Engineer (2014–2015)

Duration: 14 months PHP, TDD, JavaScript, CI

A year-long contract working on a high profile Government contract in Leeds. Although predominantly a PHP role, over time I became the principle architect, developer and maintainer of the frontend JavaScript module system, as well as the frontend build pipeline (involving CSS and images alongside JavaScript).

Sky Sports—JavaScript Developer (2013)

Duration: 6 months JavaScript

A six month contract for Sky Sports working as part of an Agile team architecting & implementing a responsive website—also set to double up as a replacement to several native apps upon launch—for one of the brand’s flagship products. The app-heavy focus of the project led to the site being developed as a Single-page application using AngularJS.

Retail website rebuild* (2012–2013)

Duration: 3 months PHP5, CI, TDD, JavaScript, LAMP, MySQL, Redis

This project involved a full rewrite of a national retailer’s website, in which I was employed as the sole backend developer. In additition, all frontend JavaScript was my responsibility. To ensure the utmost quality of the build over 1,500 automated tests were written over the course of the project: both unit tests and full-stack scenarios, the latter of which amount to over 7,000 lines of tests written in CoffeeScript and run using ZombieJS. All tests are run through my Continuous Integration server—which also manages the automated release process to both the test and the live, load-balanced cluster. The backend architecture is a fairly typical LAMP stack except for the use of Redis a session storage mechanism and key-value cache store.

Jaoss Library & Web Application Framework (2010–2014)

Duration: 4 years (ongoing) GitHub Repositories: Library, Framework PHP, MVC, OOP, TDD

The jaoss library is an open source MVC PHP5 framework focused on speed and testability. It started life in May 2010 and has since been used in the vast majority of projects I’ve built from quick-turnaround microsites to high-performance sites supporting tens of thousands of daily visitors. Although the library is a standalone project it is more commonly used as part of the jaoss web template which includes the library as a git submodule.

Development & deployment workflow consultancy (2012)

Duration: 1 week LAMP setup, SCM setup, Jenkins CI setup, Shell Scripting

This project was undertaken on behalf of Savvy Marketing to implement the foundations of a best-practice development and deployment process within Savvy’s web team. The work involved:

  • Build & configuration of two web servers, an SCM server and a CI server
  • Installation and configuration of Chiliproject, a web-based project management system
  • Configuration of multiple SCM mirrors and regular mirrored MySQL backups
  • Creation & implementation of an automated project deployment process.

Bootbox.js (2011–present)

Duration: 5 years (ongoing) GitHub Repository JavaScript, CoffeeScript

Originally a small set of wrapper functions written to scratch my own itch, Bootbox has since grown into its own standalone JavaScript library with over 1,500 watchers on GitHub. To support an ever-growing community of users and developers it has its own comprehensive test suite written in CoffeeScript and providing full code coverage. The project follows the Semantic Versioning specification and is also under Continuous Integration by using mocha-phantomjs to run the tests in a ‘headless’ WebKit browser.

Mobile HTML5 app* (2012)

Duration: 1 month HTML, CSS, JavaScript

Undertaken on behalf of MadeByPi in Leeds, this project involved the development of a dedicated mobile site for which I was contracted as the sole frontend developer, meaning my remit was HTML5, CSS3 and JavaScript (unusually, no PHP!). The brief required avoiding pre-existing mobile libraries and as such presented numerous challenges involving the creation of a bespoke JavaScript library taking care of flyout navigation menus and iOS-style page sliding transitions.

Payne Digital Website (2011–present)

Duration: 5 years (ongoing) GitHub Repository PHP, JavaScript, HTML5, Sass, TDD, CI

This site itself is a reflection of much of the work I do; it is open source, built on the jaoss framework, has a comprehensive test suite and is built and automatically deployed via Jenkins CI. It employs cutting-edge use of the HTML5 pushState API and CSS3 transitions for subtle yet smooth page navigation, works with and without JavaScript and uses the Sass CSS preprocessor for the perfect blend of maintainable stylesheets and optimised CSS output. It serves minified and compressed assets for maximum bandwidth efficiency and employs responsive design to ensure the best experience across mobile, tablet and desktop devices.

Faavorite (2012)

Duration: 3 months PHP, JavaScript, MySQL, Redis, WebSockets, ZeroMQ, NodeJS writeup

An out-of-hours project built with a friend to satisfy our shared desire for a better way of organising, sharing and discovering favourited tweets. Ostensibly quite a simple undertaking, the build of this project ended up being fairly complicated and involved learning a number of design patterns and technologies. I was the sole backend and JavaScript developer and faavorite was the first project in which I deployed any node.js code in production to handle a huge amount of background task processing. The project also involved a number of other technologies over and above the typical LAMP stack including the use of redis as both a news feed and caching mechanism along with ZeroMQ and WebSockets to deliver low-latency notifications to users.

Flingball iOS (2011)

Duration: 3 months GitHub Repository Objective C, C++

A summer experiment with game development for iOS (both iPhone and iPad). Although the game never saw the light of the App Store it yielded a thorough understanding of universal iOS development. The project eventually found its way onto GitHub instead of iTunes.

SkyBet—Lead Software Engineer (2010–2011)

Duration: 1 year PHP, JavaScript, MySQL, HTML, CSS

A one year contract for BSkyB working as a software engineer (later moved into the role of team lead) for Sky Bet in central Leeds.