Programming Projects


My most popular iPhone app is Gravity!, which has over 20,000 downloads, including educational downloads from school districts. It is a gravitational particle simulator featuring customizable planets, newtonian gravity, to-scale representations of solar system planets, and black holes. It is available on the App Store for free on iOS devices running iOS 7 or later.


The first iPhone app that I ever wrote was a simple game called Mazetron. The app includes GameCenter support for leaderboards. It is currently available on the App Store. I haven't updated it in a while, but I am working on a sequel.


One of my oldest iPhone apps, Spellcaster is a 2D platformer RPG. It features original artwork done by my friends and I and a fighting system based around using the touch screen to cast spells. It is an ambitious project that is far from completebut is available on the App Store in its early state at the moment.

Mail Trail

Nathan Pannell and I won the SendGrid prize at TreeHacks 2016 with our submission of Mail Trail: a game played through email and text messages. The game relies on a Flask server that uses the SendGrid and Twilio APIs to process incoming emails and texts and respond accordingly. The game is played entirely through email or text, with the user and the server replying to each other's correspondance.


While working for Professor Juan Pestana in the UC Berkeley Civil Engineering department, I ported a MATLAB program to iOS. Doing so involved writing a versatile graphing engine, creating seperate versions of the UI to looks good on iPads and iPhones, and writing a small array math library to replace certain MATLAB features. MCCGUI stands for Modified Cam Clay Graphical User Interface and is a software designed to visualize the predicted soil response for clays in drained and undrained triaxial testing using the original modified cam clay. This model uses the critical state soil mechanics framework to describe the effect of stress and density (related through stress history) on the response of clayey soils. The original MATLAB code was written by Christopher Hunt and Professor Pestana.

Mohr's Circle 2D

Another project I did while working for Professor Pestana was the Mohr's Circle app, which determines the normal and shear stress acting on a plane given the values of normal and shear stresses acting on Vertical and Horizontal Planes. The app allows an interactive experience with the stress orientation.

Lafayette Historical Walking Tour

This app was my Eagle Scout project. I worked with the Lafayette Historical Society to gather information and historical images on locations around my hometown: Lafayette, California. The app uses GPS to detect when the user approaches a historical location and will automatically display text, audio, and images relevant to the current location.

Volumetric Display

I built this volumetric display with some of my friends at CalHacks 2015. The term "Volumetric Display" means a device that displays objects in three dimensions as opposed to two dimensions such as a traditional screen. The device consists of 42 LEDs spinning rapidly while controlled by an arduino and six shift registers. The arduino blinks the LEDs in a pattern to light up the right locations in 3D space at the right time in order to produce an image.

Glow Scooter

To build the glow scooter, my friends and I removed the cap from a cavity on the scooter, 3D printed a replacement with room for electronics, and inserted an arduino and a rechargable battery. Then we hot glued Neopixel LED strips to the underside of the scooter, and programmed the arduino to display pretty patterns as you ride around.

Clap Lighting

I wanted better lighting in my room, so I took a strip of multicolor LEDs, and set up an arduino to control them. Realizing I needed a way to change the pattern or turn the light off, I took a speaker from a scrap pile and experimented to see if I could use it as a makeshift microphone. The result was a huge success! I am continuing to improve on the clap lighting project. The next step will be controlling the lights over the internet.