James Smith

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

Experience

Head of Engineering

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.

Party Leader

Something New is a startup UK political party which puts across a vision based around technology, open source philosophy, and how collaboration could be a progressive political force for the 21st century.

The party makes all its policy in an open source fashion, via the OpenPolitics project (see below), and publishes all finance and candidate information as open data. The party stands candidates itself, and also acts as a model for other parties, showing how they can be more open.

I stood for election for the party in Horsham in the 2015 and 2017 general elections, and in the 2017 local elections. I also coordinate our volunteer team, lead development of strategy, and manage the party finances and compliance.

Founder

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.

Head of Labs
Nov 2014
-
Apr 2017

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.

I am also an ODI registered trainer, and have delivered public training courses on technology topics including git/GitHub, and blockchains.

Web Developer
Jan 2013
-
Nov 2014

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.

Rails Developer

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.

Organiser

I founded and organised Cleanweb UK, a network of meetup groups around the UK focused on using web technology to fight climate change and other environmental challenges. At its peak, the London meetup group attracted over 100 attendees, and we had well over 1000 members in total. By bringing together sustainability experts and technologists, we helped people explore new approaches, including the creation of numerous successful startups directly because of the meetups.

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.

Platform Evangelist
Apr 2011
-
Mar 2012

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.

Software Developer
Sep 2008
-
Apr 2011

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.

Technical Product Manager

Green Thing is a charity which uses inspirational content to encourage people to live a greener lifestyle. I acted as Technical Product Manager for the Green Thing website, which involved feature development, maintenance, management of regular content updates, and management of other developers (internal and external). The site was implemented in Ruby on Rails, XHTML and CSS, with a MySQL database backend. My time with Green Thing included a complete rebuild of the online offering, in which I was heavily involved both in implementation and conceptual design.

Leader

A website created to inform the general public of an obscure but dangerous piece of legislation that was being passed by the UK government in early 2006. This site grew rapidly from being simply a description of the problem, to a national grassroots campaign with 4500 supporters recruited purely by word of mouth (including MPs, MEPs and Lords). The website, implemented using XHTML, CSS, PHP and a MySQL database, included seamless integration of externally-hosted content (from both an external blog, and del.icio.us for link management), automated signup and statistics generation, and a “supporter map” using the Google Maps API.

The Carbon Diet was an advanced carbon calculator, which calculated daily carbon footprints for its users, and recommends actions they could take to reduce their carbon impact.

It also included social networking features to encourage people to engage with their carbon footprint on an ongoing basis. It was still running with a number of regular users until summer 2016, but has since closed down. The code remains open source.

Software Team Leader
Aug 2006
-
Mar 2007

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.

Senior Systems Engineer
Jul 2004
-
Aug 2006

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.

Principal Software Engineer

I was responsible for the product development side of the company, managing the creation of Linux-based end-user applications as well as internal research and development tools, using C++ with gcc. I was also responsible for dealing with clients at a technical level, being involved in the product design and development process from requirements analysis to maintenance and support of installed systems.

As the company’s first employee, I was also responsible for setting up and maintaining the company’s IT infrastructure, which seamlessly combined Linux servers and development workstations with Windows desktop systems for administration staff.

Technical Director

Concurrently with my PhD research, I started and ran a small software engineering and consultancy company, specialising in 3D graphics application development, particularly for web-based applications. I was jointly responsible for product development, and also ran the day to day business affairs of the company.

The company worked on a number of projects, ranging from 3D scientific visualisation using C++ and VRML to web-based virtual environments using VRML and Java. Major clients included BT, for whom we developed game-related applications for their Millennium Dome body scanner, and Ove Arup & Associates, for whom we developed visualisation software for structural simulations. We also developed various end-user 3D applications using C++ and OpenGL, which allowed users to pose, animate, and modify human avatar models.

PhD, Computer Graphics & Animation

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.

MEng, Information Systems Engineering (2:1)

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.