Hi!

A computer science student in the UK. I mainly use Go and JS/TS, but know a good amount of C++/C and Python. Below are some of my past/current projects:

jfa-go

Go TypeScript

A self-hosted account management service for the Jellyfin media server. Provides invite links to onboard users, allows self-service account modification, and integrates with other services (Jellyseer/Ombi) and contact methods (Discord/Telegram/Matrix). Written to learn the Go language, and as a rewrite of jellyfin-accounts, which itself was a lockdown project.

"rt"

C++

A CPU-based whitted-style ray tracer, written as a third-year university project looking at available acceleration methods. Supports planes, triangles, axis-aligned boxes, spheres and constructive solid geometry (CSG). Bounding volume hierarchies and voxel-based acceleration structures can be generated and used for a subset of available primitives. Parameter and scene modification provided through an ImGui interface. Code is not available as permission has not been attained for its release.

"filaments"

Go TypeScript

A re-implementation of the New York Times Strands game, with the ability to load game board files directly, browse and download from the archive of the original game, and the ability to create and play in multiplayer rooms. Wrote this to make playing with someone over a video call more fun.

buildrone

Go TypeScript

An app for hosting automated software builds done in Drone and Woodpecker CIs. Once connected and enabled for a repo, a key is generated which a CI pipeline can use along with a script to publish the build files for the specific commit. Currently in use for jfa-go and itself. Also provides a "tag" system for letting users know when updates are available..

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.