Exploring Software Tools for Programmable Embodied Agents
Hacking Microsoft Barney

"These guys are a force for good" -- Garry Trudeau

For Christmas 1997, my girlfriend bought me a fine example of the value and role of technology in our society -- a "Talk-With-Me Barbie" by Mattel. Talk-With-Me Barbie is all that we would expect of Barbie, and more, because she really talks. Through the wonders of technology, Barbie can talk with you on your (or her) favourite topics, everything from shopping to slumber parties. Barbie is programmed via infra-red as she sits at her computer terminal, which is plugged into the back of your PC; her CD-ROM contains all sorts of things for her to say.

This naturally raises a whole set of questions about just how Barbie works, and how she can be programmed to say things that Mattel didn't think to include on the CD-ROM. In fact, Barbie could be a really useful part of my everyday computing environment, warning me about network outages, telling me when my print job has been completed, and reminding me when it's time to go to meetings.

Talk-With-Me Barbie isn't the only device on the market which offers this sort of potential. Another candidate is Microsoft ActiMates Barney, based on the popular children's character. Microsoft Barney is a plush purple dinosar that can talk, sing, and play games. Barney can also be controlled by an RF device that plugs into your television set or PC and can pick up instructions striped on the TV signal or encoded in the software to control the child's toy. In many ways, Barney offers even more potential that Barbie since Barney also has input sensors (in his paws and a light-sensor behind his eyes) and can move his limbs.

You can probably see where we're going with this.

Over the summer, we set about making the dream a reality. With a couple of Barney dolls, a PC, a pile of Barney applications and a smart student intern, we set about experimentally determining the protocol by which Barney was controlled. By the end of the summer, after much work, we had a student who could sing all the Barney songs backwards, and a pile of software.

The end result is the "Barney Protocol Stack", a set of software components that applications can use to drive Barney. The basic Barney control mechanism is implemented as a Delphi component. It can be driven directly via an on-screen control panel, to move Barney around, play sound samples or read his sensors. Alternatively, it can listen on a network socket for remote control connections. The remote interface allows applications to be written that talk to a remote Barney server; you can telnet to Barney (which is more than I can do to my NT box). This network protocol level is wrapped up by a Java class called BarneyConnection, which offers facilities to move Barney's arms and legs and register to be informed when his sensors are activated.

Using the Barney Protocol Stack, we built a number of applications for Barney. Some were simply feedback applications, that would tell you the progess of activities such as printing your document. Some were monitoring applications that revealed the state of other systems, such as the current network status. Some were communicative applications, such as one which allowed two people to communicate through "Barney semaphore".

So far, getting Barney to say things he doesn't already know how to say still eludes us. We know he uses LPC encoding, but we don't know how the LPC information is striped across the transmitted packets. So for now, our Barney applications can only say things that Barney already knew how to say on one of his applications. The up-side of this is that Barney is always in character; he'll say "Super-dee-duper" rather than "print job accepted". The down-side of this is that it's very hard to find instances of Barney saying negative things; so he'll say "Please try again" (the most negative thing he has to say) instead of "your stupid printer messed up again".

You can read a paper about this work that will appear in the CHI'99 conference. You can also read the reviews it received.

Cast of characters: Michael Kaminsky, as the hard-working intern; Paul Dourish and Keith Edwards as the progenitors; Mike Salisbury and Anthony LaMarca, as the evil geniuses; Ian Smith as partner in crime; and Barney, as himself.

Cruel Site of the Day, February 16 1999.