Programming Projects

A sampling of my favorite hobby projects. For research or professional code, see the Research tab.

Gravity!

My most popular iPhone app is Gravity!, which has over 39,000 downloads since it was first released in 2013, 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.

MTile

When working on Linux, I found the Gnome tiling window manager, GTile, to be an essential tool. I eventually found it so useful I missed it when working on my Mac! I eventually developed my own project, MTile, meant to be a similar tool for macOS. Unfortunately, the need to use accessibility APIs to move windows of any application make it difficult to distribute this app through the App Store, so I have distributed it through itch.io instead.

bloQ

BloQ is a Minecraft mod that is intended to help students explore the field of quantum computing in a fun and engaging way. The mod adds craftable qubits and quantum gates that can be used to assemble functional quantum circuits. The Java mod interfaces with a Python backend that uses IBM Qiskit to run circuits designed in-game on a real quantum computer. The measurement results are then sent back to the Minecraft mod, and are available in-game as Redstone signals, allowing quantum circuits to interface with Minecraft's built in classical programming features. This project was an entry for the MIT iQuhack 2021 Hackathon.

Unlocc

Frances Grimaldo and I won the DocuSign Click API 1st place prize at CalHacks 2019 with our submission of Unlocc: a website which allows property owners to grant temporary access to visitors, with use cases such AirBnB or Escape Rooms in mind. The property owner registers a visitor phone number, some info about their property, and the access info for an August smart lock into the website. Then the visitor logs in with their phone number, and is presented with a DocuSign Click agreement that they must sign, that has been automatically generated from the info entered by the property owner. Once the document is signed, the visitor can control the August smart lock via the Unlocc website.

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.

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.

Mazetron

The first iPhone app that I ever wrote was a simple game called Mazetron, which was released in 2010. The app includes GameCenter support for leaderboards. It is currently available on the App Store.

Spellcaster

One of my oldest iPhone apps, Spellcaster is a 2D platformer RPG that runs in a game engine that I developed. 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 complete but was available on the App Store in an early state.

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.