Projects
-
misi.me
This website.
You are here! A static site built with Lume and Perl CGI scripts.
-
Avon
A learning platform that runs lecturer-provided tests on student Git repos.
I had a pretty broad role on this project, including working on the CRUD backend and the frontend design. However, my biggest contribution was the testing engine, which I designed and built with some help from a teammate. Test runs happen in containers on AWS ECS, and results are communicated back using an SQS queue to a worker. This means that the backend can die and no test results are lost.
-
Parallel and Distributed Game of Life
A fault-tolerant, distributed and parallelised Game of Life simulation.
This project involved engineering a system to allow simulation of Game of Life updates to be distributed across worker nodes. A work broker we designed using custom RPC pub/sub detects workers dying and redistributes work automatically. I also helped to implement a graceful shutdown protocol that works without causing data races or deadlocks. After this, I independently rewrote the engine in Rust using a halo exchange scheme over gRPC, which was 3-4x faster than the original (non-bitpacked) Go implementation. We ranked first out of around 80 teams, and we tied for the highest mark ever awarded on this unit.
-
Scotland Yard
AI agents for the Scotland Yard board game.
Agents use Minimax and Monte Carlo simulations to evaluate the game tree. I implemented a mechanism to prune evaluation to the most promising moves, resulting in a 6x speedup for very little loss in accuracy. I also parallelised the search across CPU cores, improving lookahead from 3-4 moves to more than 10. We ranked joint first of around 100 teams.