Neil

Back when I was a little undergraduate student, I implemented a bunch of programming ideas that I ran across on the web. One was NIALL, the engine behind a simple chatterbot. I named mine "Neil" and wrote the first version in Perl as a simple command-line toy. I won't claim credit for the basic idea behind him, but the various versions I've create are all my own.

Neil works by creating associations between the words you tell him. For example, if you say to him "I like cheese.", Neil will learn that "I" can begin a sentence, "cheese." can end a sentence, "like" can follow "I", and "cheese." can follow "like". After learning these connections, he picks a random word that he knows can start a sentence, chooses a random word he knows can follow that one, and continues choosing new followup words in a Markovian manner until he chooses a word that can end a sentence. At that point he tells you the profound statement he has just created.

AIM

After writing the initial Neil, he needed a way to talk to the masses. I found a simple Perl library for interfacing with AOL's Instant Messenger service, signed him up, and wrote a wrapper around my earlier Perl functions. Sadly, the library I found wasn't very robust and he tended to silently disconnect a lot. Still, I sometimes start him up when I think about it. Try adding TheNeilBot to your list and watch for him to connect.

Mud

In early 2003 I decided to take Neil back in time and implement him on a LambdaMOO mud server. The Forest was the logical place to do it, and after a few nights of hacking I had him completed. I wanted him to act like a real character on the mud, so I made him learn from and respond to directed speech events. He also responds spontaneously to questions in the room and occasionally responds with an antisocial verb instead of a sentence. Several copies of the original object have been made on the mud, and since they have each been treated slightly differently they each have a different personality.

Twitter

The next logical progression for Neil was to put him on a social networking site. After claiming I would do it Real Soon Now for about two years, I finally wrote a version of Neil in Python that uses a twitter library to read tweets and post occasional gems. This version learns his words from the people he follows and posts updates to his twitter feed at random intervals throughout the day. You can follow @TheNeilBot to keep track of what he's been doing.