I am a senior technologist with experience in leading innovative development teams across many languages and technologies. I specialise in team building and leadership, client and developer relations, and software architecture, design and development. I am a passionate believer in the power of the web and open collaboration to change the world for the better.
This CV has been reduced for printing. For a complete up-to-date version, visit https://floppy.org.uk/cv
|Leadership||Agile team leadership Open source collaboration Scrum Kanban Strategy Mentoring Public speaking Training Technical sales Client relations Budgeting Proposal writing|
|Technologies||Open data API design Information architecture Virtual reality 3D graphics Machine learning Computer vision Blockchain|
|Web||Rails Sinatra Node.js Express HTML CSS Sass jQuery Jekyll OpenAPI / Swagger XML VRML WebGL three.js|
|Design||Serverless Microservices HTTP REST HATEOAS SOA OOP UML Design patterns|
|Platforms||Linux OSX Windows iOS Heroku AWS Google Cloud OpenStack|
|Databases||MySQL MariaDB SQLite PostgreSQL PostGIS Redis MongoDB Elasticsearch|
|Tooling||Git GitHub Subversion Kubernetes Chef RVM rbenv Passenger Apache nginx make JIRA|
I am currently employed at Apolitical, a platform for public servants to connect and share what’s working in government. As the first in-house technical hire, I am building and leading an engineering team (4 people as of June 2018) that is creating the next generation of Apolitical’s platform. As we are currently a small team, my role is a combination of hands-on coding, strategic architectural work, and team management.
We are migrating from a monolithic prototype to scalable microservices managed with Kubernetes. The microservices are built in a variety of languages as appropriate for the task at hand, including Node.js, Rust, Python, and some legacy PHP. Frontend development is using React, Redux, and a styled components approach. We are also using serverless functions, and API integrations with many third-party services.
Short-contract freelance technology work for a range of clients. Projects included:
OpenPolitics is a project exploring how open source ideas and methods can be used in the world of politics. It started as a project to write an alternative manifesto in an open source way on GitHub; the manifesto has since grown to over 50 pages long, and has been written by over 50 contributors, many of whom are non-technical and unfamiliar with the underlying platform.
I created a user-friendly interface for editing manifesto content on GitHub, creating pull requests and so on. The interface also implements a voting system to ensure democratic control of proposals and merging.
I led the ODI’s agile research & development (Labs) team, which explored new ways for organisations to publish, find, and consume data, both open and closed. Under my leadership, the team developed numerous tools including Octopub, a tool to help users publish high-quality open data for free, and delivered a number of large research projects.
My role involved day-to-day team leadership and line management, but also developing programme strategy, finding clients and projects, working with project managers to deliver work, and managing a total budget of around £0.5 million.
During this time I was the technical author for the “Data Sharing and Open Data for Banks” report for HM Treasury, which made recommendations that led to the creation of the UK Open Banking standard. I also authored an influential report on blockchain technologies and their role in data infrastructure.
I am also an ODI registered trainer, and have delivered public training courses on technology topics including git/GitHub, and blockchains.
I was a founder member of the agile development team at the ODI, building internal and external software to support the aims of the ODI and promote Open Data adoption. Our external-facing tools included Open Data Certificates, a tool to help data publishers assess the quality of their data releases, and CSVlint, a tool for validating CSV files for machine-readability. We also developed internal dashboards for key company performance metrics, which were later developed into an open source dashboarding tool called Bothan.
I was contracted to help build a homebuyers research site based on a wide range of open data. This involved building custom data cleaning pipelines, importers, and API clients, as well as backend and frontend development with Ruby on Rails.
AMEE was a platform company that provides access to environmental data and standards. The main product of the company was a RESTful API for carbon calculation, which has been used by many major clients including DECC, BP, and Google.
As Platform Evangelist, I was responsible for promotion of our service to developers and others outside the company. This involved creating new demonstrations of our service (including, notably, integration into the game Minecraft), creation of innovative new services such as AskAMEE, and representing our service at external events such as conferences or hackdays. I am also responsible for maintaining much of the collateral that helps developers use our API, including examples, blog posts, client libraries, screencasts and so on.
In this role, I was the organiser of the London Green Hackathon in January 2012, which saw around 80 developers coming together to create new sustainability-related apps or services, and kickstarted a new cleanweb meetup community in London.
Responsible for much of the company’s frontend development work, including the award-winning environmental search engine AMEE discover, and a number of successful applications for external clients.
SEOS makes display systems for flight simulators and planetariums.
My role encompassed leading and managing a team of four software developers, ultimately responsible for all software delivered by the company. As well as day-to-day C++/MFC software development, this role required me to take a lead in software design, scheduling, solving resource conflicts, defining processes, as well as in people management.
I introduced a number of improvements to the process of software production at the company, with the introduction of a version control system (Subversion) and a bug tracking system (Trac), all using freely-available open source software solutions. These improvements, at no capital cost to the company, vastly improved the reliability and predictability of the software development team. I also drove improvements in the software release process, testing procedures (including the creation of a dedicated software QA position), and personal development within the team. I introduced various agile programming practices (including automated tools such as CruiseControl and CppUnit) with the aim of making the team more efficient and improving the quality of software releases.
I was responsible for growing an existing software base of around 300,000 lines of C++/MFC code to become more flexible, more powerful, and more easily extensible. This included refactoring the core application design, the introduction of a generic message-passing architecture, and the creation of an XML-based protocol for networked communications.
I also worked on interfacing with custom-built and COTS video processing and display hardware, often using TCP/IP and RS232 communication protocols, and on automatic setup and calibration of both individual hardware elements and complete display systems, using computer vision techniques such as contour and shape detection.
During my PhD research, I developed a method of using densely scanned 3D surface data in realtime animation systems, using a layered approach including skeletal animation and displacement mapping techniques. My full thesis is available for download.
Other publications included:
A combination of electronics and software engineering, my degrees gave me an overview of the full stack of computer technology, from semiconductors to web development. Specific subjects included numerous programming languages and techniques, computer architectures, network protocols, and machine intelligence. My third and fourth year projects explored AI and robotics, in the areas of game playing and pathfinding.