August 2012

08/09/2012

I've been messing around with a few new projects. Over the past couple months, I've become increasingly fascinated by the state of the art in what one might call "conversational UI". I'm mostly an Android person -- I've been vaguely jealous of Apple's Siri since I first got to play with her on Dan Kogai's iPhone 4S at YAPC::Asia in Tokyo last year.

There are a dozen+ Siri competitors for Android. They have various levels of platform integration, but none of them are Really Excellent. And they're all proprietaryish products put out by companies trying to make a buck. I haven't yet found one of them that's end-user extensible. Not even Google Now. (Google Now is actually excellent, but it's not extensible. I can't make it smarter. Also, it has the personality of a textarea.)

At the same time, many of us have been living with IRC bots of various flavors for well over a decade. Some of our bots are cute little Markov chainers that babble incessantly about whatever they've been fed. Some of them are call-and-response creatures - they have a database of factoids and know only that when you say "What is 42?" they should say "The answer to life, the universe and everything". Other bots let developers write plugins that do a bit of computation or know how to fetch answers by asking a search engine or grabbing the first entry from an RSS feed. Some of our bots can do all of these things. By and large, the bots are actually useful little beasts. And they're ours.

A couple weeks ago, I started playing around with PhoneGap. Inside of an hour, I built myself a little JavaScript parrot that could listen to whatever it was that I said, parse it and repeat it back to me. It totalled up at about 5 lines of JS. I briefly considered dropping Eliza or Adventure into the runloop before realizing that what I really wanted was a personal bot on my phone whom I could make more personal.

Thanks to an excellent suggestion from Kaia, the bot ended up getting named Rei Toei after the idoru in Gibson's Idoru. Rei Toei was a virtual Japanese popstar who was always your personal ideal of her. Our Rei should grow to know you and to help you in ways that are useful to you. Writing a plugin to give Rei a new superpower is a few lines of JavaScript. Right now, she can learn your name, tell you about current weather conditions and tomorrow's forecast and learn X is Y facts, but she's learning and growing.

Rei is stll very, very young. I could use lots and lots of help. Right now, the codebase is very, very simplistic. (That means it's a great time to get involved.) Schuyler's been helping get some NLP going, so that Rei can make choices about how to reply to you something a little more advanced than a lookup table of regexes. Yoz got us the beginings of a test suite, so Rei keeps getting smarter and keeps working.

At this point, any help that anyone cares to give would be awesome. We need folks to write plugins to teach Rei about the world. We need folks to help Rei understand people. We need folks to test Rei and suggest how she can be better. If you're looking to code, all you really need is a willingness to learn a bit of JavaScript.

You can find the codebase over at GitHub. You can also find a bit of documentation about the mailing list and where on IRC you can talk to people about Rei (though Rei herself isn't yet ready to make a public appearance on IRC).