Projects

Open source research tooling and ML infrastructure, plus earlier work.

Research Tools

Checks every entry in a .bib file against CrossRef, Semantic Scholar, and arXiv. Catches the fabricated DOIs, wrong years, and invented papers that LLM-drafted bibliographies introduce.

Turns an arXiv paper into a plain-language narrative or a technical summary. Runs from the terminal against any OpenAI-compatible model, or as a Claude Code plugin.

Sends papers from a Zotero collection to a reMarkable tablet, then brings the handwriting back into Zotero as an annotated copy. Safe to re-run, so it works on a cron schedule.

ML Infrastructure

Waits until a GPU actually has room, then starts your job. Replaces the habit of sitting at the terminal watching nvidia-smi.

Queues a batch of jobs across the GPUs you have and starts each one as capacity frees up, so a shared server stays busy without babysitting.

A PyTorch Lightning training scaffold for SLURM clusters - W&B sweeps, DVC-versioned data, and one config file to start a new experiment from.

Small helpers that strip repetitive boilerplate out of training code, such as checking whether the hardware supports bfloat16.

Shell, editor and Homebrew setup for macOS and Linux, managed with yadm, so a new machine is reproducible in one command.

Earlier Work

A macOS menu bar app that adjusts each monitor's brightness from what is on screen, independently per display. Built for Apple Silicon.

Bronze Medalist 🥉 in Cornell Birdcall Identification Challenge

A crawler to scrape 1 million products using NodeJS & puppeteer

DNN and CNN classifiers over extracted audio features, built for a deep learning course project.

A visualisation tool for inspecting semantic segmentation output.

3000+ solved programming problems across Codeforces, SPOJ and others.

Implementation of "SHEM-Semantically-informed Hierarchical Event Modeling"

GloVe and Paragram embeddings for flagging insincere questions, 68% F1 on the private leaderboard.

Implementation of "SEMal Accurate protein malonylation site predictor using structural and evolutionary information"

Data structures and algorithms implemented in C++ and Python.

Compares search strategies for the N-puzzle problem.

Encrypts and decrypts text files using Huffman coding.