GitHub

You can check out my GitHub profile here. I like to contribute to open source where I can, but I’m still relatively new to it, and my day-to-day work is all in closed-source GitLab, so you might not see a lot here for now!

OSS Contributions

react-native-bluetooth-classic


Current Projects

Real-time card games

  • Work in progress project for building experience with websockets and animated components.
  • Consists of a React client app that connects to a Node backend, both written in TypeScript and making use of socket.io.
  • Able to create and join rooms with other players via unique generated codes.
  • Playing cards can be dragged around the screen and flipped over.
  • So far, Blackjack is playable, and more games will be added in time.
  • Much more to come…

Card Games Demo


Past Projects

Poll sharing application

  • Web application built with React, Material UI and ChartJS.
  • Implemented user authentication and data storage using the Supabase API and PostgreSQL database.
  • Able to create and respond to polls, view graphed results and update details as necessary.

Polls Site Listings Polls Site Results

Test Platform for Byzantine Consensus

University Final Year Project, 2020/2021

Consensus

  • Created a web application for testing view synchronisation algorithms. Written in Elixir, using the Phoenix web framework.
  • Able to create tests for algorithms to run across a distributed set of nodes and track their progress on screen in real-time, using Phoenix LiveView.
  • Able to set up Byzantine (malicious) nodes which try to interfere with the algorithm’s progress and safety.
  • Used logging capabilities to carry out an analysis and critical evaluation of algorithm performance.

Lyric-based Musical Genre Classification

University Group Project, 2021

Natural Language Processing

  • Created a Natural Language Processing model to identify a song’s possible genres from reading its lyrics.
  • Built the lyrics dataset for training/testing with a Python script that takes tracks from Last.fm’s existing dataset of song IDs and tags, and queried the Genius API to collect ordered lyrics for each.
  • Experimented with data preprocessing, tokenisation, models and tuning of hyperparameters using a range of Python libraries (Pandas, NLTK, Scikit-learn, Gensim, SpaCy etc.)
  • Final model deployed online with REST API and a gitlab CI/CD pipeline which updates saved model weights whenever new data is added to the repo.

This Website!

Side Project, 2020

Lightbulb

  • Built with Jekyll, using the Minimal Mistakes theme and my own CSS adjustments.
  • All the content is written in markdown and HTML.
  • Created as a portfolio of my experience in software development.

Unity Ball Bouncing Game

Side Project, 2019

Bounce a ball on the bar for as long as possible while avoiding various falling obstacles! Catch bonus lives to stay alive! Every 15 seconds the spawn rate of the obstacles will increase, making the game progressively harder. Your overall score increases with each second played until out of lives.

  • Written in C# using free assets from the Unity Asset Store.
  • Built for Android, controlled by touching either side of the screen.
  • Includes sound and particle effects for all collisions.

Bouncing Ball Game

To view this project on GitHub, click here.

GitFit

University Team Project, 2019

GitFit App

  • Android application written in Java.
  • Allowed users to track health data and complete challenges with friends.
  • Contributions:
    • Storage of user data. User stats were stored in Cloud Firestore, while personal data was restricted to local storage for privacy.
    • Developed core UI for viewing stats and challenge progress over time.
    • Managed development meetings, wrote and distributed minutes.
    • Developed functionality for approximating calories burned while walking.
    • Aided other team members in testing and bug fixing.

Massive Music Online

University Project, 2018

  • Web application created with the Ruby on Rails framework.
  • Included use of jQuery and AJAX for a more dynamic and responsive UI.
  • Features:
    • Manage and view songs, albums and artists.
    • User account creation - login/sign-up.
    • Create and save playlists as well as your favourite songs.
    • Upload and view album covers - powered by CarrierWave.
    • A contact form to send me an email!
Viewing albums in
Massive Music Online
The UI could do with some work, but this project was great for learning about MVC.

VirtualCache

University Project, 2018

VirtualCache Logo

  • VirtualCache is a an Android app written in Java which facilitates virtual geocaching!
  • Create your own cache at your current location and fill it with photos, or other images.
  • Anyone else who walks within a certain radius of your cache will be able to look inside and add to it for others to find later on.
  • Using the GoogleMaps API, the app displays your current location and marks the area of caches you can open.


Icons made by Eucalyp, Freepik and dDara from www.flaticon.com