Projects

Some of the projects I've worked on.

Jetpack Compose logo Pelorus

A custom Multiplatform Compose client for Compass.

As the name suggests, Pelorus is a client for the Compass LMS service.

The initial drive of the project was to hopefully bring most of the important functionality into a proper native app for Android, and additionally, desktop. Compass has a lot of issues, and the mobile app especially is particularly plagued with them.

The other main drive for the project was of course, just to learn! Pelorus was made entirely with unfamiliar tooling, and the majority of the work was done over the course of a few weeks in the 2023 January holidays.

While the codebase could really do with improvements, the end result was a much faster and less buggy app than the official offering, and overall, I'm pretty happy with it given that!

Kotlin logo Kotlass

The companion API library for Pelorus.

Kotlass was my first introduction to the Kotlin programming language - as with Pelorus, it also suffers from some pretty bad programming practices, but once again, it gets the job done, and being my first time in the Java ecosystem, and in dealing with any sort of API client - it's alright.

I do plan to, when time allows, rewrite both of these two from the ground up, given what I've learnt.

GMEdit Logo GMEdit-Constructor

A GMEdit extension for compiling straight from the editor.

Thanks to the rate of progress in recent years by the team at YoYo Games, the old methods of compiling from outside of the IDE been effectively obsoleted by a proper command-line tool for managing runtimes. This tool is far from perfect, but GMEdit's popular plugin builder, which directly invoked the compiler, hasn't been able to keep up with the rate of changes.

Due to this, I took on making a replacement which uses YYG's new toolchain, and hopes to offer a lot more polish and functionality, while being a more maintainable codebase.

Constructor is a bit of an anomaly as far as GMEdit plugins go, as it does everything a bit weird - I'm personally a huge fan of being able to use modern language features, and jumped straight into the deep end by taping together an ad-hoc way to use ES modules, type definitions, among others, whilst still working within the constraints of GMEdit's now quite old structure.

In future, I'm hoping to extend support to GMRT's new toolchain, which exists separately from the current one - I believe that doing so would be set GMEdit up to "make it" into the modern age of GM which sits over the horizon, which it has so far had trouble keeping up with in the transitional period in between.

Kotlin logo HtmlText

Simple Compose Multiplatform library for rendering HTML.

There isn't a huge amount to say about this one - moreso an entry to fill in space, but at the time of writing Pelorus, there wasn't any library capable of rendering any remotely complicated HTML (that I'm aware of) available for Multiplatform.

My solution was to create HtmlText, my quite horrid solution to the problem, which certainly does do the job, at least.

JavaScript logo JNIX

A horrible idea.

What is JNIX? Good question, hypothetical person!

JNIX, to summarise, is an abomination under construction - or rather, my attempt to create a minature subset of a *NIX-like OS under JavaScript, by using Web Workers.

Without yet having a working build, the project has gone through multiple total rewrites, and now ships with a compiler, if you could call it that - to turn ES6 modules into single runnable files in its own format - to give you an idea how bad this is.

I hope to again have time to work on it, purely for the fun of it. Making it requires learning a whole lot about how the underlying systems behind computers work, and that's fun!

GameMaker logo gml-web

A poor imitation of ExpressJS, written in GameMaker.

As the blurb summarises, gml-web is a little project I threw together a while back, with the goal of imitating ExpressJS's way of setting up a web server.

It turned out alright, given my lack of experience, and follows the same architecture as the JS library it was based off.

This project is actually an extension of my earlier gamemaker-http-server, which was far more limited in scope, had several glaring security issues (not to say this doesn't!), and was far buggier.

Windows 7 logo with a JavaScript logo superimposed on top. AeroWin

Faking Windows 7 in the browser.

AeroWin was my first attempt at making something that resembled an OS in the browser.

It originally started out as trying to imitate the Windows 7 style UI, but moved onto incorporating actual applications, and a filesystem (by way of localStorage).

I intended to take it further - started work on user-written app support, but hit a wall with multitasking: JS being a singlethreaded language, it would be pretty similar to early systems, where either one app at a time gets to do work, or implementing cooperative multitasking - where apps have to give control back to the system when they're done.

I wasn't happy with these compromises, so the project stopped. Much later, from this, JNIX emerged, as a second go, with a full, real system!

Try it!

Discord logo becomebot

Boring CLI utility to talk as a Discord bot.

There isn't much to say about this one, it was one of my earlier projects - title is self-explanatory.

This was one of my first times really using JavaScript.

Slimy boi (Slimeform Infinity game icon) Slimeform Infinity

My long-running, terrible platforming game series!

Slimeform Infinity is a series of games I made over the course of a few days each attempt, over a few years spanning back to Slime Dungeon in 2019 on GameMaker: Studio 1.4, to the original Slimeform Infinity, then v2 on GameMaker: Studio 2, and finally a new version in progress now!

Download links

firefox's default favicon This website

Winner for most generic website ever!

This is what happens when you have zero motivation :)

I was originally planning to use JNIX as my submission for school, but wanted to work on that separately in my own time, so here's the result of 2 very distracted days of work.

Slimy boi (Slimeform Infinity game icon) gml-hlgui

Substantially evil library mimicking the Half-Life 2 VGUI system in GM.

TODO: whats this all about