Work Experience

Résumé / CV

A collection of my works and creations…

Noise Monitor

Inspired by my neighbor’s kids, the Noise Monitor listens to noise levels and reports them using a stoplight signals. Much like a Yacker Tracker a green light means all is well, yellow is a warning, and red means it is too loud. Numerous features including a decibel level graph, positive reinforcement “good job” stars, and customizable sounds make this a great choice for teachers and parents alike.

As with all of my software, this program has no advertisements, no trackers, and is hassle free. It does require a Java Runtime Environment (JRE) so there are two downloads available one with and without the JRE:

A word of caution: Windows will throw up numerous warnings when you download and install the above link. There is a real problem imposed by Microsoft, Apple, and others that is hurting independent developers like myself. They are imposing rules that require independent developers pay hundreds of dollars per year in order to distribute their free software to the world. This is wrong. Please read for yourself.

ClientTracker App

Available on Android only, 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.

Why aren’t these apps available on iOS? I write free apps yet in order to make them available in the Apple Store I have to pay Apple an annual fee. I paid this once and learned that, a year later, my apps were pulled from the Store. Apple has a financial model that I oppose. Android’s free model is much more in line with my ideals. Remember, when you purchase a (very expensive!) phone, you have a choice.

PDK Watch

Available exclusively on Android only, 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.


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 custom Java code this is a feature rich application for managing a yoga studio or any fitness studio. It uses multiple switchable embedded databases (to manage different studios in one place) and a fully configurable variably transparent GUI written on top of Swing. 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.

Image Mosaic

Back in 2001/2 when this idea was new and cool I implemented my own version of an Image Mosaic generator. I wrote scripts to scrape small image off the internet and store them in a database along with their color metadata. Next I wrote software that renders any image using these small images (without tinting them, that’s cheating). The resolution of these generated mosaics was huge so I wrote a zoomable, pannable mosaic viewer. Below are images this software generated (click the image on the right to zoom in). The first has about 20,000 unique subimages, the second around 6,000.

The Great Dalmuti

My friend’s the Birkner’s introduced me to this Great game in college. Years later after we moved apart I was determined to keep playing. So I wrote a client/server based Java/Swing version of The Great Dalmuti back in 1998. We thoroughly enjoyed playing together and with a built in chat it was a nice way of staying in touch too. I contacted the makers of the game, Wizards of the Coast, to see if they were interested in my software version of the game and they said no. And the politely informed me that my program infringes on their copyrights. So… beyond us playing together, this never saw the light of day.