Todd Duncan Resume

A collection of my more recent works and creations…

ClientTracker App

Currently available only for Android phones, the Client Tracker tracks sessions with clients. This helps yoga teachers, personal trainers, and the like. The concept is simple: you have multiple clients that prepay 10 or so sessions at a time. You have to keep track of each one they use over weeks and months. This app handles this simple case keeping a historical record of your clients activity. It works both as a simple session counter and a more complicated time or money counter. This app can also be used to track interpersonal debts, whose turn it is to buy lunch, etc.

PDK Watch

Available for both Apple and Android phones PDK Watch is a fantastic alternative to better file noise complaints with our local airport. As the second busiest airport in the state PDK is a financial boon for the commercial community. As such it is also a noise problem for the residents and communities surrounding it. Before I wrote this app noise complaints were submitted by calling the airport, listening to an instructional recorded message, and leaving a voicemail. This process took 2-3 minutes. For noise complaints at say 3AM this is impractical, no one wants to be woken up by a plane and then have to make a phone call.

To facilitate better communication between residents and the airport this app reduces the cumbersome phone call to 3 quick easy taps. This has resulted in far more noise complaints from residents and empowered them to be heard. In turn the airport has a better understanding of its impacts on the community and has stepped up its communication efforts.

Related to these efforts and suspicious of airport activity (the airport was sued for illegal practices several years ago and lost community trust) I integrated an SPL and an RTL-SDR to gather flight information. In layman’s terms I wrote software to gather and collate aircraft position, elevation, and noise level using a triad te


After tinkering with my MIDI piano I began to develop this music visualization software. Notes are assigned customizable colors and are played visually on the screen based on location on the keyboard, relative distance from the last note played, note intensity, and other factors. I was stunned by how beautiful this appeared and I was more appreciative of the subtlety and patterns in the music. While showing friends one who works with autistic children took keen interest. Working together we brought this software to the children to better engage them with particularly classical music. Thus PrIDI was born, a pretty (Pr) music instrument digital interface (MIDI).

Below is a rather long video of PrIDI playing Chopin’s Ballade in G minor, Opus 23. It gets more visually interesting near the end, try it from 7:00 on if time is short. As a musician it’s easy to observe key and chord changes and other musical patterns.


I was contracted to write software to support pyrotechnic hardware. Working in conjunction with the hardware team we codeveloped a device that ejects and ignites varying volumes of propane gas using 3 differently sized on/off valves allowing for 7 different flame heights. One of the initial challenges was the drop in gas pressure as the laws of thermodynamics froze the propane tanks. I wrote real time beat analysis software using FFTs but the visual fire effect was always late to the beat. Because it takes 100-200ms for the flame to reach full height I had to write a predictive beat detector which proved very difficult across different audio bandwidths.

Unfortunately I was unable to obtain any quality video from this project. Here is a poor quality video from 2009 demonstrating the technology. This effect is a graphic equalizer made out of fire.

Pleased with the pyrotechnics I was later contracted to support another piece of new hardware. Five foot tall towers with internal cylinders were to be built with a rotating strip of RGB LEDs. At high enough speed this single strip creates a Persistence of Vision (POV) cylindrical display. The human eye is tricked into seeing a transparent hologram like display. The towers with both wired and wireless connectivity created major hurdles. How can we transmit power through a rotating shaft? More challenging, how can we transmit error free data? Can wifi receive data while spinning at 1000rpm? We also ran into air resistance inside the towers and attempted to make the spinning blade as aerodynamic as possible.

Although not on the hardware team I was part of the problem solving collaboration. My other focus was writing software to control these cylindrical displays. I created numerous attractive graphical effects in an elegant easy to use interface. Building off of the beat detection software I created visual effects as well. Data throughput was a major problem, even with compression it was challenging to get even 10 frames per second. With increased rotational speed we encountered increased data corruption. Color bit depth and frames per second were optimized for best performance.

Below are two short videos attempting to mimic what the human eye would see in person. These videos are made from continuous long shutter speed images taken on a tripod. With a longer shutter speed of 1/8s or more the digital camera “sees” the LED strip at multiple positions providing the illusion of a video screen.

Yoga Studio Management Software

With over 40,000 lines of Java code this is a feature rich application for managing a yoga studio or any related fitness studio. It uses multiple switchable embedded databases (to manage different studios from one place) and a fully configurable variably transparent GUI. Features include: various client membership options (set number or unlimited, time expired, shared/family, multi-use); gorgeous scheduling interface able to handle recurring and one-time events with multiple teachers per class, variable class pricing, teacher substitutions, etc.; report & graph generation; accounting and payroll subsystems; complete student, class, and teacher histories for data analysis; automatic database backup and recovery; built-in store for over the counter sales and inventory tracking and control; integrates with barcode readers; extremely easy to use and learn; 100% Java.