BackTrack (Backscatter Tracker) is a system for RFID localization I developed in the Signal Kinetics group under Fadel Adib, building on the lab’s work on RFind and TurboTrack. RFID tags are normally used to determine the identity of people and goods, but this system enables determining their position in space as well. RFID tags are particularly useful as localization targets due to their low cost, ubiquity, and battery-free operation. I built a frequency-hopping system that provided higher framerates while requiring lower sampling rates, compared to prior systems, with the goal of exploring and enhancing the feasibility of RFID localization as an input for interactive applications.


ConcertCue is a system for streaming synchronized program notes during a live musical performance, with the goal of enriching the concert-going experience with text and images designed to aid in musical appreciation and understanding. I worked on this project with Professor Eran Egozy and Diane Zhou throughout the 2018-2019 academic year.

Among other things, this work involved making improvements to the Director (the interface used by the human operator to keep ConcertCue in sync with the live performance) and doing the work necessary to operate ConcertCue at a few concerts with the BSO (and one concert all the way over at Michigan Tech!).

Notable features I worked on include the ability to determine the visual locations of measures in sheet music (and to highlight the current measure on the page when operating the Director) and initial work on automatic performance synchronization via real-time dynamic time warping.

The project code isn’t currently publicly available, but the web application can be found here, and more information can be found here.

RISC-V Formal Semantics

RISC-V is an open instruction set architecture designed to be practical. Basically, it’s a cool open standard that also aims for practicality and extensibility.

From Spring 2017 through IAP 2019, I worked with Professor Adam Chlipala and Thomas Bourgeat to develop a formal, friendly, and runnable RISC-V specification. The idea is to clearly define the correct behavior from RISC-V in a format that is both human-readable and machine-readable. At present, this is in the form of an emulator written in Haskell. This project is available on GitHub!