The four day weekend was very productive. I got tons of new work done on alice, my mobile computing application server. Since finishing the core event distribution server, I've moved on and have re-written lcd_module, which handles output to the CrystalFontz LCD that I'm using, and speechio_module, which handles speech input from the CMU Sphinx speech recognition server. Now I'm in the middle of migrating mp3_module, which handles MP3 playing, over from the old, prototype version to the new one. Doing an almost complete re-architecture has produced several nice enhancements, including --
- Cleaner, better commented, more modular code
- Vastly improved speed and CPU usage (thanks to use of select.poll() over threads)
- More flexible channels of communication between client modules attached to the event distribution server. Data sent from clients to the server takes the form </i>destination_module: data_for_module</i>, where destination_module represents the name of the client module that the data is intended to be used by, and data_for_module is the module-specific data. The EDS uses a lookup table of module names to route incoming data to the appropriate client endpoint. Everything was 'hardwired', previously.
- Use of a central configuration file (parseable via ConfigParser), with individual sections for each module.
- Cookie-cutter event loops in clients, which speeds up client development time enormously.
More for my own amusement than anything else, I've been doing some traffic analysis of search requests on the cluster of P2P networks known collectively as Gnutella. I've been collecting a large number of (timestamp, source IP, search term) tuples, and looking for patterns within the data. Some of the metrics I'm looking at are:
- Per-IP / Per-network frequency of search terms over different time periods.
- 'Top 100' most popular search terms on a per month basis
- Correlation of search terms by approximate geographic location of source IP.
- Using data to build a weighted network that'll act as a predictive data model for testing the probability of a user (or network as a whole) searching for certain terms, given an input set of terms from that IP/network.
At least I survived seeing family. It's never as bad as I expect it'll be, and the food is always decent (my mom makes amazing desserts!). And I got some decent gifts, which included a large reference volume on military aircraft, courtesy of my brother, and some much needed home appliances from my Mom. However, I will never understand the strange phenomenon of Holiday Ties, those ties which include things like Snowmen, Reindeer, Large Bearded Fat Men, etc. Is this a uniquely US phenomenon, or are the Europeans also subject to this scourge?
Happy $holidays to all;
update: 2001-12-27: fix CMU Sphinx URL.