Skip to content

Projects

Programming Languages

  • Uniview Current


    View once immutability enabling the safeties of immutable code, while enjoying near procedural performance

    Source

  • 🌈 Qupa 2020


    Queued Parallelism Language
    The predecessor to Uniview, a C++ like language designed to encourage implementation design which leads to easily parrallelisable programs.

    Source

  • 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.

    Source

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.

    Demo

  • 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.

    Source

  • 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.

    Demo

  • Musical Boids 2018


    A modification of the dots animation where the parameters (turnspeed, maxspeed, separation, attraction) all change according to the music being played.

    Demo

  • 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.

    Demo

  • 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.

    Source

Applications

  • 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.

    Source

  • J Plays 2016


    A light weight version of Dj Radio designed only as a local media player built in electron.

    Source

  • 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.

    Source

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.

    Source

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


    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.

    Source

  • Struct-DB 2018


    A simple object oriented database implementation

    Source

  • FlatFile-DB 2018


    A very simple flat table database implementation.

    Source

  • 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.

    Source

  • cosf 2017


    Compact object storage format. Basically a custom BJSON implementation.

    Source

  • 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.

    Source

  • Custom Radix 2016


    Define a character set for your radix, then it can convert to and from that stringified form.

    Source

  • Adatre 2016


    Asynchronous class-based referencing databasse

    Source

  • Mass Random 2016


    Bounded random values, and random string generation

    Source

  • Object Manipulation 2016


    Difference of objects, merge two objects, deep copy of objects.

    Source

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.

    Source


Last update: October 22, 2022