I spent the AM listening to Arthur Bergman talk about ithreads, Perl's threading mechanism. Arthur was a measured speaker, clearly comfortable with his material, and with being in front of a packed room full of hackers. I didn't know much about threads apart from what I skimmed in the latest camel. Apart from the basics here are the things I took from the talk. If you are using ithreads you must compile perl with them built in. If you want to use threads you should use the latest snapshot of perl (5.8.1 should be out "any day now"). Compiling in threads will cost you a 10% performance hit...even if you are writing a program that doesn't use threads explictly. mod_perl2 is using ithreads big time in support of Apache2's Multi Process Modules (MPMs)...and RT3.0 supposedly runs under MPM. Arthur got a Perl Foundation grant to get POE to work with ithreads, and also has plans to create a PerlInterpreter.pm which will make all sorts of information about the running Perl interpreter available to Perl programs. So much stuff was covered, even a few scary dips into the Perl source. Best of all Arthur ended the session by asking the audience for suggestions on a simple threading application to write as an example. Several ideas were thrown around: a MUD server, a card shuffler, a customer request broker. Finally Ken Williams suggested that we write a voting application that would allow people to connect to a port on Arthur's presentation machine and make votes for the sample code to write. No sooner said than done, Arthur had is hacked out in 15 minutes, and then we could see as people connected and placed their votes. Unfortunately the fix was in, since one of the POE hackers wrote a program to cast a ton of votes for the MUD server.
After lunch I headed over to hear Brian Ingerson talk about extreme programming tools for module authors. Brian's talk was really refreshing since he clearly has alot of experience implementing extreme programming ideas, but he didn't seem to be sold on it as a religion...just as a set of practical techniques. He stresed agile strategies more than extremeness. But man, his presentation was extremely extreme. He presented his slides using CGI::Kwiki, using some extension he wrote for slideshows (which I think I heard him creating just the night before in the dorm lounge with some other folks). It was a trip, since folks in the audience were able to modify his slides before he got to them! At one point he hit next and came to this page (hit ENTER to reveal the various states of the page). There were so many good things in this talk, you can see the full contents here. Here are a few of the things that stuck in my head. The best things about extreme programming are: testing, saw sharpening (having good tools), refactoring, and collaboration. When writing modules you should: make it ridiculously easy to use, scale to any task, easy to install, few pre-requisites, have a good descriptive/catchy name, and the first release should be good enough, but not complete. Ingy also commented in an offhand way that you should imagine that you are writing Perl itself when you are writing a module for CPAN. I thought that was a simple and neat idea, in that you should try to emulate the flexibility, utility and friendliness of Perl when you write modules to extend it. He had some time to demonstrate the CGI::Kwiki module, and Module::Build which illustrated the concepts he covered in the beginning. I'd really like to set up a CGI::Kwiki for chicago.pm when I get back. Ingy graciously cut his session short so we could go to the lightning talks.
The lightning talks were as usual very humorous. Highlights for me were 3D madness in Perl by Pierre Denis, WWW::Mechanize by Uri Guttman (he mentioned my colleague Andy Lester), and of course the Allison's Restaurant sing along. You may have had to be there...but you can because some of the slides are up already. I just hope someone captured it on video:)