Projects

Bash · Zsh · CLI

whatdidi - command line history search tool

A command-line tool that searches your shell history, with unique filtering, persistent settings and self-updating.

View details
Digital Logic · RISC Assembly

Custom 16-bit CPU with pipelining and interrupts

A 16-bit RISC-style CPU built up from logic gates, with a 2-stage pipeline, hardware interrupts and hand-written assembly programs.

View details
Bash · macOS · Linux

Custom macOS/Linux setup script

A one-command script that turns a fresh macOS or Ubuntu/Debian machine into a ready-to-use development environment.

View details
Python · NumPy · tkinter

Granite block allocator

A desktop tool that packs granite blocks into containers, loading each one as close to its weight limit as possible.

View details
Java · Concurrency · JUnit

Multi-threaded game simulation in Java

A multi-threaded card game simulation with a custom cyclic barrier for thread synchronisation, fully unit tested.

View details
Python · scikit-learn

Fundamentals of Machine Learning

A logistic regression classifier for handwritten digits, exploring PCA, t-SNE and UMAP for dimensionality reduction.

View details
Python · Flask

Web Player vs AI Battleships game

A web-based battleships game: place your ships interactively, then battle an AI opponent.

View details
Python · tkinter

Custom lift simulator

A lift simulator with a GUI and customisable parameters such as lift capacity and number of floors.

View details
Arduino · LTspice · Circuits

Electrical Engineering Group Design Project

A remote-controlled rover that detects infrared, radio and magnetic signals, from circuit design to Arduino code.

View details
LaTeX · Operating Systems

Why is Software OS-Specific?

A technical presentation on why applications get tied to one operating system, evaluating translation layers, containers and Electron as cross-platform solutions.

View details