Funding Circle - Clojure Engineer
January 2018 - present
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
I worked on both the front end and back end of a variety of web applications, for multiple different 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: https://www.uvd.co.uk/blog/hack-week-things-elixir-phoenix-elm-mash.
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: https://www.uvd.co.uk/blog/clojure-workshop.
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.