Dave Martin Programming Blog

My blog, where I write about programming

Open Source

I maintain and contribute towards open source libraries

Intention

A web app to plan and acheive goals

Only 6

An productivity app following the Ivy Lee method

Phonsole

A web app that turns your phone into a console display

Stunners

A mobile app for booking stylists

Goldivox

A unique award winning interactive animation

Lobster Writer

A web app to write better essays

Technologies

Front End

ClojureScript
JavaScript
React
Angular
SCSS
Elm

Back End

Clojure
Scala
Kafka
PostgreSQL
NodeJS
Datomic

Other

Git
Docker
AWS
Heroku

Where I've Worked

Gresham Technologies - Clojure Engineer

March 2023 - present

At Gresham I've worked as a back end Clojure engineer, responsible for designing and building their Kafka Streams based application. This involved:

  • Designing and building new Kafka Streams topologies
  • Administering Kubernetes
  • Maintaining existing topologies
  • Working on a GraphQL API
  • Performing data migrations
  • A small amount of front end JavaScript and React work

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.

Phone

07588361916

Address

Basecamp
Baltic Creative Campus
Liverpool
L1 0AH
UK