Below you will find information on some of the more interesting projects I have worked on. Hover over the bars on the left to see long-term projects that were worked on over multiple years.




I completely recreated the aiohttp-admin library. This provides a very easy way for users to create full admin interfaces automatically from SQLAlchemy models.


No new projects this year, but see the bars to the left for projects that I continued to work on.


No new projects this year, but see the bars to the left for projects that I continued to work on.


Aio-libs (2020-2023)

Aio-libs Aiohttp

I am a member of the aio-libs organisation on Github as a primary maintainer of many asyncio libraries, including aiohttp.

asyncio Python



A GNOME replacement for the official Tesla app. Designed to be adaptive to run on mobile and desktop.

asyncio GTK+ Python


GNOME Boardgames


A boardgame manager that allows the user to easily sort through and find a game to play from their collection, using data fetched from Of particular use is the option to restrict the search to a specific number of players, which will also show which games are the best rated for that number of players. asyncio GTK+ Python

Coinbase Payment Gateway


A WooCommerce payment gateway created for Coinbase Commerce.

This plugin allows customers of Coinbase Commerce to accept Bitcoin payments on their WooCommerce website. Bitcoin PHP WordPress


TrashMail Web Extension


A clean and lightweight web extension written for the new Firefox. This was created for the service and allows the user to right-click and generate a new disposable address using the TrashMail API.

JavaScript Web Extension

Cheat-proof P2P Games

For my MSc project I did research on the possibility of creating P2P multiplayer games which were cheat-proof. For this, I assumed that an attacker was a player with full access to the source code and could modify the code of their own game as desired.

To achieve this I needed to use modern cryptographic techniques, the main technique being secure multi-party computation. With these tools I was able to create some simple games where an attacker would not be able to cheat.

As a proof-of-concept I created the core of 2 games. The first game was a version of Mastermind, where 2 players compete to guess each others code first. The second game was Battleships, where 2 players compete to sink the other’s ships first.

Cryptography Game Dev

Separation Game

Read More…

Another small 2D game created for a piece of coursework. This took about 8 hours to make while only using the Raphael library to put shapes on the screen.

Game Dev JavaScript


Btrfs Backup (2016-2017, 2020)


A backup suite designed for systems using a btrfs filesystem. Using the tools available for btrfs it is able to create atomic snapshots on the local machine, which can then be efficiently synced across to external drives, SSH servers etc.

Bash Btrfs Python


UWDE (2015-2018)

Documentation Source

UWDE started as an internal project at Pragmatic to automate onboarding of WordPress websites. The project provides a Vagrant box with a Python web app which allows a user to access all the details about a client’s website and allows them to onboard a website locally with a single button, with the app doing everything necessary to get a copy locally, such as cloning a Git repo, downloading plugins/themes through SFTP, downloading the DB, updating the database with the local domain etc.

PHP Python WordPress


Read More…

A small 2D game completed for a piece of coursework. It took about 6 hours to make while only using the Raphael library to put shapes on the screen.

Game Dev JavaScript


Esperanto Dictionary (2014-2015)


An Esperanto dictionary app for the Ubuntu phone. This app was written as XSLT instructions used to transform 10,000+ XML data files into QML files that can then be run on the Ubuntu phone.

JavaScript QML XSL


Bitcoin Touch (2013-2015)


A Bitcoin client for Ubuntu Touch. Originally created using the bitcoinj library for the backend and QML for the interface. The backend was later converted to Python using the pycoin library, which gave us more control and flexibility in how we managed the wallet.

It was implemented as a full SPV wallet, that connected to Bitcoin’s P2P network and synchronised from block headers.

Bitcoin Python QML

GNOME Shell Notes

Download Source

An extension to the GNOME Shell that adds an alternative overview to display sticky notes. It also supports syncing the notes with OwnCloud.



LiveView (2012-2013)


LiveView allows you to take DSLR photos via a computer, and preview those photos on the computer screen before saving. This is useful for photography in a studio or anytime it can be useful to see a fullscreen preview on the computer while shooting.

GTK+ Python


No new projects this year, but see the bars to the left for projects that I continued to work on.


White Room Game (2010-2013)

Read More…

A first person maze escape game. This was the first game I ever created, written in Python using the Pygame and OpenGL libraries. Game Dev OpenGL Python

JaGUI (2010-2013)

Read More… Source Documentation

A GUI toolkit for Pygame developers. Easy and simple to use library, that allows game developers to quickly add GUI components into a new or existing game project.

The project has been praised for having an easy to use API and good documentation. It also supports OpenGL. Game Dev Python


Peglist Trainer (2009-2010)


A tool for practising certain memory techniques, in particular peglists. This was my first notable project, created while I was still learning to program in Python.