In my free time I like building cool things, usually with code. Here are some of my finished side projects, with a bit of trivia about how they were made!

Adversarial 2048 Screenshot

Adversarial 2048

Rust WebAssembly JavaScript Game

A spinoff of 2048, modified to be as hard as possible. Made while learning Rust at the Recurse Center. I've never gotten past the 128 tile - let me know if you do! (I'll add a leaderboard if this happens)

Solace Screenshot


React p5js Yjs

A project I made with Jonathan Xu at Hack Lodge! We wanted to create a peaceful digital space for people to relax. You can click and hold to generate ripples and reveal hidden poems, and if others visit the website at the same time, you can interact with them live. This was also my first time using React for one of my projects.

Time Zones Gif

Time Zones

Art Animation p5js

A clock that splits into 12 different clocks, then merges back into one (and repeats in an infinite loop). Made at the Recurse Center's weekly Creative Coding event.

Probase Screenshot


Django Bootstrap PostgreSQL Heroku

An online collaborative problem database, for math contest organizers to share math problems. Features problem ratings, comments, sorting, filtering, and searching. Used by CMIMC's problem writing committee to draft questions for the contest. This was also my first time using Django, Bootstrap, and PostgreSQL.

Fractal Tiling Gif

Fractal Tiling

Shaders GLSL Art Animation

The Koch snowflake is a fractal with an infinitely jagged border (in fact, it's perimeter is infinitely long). Miraculously, multiple copies of this fractal fit together perfectly, like puzzle pieces, and are able to tile a 2D plane. The gif above (made after learning about shaders and GLSL) shows the Koch Snowflake tiling, along with an optical illusion when they rotate: are those white snowflakes on a black background, or black snowflakes on a white background?

Spawn Screenshot


Unity C# Game

A mobile game made by me and Steven Mai during the summer of 2017. It's like a circular version of Breakout, with a bunch of fun powerups! First time using Unity and C#, as well as making any sort of game. It currently has 100+ downloads on the Google Play Store

Night Sky Image

Procedurally Generated Night Sky

Procedural Generation Art p5js

Procedurally generated images of the night sky. The shape, size, and positions of the mountains, stars, and moon are randomized, but somehow it still looks good every time. You can try it yourself: click the play button in the top left of the demo to generate your own image.

Website Screenshot

Personal Website

Hugo TailwindCSS Javascript Vercel

The website you're currently on. You can see the old version of this website here.

Heartbeats Gif


Interactive Art Animation p5js

The interactive demo lets you place your own hearts. Same color hearts will beat in sync!

CMIMC Online Screenshot

CMIMC Online

Django Bootstrap AWS MariaDB

During the pandemic, CMIMC had to switch to a virtual format. With the help of the CMIMC software team, I built an online platform to host math and programming contests.

Operating System Kernel

Operating Systems C Class Project

An operating system kernel I built with William Yan in 15-410 (Operating Systems class). The class is known for being one of the hardest CS classes at CMU, but I learned quite a lot from it: process management, virtual memory, interrupt handling, syscalls, synchronization, and device drivers. Unfortunately I can't share any code due to university policies (same applies to other class projects below).

Scotty3D Rendered Image


Graphics Ray Tracing C++ Class Project

Implemented a graphics software package as part of 15-462 (Graphics class). It's able to perform rasterization, ray tracing, mesh editing, and animation, all rendered in 3D. I can't share my own code, but if you want to implement it yourself, you can find the template code on Github and the documentation here.


Distributed Systems Go Class Project

Wrote my own Go implementation of the Raft consensus algorithm in 15-440 (Distributed Systems class). I also learned Go during this class, which was a lot of fun.

Hidden Arrows Screenshot

Hidden Arrows

p5js Game Interactive

Another Creative Coding project made at the Recurse Center. If you take a grid and add some diagonal lines in each square, some arrows will appear. Try to find all 10! ↖️↖️↖️

Particle Simulator Screenshot

Particle Simulator

Interactive Java Particles

A program that simulates the motion of particles under the force of gravity. It's fun to play around with - the center of gravity follows your cursor!