This summer my company is participating in a local internship program whereby we get a high school student to come work for us two days a week for 10 weeks. I’m the person responsible for this year’s intern, Steven, and what he’s working on this summer. Its a bunny.This post is the first in a series of my adventures with Babic, our Nabaztag rabbit bunny and the resulting summer internship. For some reason The Promise Ring song “Is This Thing On” felt like an appropriate title for the first post.
Is This Thing On?
We decided that for Steven’s internship there were two projects both interesting and with direct connections to improving our development teams’ performance. First, get Babic hooked up to our build process (currently in Hudson). Second, explore frameworks like Hackystat or Sonr and see how they can help teams deliver higher quality software.
And plug them up to Babic.
Because, naturally, when you have an electronic bunny in the office, why not hook everything up to it?
If you are wondering, “What are you doing with this bunny?”, you are not alone. Many of my work colleagues have been asking the same question. The office joke is “it must be nice to play with bunnies!”. And I have to admit, it is a bit odd, but really fun. This lump of plastic with ears makes for an interesting project.
Believe it or not, there is a valid ‘work purpose’ for the bunny (or so I try to explain to others). Babic is a Nabaztag rabbit, a wifi-connected device that does interesting things (like move his ears, light up and speak). He’s designed to tell everyone, in fun and interesting ways, the status of most anything. He can report the weather, read news announce new emails or blog posts. He can even read children’s stories. In up to 6 languages!
In our case, I’m interested in having Babic tell the team in real-time the quality of the software their developing with motion, lights and sounds. Convey important information in fun and interesting ways.
Old School
Babic is an evolution of the build lamp concept that was made famous in Mike Clark’s book. Back in 2005 on an XP project I was leading, we were having a conversation one day about how cool it would be to not just hook up the lava lamp. I had read about this in Mike’s book and was anxious to try it out. The only issue I had with the lava lamp was that it was slow to show results and not in-your-face enough for me. But better than nothing.
So we’re talking about how to do this one afternoon and Guy, the project manager, overhears our conversation. He asked a few questions about what we were doing. The next Monday comes and Guy walks in with a custom-built build lamp! (we later found out Guy, in addition to being great at Resource Plans and Gantt Charts, majored in Electrical Engineering and could build anything with a circuit).
Guy’s new version was a big improvement over the lava lamp. It was and outdoor floodlight mounted on a wooden box with the two spotlights pointed upward. The wooden box was about 8” x 8”, sat on a desk, and had two huge spotlights: one green, one red. It was hooked up to our CruiseControl instance using X11 and we configured CruiseControl to tell the lava lamp the status of the build (If you’re interested, here’s the instructions setting this up).
When things were well, the green spotlight was on. It was pretty mellow. Things are OK. But that wasn’t the case when the build broke. The entire room lit up in red floodlight. It was Bright. Blinding. Annoying.
It worked perfectly.
But our floodlight had some issues too. For one, it was on all day and night (unless we remembered to unplug it daily) and it got hot to the touch. Leaning up against the build lamp might send you to the hospital. Plus, our lamp only show one of two states: green and red. We wanted more!
Guy took this as a challenge and created the next version: an integrated LED light into a small wall lamp that he found in the clearance bin at Lowes. He mounted it on a wooden base and next thing you know we have 256 colors available and the light could move between colors easily. Sweet. We could also show a build in progress in addition to pass / fail, so blue was chosen as the color for a build-in-progress. We even managed to save electricity with the LED light and it wasn’t going to burn anyone. We loss the big bright light, but overall it addressed many of the issues for the floodlight.
Adopting Babic
Fast forward to this Spring. I was working on setting up a build lamp for one of the teams I’m leading. I recall Guy’s work, but also start poking around online a bit for what’s been developed in the last few years. Right around this time I see Eric Pugh at beCamp and mentions the HackyStat project. I check it out and stumble upon the integration with build lamps and someone had integrated HackyStat with this bunny...a Nabaztag rabbit.
“Wow, cool” I thought. This was just like Guy’s build lamp but better (no offense Guy!). I clicked on the hyperlink to explore further this bunny with the funny name I couldn’t remember or spell.
N-A-B-A-Z-T-A-G
.com. Twenty minutes later I had purchased adopted a new Nabaztag bunny. For $108.95 including shipping. My new adopted bunny arrived a week later in the mail. I opened the package and started getting it connected to the Internet. It was like Christmas morning.
My wife thought I had lost my marbles.
After some configuring, Babic was connected to the internet. I created a new Violet.net account so I could configure him and shortly thereafter Babic was doing Tai-Chi and reciting the weather in French every morning at 8am. The air quality report came at 8:02 from an English guy. My wife speaks a little French but suffice to say, I didn’t understand the weather. But I didn’t care. It was weird and quircky yet someone my wife and I really liked having Babic around.
He quickly became a member of our family.
Putting Babic to Work
But I didn’t buy Babic for sitting around at home all day. There was work to do. It started last week when Steven started his internship. On day 1 he was already starting to setup Babic based on the configuration instructions. But he hit a snag pretty quickly - what had worked OK for me at home on my secure WEP wireless network, didn’t work on the WPA network at work. Babic would light up telling us he’s connected to the network OK, but he couldn’t resolve the violet.net servers. When I arrived, we double and triple-checked our settings to no avail. We could ping the servers violet.net servers OK, so they were alive, but Babic wasn’t resolving the name correctly.
I Googled for about 20 minutes and stumbled upon a forum post for this issue. Their solution was to put the IP address in the p server configuration (instead of DNS name). We tried this and it worked, so after a side-track Babic was connected to the Internet.
Once online, we tried to get it connected to a Hudson instance. It turns out the recent version of Hudson ships with a Nabaztag plugin, so it was just a matter of enabling it in Hudson’s configuration and telling the build job to invoke the Nabaztag plugin with the results of the build (SUCCESS or FAIL). It only takes two pieces of information to get connected: Serial number and Token number (both available from the Settings page in your violet.net account).
Once supplied, we forced a build and Eureka! It worked! Now every time a build was done, Babic’s ears spun around and he displayed green or red blinking lights, depending on whether the build succeeded or failed. Babic also said, “The build for project Test has Passed”, in one of his configurable voices.
By shortly after lunch on Day 1, Steven, with a little help from Chris and myself, got Babic and Hudson working together. But there were two things that I thought would be nice that the plugin doesn’t support (that I can tell):
The ability for green and red lights to stay lit for longer than a few seconds after the build is complete. I’d like for Babic to be lit up in green all the time when things are ok, and flashing red when not. Similar to how the weather is broadcast now using the Light Language.
The ability for Babic to signal when a build is ‘in progress”. Right now only after the build is complete are messages sent to the bunny.
Chris and I conferred and we decided that learning how to write a Hudson plugin would be a good programming project for Steven. So that’s what he’s going to start, a plugin to implement these features.
So far so good on the summer internship. In Part 2 we’ll see how things progress with our plugin.
