I am Kevin Mahoney, and I'm a software developer.

My interests include functional languages, type systems, databases, relational database design and game programming. I'm especially fond of Haskell and Clojure.

Work In Progress

Structural Editor

Structural Editor

A structural code editor and IDE that operates directly on abstract syntax trees instead of text files. Operates on a simple custom language that compiles to JavaScript.

Uses ClojureScript, ReactJS and Huet zippers.




A toy compile-to-JavaScript language with a structural, fully inferred type system. This was mainly written to play around with row polymorphism, which seemed like a pretty good fit for a JavaScript-like language.

Written in Haskell.

Github: StrictScript

Pool tracker

Pool Ball Tracker

A fun side project at GoCardless to track pool balls with a GoPro camera. More information in the write-up.

Uses C, C++ and OpenCV.

GoCardless: Pool Ball Tracker

Data Story

Data Story

A runner up in a World Bank competition entry that visualises climate change data provided by the World Bank API. A SpineJS, javascript-heavy web application with a Flask back end.

Worked on in collaboration with Decio Battaglia and Xiaoying Riley of 3rd Wave Media.

YouTube: Data Story



A simple, free “lights-out” puzzle game released to the android market.

This was my first Android app and my attempt at learning Android development by creating a very simple game.

The objective of the game is to turn out all the lights. Pushing a light toggles that light and four surrounding ones. The levels are randomly generated each time and gradually increase in difficulty. You must complete a level within a certain number of moves or you lose a life.

Written in Java with the Android SDK.

Android Market: Eluminate

Github Projects

Other Projects

  • kpm-list — An Emacs buffer list.
  • Django-bulk — Bulk insert/update for Django.
  • Dochi — Concatenative language interpreter.
  • Roots — Python web framework.
  • DRel — Relational algebra for Django.
  • pyhandy — Some handy Python stuff.
  • Convolution — Sound file convolution.

Work History


I was the tenth hire at this YCombinator-backed, London-based payments startup. I mostly worked as a back-end Rails/PostgreSQL developer with a dash of dev-ops using Chef and Elasticsearch.


Maplecroft is a small risk analytics company. I worked the full stack using Django and Javascript. A lot of work with maps (Leaflet, Mapbox).

Switch Call Ltd.

I worked for this (now defunct) telecomms startup for two years. I produced some websites, SMS and telephone tools in PHP and ASP classic.