Projects

TypeScript

Most puzzlehunts rely on gph-site, a Django-based framework. However, its use of Django Channels (WebSockets) can open excessive database connections, overloading the server. This is a major cause of site crashes and forces puzzlehunts to overprovision resources. We realized that we can fix this issue by decoupling the Websocket server from the main application. bph-site is the result of that. It has been used by 6+ puzzlehunts, serving over 7,000 participants. Among them are Brown Puzzlehunt, Puzzlethon, Penchant Hunt, and MIT Mystery Hatch.

Rust MIR-Level Integer Range Analysis

Rust

Range analysis is used to prove properties about the range of values that a program can take on. These ranges enable optimizations such as dead-code and redundant-code elimination. We extended the Rust compiler with path-sensitive, intraprocedural analysis and a patcher module that computes these ranges and performs optimizations based on them.

Access frequency is an important factor in memory allocation. For example, hot objects can be colocated to improve TLB locality, while cold objects can be moved to slower but cheaper far memory. We extended TCMalloc with Troubridge, a system that uses an object’s call site to estimate its access frequency prior to allocation.

Common Course Containers

Bash

Courses often require students to run course-specific containers, which incurs significant storage overhead and introduces technical limitations when running multiple containers. We argue that multiple course environments can instead be run within a single shared container while preserving isolation.

MIT Mystery Heist

TypeScript

I worked on the layout of the puzzle lists and added interactive story elements that appear throughout the heist.

Puzzlethon 2025

TypeScript

I worked on Connections-inspired interactive puzzle called Moo York Times.

Puzzlethon 2024

TypeScript

I built a Fog of War map and a jigzaw canvas for Josiah Carberry, Ph.D. and Josiah Carberry, Ph.D., Ph.D.

SAT Solver

Rust

I built a SAT solver which parses the DIMACS CNF format and solves it using the DPLL algorithm with two-watched literals.

TCP/IP Stack

Rust

We implemented the IP, UDP, and TCP protocols, along with RIP split horizon and poison reverse. Our design primarily used transmitters and receivers to handle packets internally.