My Projects

OpenCL Ray Tracer

A GPU based program to render scenes using realistic, physically simulated light.

Has multiple features including:

  • Diffuse, metallic, glass and emissive materials
  • Sphere primitives
  • Triangle rendering
  • .obj model support
  • Customisable camera
  • HDR backgrounds
  • Depth of field

Pokémon Gen 1 Sprite Decompression

A program which takes compressed sprite data and decompresses it into a usable pokémon sprite, which is rendered into the console.

It uses the same methods used in the original Pokémon Red, Blue and Yellow games for the GameBoy from 1996.

Y86 ISA Disassembler

An academic assignment for Computer Organisation and Architecture to create a program which would take in a binary file and output a set of instructions, disassembled according to the Y86 ISA specification.

This project contributed towards my final module grade of an A.

The website you're on right now, designed to show people what I've been up to, my projects and how to contact me. It has gone through a few different versions over time and may change again in the future.

It features responsive pages, a clean and aesthetic design, and is quite lightweight. It's also hosted on a VPS running Ubuntu, which I maintain myself.

ML Colour Classifier

My first venture into training an AI model, written in JavaScript, utilising libraries, the model can accurately classify any RGB colour into 1 of 11 basic colours.

Despite the model being rather simple, with 0 hidden layers, it performs rather well after being trained on around 5000 examples.

The Threes Sandal

A fully responsive website custom made for an independent establishment to attract more customers. It also includes a backend, which hosts information such as opening times and the menu, which can be changed via a built in secure admin portal.

While I was working there, the site received on around 125 visits per week, and it is still up today.

C64 Inspired Terminal

My final assignment for my Computer Science A-Level course at college. It featured a Commodore-64 like terminal, which could input a subset of BASIC commands, which would be executed and outputted to the customisable interface.

Some of it's other features include:

  • Creating scripts of sequential instructions
  • On-screen-keyboard to type special characters
  • A debugging window
  • Saving and loading of programs
  • Customisable fonts, colours and borders

Wordle Solver

A simple Java program, which can, given the current state of a Wordle game, output every possible word the solution could be.

It was made at the height of Wordle's popularity, and it also made good practise for my Algorithms and Data Structures module at university.