Signal AI - Contract Clojure Developer
May 2022 - December 2022
I worked on a variety of different microservices within Signal AI, mainly centred around data ingestion. This involved crafting REST interfaces, working with SQS queues, and building GraphQL services. It also required working with Terraform and Terragrunt to deploy infrastructure to AWS.
Hyde Housing - Contract Backend Clojure Developer
February 2021 - March 2022
I worked with the Redefine consultancy on consolidating Hyde Housing's disparate data sources into Kafka. This involved:
- Designing and deploying AWS infrastructure using Terraform
- Building Kafka Streams applications in Clojure
- Interacting with external platforms, such as Salesforce and Workday
- Designing Hyde's domain model, and defining transformations from 3rd party data sources to this model
- I wrote an internal library, Airfix, for converting Avro schemas to malli
All Street - Contract Clojure/ClojureScript Developer
September 2020 - February 2021
All Street is a fintech company building an AI-powered platform to aid investment research. Their platform uses AI to determine company ESG scores, find relevant financial documents, and detect recent news about companies.
I worked on their main product, Sevva, across the whole Clojure/ClojureScript stack. This involved:
- Front end development and design
- Back end development, including interacting with MongoDB, Elastic and Kafka
- Data migrations
- Front end and back end architectural design
Funding Circle - Clojure Engineer
January 2018 - August 2020
Funding Circle is a P2P loans company. I have been here since January 2018, working primarily on event-driven Clojure microservices leveraging Kafka. Architecture design is critical for this, and we heavily use DDD, event sourcing, and CQRS to guide us in this.
I have worked on multiple projects, across both the borrower and investor sides of the business. Most recently, I have been working on FC's new automated platform, designed to make a decision on loan applications within 20 seconds.
While at Funding Circle I have also worked on Jackdaw, our open-source Clojure library for interacting with Kafka. I also created a Clojure DSL for Kafka Streams called Willa, which I actively maintain.
UVD - Senior Web Developer
September 2016 - December 2017
At UVD (now We Make Waves), I worked on both the front end and back end of a variety of web applications, for multiple clients.
One of the larger projects I worked on was the Limpid Markets trading platform. The front end used AngularJS, React and Redux. As well as developing new features and fixing bugs, I also provided direction on the overall architecture of the application. I also re-wrote the front end build system, and wrote a blog post about it
I was the lead developer on a project for an IOT street lights company. They were in the process of writing version 3 of their flagship product, and UVD was asked to develop the front end. I wrote the application in TypeScript and Angular 2 (with NgRx), making heavy use of RxJS and Ramda. I also wrote a blog post about our testing strategy on this project.
As part of a hackathon, I worked on a photo sharing app written in Elm and Elixir. There is a blog post about the hackathon here.
I organised a Clojure workshop for everyone at UVD in March 2017. This involved teaching everyone the basics of Clojure, and working through some exercises. You can read more about it here.
Potato London - Front End Web Developer
November 2015 - September 2016
At Potato, I worked on web applications and marketing sites for clients such as Google and Nest. Most of these web apps were deployed on Google App Engine.
I also worked on an internal web app which used React and Redux, with tests written in Mocha, Chai and Sinon.
Sporting Solutions - Software Developer
April 2015 - November 2015
I worked on C# applications responsible for receiving sporting event feeds from external providers, and passing this feed on to other applications via a RabbitMQ message queue. Ingesting these event feeds involved using multiple different techniques, such as HTTP polling, listening to TCP sockets, and subscribing to IBM WebSphere message queues. I also worked on an internal C# MVC website for managing the feed data, an ASP.NET REST API, and a number of smaller C# applications.
One major project that I was solely responsible for was re-writing our internal feed mangement website to an AngularJS SPA. I built this using ES6, Babel, Angular 1.4, Angular Material, LESS and Gulp.
One other project I worked on was migrating all our logging from an unmaintained framework to Graylog. This involved large refactorings of multiple codebases, as well as running Graylog on our infrastructure.
I also did a large amount of work on our automated tests and CI systems. I was put in charge of improving a suite of acceptance tests written in Specflow, and I also set up our TeamCity CI to run these tests.
While I was at Sporting Solutions, I also created and maintained the ObjectDiffer and GraylogApiHelpers open source projects.
Blinkbox - Web Developer
May 2014 - April 2015
My role centred around creating web applications for internal use. These included applications for asset management, video file ingestion, and user management. The main application I worked on was an AngularJS SPA, with an ASP.NET Web API 2 backend. I worked with tools such as Grunt, Bower and NPM, as well as testing frameworks like Karma and Protractor.
I also participated in a company hackathon as a team lead. My team built completely new search functionality in 2 days, and were awarded 2nd place.
Globecast - Full-Stack Web Developer
April 2020 - April 2020
At Globecast, I worked on a variety of projects, using technologies such as: MVC 5, Entity Framework, AngularJS, SignalR, Kendo UI, LESS and D3.
I designed and built multiple web applications to perform tasks such as comparing programme schedules, and performing QC on video files.
I also worked on an existing projects. One example is a system that ingested video files, processed them, and sent them to a 3rd party scheduling program. This system was composed of multiple C# console applications.
My role also included some DevOps work, such as maintaining running applications, and performing video file migrations.
CPL Software - C# Software Developer
December 2011 - November 2013
My role at CPL Software was primarily developing a C# WinForms app for property factors. This application has a variety of functions, including: producing invoices, calculating taxes, sending out letters and emails, and importing bank transactions. My role also included:
- 1st, 2nd and 3rd line support.
- Writing SQL stored procedures, performing data migrations and fixes, and general database maintenance.
- Frequent use of Entity Framework and LINQ, leveraging LINQKit.
- Maintaining and updating a REST API written in WCF. This allowed consumers to perform the core functions of the WinForms app.
- Worked on a web portal written in MVC 2 and jQuery.
- Worked on a prototype web app using MVC 4, Bootstrap, AngularJS and DevExpress MVC Client-Side Controls.
Redwood Technologies - Technical Support
August 2011 - November 2011
I performed first and second line support at Redwood Technologies. I also worked on the internal ticketing system, written in PHP and MySQL.