Computer Science student in the UK. Loving Go right now, but I know Python, a decent amount of JS/TS and a bit of C/C++. Below are some of my current/previous personal projects:


Go TypeScript

A rewrite of the below in Go and TypeScript, with a bunch more features. Up until doing this, Python + a bit of JS were the only languages I knew, and Go seemed like a logical next step. There was a lot of frustration starting out, but eventually, with the help of the Introducing Go ebook, I managed to get it working in about a week.

jellyfin-accounts [deprecated]

Python Javascript

A self-hosted account management service for the Jellyfin media server. Provides QOL improvements to admins and users of instances by generating invite links and sending password reset PINS directly to users, among other things. This was my first foray into anything related to web development, demonstrated by the use of Bootstrap, jQuery and Stackoverflow snippets.


Go TypeScript

An app for hosting automated software builds done in Drone CI. Once connected and enabled for a repo, a key is generated which the Drone pipeline can use along with a script to publish the build files for the specific commit. Currently in use for jfa-go, waybar-mpris, and itself. Also includes some extra stuff to allow client apps to be notified of a new release of any type.



A compiler (or assembler, not sure) and bytecode interpreter for a mock assembly language based on what was used for questions in my A levels. Also includes a very simple black & white canvas that reads color values from memory and supports arrow key input, and a couple extra instructions to make things easier.

Some smaller things include:

  • waybar-mpris: A component/utility for waybar that controls MPRIS compatible media players individually over DBus.
  • go-scrobble: A scrobbler for MPRIS players
  • mpris2client: The MPRIS client library used in the above two.
  • mediabrowser: A limited, account management focused Jellyfin/Emby API client.
  • ch8-emu: Somewhat functional CHIP-8 emulator. Works with most programs but doesn't support sound.
  • docker-update: A personal utility I run on my servers to create and update permanently deployed docker containers.
  • speedrun: A terrible little flask web app that plots speedrun times since a game's release.
  • classtime-calendar: Another personal one I wrote to move my college timetable from the ClassTime app onto Google Calendar.