View once immutability enabling the safeties of immutable code, while enjoying near procedural performance
Queued Parallelism Language
The predecessor to Uniview, a C++ like language designed to encourage implementation design which leads to easily parrallelisable programs.
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.
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.
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.
No Press 2020
A MVP for a drop in replacement for a dying Wordpress sight, which built in converstion to ingest the pages from a Wordpress site converting into a statically build 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.
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.
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
Takes in a BNF representation of a language and builds a syntax parser which than then be used to generate a syntax tree on language inputs.
A simple object oriented database implementation
A very simple flat table database implementation.
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.
Compact object storage format. Basically a custom BJSON implementation.
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.
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.
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.