Projects

December 2025

Image Processing Neural Network Machine Learning Model

Throughout the second half of 2025, I headed the development of an image processing machine learning model for my club, The University of Melbourne's Rover Team (URT).

The project was a collaboration between URT's software and space resources team, requiring the design of a model capable of processing images of sand to predict the percentage of Ilmenite mineral present within a sample.

Given the limited dataset of image samples, the existing model ResNet50 was used. During the training phase, the pretrained layers were freezed and the model was trained on patched data generated from the original data.
November 2025

GraphIT: Financial Graphic Visualisation tool

My capstone project as a Computing Systems and Software undergraduate student.

As part of the requirements of our client, Provision IT, my team and I spent the duration of a semester developing the architecture and designing the interface for a locally hosted graphing tool that automatically generates visually represents financial data across companies and industries.

My contributions lied in my role as the team's scrum master and backend developer.
May 2025

Caching Web Proxy for HTTP/1.1 written in C

The aim of this project was to gain familiarity with socket programming, and the task was to design and code a simple caching web proxy, that's capable of proxying GET requests.

To accomplish the assignment, 4 different stages were used to develop the proxy:
1. To create a listening TCP socket on the port that listens to all interfaces and proxies all requests without any caching.
2. Building on stage 1, a cache of 10 entries, each 100kB in size, was allocated to keep a copy of all requests and their responses.
3. At this stage, I now had to distinguish between cacheable vs. non-cacheable requests.
4. Expiration. Depending on the Cache-Control header provided in the requests, this specifies how long the response is valid for.

Traffic sign image classification model

A pair project developed for a university course.
The task was to build and critically analyse supervised machine learning models for the goal of classifying German traffic signs.

Given the GTSRB (German Traffic Sign Recognition Benchmark) dataset, my teammate and I implemented a comparison of the following models: SVM, Random Forest, CNN, and a stacking based model.
To train these models, we extracted features from the training and test data to feed into the models, experimenting with SIFT, Daisy, Resnet, and Colour Histogram values. Each feature engineered underwent a mutual information technique to select a subset of features with the most value that allows for better predictions.
October 2024

Data wrangling and analysis on the effect of Socioeconomic-Demographic features on Crimes

My first introductory project to machine learning.
As an assignment for a university course, my team and I were tasked with investigating a research question drawn up from a provided dataset, about Australian states and communities. We had moved forward with using machine learning models to investigate whether there existed a relationship between socioeconomic-demographic factors like education and income on the rate of crimes within Victoria, Australia.

4 regression models were trained for the project: multiple linear, random forest, ridge, and stacking regressions. Raw data had to be pre-processed via median imputation, log transformation, and standard scaling prior to being fed into PCA (Principal Component Analysis) for multicolinearity removal.