The build lamp setup that I built is made up of a Phidgets 0/4/4 interface kit, 2 lava lamps and a groovy script that drives everything. At work, we are using cruisecontrol to drive our nightly and integration builds. One of the nice things about cruisecontrol is that it provides an RSS feed for each project that it builds. So, my groovy script periodically checks the feed for the software build I'm looking to monitor (usually the branch that will become the code we will ship) and check to see if the the latest build passed or failed, and switch on the the appropriate lava lamp.
What's nice about our build that it takes about an hour between the detection of a failed build and a potential fixed load, just enough time for the fail lamp to get going...
Also, cruisecontrol sends an email to every developer about the latest build status, but what I have noticed is that a lot of developers prefer to take a glance at the lava lamps, instead of going through their email, as it provides a quick up-to-date status of the build.
The Phidgets controller (The Brain)
The Build Failed Lamp
The Build Passed Lamp