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!
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)
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. (note: currently not working due to the Yjs demo server being down)
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.
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. Currently working on an improved version here.
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?
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
Using AlphaGo's self-play algorithm to train a deep neural network to play other board games, like Connect Four and Othello. The final result always beats me at both games.
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.
The website you're currently on. You can see the old version of this website here.
The interactive demo lets you place your own hearts. Same color hearts will beat in sync!
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
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).
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.
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.
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! ↖️↖️↖️
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!