This timeline was produced by the SmarterTiger team of Beth Danaher, Jeff Bigham and Bismarck Paliz, all of the class of 2003. SmarterTiger was one of the neatest projects of 2002 -- a chat-based system for providing Princeton information for students. The timeline that Beth, Jeff and Bismarck produced was fun to read and very instructive in describing what worked and what didn't.
One thing that worked very well is not mentioned: the timeline itself. The tiny effort that went into maintaining it was paid back many times over by being able to see where they had come from and what they had accomplished. The very act of updating the timeline helped them to make steady progress every week, and it made writing the final report much easier.
I told them at the time that I would steal their good idea for future versions of COS 333. Accordingly, this year each project group must maintain a timeline analogous to this one. It doesn't have to be in great detail, but enough that one can see what's going on. The timeline must be posted on your project web page and it must be kept up to date -- you can't write it all at the end.
March 10, 2002
Initial Meeting. Discussed goals and features. Registered SmarterTiger name.
March 16, 2002
Installed GAIM 0.55 and wrote simple autoresponder in both C and perl. Decided
to use mainly Perl to write the program, however, because of our prediction of
the need to parse a lot of strings and and perform many regular expression
matchings.
March 18, 2002
Added regular expression matching that allowed SmarterTiger to respond to
simple queries with somewhat intelligent responses. For example, "hello" from
the user would result in a matching "hello" from SmarterTiger and "what's up?"
from the user would result in "not much" from SmarterTiger. Also added simple
matching features that we planned to implement later. For example, a user query
of "weather" resulted in "fetching weather from web" although no actual weather
information was being fetched.
March 20, 2002
Added simple map fetching functionality. SmarterTiger gives a link to the
correct address for a picture of the map to that building if given the precise
name of the building. This will later be fixed to do more fuzzy matching and to
provide written directions from a database.
March 25, 2002
After much difficulty, a MySQL Server is finally installed at
jeffrey.princeton.edu. It looks like maybe we should have just used the CS
Department's MySQL Server, but we learned a lot about linux and mysql in the
process of getting it to work.
March 28, 2002
Finally able to load the DBI module into the perl GAIM plugin scripts.
Apparently Perl scripts loaded via GAIM do not have the same environmental
variables set as those loaded from the terminal. A helpful hint on the web
clued us in to the fact that we needed to add the path to the DBI module to the
@INC array before we tried to use DBI. After this problem was solved, it didn't
take us long to start using the database. Tonight we managed to store the
user's real name based on his IM name. This allows SmarterTiger to refer to
"Jeff 2 926" as Jeff or "BikerMan" as Jimmy, for example. Because this
information is stored in the database, SmarterTiger only has to ask a user for
his name once. We plan to implement a feature later that will allow users to
change their names (and other information about them that we plan to store) via
simple messages such as "My name is X" which would set X to be their new name.
April 1, 2002
Added a state for each user that keeps track of what stage of the program each
user is in so SmarterTiger knows how to respond to each query it receives. For
example, if a user asks for weather and Smarter Tiger doesn't have that user's
zipcode it would then ask for the zipcode. It would then be in an "enter zip
code" state so it could know to interpret the next message it receives as a
zipcode for weather.
April 2, 2002
Added the user's zipcode to the list of a things we store about each person.
Once we are able to return the weather information this will allow us to fetch
the weather without having to ask the user to enter a zip code each time.
April 7, 2002
Cleaned up some bugs that had crept into the code. Changed the representation
of states to strings to make the code more readable. Fixed the a problem we
were having with "weather" having to be typed three times before the weather
would actually be retrieved.
April 14, 2002
Added simple weather retrieval. We hope to find some sort of web service to
fetch the weather, but as a rudimentary first attempt SmarterTiger just parses
the information directly out of a page on wunderground.com.
April 15, 2002
Installed SOAP::Lite module to allow our Perl scripts to access the web
services such as the weather and google.
April 17, 2002
Researched web services and found one for weather that looks promising. Also
found a Google web service that looks interesting. Perhaps we could add Google
searching as an additional feature to SmarterTiger.
April 18, 2002
Integrated the weather web service into the main SmarterTiger script. Now
responses dealing with weather get their information from the weather service
instead of by parsing through the pages on wunderground.com. It's all good:
faster, more information, and less copyright infringement.
Wrote seperate directory script that fetches information about a given person
from the Princeton Directory web site and parses that information so it only
returns the relevant information. Still need to combine this with the main
SmarterTiger plugin script.
April 19, 2002
Made the database for the map directions and started the initial integration
into SmarterTiger.
April 20, 2002
Integrated the directory service into the SmarterTiger Script. Decided to
just include the main v(version #).pl as a seperate script for
simplicity. This also allows SmarterTiger to be run from the commandline
with the command "perl v(version #).pl 'IMUsername' text" for
testing purposes, which greatly assists in debugging.
April 23, 2002
Started work on making the directory fetching more robust. Currently it is
possible to cause errors by entering queries that are too vague. Searching for
"Jon" for instance returns hundreds of results and attempting to return all of
those results violates the AIM's maximum allowable message size, but doing the
obvious thing and breaking them into pieces isn't straightfoward either because
if you send them all immediately you violage AIM's sending rate limit. We'll
probably have to settle on some sort of compromise in which we send the first
few results, spacing them out timewise.
April 26, 2002
Wrote a script to access the Google web service. All that is left is to add
this script into the SmarterTiger script. Problems with differences in how the
SOAP::Lite module is used is making this less than straightforward, however.
April 27, 2002
Changed organization of the script a little to make it cleaner and less
jumbled. Added a function that makes sure SmarterTiger doesn't send messages
over the AIM maximum message size of 512 characters. In doing so it became
necessary to limit the rate at which SmarterTiger tries to respond to queries
so it doesn't exceed AIM's maximum sending rate. As part of this, fixed the
directory responder so it can return a maximum of 5 responses to a user's query
with each distinct directory entry constituting a new message.
April 27, 2002
Added Google search feature. Problems with using the required schema
fixed.
April 29, 2002
Added random response for queries that fall through the rest of the if/elsif's
contained in the do_reply() function. Started writing random responses
like mad. Added plenty of fun little Easter Egg responses for fun.
April 29, 2002
Fixed some glitches with the directory search functionality. Now returns
first five names returned in the event that more than 5 match the query with
the option to view more. If less than five results were returned, all of
them are returned spaced out with one second in between. Made it more
robust and now allows searching by username/email address. Also finished
adding buildings to the map function.
April 30, 2002
Found database correlating city/state combinations with zipcodes.
Integrated this functionality into the weather feature so now you can enter
cities as well as zipcodes. Also checks the zip code entered to ensure
that it is a valid zip code as suggested by Christine.
May 2, 2002
Added a calucation feature that allows SmarterTiger to perform simple
arithemetic operations. It just uses the perl interpretor launched as a
new process to do this. Now that we have the basic stuff working, adding
new features has become rather simple and most importantly fun.
May 3, 2002
Added date/time feature using the EzDate module. SmarterTiger can now
tell you the date and time and everything is nicely formatted. :)
May 6, 2002
I've been playing around with WordNet for CS 435 and decided that it wouldn't
take much to add a dictionary feature to SmarterTiger based on that, although
the definitions that it provides as part of its synsets aren't really that
great. Installed Wordnet and the Lingua::Wordnet module to make
the retrieval of the Wordnet synsets more straightforward. This also
required the conversion of the Wordnet database files to one that
Linqua::Wordnet likes via an included perl script.
May 8, 2002
SmarterTiger was occassionally crashing when asked for Google and weather
information. According to the error messages printed to the terminal the
script was dying if it couldn't contact the google or web services so after
some searching we found a way to fix this with Perl's version of try/catch -
eval{}; if($@) {}. It now prints out a pretty error message if it
couldn't contact the services.
May 8, 2002
Added a word puzzle feature implemented in a module. It's pretty neat and
can actually come up with some difficult puzzles...at least as difficult as a
10x10 puzzle can be. Demo tomorrow so hopefully everything will work :)
May 9, 2002
Messed some stuff up with the map feature when the eval{} code was added
yesterday. Luckily we caught it before the demo (15 minutes before in
fact) and fixed it in time.
May 10, 2002
Demo is done! and it went pretty well. At least SmarterTiger didn't
crash... Anyway, we saved a copy of the dialogue we had during the demo
and fixed some problems encountered (of course we wouldn't notice them until
then). Directory's "more" state fixed so it's not confused with Google's
more state. Also added a check to the calculate function to make sure
that it only runs mathematical operations and the function log(), sin(), cos()
so Joe doesn't hack my system. Also, fixed some stuff with the weather
that was making zipcode lookup from city somewhat flaky.
May 11-14
Finished all of this pretty documentation - including the crafting of an
excellent "SmarterTiger" image pieced together from a picture of a tiger and
the Dean of Ohio State on graduation day.
May 14, 2002 (5 pm)
That's all folks!
for now...