Programming Projects

A sampling of my favorite programming projects that I have worked on

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.

Qsearch

My implentation of the algorithm described in my paper Towards Optimal Topology Aware Quantum Circuit Synthesis (which won Best Paper Award at IEEE Quantum Week 2020) is the main component of the Python library Qsearch. It can take a unitary matrix as a numpy ndarray and will produce a quantum circuit that implements the matrix using a specified quantum gateset. The circuit can then be exported to a different format, such as qiskit or qasm code. Qsearch can generate circuits for 4-qubit unitaries in less than an hour, and produces circuits significantly shorter than most other synthesis techniques. Qsearch also includes a method for larger exploration of the search space by approximate partitioning of the search tree, called LEAP. By taking advantage of the more efficient but approximate search strategy provided in LEAP, circuits can be generated for unitaries as big as 6 qubits in a matter of hours. The circuits generated by LEAP tend to be longer than those normally generated by Qsearch, but a post-processing algorithm is able to shorten these circuits to the extremely short lengths normally generated by Qsearch. The source code for Qsearch, including LEAP is available open-source on GitHub as part of the Berkeley Quantum Synthesis Kit (BQSKit).

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.

MarcCam

Professor Stamper-Kurn's E5 UltraCold lab needed to recieve and process data from multiple AVT cameras simultaneously and the software they were using, EdCam by Edward Marti, could only support one camera at a time. So I wrote my own version from scratch, which the grad students dubbed MarcCam. It features several camera modes including a hardware trigger feature, modified gaussian fit on the image data, blank image detection, and support for an arbitrary number of cameras.

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.