Portfolio

7 Dec 2025

why-rs: A Causal Inference Library in Rust

GithubπŸ”— An under-development project, where I’m trying to build out a Causal Inference library in Rust. I found there wasn’t much in the way of CI libraries in Rust, and I was underwhelemed with the level of support for the ones I’ve used in Python, so I decided to try and build my own, which I hope to make use of throughout my PhD and extend to suit my purposes.

1 Dec 2024

Radial Chess

Github- Back end πŸ”— Github- Front end πŸ”— Radial Chess UI Demo Playing against myself Inspired by the heorics of lichess.org’s single developer, I decided to try to create a similar web-based online chess app, with matchmaking. The main goal of this project is to use my knowledge of system design to make a robust and scalable app that could theoretically handle a large number of users. This involves knowlege of infastructure tools, and overcoming dificulties such as scaling a Web-Socket app (hint: you will need sticky sessions for your load-balancer!

4 Jun 2024

Budgeting App

Github πŸ”— On ongoing project of mine, taking inspriation from Monzo’s budgeting burndown feature. I’m building this web app with Ruby-on-Rails, and using the GoCardless API to handle linking user’s bank accounts to the app securely. The inspiration for the project: monzo's 'targets' tab. So far, I am building the MVP, and have implemented functionality to link a bank account with the app, and to store the user’s key to access their bank account data using server-side sessions, which are much more secure than cookies sesion storage.

4 Jun 2024

Fine-tuning GPT2-2

Github πŸ”— A brief jupyter notebook I made showing how to fine tune a model using the πŸ€— Transformers libary. The example I wrote uses the popular CNN/DailyMail dataset.

3 Jun 2024

Youtube2Summary

Github πŸ”— πŸ€— Pipeline to generate summaries of youtube videos, using Whisper-Small for transcription, and BART-LARGE-XSUM for summarisation. BART has been finetuned on the popular CNN/Daily Mail Dataset, as it lends itself to summarisation tasks. Initially, we attempted to fine-tune GPT-2 for the summarisation task, but found it had poor performance: being a generative transfotmer, it generates words one-by-one, (extractive summarisation) whereas BART can generate at the sentence level (using abstractive summarisation).

16 May 2023

Causal Implicit GAN: Data Augmentation for Causal Discovery

Github πŸ”— My University dissertation research project, where I designed and trained a GAN model for data augmentation (generating new training samples for downstream models). I was very proud to receive a score of 83 on this disseration (high 1st). A high-level overview of the CIGAN project The data the GAN generates is intended for use on Causal Discovery models, an area where quality ground-truth datasets are hard to come by- making data augmentation a valuable technique.