about me

Computer Science @ University of Pennsylvania > Cloudflare > OneSignal

At Penn, I lived on the Science & Technology Wing for 3 years.

I also co-created and taught a class, CIS198, which is a half-credit on the Rust programming language. All course materials are available online!

I play video games, mostly indie games and couch co-op. I cook and bake. I run and I just bought a new bike. I read, and I’m always looking for book recommendations.

I run with Arch Linux, i3, and vim. (Dotfiles.)



An LC4 (toy assembly language) assembler & simulator. Supports live-updating full memory table and graphical map, and memory-mapped IO registers for console (input/output) and video output.

favorite class projects

Google Simulator 2016

A search engine. Runs a custom distributed web crawler, then analyzes the corpus using a term indexer and PageRank algorithms.

(CIS555 class project.)


Fault-tolerant (sharded, replicated) distributed key-value store and custom HTTP server hosting GMail and Google Drive clones.

(CIS505 class project.)

WebGL Fragment Shader Profiler

A Chrome extension for profiling fragment shaders. This runs on a webpage, accesses the GLSL programs running on it, and profile the fragment shader(s) over different pixels. Uses WebGL’s EXT_Disjoint_Timer_Query.

(CIS565 final/self-chosen project.)

WebGL Deferred Shader

A tile-based deferred shader. Live demo.

(CIS565 class project)

GPU Pathtracer

Global illumination renderer with work-efficient stream compaction; antialiasing; subsurface scattering; refraction, diffuse, specular surfaces

(CIS565 class project)


A GuestOS, which spawns threads as child processes, capable of running a basic shell (kernel signals, job control), and persistent filesystem.

(CIS380: Operating Systems class project)

(Updated 05/2020.)