Projects.
Search engine developed to efficiently find relevant code snippets and discussions built using the StackOverflow dataset. Employs advanced information retrieval techniques across 59 million posts

Python·React·PostgreSQL
A timing-aware lexical-only turn-taking model developed and evaluated as part of my undergraduate dissertation and a subsequent publication at SemDial. Uses a dual-stream transformer model

Python·Torch
Redesign of my personal portfolio website. Designed to be more visually appealing and minimalistic while showing off my skills and projects.

Typescript·React
A ray tracer for general relativity. Renders black holes by integrating the geodesic equation for photons through curved spacetime (Schwarzschild, with hooks for Kerr), including gravitational redshift. Doubles as a Monte Carlo path tracer with a SIMD-accelerated BVH.

Rust·Graphics·Physics
A chess engine written in Rust. Bitboard board representation with magic-bitboard move generation, search with repetition and fifty-move draw detection, and a benchmark ladder that calibrates its strength against other engines.
Rust·Chess
A chess engine written in Zig. Bitboards, Zobrist hashing, a transposition table and move ordering in the search.
Zig·Chess
A Telegram bot that bridges my phone to my Obsidian vault. URLs, todos, notes and calendar events sent from Telegram land in the right place automatically, with links and videos summarised by an LLM.
Python·LLMs·Telegram
A template Obsidian vault implementing Karpathy's LLM Wiki pattern on a Zettelkasten + PARA foundation. An LLM agent maintains the wiki through slash commands for ingesting, collating, drafting, querying and linting notes.
Obsidian·Claude Code
Original design of my personal portfolio website. Features a unique particle swarm visualisations in a single web page.

Typescript·three.js
Turtle Chess
Chess engine built using Python. Implements a basic minimax algorithm with alpha-beta pruning and a simple evaluation function. Features a graphical interface built using PyGame.

Python·Pygame
Reinforcement Learning agent for Flappy Bird. Uses the NEAT algorithm to train a neural network to play the game. The agent learns to play the game by interacting with the environment and receiving rewards based on its performance.

TypeScript·RL
Hobby Interpreter (WIP) that follows the Crafting Interpreters book. It is a simple programming language that is designed to be easy to learn and use. It is built using C++

C++·Programming Languages
A pathtracer built using C++ using the principles of physically based rendering. It simulates the way light interacts with surfaces to create realistic images and can support complex materials and lighting effects.

C++·Graphics
QA chatbot for film recommendations. Uses NLP techniques to understand user queries and provide relevant film suggestions. Built using Python

Python·NLP
StockTrend
Full stack project that incorporates streamed data from the Twitter API and analyses sentiment in individual tweets in order to determine the overall sentiment in a certain stock

Svelte·AWS
GyroSound
A mobile application that allows users to play music using their device's gyroscope and other sensors. The user uses their device control the playback of music, allowing for a unique and interactive experience.

Android·Kotlin
A simulation and analysis of the Singapore MRT system. It uses a custom-built simulation engine to model the movement of trains and passengers, allowing for analysis of the system's performance and efficiency.

Python
Et Tu UV
A wearable device that measures UV exposure and provides feedback to the user. It is designed to help users manage their UV exposure and reduce the risk of skin damage.

Arduino·IoT·Python
A web application that visualises various path finding algorithms such as A* and Dijkstra's algorithm. It allows users to interactively explore how these algorithms work and compare their performance.

JavaScript·p5.js
A web application that visualises various sorting algorithms such as Bubble Sort and Merge Sort. It allows users to interactively explore how these algorithms work and compare their performance.

JavaScript·React
