
Version Control System
I used the Go programming language to create a simple version control system, based on git, featuring repository initialisation, commits and checkouts.
To track changes, I implemented a file hashing functionality and designed a basic commit structure to track version history. This required walking through every file in a directory and creating a hash to detect changes to it's contents.
This project gave me insight into how a VCS like Git works in the background, especially how it efficiently tracks changes across versions.

Image Processor
Using Rust, I developed an image processor that generated valid .bmp files from raw pixel data, without using any libraries.
My aim was to better understand how an image file is structured at a lower level, so I implemented the .bmp file header manually, and converted the RGB values to the correct binary format.
This project helped me understand how data is stored and manipulated at a lower level, and gave me experience working directly with file systems and memory representation.

Carbon Emission Analyser
I used React to create a small application to take UK Government data and create a graph to show the change in CO2 emissions between 1990 and 2023, inspired by my interest in environmental monitoring following my Arctic expedition.
This project taught me about front-end application development and data handling. I had to collect the data from the correct rows and columns from the Excel document and translate them into a format my program could understand and work with, all inside my app.

CV Website
Using Next.js I am in the process of developing this website to compliment my CV. Through this project I have learned a lot about the integration of different systems and how a professional website is structured. I am using the Contentful CMS to drive all content on the site, including this paragraph!

Top-Down Shooter
Using TypeScript and the Construct 3 game engine, I have been developing a top-down shooter game with AI controlled enemies and procedural level generation. This has developed my skills in code optimisation and efficiency, as there are many objects that must be updated every tick of the game with minimal drop in frame rate and performance.