My personal projects

This is a collation of some of the projects I have created and completed. I think they're pretty cool.

Approximately in ascending time order. Read more in each section below.

Flappysquare

flappyquare

The first project I actually finished. It was an assignment from Year 10 ICT which I've kept online over the years. It's a clone of flappy bird, though much simpler, and with my own twist on art style and gameplay hints.

UT³

ut³

The first project I finished which was entirely my own. I started playing Ultimate Tic Tac Toe with a friend, though we quickly became tired of drawing squares on grid paper and keeping track of whose turn it was and where. So I made a digital version. It is fully scalable from 2 up to around 8, I think? The public version is only available in 2, 3, and 4 size versions. This is more a matter of practicality, as 4 takes experienced players about an hour to play. It's got full load/save support, too! (if you know how)

TouchFaders

GitHub repo

This is the first project I made for someone else to use. It is an open-source implementation of YAMAHA®'s MonitorMix™ app for their modern series of digital sound mixing consoles. However, my implementation works on their older series of consoles, i.e. the ones that predate smartphones. It uses a computer as an intermediary, which uses MIDI to communicate with the console. It currently implements the minimum viable functionality, though it is not feature-complete (at parity with) compared to the official version. I also started reverse engineering their custom MIDI-over-TCP driver, as the official one was unreliable to install on modern systems. Unfortunately, the legacy hardware I was working with failed due to old age before I could complete this process, so it remains mostly-completed. As there are no technical restrictions against making it compatible with the modern series of consoles, I am currently working on it again, as an alternative to the official version.

Kruskal's algorithm visualisation

kruskal

This is a quick project I worked on to try and explain the beauty and simplicity of Kruskal's algorithm. It searches a graph for the best route to visit all of the nodes in the graph. I've split out every step in the algorithm into pseudocode (with explanation annotations) and C# (also with explanation annotations). Each step has clear visualisations of what structures exist in memory and how they are managed.

User Automation Portal

Sorry, not publicly available

There's all sorts of really cool things I did, but I can't share all that detail publicly, sorry! Please enquire for details.

GPU raytracing

GitHub repo
blog post

Whilst studying computer graphics at university, we briefly touched on raytracing, and even did some exercises with it. As an avid computer technology ethusiast and casual gamer, I was already quite familiar with the concept. I got bored of the lectures and made my own raytracer instead, but mine runs on the GPU instead of the CPU, so I learnt some HLSL along the way. It's really quick bad and not physically accurate at all, and definitely does not implement full path-tracing. But, it is technically raytracing all geometry and lighting in the level (inaccurately), and that's cool to me. Also the end results can be quite pretty.

Hexchess

Hexchess
GitHub repo
blog post

I was immediately inspired by a video I saw (from CGP Grey) on the mechanics and intricacies of chess on a hexagonal grid. So I set about making my first interactive web app. After some hijinks of trying to find a suitable domain name, I settled for hexchess.dev. The whole project was complete in three days, which I'm quite proud of (especially for my first web app). Unfortunately, I forgot about check and checkmate, so you have to do that yourself, I guess. Don't worry, I'll get around to it soon.

adar

dissertation
GitHub repo
blog post

This is my university honours project, for which I was awarded an A+, the highest grade possible. I undertook to simplify consumer digital storage by designing and implementing a simple cross-platform distributed storage system, which used fancy maths and the latest in security, along with existing consumer concepts such as "pairing" to effect a solution.

PatchCanvas

PatchCanvas
GitHub repo

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.