eXtreme Feedback Devices (XFDs) work with your Continuous Integration (CI) server to give visual cues of your project’s build state.
Some of the more well-known devices include the red/green lava lamps and the glowing orb, but the are many creative devices to make code status more visible:
- Lava Lamps
- Glowing Orb
- Waterfall Indicator
- LED Bar
- Audio Feedback
- Onoz! Lamp
- Smell-O-Mat – scent-based “code smell” indicator using humidifiers
Why eXtreme Feedback?
Besides being schweet, XFDs are an intuitive and fun way to monitor CI build status. They show off your commitment to maintaining your build health.
Why Scent?
Why not? There are numerous visual and auditory indicators; it’s high time more olfactory XFDs made an appearance. For those with severe allergies, this kind of notification system will make you extra vigilant about keeping the build stable.
The Project
In January, (former) coworker, now Agile consultant, Matt Barcomb, stopped by my desk with a crazy idea about an XFD that substituted smells for the typical feedback. I jumped at the project.
Just the day before, I had seen a commercial for the new Glade Sense & Spray motion-activated air fresheners. They were mechanical and battery powered: perfect. I quested to Wal-Mart for some smelly supplies and began hacking and coding immediately. A day later, I emerged with a working prototype: 2 Glade Sense & Spray air fresheners (“apple cinnamon” and “fresh linen”) wired into an Arduino connected to my laptop.
Spray activation is controlled in a Python app running on my machine. The XFD reads from a Hudson RSS feed on interval and sprays the corresponding scent when the build status changes. You can set a reminder spray to remind you that the build’s still broken or still awesome.
Matt initially suggested a smell a la rotten eggs for failure, but I’ve yet to find that in the air freshener aisle.
How it Works
Parts List
- 2x Glade Sense & Spray (2 different scents) $10 each
- Arduino
- Some wire
Note: I used an Arduino for rapid prototyping, but it’s not doing much beyond reading serial data from the PC. If serial ports weren’t obsolete, a microcontroller would be pointless. I’m currently working on an activation method using an old keyboard. Stay tuned.
Hacking the Glade Sense & Sprays
In the meantime, someone has already posted about hacking the Glade Sense & Sprays.
I soldered an activation wire near T20 (see picture). When idling, the voltage on this wire stays HIGH. To activate the spray, I drop it LOW for a sec.
I’m sure there’s a way to idle LOW and activate HIGH, but I didn’t look.
Code
A Python app runs on the host machine, monitors a Hudson RSS feed, and triggers the corresponding scent via a USB serial connection to the Arduino.
I wrote the controller program in Python for portability and because it’s awesome. It’s been a while since I’ve checked the state of the code, but you should at least be able to see how I do serial communication with the Arudino. Configure settings in src/python/IndicatorController.py, and run it.
Code:
Dependencies:
- Python 2.5
- PySerial 2.5 (for Arduino communication)
- feedparser 4.1 (for RSS feed parsing)




Posted by jricesterenator 











































































