Projects timeline
All of my projects, in a timeline.
There are many smaller projects and thoughts that are not listed here: I can't remember everything I've done, and I did not use GitHub for my projects before c. 2017. Additionally, I am only counting projects of notable size and/or actually completed.
2016
flappysquare
July 2016
As part of my high school's digital technology course, we created a Flappy Bird clone. Of course, as I am not at all an artist, created mine with squares and rectangles, and named it appropriately. It's had a few tweaks and updates over the years, and I'm immensely proud of making it in a week (~5 hours of in-class work).
2017
Colonize!
September 2017
My first real attempt at a video game, I wanted to make a base-builder on Mars, using the Unity3D game engine. I pioneered many cool things (new to me at least), though it quickly hit a wall with content restrictions. I was particularly enamoured with the beautiful toolbar UI that mimicked the plain informationalism of aircraft cockpits. It is not completed and has been abandoned. Also it's been done by someone else now.
2018
JumpFourGlory
February 2018
Another attempt at a game with smaller scope (still in Unity3D), this one was a simple on-tracks dodging game, where you would have to steer around various obstacles to complete the level(s). The unique feature is that each level would feature four different paths to take, and the player could jump between them at any time. It is not completed and has been abandoned.
UT³
August 2018
My third attempt at a game in the Unity3D game engine, this is the first project that I actually completed. A friend at high school introduced me to Ultimate Tic Tac Toe, which we played often (especially during physics class). Eventually I tired of drawing grids on grid paper, and keeping track of who's turn it was and where we were due to play. I thought that this could make for a good use of the Unity3D game engine, and after just over a month of work (amongst classes and many other things that occupied my time), it was done! I'm still very proud of this one, as it is such a good self-contained game that is easily accessible. Even better, it has not required any real maintenance over the years, so I did a pretty good job of building it as it turns out.
Cliff Defence
September 2018
This is the original game that I wanted to start making when I was c. 11 years old. I had no idea how to make games, and I still don't really know how. It didn't really get anywhere, and has long since been abandonded. The idea was a tower defence game set on a cliff edge. I may come back to it in the future, as basically my whole career exists due to my desire to create it, and every step along the way was something to overcome so that I could one day make this.
2019
KeepBox / KeepHome
2019
As part of my year-long capstone electronics project in high school, I designed and partially implemented a smart mailbox. Only, it can take more than just mail... it has space for parcels! It would allow parcels and mail to be delivered, e.g. at the road end of a long/tricky driveway, and lock itself securely whilst notifying the owner that a delivery had been made. It is a self-contained unit that utilises a solar panel and lead-acid battery for power, and LoRa for communication back to the base station, all controlled by an ESP32 microcontroller. I do still hope to complete this one day, when my means and skills allow for it.
2020
TouchFaders
August 2020
This was an attempt to enable computer control of a YAMAHA® LS9 digital mixing console over a MIDI connection. I successfully implemented the communication and control, and even started working on reverse-engineering their custom MIDI-over-TCP protocol behaviour... though I have not quite managed it. It is partially functional, though not complete enough for me to call it 'done.' As the console that I was working on has since died, the MIDI portion of the project is removed, and I have pivoted to using the custom RCP protocol used for the newer consoles instead.
TouchFaders APP
October 2020
This is the companion app for TouchFaders, which enables multiple Android-based devices to communicate with and control a YAMAHA® LS9 digital mixing console, just as you would officially do with the modern consoles. It is mostly functional, though there are some reasonably key features are buggy and/or not quite complete. It does not have feature parity with the official app in all aspects, though it imitates most of it, and indeed has some unique features of its own!
2021
anderserver
2021
I overhauled this website from pure utility (controlling the LED strip attached to my desk) to a more comprehensive and useful function: recording my thoughts and hosting my projects.
Kruskal visualisation
October 2021
After learning about (and implementing) the fascinating graphing algorithm invented by Kruskal, I saught a way to explain its beauty to my friends. As usual, it didn't go so well, so I set about building an interactive visualisation of the algorithm, which allowed you to step through the whole algorithm. There are listings of the pseudocode and the C# code, with descriptions of each line. Internal datastructures have been visualised, and status of the search is displayed on the nodes and edges of the graph itself. I have tried to add every form of interactivity and visualisation , to try and enable as much understanding as possible. It is the second project I have successfully completed, and was also created using the Unity3D game engine.
2022
User Automation Portal
February 2022
As part of an internship for an IT support company, I built a system using Python and Powershell scripts and custom JSON documents to interface with Microsoft Azure AD via the Graph API, and enable various automations, as well as providing insight into user accounts, user groups, and tenant licences. It incorporated a login system with per-user permissions, web client session tracking for better performance (I wrote a blog post about this!), and full UTF-8 compliance for all the emoji and symbols you could want! The whole thing amount to over 10,000 lines of Python, using Flask as the web templater and server, with caddy
as an HTTPS proxy.
GPU raytracing
April 2022
After learning about some computer graphics fundamentals, the topic of discussion turned to raytracing... though we didn't get to play with much more than the most basic theory. So, I abandoned the lecture material and used that time instead to implement my own (very basic) raytracer. Of course, I did not have a hardware-accelerated raytracing graphics card at the time, so I had to be careful about performance and how many tricks I would use. As such, I only do a single raycast to determine the scene geometry, and then raycast out to each light to calculate the appropriate Phong Shading. This is where I also learned how important shader optimisation for your specific hardware can be!
Hexfriend
July 2022
My good friend has been working on this fantastic project for many years, and I started with my first open-source contribution to it! Since then I have made numerous adjustments to the UI according to the guiding principals of Human-Computer Interaction that I learnt through my own experimentation, at high school, and at university.
2023
andersupport
February 2023
A small project to experiment with some ideas (web-based end-device configuration, passwordless biometric web authentication). Nothing has come of it.
andashboard
February 2023
A small project to experiment with WebSockets - I think it's neat!
adar
2023
This is my year-long Honours research project. I'll share more about it in a blog post when it's done. Until then, it is available on GitHub.
Hexchess
July 2023
I was inspired by a CGP Grey video to create a digital version of the hexagonal-based chess that was presented. I worked full-time over the course of 3 days to successfully implement my first JavaScript web app. Whilst I would like to call it complete, it lacks check and checkmate support, both of which are currently beyond what I have the motivation to do.
PatchCanvas
April 2024
I was disappointed in the lack of documentation of our church's tech setup, which is a fiendish mess of different hardware and software using all and sundry protocols and interfaces to connect between them. I was also disappointed in the lack of available easy-to-use documentation software for professional equipment, given that it is most certainly necessary (and we can't all bury our heads in spreadsheets). Hence, I created the solution to my own problem.