Scent-based Build Status XFD

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:

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:

Advertisement

2 Responses to Scent-based Build Status XFD

  1. Hi there,

    I’m the “author” of the smell-o-mat (the one using humidifiers) and want to thank you for this great blog post and great work.

    If I were more into electronics, this would have been my solution, too. You rock!

    On a side note, if you happen to know Atlassian (JIRA, Confluence, etc.), they currently run the “Ultimate Wallboard Contest”.
    http://ultimatewallboard.com/
    I know it’s a little late now though :-/

    • Thanks! And thanks for the link too, I’m curious to see what the top wallboards end up being.

      From a sanity standpoint, the humidifiers might be the better option. As I imagine, the scent would slowly appear, and you’d just sense whether the build was stable or not.

      With the air fresheners, you get a concentrated dose every time they go off, and if you’re not careful, you’re going to have some major headaches. You can’t imagine the pain when I was testing.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.