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.
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 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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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