Selected Projects
Techno-Visual Performance (and server)

Tech used: NodeJS/Express, websockets, Unity, GLSL


I was recently invited to perform at an audiovisual festival on campus, along with friends who make claymations and techno music. For the show, I developed a NodeJS web app that used websockets to allow people to control 'dancing' characters in the visuals. For the visuals themselves, I created a Unity app that served as the glue between a variety of visual effects:

1) the dancing characters (controlled by viewers' phones via websocket)

2) live-edited GLSL shaders that morphed in response to incoming audio

3) midi-triggered claymation loops and

4) live midi-controlled Unity camera effects.

Over the course of this project I learned how to use websockets to pass data between apps and demonstrated the ability to organize people with divergent talents (animation, music production, and programming) into a cohesive team that was able to produce a "brain-melting" performance.

[frame-rate on the video is crap because my poor computer couldn't handle running the software and screen-recording at the same time]

[screencaps below show what it looked like with people logged on and controlling the emoji characters]

Go in Typed Racket (class project)

Tech used: Typed Racket (Lisp-like functional programming lang)


Over the course of this intense project, I learned how to design data structures with specific operations in mind and how to think in the functional programming paradigm. It wasn't easy: my code was pretty broken at the penultimate checkpoint, but I stuck with it, worked out all the issues and got full points on the final project.

Text My Mom! (repository)

Tech used: NodeJS/Express, MongoDB, EJS, HTML/CSS/JS, REST API


I thought it would be funny if people could text my mom right from my website, so I made an little web app for it. To build this, I taught myself Node, Express, MongoDB and some light form verification to make sure people could only send her emojis. [ Note: now just a static page- the gmail api I was using got removed, so you can't text her anymore :( ]

AR Planets

Tech used: Unity, ARCore


I wanted to put planets in my bedroom, so I did.

Game of Life (repository)

Tech used: HTML/CSS/JS, webassembly, Rust (<3)


Followed an "intro to webassembly + Rust" book that showed how to implement Conway's game of life in a web page. Though the idea came from the book, I modified the original code heavily. This project made me really appreciate Rust's type checker and memory safety, especially when compared to a language like C.