My Portfolio

Featured Projects

All Projects

A dis-assembled program output A source file for the program to dis-assemble The dis-assembled program output to the previous image

Y86 ISA Disassembler

C/C++

A university assessment to create a console based disassembler for the Y86 ISA, as part of the Computer Organisation and Architecture module.

As it was an assessment, the source is unavailable.

For the final project of the Computer Organisation and Architecture module, we were tasked with creating a disassembler for the Y86 ISA. This was a console based application, which took in a binary file, and outputted the disassembled instructions to the console.

The project was assessed, and received a mark of 100%, being marked for the following criteria:
- Solution correctness
- Effective C programming features
- Program structure
- Formatting & commenting

During this project I learnt how to write clean and efficient C code, and how to use the Clang compiler. In addition, I learnt how to read design documents, implementing the specification correctly.

Due to this being an assessment, the source code is unavailable.

4 spheres, with different colours A sphere, lit by 2 coloured light sources 9 spheres, with different properties, lit by a red and blue light

Ray Casting Engine

C/C++

An independent project to test my skills over the summer of 2022, creating a simple real time ray casting engine from scratch.

This project is still somewhat in development.

This project came about from a desire to test my programming skills and to fill some time over the summer break of 2022. I decided to create a real time ray casting engine from scratch, with nothing more than a display library (SFML) to draw my calculated image.

The engine has many features, including:
- Coloured lights
- Sphere materials using the Phong model
- CPU Multithreading

In doing this project, I learned a lot about what goes into computer graphics and optimising code, as a sizeable amount of calculations have to be performed every frame for even a simple image to be rendered.

This project is somewhat still in development with plans to transform it into a ray tracer by adding reflections and light simulation techniques.

A dog made out of coloured ASCII characters An image of a building on a bright day The previous image made out of coloured ASCII characters

ASCII Video Filter

C#

A program which takes a video file and returns a copy made out coloured ASCII characters.

Made as a fun project to test my C# skills involving multithreading, file I/O and image manipulation.

As a fun project, I decided to create a program which takes a video file and returns a copy made out coloured ASCII characters. As can be seen on the left, the middle image was passed through the algorithm, producing the bottom image.

The execution of the program is as follows:
- The video is split into frames using ffmpeg
- Run a new thread for each image
- For each frame, convert to the image to ASCII
- Wait for all threads to finish
- Reassemble the frames with ffmpeg
- Add the original video's sound into the video

Things I learned from this project was C# multithreading, mass file I/O, image manipulation and memory management, as loading many images into memory at once can cause a program to crash (a 720p 30fps 60 second video generates 1,800 images totalling 6.6GB of raw RGBA data).

A console with the result of sin, cos and tan of 0.5 A console with pink background and green text An empty console

C64 Inspired Terminal

C#

My final project for my A-Level Computer Science course, where I made a Commodore64 inspired BASIC terminal, with saving and loading of user programs, theme customisation and more.

For my final project for my A-Level Computer Science course, I decided to make a Commodore64 inspired BASIC terminal. At the time, I reasoned that this would be a good project to suitably test my C# skills that had been learned over the course.

The final project was a simplified BASIC terminal, with most core features, however, due to time constraints, I had to omit some features as I also wanted to add some of my own unique features. These features include:
- Saving and loading of user programs to a file
- Customisable foreground & background colours
- Customisable character set font
- Pop-out on screen keyboard
- Pop-out debug window

Overall, I am very pleased with the final product, and I am proud of the work I put into it, as it contributed towards my final grade being an A.

A mobile app interface showing the date and 3 tasks A form requesting a task name and note 3 buttons, mark as complete, remove task and close

InnerPlanner

Dart

A task tracker mobile app made for the Team Project module at university. Made with Google's app development framework Flutter.

As it was an assessment, the source is unavailable.

InnerPlanner was the result of the Team Project module on my university course. During the module, we were placed into teams of 4-6 students on computing related courses and were tasked to go through the development cycle and create a computer project or software piece.

The whole process was split up into 4 main segments:
- Planning & Requirements analysis
- Design
- Implementation
- Testing

This project taught me a lot about the user experience in addition to making applications for mobile devices, where the user's device specifications can vary wildly.

This project's source is unavailable due to it being an assignment.

A partially completed game of Wordle, with several yellow letters and 1 green letter A program output showing 'equal' to be the only solution The completed Wordle game, where the answer is 'equal'

Wordle Solver

Java

Returns all the possible solutions to a Wordle game, provided what has already been played. This was primarily practice for the start of my Software Development university module, which used Java extensively.

Wordle is a simple game to grasp at first glance, however, to create an algorithm to assist the user can be harder than it initially seems. To do so requires a lot of searching and sorting through possible options to match the constraints of the puzzle.

I made this program near the height of Wordle's peak as I was curious if it was possible to write a program to tell me all possible options the answer could be at the current state of any game.

Additionally, at the time of making this project, the Software Design & Development module had recently started on my university course, which I saw as a great opportunity to practice my Java skills, getting a head start in the module.

A purple guess with confidence of 88% A grey guess with confidence of 97% A green guess with confidence of 100%

AI Colour Classifier

JavaScript

My first practical experiment into AI models, which given a user defined RGB input, classifies it into 1 of 11 different colour catagories (red, black, blue, etc). Uses the ML5.js framework for an abstract implementation for neural networks.

As my first venture into making an artificial intelligence program, I decided to make a model that could classify any user defined RGB colour into 1 of 11 colour catagories. The network was developed with ML5.js, a beginner friendly framework for creating and training abstract implementations of neural networks.

To go with the model, I created a very basic HTML page, with a RGB colour selector, as well as an output and confidence of the model's prediction.

This project taught me a lot about what goes into making a machine learning model, from the process of sourcing training data (in this case 5053 labelled RGB values), to defining model parameters, then finally training the model and testing it's accuracy.

A website with a black and white pub background image, navbar and an update message The main courses section A mobile navbar

The Three Houses Website

Web

Freelance project for a restaurant I used to work for. Uses a PHP and MySQL backend for fetching data such as the current menu and opening times.

Source unavailable as it is still in deployment.

As a freelance project, I created a fully functional business for The Three Houses, a pub and restaurant I worked for at the time. The website has all of the standard features of a business website such as opening times, a menu, photo gallery and more.

As I wanted the owners to easily be able to change aspects of the website, I created a backend database storage and retrieval system using PHP and MySQL. This interface is hidden behind a password protected portal, as to ensure the public would have to access to sensitive controls.

Creating the website taught me a lot about working with a client and meeting their needs for a product as well as working with databases, website security and website responsiveness.

As this is still an actively deployed website, the source is unavailable. (www.thethreessandal.co.uk)

This website's home page This website's CV page This website's mobile navbar

Personal Website

Web

This very website, used for hosting my professional presence, CV and portfolio. Contains no backend but is my most advanced web project in terms of front end features.

As I am searching for a placement opportunity for my third year at university, I decided to create a website to host my CV and portfolio, as well as act as a professional presence for myself.

As I wanted to create a website that was both visually appealing and functional, I decided to create a website that was fully responsive, with a clean, simple and intuitive design.

Since the website is simply hosting static content, I decided to create it using HTML, CSS and JavaScript, with no backend necessary. This allowed me to create a website that was both fast and lightweight, as well as being easy to maintain and update.

This project taught me a lot about UI design and front end development, as well as how to create a website that is both visually appealing and functional.

www.000webhost.com