Below is a selection of (mostly software) projects that I've built or contributed to. For other projects, please check out my Github and blog.
3D polar chart of rat sightings in NYC from 2010-2023, visualized as a physical art installation.
Featured at Data Through Design, an annual art exhibition taking place during Open Data Week and funded by the City of New York.
The colors and form of the sculpture are inspired by Isamu Noguchi's light sculptures and NASA's climate spiral visualization.
Press: Ouvert Magazine
Ahead-of-time compiler for a typed subset of Python 3 called Chocopy, with backends targeting JVM, CIL, WASM, and LLVM. The compiler is written entirely in Python and the source language is a subset of Python, so the lexing/parsing are entirely handled by the standard library's ast module.
I gradually built this compiler over a few years for learning/experimentation/fun, and documented each part on this blog.
A 200-page book introducing the basics of functional programming and the ReScript programming language, written to be accessible to those with only a basic knowledge of JavaScript.
Originally a tutorial for D3 v3 & v4 written by Square, I've forked and updated it for v5-v7. This new tutorial has been featured in various JavaScript related newsletters and publications.
I rewrote the data binding section to provide a good resource for beginners to learn how selection joins work in D3 v6 and later.
A browser-based pass & play chess game, using visuals from the Fire Emblem GBA games. Play it here! The project is written almost entirely using ReScript except for the rendering which is done using D3.js.
I wrote this project to experiment with ReScript and explore atypical use cases for D3.js.
Cornell has a custom CMS maintained by a team of students supervised by Prof. Andrew Myers. It has a rich set of features developed over the past decade, and is used by over 8000 students and course staff at Cornell.
I joined the team as a volunteer maintainer in January 2020, and have focused on refactoring and code quality improvements to legacy parts of the codebase. Additionally, I drove efforts to improve documentation and issue tracking, and helped develop onboarding guides.
A bytecode domain-specific-language implemented in P4 to run on programmable switches.
Stitch enables arbitrary computations, measurements, and modification of the network by programs encoded in packets.
This was originally implemented as the final project for CS 6114, but has been updated to support more features since then.
My third and final project in CDS; we worked with the Future of Learning Lab to build a webapp for visualizing pathways for courses/majors at Cornell, with a dynamic interface implemented in D3.
We implemented the backend in Go, and incorporated a graph-based course recommendation system based on 10 years of anonymized enrollment data provided by the registrar.
An ahead-of-time compiler for Xi (a strongly-typed, imperative, procedural language) and Xi++ (its object-oriented extension), implemented in Java and targeting x64 assembly.
We developed a dataflow analysis framework and used it to build several optimizations including register allocation, dead code elimination, copy-propagation, and common-subexpressions elimination.
This was the final project for CS 4120/4121, Cornell's (in)famous compilers practicum.
The 12-hour Club at Cornell reached out to me to build a custom interface to showcase their art and visualizations.
I worked with them for a few months and used D3.js to build an interactive concept map with dynamically positioned nodes and Prezi-like navigation.
My second project for CDS; we built and visualized models to detect relevance and stance of a news article relative to a claim. Both the task and technique are outdated given recent advances in LLMs, but at the time it was good for learning/practice.
The primary goal was to increase transparency and interpretability of models and results.
We won an award from Sandia National Labs at BOOM 2019!
A travel destination recommender that returns destinations based on user's interests and preferences (activities, climate, local language/drinking age, etc).
It uses custom nicheness metric calculated using network structure of Wikivoyage to emphasize "hidden gems".
Originally built as the final project for INFO 4300.
Source code plagiarism detection software implemented in OCaml, inspired by MOSS and implementing the winnowing/fingerprinting algorithm from the paper.
Features configurable detection threshold & displaying sanitized versions of matching code segments.
This was originally a final project for CS 3110, but has seen a few updates since then.
My first project for CDS, focused on unsupervised clustering and visualization of political journalists on Twitter.
Interactive Demos: agglomerative clustering · dendrograms · force-directed graph
The software platform for Minibot, Cornell Cup's educational robotics platform.
I helped implement the physics backend and optimized the frontend display for the virtual bot/obstacle simulator.