Alex Spurling

Software Developer

Profile

I am a full-stack developer who likes to build software with a focus on quality, security and customer needs. I have over 15 years' experience working in agile teams developing Java web applications including leading several projects in my role at Digivault. I am primarily interested in working on projects in the renewable energy sector. I'm a citizen of the EU and UK.

Experience

8i Fintech - Full Stack Developer

2023-2024 (contract)

After Digivault was purchased by 8i Fintech, I worked as a contractor on the Digivault platform.

Technologies

bitcoin, ethereum, java, python, html, javascript, typescript, react, redux, rx-js, svelte, playwright, postgres, docker, kubernetes, gitlab

Multi-party computation

Adapted the Digivault platform to use mutli-party computation enabling deployment across distributed cloud hosts

New Web Portal

Completed the implementation of the customer-facing web portal

Digivault Authenticator

Rebranded the Digivault app to function on the 8ifintech.com domain

Digivault - Senior Full Stack Developer

2019-2022

Digivault is a secure digital asset custodian and was the first cryptocurrency custodian to obtain an FCA registration in the UK.

Technologies

bitcoin, ethereum, java, python, html, javascript, typescript, react, redux, rx-js, svelte, playwright, postgres, docker, kubernetes, gitlab

Digivault Custody

I was responsible for implementing and deploying their cold-custody technology which allowed us to sign blockchain transactions offline using private keys held in a hardware-security-module.

  • Helped to design a data flow process that could execute relevant instructions entirely offline.
  • Designed and implemented a data serialisation format based on QR codes.
  • Designed and implemented a dynamic approval rule engine (Digisafe Policy Engine).

Digivault Authenticator

Lead an external team of developers and QA engineers to develop a mobile authentication app.

  • Helped to design the requirements for the Digivault Authenticator app.
  • Reviewed the iOS and Android code to ensure it met the project's requirements and quality standards.
  • Held regular meetings with the out-sourced development team removing blockers to ensure on-time and under-budget delivery.

Off-exchange Custody

Lead a team of three to deliver Exchange Connect which allows users of a 3rd-party exchange to hold their assets securely with Digivault.

  • Designed and implemented a method for making API calls using shared-secret API keys stored offline.
  • Designed and implemented a model to allow traders to lock, trade and settle assets daily.

New Web Portal

Lead a team of two on the implementation of a new design for the customer-facing web portal.

  • Worked closely with the web-design team to create a new design for the web portal taking into consideration client needs and security.
  • Helped to re-write the old React front-end using Typescript and Svelte.
  • Delegated tasks to another developer while maintaining a high code quality standard and end-to-end test coverage with Playwright.

Leadership roles

As the second-most senior developer on the team, I had responsibility for managing other development teams and reporting status to management.

  • Interviewed developer candidates and reviewed their code submissions.
  • Performed initial research and presented on the Polkadot blockchain.
  • Became a champion for testing ensuring high quality and reliable tests.
  • Lead two separate projects in teams of 2-3 developers.
  • Presented weekly status updates to management.

Rubric - Localisation Automation Tools Developer

2017-2019

Rubric is a localisation company translating English software to 40+ languages.

Technologies

java, html, javascript, python, git

Process automation

I wrote Java plugins for the WorldServer localisation platform which parsed JSON, YAML, XML and other file types in order to extract their translatable strings. I also wrote internal python scripts to automate the pre- and post-processing of clients' English source and translated files.

  • Created a generic parsing architecture for chaining different file parsers together.
  • Created a diffing algorithm for key-value data comparing 4 different file versions simultaneously.
  • Created an automatic delivery system which pushed deliveries directly into clients' git repository.

QMetric Group Limited - Server Side Developer

2012-2017

QMetric is the technology company behind the new insurance website Policy Expert which combines insurance sales with price comparison and brokerage into a single service.

Technologies

java, javascript, groovy, kotlin, dropwizard, mysql, mongodb, AWS, CQRS, event-sourcing, agile

Server Side Development

I was responsible for the development of their new generic insurance platform which allowed us to launch several new insurance products including motor and home insurance. I worked on the java/groovy backend which used a CQRS and event-sourcing architecture backed by MySQL and MongoDB. I also worked on the javscript front end using AngularJS and Backbone.

  • Worked closely with business analysts to develop new features delivered and deployed in weekly iterations.
  • Integrated the system to several third-party services including the Insurecom Car insurance platform.
  • Created an operations web application for defining arbitrary insurance products using AngularJS.
  • Created a Dropwizard microservice to provide data access to a legacy application.
  • Created a chat room bot to trigger deployments to development environments.

Playfish (Electronic Arts) - Server Side Developer

2010-2012

Playfish was the UK's leading developer of social games. I was responsible for developing the server side Java web application technology for games handling up to 10M unique players per day.

Technologies

java, jersey, guice, ruby, svn, git, maven, mysql, xml, AWS, TDD, agile

Game Development

As a server developer, I worked on two major games, Restaurant City and The Sims Social, at their peak reaching 5M and 10M daily players respectively. The Playfish architecture is heavily service-oriented and hosted entirely by AWS. I was responsible for developing high quality features in collaboration with game designers, PMs, QA and other development teams.

  • Built monitoring page for The Sims Social to visualise the real time performance of the game.
  • Improved performance by analysing thread dumps, heap dumps and garbage collection statistics.
  • Automated the Maven build process by writing a command line script in Ruby saving hundreds of hours of developer time.
  • Modularised the game code for Restaurant City by converting the build process from ant to Maven.

Game Content Management System

The Playfish Content Management System is a tool designed to speed-up iteration cycles and eliminate errors for all their games' content. Built on top of the hierarchical database Jackrabbit, it supports locks, transactions and branching for game content data.

  • Helped to design a clean and consistent REST API for clients to interact with the server.
  • Implemented REST services on the server side using Jersey.

Evangelism / Training

  • Presented an introduction to git
  • Presented an overview of OSGi
  • Presented an overview of Datomic
  • Ran training sessions on git for SVN users over 5 weeks.

Markit - Associate Developer

2007-2010

Markit (now S&P Global)'s primary business is the calculation of prices for derivative financial instruments by the aggregation of prices provided by banks. I was part of the development team of their CDS product and starting in 2008, the Clearing service.

Technologies

java, jee, spring, ruby, svn, maven, oracle, xml

Clearing Project

  • Lead developer from the start of Markit's high profile Clearing service to provide banks with reference prices for CDS and credit index instruments.
  • Developed a web application to receive and process XML price feeds based on Java, JEE, Spring and Oracle.
  • Developed a Java algorithm to calculate CDS prices and trades from contributed bid/ask prices using a simulated auction process.
  • Mentored and guided other team members in their general development practices.
  • Aided the project lead with planning, estimating and architecture and design decisions.

During the project, I suggested and implemented many improvements to the development process such as:

  • Moved build process from Ant to Maven.
  • Created RPM distribution mechanism for managing deployments.
  • Reduced human error and downtime by automating the database upgrade process with a perl script.
  • Implemented continuous deployment to the development server using Maven, Jenkins and some custom deployment scripts.
  • Created a suite of regression tests with TestNG which would run automatically after each successful deployment.

Other Projects

  • Created a batch task to calculate composite loan credit index prices (aggregation of contributed prices).
  • Re-architected the caching mechanism to give clients access to historical reports.
  • Implemented a historical record for client mappings (i.e. the data a client is subscribed to) to allow reports to be generated for past dates.

Education

University of Cardiff

Computer Science BSc

2003-2006

  • Graduated with 1st class honors (79% overall mark).
  • Won the LogicaCMG prize for best final year project.
  • Won the British Computer Society prize for excellent first year performance.

Projects

Some projects that I've worked on in my spare time are publicly viewable: