about me

I recently graduated with Bachelor’s and Master’s Degrees in Computer Science from the University of Pennsylvania.

I was part of the Science & Technology Wing.

I 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 (preferably couch) co-op games. I write about and take pictures of my food. I like to cook.

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


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 EXT_Disjoint_Timer_Query, available on pre-release versions of Chrome.

(CIS565 class project.)


An interpreter for JavaScript written in Rust.

(Senior Design project; honorable mention.)

WebGL Deferred Shader

A tile-based deferred shader.Live demo.

(CIS565 class project)


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.

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)

(Updated 1/17.)