Tools/Languages: React.js, Node.js, Express, Socket.IO, OpenCV.js

Built a collaborative drawing web app that uses a computer’s webcam for object detection. Worked with Andrew Wei.


Tools/Languages: C, C++, Python (scikit-learn)

Built a tool to improve exact search for DNA sequencing analysis using learned indexes - specifically, RMIs (recursive model indexes). Worked with Tony Peng and Ashwath Thirumalai. Advised by Sanchit Misra and Professor Tim Kraska.

Analyzing Loss Functions for End-to-End Automatic Image Colorization

Tools/Languages: Pytorch

Investigated the effects of loss functions on automatic image colorization using CNNs. Worked with Wonjune Kang. Code not posted because this is a MIT class project (6.819: Computer Vision).

Go Interpreter and Compiler

Tools/Languages: Go

Simple interpreter and compiler written in Go for a toy language. Supports data structures like integers, booleans, strings, arrays, and hashmaps; prefix, infix operators; index operators; conditions; global and local bindings; first class functions; return statements; and closures. Code based on this book.

N Chainz: Decentralized Cryptocurrency Exchange

Tools/Languages: Go

A high performance, decentralized cryptocurrency exchange written in Go. Worked with Nicholas Egan and Ryan Senanayake. N Chainz’s features include block generation, limit orders, and the ability to trade a base token with another token. Our team was one of the winners in the Binance Dexathon competition.

Optimizing GPU-based database algorithms

Tools/Languages: CUDA, C++

As part of the MIT CSAIL Database Group. Microbenchmarking newer generations of NVIDIA GPUs, including GeForce GTX Titan X. Modeling page table structure and TLB misses. Developing and optimizing performance of GPU-based database algorithms. Worked with Anil Shanbhag and advised by Professor Sam Madden.

(Work mostly in private repo.)

Fault-tolerant k/v service

Language: Go

A fault tolerant key/value storage system. Specifically, a key/value service on top of Raft, a replicated state machine protocol. Code not posted because this is a MIT class project (6.824: Distributed Systems Engineering.)


I’m posting analyses of papers I’m currently reading. Inspired by The Morning Paper.

Bit rotation

Tools/Languages: C, Valgrind, Gprof

Fast bitarray rotation using bit hacks. Worked with Justin Restivo. Code not posted because this is a MIT class project (6.172: performance engineering.)

Quadtree intersection detection

Tools/Languages: C, Valgrind, Gprof

Fast intersection detection of 2d moving vectors using quadtrees. Worked with Erick Friis. Code not posted because this is a MIT class project (6.172: performance engineering).

Serial dynamic memory allocator

Tools/Languages: C, Valgrind, Gprof

Fast, space-efficient, general purpose, single-core memory allocator. Worked with Anthony Liu. Code not posted because this is a MIT class project (6.172: performance engineering).

Firebase backend plugin for Mavo

Tools/Languages: JavaScript, HTML, Firebase

As part of the MIT CSAIL Haystack Group. Implemented Firebase backend plugin for Mavo web framework. Mavo adds data editing and spreadsheet-style formulas that permit the construction of full-fledged applications in a single HTML document. Worked with Lea Verou and advised by Professor David Karger.


Tools/Languages: Swift, Xcode, Firebase, EventKit

An automated assistant that optimizes and organizes your schedule for you. It makes planning your day quick and easy, whether you have a lot of overlapping events or just want to prioritize your meetings and activities. You can:

  • Order your events by priority
  • Sort events into “Must do”, “Would like to do”, and “Don’t want to do” categories


  • Integrates with your calendars
  • Creates your plan for the day, taking into account each event’s category and priority

Just tap a button to add the plan to your calendar!


Tools/Languages: Swift, Xcode

Miscolor is easy to learn but hard to master. This is your chance to race against the clock, fight your instincts, improve your mental agility, and kill time!

Choose the color of the word that appears on the screen, not the word itself. You earn 1 point if you’re correct and lose 0.5 points if you’re wrong.

You have 15 seconds. Every time you choose 5 in a row correctly, you get 5 extra seconds!


Tools/Languages: JavaScript, HTML, D3.js, SQL, Python, Express, Node.js

As part of the MIT CSAIL Haystack Group. Worked with Exhibit, Datahub, and CTS. Worked with Professor David Karger.


Tools/Languages: Node.js, Express, MongoDB, D3.js, Google Maps API, jQuery, JavaScript/HTML

MIT’s future lost and found box. Semi-finalist in MIT’s annual Web Programming competition. MIT’s annual Web Programming competition. Worked with Leigh Marie Braswell.


Tools/Languages: Python, SQL, AngularJS, jQuery, JavaScript, HTML

As part of the UW Networks Lab. Built a social web app on top of freedom.js, a decentralized P2P web framework. Worked with Will Scott, Raymond Cheng, and Bonnie Pan, and advised by Professor Tom Anderson.

D3.js interactive visualizations

Tools/Languages: Javascript, HTML, D3.js

Movie Sieve:

Celebrities’ Influence:


Tools/Languages: Java

In high school, I built a basic natural language parser with two friends. Our agent can understand and execute commands, remember past data while it responds to the current request, and ask clarifying questions.