Projects
OSRS Production Pareto
An interactive Pareto-frontier explorer for Old School RuneScape production skills. Given your levels, it finds what to make right now for the best trade-off between XP/hr and GP/hr, pricing every strategy against live Grand Exchange data.
GOV.UK Search MCP Server
An MCP server enabling searches across GOV.UK content, leveraging the official GOV.UK Search API over streamable HTTP. Exposes tools for keyword search, retrieving latest publications, and fetching full page content.
AI Opportunities Action Plan
In January 2025, the government committed to take forward 50 recommendations to boost growth, raise living standards, transform public services, and create the companies of the future in Britain. Built as part of my No10 Innovation Fellowship.
GardenEye - AI Wildlife Monitoring
A wildlife monitoring application that uses YOLO-based object detection to identify and track animals in camera footage. Features smart filtering, automatic thumbnail generation, and an accessible web interface for analyzing garden camera recordings.
Desires of Emberfeld
Embark on an unforgettable journey in Desires of Emberfeld, a riveting one-shot D&D adventure. The town of Emberfeld has been thrown into disarray, and its citizens are succumbing to bizarre behaviours. As an intrepid band of adventurers, you must unravel the mystery...
MIL for Time Series Classification
Code for my paper "Inherently Interpretable Time Series Classification via Multiple Instance Learning".
Tidy Tuesday - Taylor Swift
Write-up for a Tidy Tuesday data visualization project exploring if Taylor Swift lyrics follow Zipf's law.
MIL for Land Cover Classification
Code for my paper "Scene-to-Patch Earth Observation: Multiple Instance Learning for Land Cover Classification" (NeurIPS 2022: Workshop on Tackling Climate Change with Machine Learning).
MIL for Non-Markovian Reward Modelling
Code for my paper "Non-Markovian Reward Modelling from Trajectory Labels via Interpretable Multiple Instance Learning" (NeurIPS 2022).
MILLI - Multiple Instance Learning Local Interpretations
Code for my paper "Model Agnostic Interpretability for Multiple Instance Learning" (ICLR 2022).
Ensure Clean Notebooks Action
A GitHub action for ensuring that any Jupyter notebooks in a repository have clean metadata.
LatexTable - A Python library for creating Latex tables
Texttable is a Python package that can create simple ASCII tables. This package extends its functionality to allow the table to be directly output in Latex, removing the tedious copy and paste chore. The Latex output matches the table design, and there are utilities for adding table captions and labels.
Online Style Interpolator
A re-implementation of "A Learned Representation For Artistic Style" (Dumoulin et al. 2016). It also includes an extension that wraps the Style Interpolation feature as a web application.