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.
A boardgame manager that allows the user to easily sort through and find a game to play from their collection, using data fetched from boardgamegeeks.com. 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 TrashMail.com service and allows the user to right-click and generate a new disposable address using the TrashMail API.
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
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.
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 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
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.
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
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.
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)
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
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