Project Portfolio

This page is a collection of projects I have worked on throughout my education and in my own time. I enjoy building things to learn new technologies, solve problems and experiment with different areas of computer science. Each project contains an image and a short description, which can be clicked to view more details and, where available, access the source code.

Isopod Adventure

Isopod Adventure - A Text Based Adventure

Isopod Adventure was the first project I ever worked on and the project that started my journey in computer science. It was originally a piece of homework for my GCSE Computer Science course back in 2016, where I was tasked with making a simple text-based adventure. However, I found myself wanting to go further than the original requirements and pushed myself to add simple turn-based combat and random choices before the homework deadline.

Looking back at the code, I can see many ways I could improve it or make it more interesting, but it still holds a special place in my heart as the project that helped me discover my love of computer science.

IBM

IBM App Competition

When I was in Year 9, the academy my secondary school was part of hosted an app competition in partnership with IBM. Students across all the schools were asked to pitch an app idea, w ith the first round consisting of a written pitch.

My group and another group were the only teams to make it to the second round from our school, where we had to create a video for our app. My group then made it to the finals, where we gave a presentation to IBM staff and were given a tour of their office.

While we didn't end up winning, the experience taught me valuable skills in working as part of a team and pitching an idea. The competition also widened my interest beyond programming and into computer science as a whole.

Into the dungeon

Into The Dungeon

Into the Dungeon was one of the first big non-Python projects I worked on. It was made for my A Level Games Design course, where we were given a brief to make a 3D game with platforming elements. I wanted to push myself by adding a procedurally generated dungeon and turn-based combat.

Overall, I was very proud of the results, particularly the environments, as they were all handmade with textures I made. Looking back at it a few years later, I can see a lot of ways I could improve or rewrite the code, but in the end I feel it was what prompted me to start making more projects outside of school.

Game jams and hackathons

Game Jams and Hackathons

During my time at university, I have attended 2 hackathons and 2 game jams hosted by Hack Sussex. Each time I competed as part of a group and won at least one category, winning the grand prize at one of the game jams. The events ran for 24 hours over the weekend and involved staying up and working together with other programmers to complete a working project within a limited time. More details about each project can be found on their respective Devpost pages, but they include:

  • In The Chair - A co-op versus game inspired by Mafia
  • HackCat - A turn-based card game
  • Communiko - A Bluetooth communication chat app
  • PuzzleBox - A hardware-based puzzle-solving game inspired by Keep Talking and Nobody Explodes

These events taught me a lot of useful skills such as time management, teamwork, preventing feature creep, feature prioritisation and how to give a talk about a product. These projects themselves also taught me a lot of useful coding and programming techniques, as I tried to do something new at each event.

Keypad

Pico Keyboard

While I had tinkered with hardware before this, this was my first hardware project with a specific goal in mind. The project revolved around a keypad and Raspberry Pi Pico. The Pico could translate inputs from the keypad into functions that could execute code.

The main use of this keypad was to speed up development by having dedicated keys for shortcuts and commonly typed phrases. I also implemented profiles, indicated by the colour of the LEDs, that changed what each key did, allowing each program to have its own set of inputs.

App launcher

App Launcher

This software was developed to help organize all my frequently used apps into one launcher, as I had been having issues locating them. The software was developed using Tkinter to provide a graphical interface and focused on an object-oriented implementation to minimize repeated code.

The app's main features were the ability to open applications, use custom icons and backgrounds for each application, and organize applications into groups. This was also the first project where the goal wasn't to learn new technologies, but rather to produce a fully working application.

project euler

Project Euler

While I was between projects, I would complete challenges on Project Euler. These challenges helped me keep my programming skills sharp and improve the efficiency of my code, as many of the challenges involve simple tasks that require optimization to run within a reasonable amount of time.

compiler

Toy Language Compiler

Developed for my Compilers module, this program uses ANTLR and Java to process and run a toy programming language through a lexer, parser and interpreter. I worked with parsing, semantic and type checking, error handling, and implemented support for variables, while loops and if statements.

monopoly

Property Tycoon - A Collaborative Monopoly Clone

Developed for my Software Engineering module, Property Tycoon was a Monopoly clone made with a team of 6 people in response to a mock brief provided by the module convenor. The game was developed in Unity and featured traditional Monopoly features such as buying and selling properties, dice rolls, upgrading properties and Community Chest cards. Property Tycoon also differed from the original Monopoly by featuring AI players and a timed mode.

While the game itself was important, the main focus of this project was teamwork and documentation. Development involved regular team meetings where tasks were divided between members and plans were created for the development of the game. We also maintained documentation for the codebase and created plans for how different scripts would be integrated with each other. This helped us coordinate our work and reduce problems when combining code developed by different members of the team.

My main contributions were developing the user interface and the AI players. This required extensive communication with the other team members to ensure that the AI could interact correctly with the systems they had developed.

sftp

Simple File Transfer Protocol

Made for my Computer Networks module, I developed an SFTP implementation based on the protocol's specifications. Each packet was structured according to the SFTP standard to allow the program to integrate with other software. I developed two versions of the software, with one approach using TCP and the other using UDP, with each requiring slightly different implementations.

The software was tested using a range of different file types and file sizes. All files tested were successfully transferred without packet loss or corruption. The transferred files were then compared with the original files to ensure that the contents had not changed during the transfer.

bert

Propaganda Classification and Detection

Made for my Natural Language Engineering module, this project involved developing and comparing multiple approaches to both classifying propaganda and identifying the specific propaganda techniques used in text. For the classification task, I developed BERT and LSTM models, with both requiring custom preprocessing and training loops.

For the detection task, I developed a BERT model using BIO tagging and a T5 model to identify propaganda techniques within text. The BERT approach required custom BIO tagging and chunking to handle the size of some of the training data, as well as both models needing a custom training loop and preprocessing.

Website 2

TylerLionbanana.com - Self-Hosted Personal Website

TylerLionbanana.com is a self-hosted Flask website developed and maintained by me. The website primarily gives me a way to learn and experiment with new web technologies, while also providing various services for its users. The website currently features:

  • Role-based access controls
  • User accounts
  • Password hashing
  • Email verification
  • Login redirects
  • Cloudflare RECAPTCHA
  • Email verification
  • Cryptography games

The website is hosted on a Raspberry Pi and uses Cloudflare Tunnels to make the website accessible externally. There are many more features planned for the website in the coming years.

homelab

Tristan - Self-Hosted Homelab Server

Developed and maintain a Linux-based self-hosted environment for hosting various Docker containers including media servers, finance tools, home automation, game servers and web applications. Services are accessed externally through subdomains handled by Cloudflare and Caddy. Tailscale is used for remote SSH access for debugging and configuration outside of the network. Gluetun is used to route certain containers through a VPN.

metal health

Metal Health - Mental Health Tracking and Support App

A service provided on my personal website, Metal Health allows users to create and join private mental health groups. The first service available in these groups is the traffic light system. The traffic light system allows users to set a colour to indicate their current mental state with automated daily resets and notifications depending on the lights colour

The second service available is the Wall of Vent system. The Wall of Vent system allows users to make posts publicly of anonymously. Anonymous posts are stored using a code in the user's session to help prevent the author from being identified from within the SQL database. Users can reply to these posts, and only the author of these posts can see these replies.

electric square

Multiplayer Portal FPS

A 3D first-person shooter Unity game based on a portal game brief provided by Electric Square. The game implements a portal system that allowed players and bullets to pass through portals while rendering what is on the other side. This project was completed independently over an academic year, with regular meetings with Electric Square, for my university year-long project, along with a technical report.

mnist

Fashion-MNIST CNN Image Classifier and GAN Image Generator

Made for my Neural Networks module, I researched and developed a CNN classifier on the fashion MNIST dataset, achieving 80% test accuracy.

I also researched and developed a GAN and DCGAN models from scratch. including training loops, comparing the generated images between the two approaches

While this list is as comprehensive as possible, there might be some projects that weren't included either because they arn't quite finished or because they were less noteworthy compared to the other achievements on this list