Dave Martin Programming Blog
My blog, where I write about programming
My blog, where I write about programming
I maintain and contribute towards open source libraries
A web app to plan and acheive goals
An productivity app following the Ivy Lee method
A web app that turns your phone into a console display
A mobile app for booking stylists
A unique award winning interactive animation
A web app to write better essays
At Gresham I've worked as a back end Clojure engineer, responsible for designing and building their Kafka Streams based application. This involved:
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.
I worked with the Redefine consultancy on consolidating Hyde Housing's disparate data sources into Kafka. This involved:
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:
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.
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.
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.
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.
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.
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.
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:
I performed first and second line support at Redwood Technologies. I also worked on the internal ticketing system, written in PHP and MySQL.