All Projects
Programming Languages
-
Uniview Current
View once immutability enabling the safeties of immutable code, while enjoying near procedural performance
-
Qupa 2020
Queued Parallelism Language
The predecessor to Uniview, a C++ like language designed to encourage implementation design which leads to easily parrallelisable programs. -
Fiber 2018
The original toy language project which compiled to a bytecode, which then ran on a bispoke interpreter to understand language development - which inspired the future language projects I have ventured onto.
Visualisations
-
Slime Mould 2022
Used GPU shaders to compute a mould simulation. Each spore lays down attractors, and every spore is attracted to those. As the spores move around it creates a cool visualisation.
-
DeepL Chess Notation 2020
This was a group project for a university assignment where we created a web app which you could take a photo of a chess board and it will give you the chess notation of the board. This runs completely on the mobile device with highly usable processing times for keeping board history for a local tournament.
-
Dots 2019
Modified boids animation for the front page where the parameters dictating the boids are constantly changing, including into negative values to lead to interesting patterns.
-
Musical Boids 2018
A modification of the dots animation where the parameters (turnspeed, maxspeed, separation, attraction) all change according to the music being played.
-
Musical Vector Field 2018
A large amount of particles are simulated across a vector flow field, where the fields are determined by the frequencies of the music playing.
-
Wiki Web 2016
Give the software a start and an end page, and it will use the Wikipedia APIs to crawl via a bredth first search to find a network of possible routes from A → B and visualise all of them.
Applications
-
Predictable Bot 2023
A discord bot + website to allow people to post predictions allowing people to place wagers on what they think will happen.
The whole system was designed to be robust, ensuring no faux money is lost even in the even of an error. And also ensuring that there is zero down time even during upgrades.
Ensuring as the old version is shutdown it completes currently active operations while not interrupting the start up of the new version
-
Wiki Thesaurus 2023
Uses the simple-wiki dataset to generate a graph structure for wikipedia based on links between articles.
From that it then uses Jaccard similarity to take any given input word or entity and attempt to find similar entities. Hopefully producing thesaurus like results (spoiler it's not thesaurus like)
-
No Press 2020
A MVP for a drop in replacement for a dying Wordpress sight, which has built in conversion to ingest the pages from a Wordpress site converting it into a statically built blog.
-
J Plays 2016
A light weight version of Dj Radio designed only as a local media player built in electron.
-
Dj Radio 2016
A NodeJS implementation of a alternative to IceRadio.
It will read an entire folder and index the music in it, reading all metadata from the MP3s. The admin can then queue music or allow the server to play random music.
The server will re-encode the audio so all devices will see it as a single stream of audio, with server side buffering to fill client side caches on connection for instant stream start, while remaining in sync with other users.
Hardware
-
GKM27 2022
A macropad designed ergonomically for FPS shooters rather than typing. Also includes direct key-to-led mapping allowing reactive lighting visualisations, tuned to maintain a high polling rate.
Libraries
When I started learning NodeJS, I decided I wouldn't use anything other than the built in libraries to force myself to learn the full features of the language, and to understand how the popular libraries worked and how they were made.
-
BNF Parser 2021 :typescript-javascript:
Takes in a BNF representation of a syntax and compiles it all the way down to a wasm application for parsing that specific syntax with compiler optimisations applied to it.
The compiler also generates type-definitions corresponding to the possible syntax tree layout. To create a much more ergonomic developer experience using the outputted syntax, since the structure will be somewhat known.
-
Struct-DB 2018
A simple object oriented database implementation
-
FlatFile-DB 2018
A very simple flat table database implementation.
-
Theader 2017
Give the API a function, then call the function through the API and it will send the data to a new worker to execute the function on.
-
cosf 2017
Compact object storage format. Basically a custom BJSON implementation.
-
Passer 2016
A bispoke express like library with the ability for: wildcards in addresses; cookie decode/encode; query string decode/encode; multi-part form parsing (including files); session management; authorisation checks for certain url paths.
-
Custom Radix 2016
Define a character set for your radix, then it can convert to and from that stringified form.
-
Adatre 2016
Asynchronous class-based referencing databasse
-
Mass Random 2016
Bounded random values, and random string generation
-
Object Manipulation 2016
Difference of objects, merge two objects, deep copy of objects.
Other
-
Woona IRC Bot 2016
A basic IRC bot which oberves how users react to it, and memorises those responses and attempts to use them later to respond to the user.