This page contains a selection of projects, artefacts, and pieces of work that I've created or contributed to over the past few years.
As part of my penultimate year of study in St Andrews, I undertook a yearlong software engineering module, which involved building a federated social media in a small team. The site was designed to allow cross-communication with the sites of other teams, similar to how Mastodon instances work. Over the course of the project I gained experience with Agile development and became proficient in several technologies including TypeScript, IBM LoopBack4, MongoDB, and Postman
Some aspects of the system I was chiefly responsible for developing include they system's security controls, including the system's authentication/authorization mechanisms and secure password storage, and the up/downvote system. I was also the chief team member responsible for system API testing.
One of the most exciting projects I have been able to partake in has been the Global Challanges Programme, organised by the St Andrews School of Internation Relations. The programme involved working in a small group to work towards developing and implementing solutions to the problem "How can we achieve policies that are evidence-informed, in a timely and appropriate way to enable more effective responses to global crises?".
Our group implemented solutions targeted at reducing the effectiveness of misinformation through increased information literacy. My personal project responsibilities included:
A personal project I undertook in my spare time. This site is a recreation of the popular social deduction board game "Chameleon". Building the site was a valuable learning experience, serving as my introduction to React and WebSockets. Although now that a few years have passed since I created the site, there are things I would definitely do differently if I had to rebuild the site from scratch, however the code has remained robust enough to support playing the game with friends since I brought it online. Although the site was only made for personal interest and to facilitate playing the game with friends, it was built to accommodate an arbitrary number of rooms, each of which may facilitate a game being played simultaneously and independently of other games taking place at the same time.
In my final year of study at St Andrews I undertook two year-long projects: one in the School of Mathematics and the other in the School of Computer Science. My computer science project involved investigating how recordings of musical melodies could be automatically transcribed and represented as sheet music. The project combined several interests of mine, musicology, software engineering, and human-computer interactions. The project was featured as one of six example projects featured on the school's example project library.
Part of my work towards an MSc in Applied Cyber Security involved undertaking a simulated penetration test. The report produced as part of this test can be found here.
This report was written as part of my undergraduate studies, it summarises and evaluates the (at the time) state of blockchain technology, specifically with regards to cryptocurrencies, and with a focus on cyber security concerns. The intended demographic of the report are individuals who are technology-literate but who are unfamiliar with blockchain technology.
As well as reports written for academic purposes and with a focus on technology, I have also written about music and music culture on a number of occassions for St Andrews' student run Hearing Aid magazine.
This report was produced as part of the other year-long project I undertook in my final year at St Andrews. This project investigated the history and properties of mathematical objects called space-filling curves and is a technical document aimed at someone with a basic knowledge of undergraduate mathematics.
[back]