I'm a software engineer that specializes in APIs, journey planning algoritms and highly available services.
Normally I work as a lead developer but I still like to get my hands dirty with node.js (preferably TypeScript), MySQL and whatever else comes my way.
I tend to pick up new technology in my spare time like Scala, Rust or even a bit of Ansible / DevOps.
I'm an advocat of Agile development and usually set my teams up in a Scrum environment or Kanban if it suites the task better.
I founded Planar Network, to bring blockchain technology to public transport. As part of my work at Planar Network, I developed a best in class journey planner for UK rail and created a whole set of tools to process industry data.
Before founding Planar Network, I was CTO at Assertis where I led a merry band of men (and women) in a quest to make rail travel and tickets a more bareable experience. My areas of expertise are software architecture, software development, microservices, continuous integration, Agile (mostly Scrum), TDD and leadership.
I have various open source projects on GitHub. I'm crazy enough to have built a journey planner using the Connection Scan Algorithm, Transfer Patterns and a few other bits of graph theory. I've released quite a few open source Node.js projects, including a massively multiplayer version of game of life using websites and a tool to help find developers.
Occasionally I enjoy speaking at conferences - I spoke at the inaugral London TypeScript meet up, HackTrain and at the London PHP Conference on the unconference track.
My real passion is working with a great team to deliver challenging products. I love reading, particularly about programming, learning, leadership and motivation.
- Databases - MySQL, MariaDB, Galera, ElasticSearch
- Dev Ops - Ansible, Vagrant
- Agile - Scrum / Kanban
- Sysadmin - Ubuntu, Apache2, nginx, HAProxy
- Front end - React, HTML5, CSS
- PHP, Java and Scala
- Making coffee
Developed the world’s first rail ticketing system and portable wallet on a blockchain using Ethereum/Solidity.
Developed a best in class multimodal journey planner, completing against established companies with over £100m in finding.
Created and presented the white paper, concept and business model.
Developed a wide array of open source tools for processing and managing public transit data using node.js/TypeScript.
Chief Technology Officer
Created a highly effective Agile team in a high risk, heavily regulated industry competing against multinational corporations.
Re-architected legacy systems to a Service Oriented Architecture that enabled rapid development of new features and products.
Implemented a modern software development environment by setting up Continuous Integration, Continuous Deployment, automated Selenium testing and virtualized development environments using Vagrant.
Migrated from a managed hosting environment to a fully automated (Ansible) AWS environment.
On Track Retail
Chief Technology Officer
On secondment from Assertis to launch a joint venture with a FTSE 250 company.
Created an entirely new team of 25 developers and delivered to a very ambitious, immovable deadline.
Architected a highly available ticket retailing engine using Scala microservices, RabbitMQ and a Galera DB cluster.
Designed a robust set of RESTful APIs and JSON protocols. Integrated with a large number of arcane, poorly designed and dreadfully documented rail systems.
Design of key architectural components and moving the team to a more functional programming approach using Underscore.js.
Mentored developers on best use of RequireJS, Backbone.js and unit testing with dependency injection.
Improved the build tools by moving to node.js and Grunt with support for Jasmine and JSHint.
Contributing to the redevelopment of the software platform using PHP, Symfony2 and CoffeeScript.
Mentoring developers on object oriented design, Agile software development and unit testing.
Working with the product owner to define the product roadmap.
Development of a large scale train ticket issuing system (TIS) that integrated with financial and rail systems using PHP,
Implementation of development procedures including version control, unit testing and continuous integration.
Responsible for the management and implementation of all technical projects within the company.
Quality assurance and progression of developers coding standards.
Project planning, management and documentation including wireframes, site structures, entity relationship diagrams, project timelines.
Managing customers, organizing hosting, domain names and emails.
You Want More?
I really think I've said enough. It's like this is a vainity website or something. If you do want more info, get in touch or read through my CV or LinkedIn profile.