I've been interested in learning to program Ruby for quite some time now, but my life has been too hectic to find the time. Now that my life is starting to calm down more I will have the free time to start programming again and learn Ruby. Since I have a great deal of experience programming in general, it should be rather painless and quick to learn Ruby. I naturally learn pretty quickly anyway, so it should work out pretty well.

The way I learn is by doing, so I need a project to work on as I learn. I couldn't really think of anything to do while I learn Ruby. That is, until recently as I was going through a list of Nintendo DS games. The way the scene names or labels each released game makes it nearly impossible to find the game you want without just going through the entire list, because they are named first by the release number and then the game's name. So the files are sorted alphanumerically and the first four characters are the number of the release which makes alphabetical sorting useless. So my thought then was to create a simple program that will extract certain parameters from the filenames such as the actual name of the game and release number, etc. and create and maintain a searchable database of all this information and even update the database as new games are released. It could even be coded to work the other way as well (once the database is at least mostly complete), where a misnamed file can be renamed appropriately and so on. Anyway, I plan on working on something like this as I teach myself Ruby. The program would start out simplistic at first and progressively become more useful as I go.

So there will be some posts upcoming soon with more detail on what I have planned for that project.


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.


Teh skillz

Well, it's probably not as spectacular as you may have hoped, but here goes... I first started programming simple stuff in qwbasic back in the day. Then I got into VB for a while (not long enough for it to ruin my chances at being a good programmer, thank fuck). Then around 1992-1994 I started writing scripts for mIRC. From there I started programming Perl and TCL. TCL mainly, as you will soon see. I've also dabbled in a few others like Object Pascal a la Delphi, I do code BASH scripts as well, and other less-interesting details.

I'm currently still active with TCL and Perl (getting rusty though, need to keep up with it) and I've recently decided Ruby is a great language so I'll be teaching myself that as well. I love object-oriented languages, if you can't tell.

Everything I know about programming is self-taught through trial and error and many hours of man-page reading (RTFM FTW), with the exception of a C Programming class I took in high school.

Anyway, now that I have the boring stuff out of the way, stay tuned for the fun :D

P.S. Oh yeah, and I've been pretty big into Linux since 1994-ish, so there will probably be some Linux talk from time to time, too. ;)

Make your time

As you can see, I've decided to start blogging about my software development (hence the "dev" in the address), as well as anything else geeky I feel like talking about, but mostly software development. This blog will be a lot less formal than my other blog. I will discuss future, past, and present projects, ideas, new releases, and also any interesting news along the way.

Coming up...
- A little background of my programming experience and goals
- Overview of my favorite project: egg-fu
- Ideas for a possible new/upcoming project
- Ideas for possible future releases of egg-fu (new features and improvements to existing features)