Showing posts with label egg-fu. Show all posts
Showing posts with label egg-fu. Show all posts

2009/08/04

Bringing AI to Twitter

So lately I have been thinking a bit about egg-fu; what direction I should go in or if I should even update the source at all. I had been thinking of different ways to implement egg-fu in today's cyberspace. The internet has changed, obviously, in a lot of ways since 8 years ago when the project first began, so I was pondering on ways to bring egg-fu back into the mainstream a bit. One possibility I thought of was porting egg-fu to Twitter. I figured (at least for the development instance of egg-fu) if I direct him to follow the right people he could emulate a certain amount of intelligence quite easily. Of course, I could have him learn from dumb people as well, if I wanted him to. It would not be hard at all to have egg-fu follow certain trending topics and give his unique input in the form of replies and quite possibly formulate his own original tweets based on the things he picks up from other twitterers. The difficult part though, which I was having trouble convincing myself wouldn't be too much work to make the whole thing worthwhile is the fact that I would have to deal with the Twitter API. I wasn't entirely convinced this was the best way to code a simulated-AI bot. I just had my doubts and this feeling that there had to be a better way to accomplish this. So I let the idea receed to the back of my thoughts for a while, to stew.

Then just the other day I was browsing through hundreds of apps in the Android Market, ever curious about what is out there, and I came across something that piqued my interest. I discovered the app LinkDroid, which uses webhooks to manage data. Here is a quote from the app's description:

"Webhooks (webhooks.org) are user defined callback URIs that receive HTTP Posts in response to user actions or system events. For example, LinkDroid (linkdroid.org) can post media, such as images, to defined Webhooks when users selects the Share With option. LinkDroid can also post broadcasted events (by Android, or other programs) to target Webhook (via a background service) as specified by registered IntentFilters."

What intrigued me was the touted ability to define these webhooks in this way, but I was ignorant of what webhooks were or what they really do. So I did the research and found out what I needed to know, but even more importantly I realized this was probably exactly what I was looking for to port egg-fu as a Twitter-enabled bot.

So what I'd do next would obviously be to start outlining and brainstorming on this idea. More to come.



2008/10/04

egg-fu Gets Listed on Softpedia.com

Today I received an email from Softpedia.com notifying me that they have listed my egg-fu project on their site. They categorized it under "Mac OS" for some reason, and had the description slightly messed up, but I was glad to hear about it. I immediately emailed them back thanking them and asked them to categorize it appropriately under "Linux" instead and also asked them to fix the description.

You can see the listing here: http://linux.softpedia.com/get/Communications/Chat/egg-fu-41815.shtml



2008/09/24

About egg-fu

egg-fu is a script for eggdrop IRC bots. In short it learns from what people in your channel talk about and progressively becomes more conversational. It started out pretty simple but as more ideas came to me it quickly became more complex. Because I was releasing it as a free, open source project I also made it completely configurable; every aspect can be configured, from the styles of responses to the native language.

It's a fairly successful project considering how niche it is and it's been going strong (as far as the number of downloads logged daily) even today, in spite of the fact that it has not been updated since 2003.

But I do plan on putting more work into egg-fu. A friend of mine has been wanting to get involved in the project and he has some great ideas for egg-fu. Of course, I also plan to update the code quote a bit as well; there are a lot of things I'd like to improve upon.

So stay tuned for more news on this project.


For a more detailed description, below is text quoted straight from the documentation included with each release:

First of all, what IS egg-fu? egg-fu is an eggdrop script coded in Tcl designed to simulate artificial intelligence, and engage an IRC user in conversation. The program is not actually artificially intelligent, as it doesn't make it's own decisions or form it's own opinions, it simply imitates such behavior by listening to what people say in a channel and remembering key points and 'learning' new things to say in this manner. When a topic that egg-fu recognizes is brought up or a keyword is said, egg-fu will randomly pick a tid-bit of information it has learned about it and respond appropriately, according to your own configurations.

This is the main function of egg-fu. To learn and respond. However, egg-fu can be configured as a medium for storing and retrieving information only when prompted.

egg-fu was based on the infoegg bot (which is based on infobot). Info egg was designed such that it would learn by listening and only respond to questions. It's learning matrices were very simple. It was these, that egg-fu was modeled after, and greatly improved upon. egg-fu talks and reacts much more fluidly and intuitively than info egg and requires no prompting to respond, unless configured that way. Being able to respond to any line of text sent to a channel (provided it's a topic that egg-fu knows) makes it's speech appear more life-like. In addition to its own learning capacity, all the teaching methods (features) coded in allow you to tweak egg-fu's responses to give it an even more realistic personality.

What prompted me to create egg-fu was when I was idly tweaking the code in infoegg and fixing bugs. When I realized how much work I was putting into it, I decided to make my own. The code was at first loosely based on infoegg's code, but has since been coded out. However I still credit infoegg's author to the birth of egg-fu.