Projects.

  • CodeMe

    2025

    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

    CodeMe screenshot

    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

    PairwiseTurnGPT screenshot

    Python·Torch

  • Portfolio v2

    2025

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

    Portfolio v2 screenshot

    Typescript·React

  • Gargantua

    2025-2026

    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.

    Gargantua screenshot

    Rust·Graphics·Physics

  • Torte

    2024-2026

    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

  • Ziggy Knight

    2025

    A chess engine written in Zig. Bitboards, Zobrist hashing, a transposition table and move ordering in the search.

    Zig·Chess

  • Obsidian Helper

    2026

    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

  • LLM Wiki

    2025

    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

  • Portfolio v1

    2023

    Original design of my personal portfolio website. Features a unique particle swarm visualisations in a single web page.

    Portfolio v1 screenshot

    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.

    Turtle Chess screenshot

    Python·Pygame

  • FlapRL

    2022

    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.

    FlapRL screenshot

    TypeScript·RL

  • Orchy

    2023

    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++

    Orchy screenshot

    C++·Programming Languages

  • Pathtracer

    2023

    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.

    Pathtracer screenshot

    C++·Graphics

  • Film Wizard

    2022

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

    Film Wizard screenshot

    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

    StockTrend screenshot

    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.

    GyroSound screenshot

    Android·Kotlin

  • NextStop

    2023

    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.

    NextStop screenshot

    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.

    Et Tu UV screenshot

    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.

    Path Finding Algorithm Visualiser screenshot

    JavaScript·p5.js

  • Sort Algorithm Visualiser

    2020

    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.

    Sort Algorithm Visualiser screenshot

    JavaScript·React