|Think about Loose Coupling|
More notes from YAPC::America in Montreal....
(You may want to read Day One first)
Today I started with the "Making a Module" by R. Geoffrey Avery. He recently created a module and uploaded it to CPAN, and went through all the steps involved in doing so, from h2xs to PAUSE. As he pointed out, this information is not all in one place. It was a good speech, and would make a great project (a tutorial perhaps?) for some monk here (hint, hint).
The next presentation was "Perl Projects with MakeMaker" by Sean L. Dague, which detailed how to use MakeMaker not only to create moules for CPAN, but as a great way to bundle your programs up for any platform. One thing I learned was that MakeMaker will not add modules with config or setup in the name, so be careful what you name things! An excellent presentation - let me know if someone finds the URL.
After the break, I went to "Polluting Perl with C, Java, and other rubbish" by Brian Ingerson. After a brief overview of the Inline module, Brian demonstrated the way other languages could be added to your perl script, starting with C, moving on to C++ and ASM (yes, assembly!) and then Java, which was demonstrated by the local Montreal monger who created it (Inline already has a great community around it). Inline is an extremely clever and powerful module. The Java version actually creates a Java interpreter, then opens a socket to talk to it, passes it any arguments, and returns the results to the perl script. It also does some other really clever things, including some advanced heruistics and scoring mechanisms to figure out which class to send things to when they accept different types of arguments. Other versions of Inline were demonstrated, from the whimsical Inline::PERL to the more serious Inline::Perl, as well as Inline::Foo. Finally, he explored the fascinating module Inline::CPR (C Perl Run) which makes C interpreted, and allows you to start mixing Perl and C (and other languages) in some very scary ways. The potential uses of this module are amazing. Many other languages available or in the works, including Ruby, R, Bash, Python, and Lisp. Brian would like to see more languages included, especially Fortran, so if you know a language well, make an Inline module. An interesting side note: the module will never become a part of the perl core, but will eventually install parts of itself "virally" as needed. It's a great idea, but I don't have the time to get into it here.
After another great lunch (why is it that you have to leave the United States to find good vegetarian places?) I headed back to listen to Lisa Nyman from the US Census on "State and County QuickFacts." This was more of an advocacy talk than a technical, but was interesting in that the whole quickfacts.census.gov project was unfunded as thus uses open source componenents such as Linux, Apache, mySQL, and Perl. One of the questions raised was would there be pressure to adopt commercial products with funding? She said the answer was no, but apparently in most government offices (and in a lot of corporations, I can attest) this would not be the case. Open source especially suffers from the reputation of a lack of support. I think it ironic that the best choice they made was due to the fact that the project was volunteer and unfunded, and probably would have had an expensive, commercial solution that did not work as well, had it been funded. Still, open source software is definitely making some major inroads into the .gov world.
Next was Indy Singh and his "Open Source DB for the Enterprise", which basically was extolling the virtue of the NuSphere's product, a out-of-the-box system that features Linux, PHP, Perl, and mySQL (and I think SSL as well). The interesting part was that they were using something called "Gemini" to give mySQL the much needed transaction support it has been lacking (IMO) for so, so long.
Next was a quick presentation by Leon Brocard on "The Perl Monger World Map" (check it out at perl.org) which does some rather clever things to produce the maps that you see, including using Brian's Inline::C module.
Last but definitely not least as the one-and-only Damian Conway that gave a very funny and thought provoking lecture on...well, it covered just about everything, but had a large lecture on the Game of Life (and how somebody had made a genuine Turing Machine from one), Perl 6, and the Klingon language. Kudos to Damian for actually being able to pronounce all those Klingon phrases. I cannot begin to do justice to all the things that occured in this talk, but let's say the program at the end was definitely one of the most unique I've ever seen. And, like he pointed out, it spanned 6 centuries. And of course, he managed to sneak in some Quantam::Superposition, as well as a fair smattering of bad puns and some interesting forthcoming (not) books by O'Reilly. Here are some quotes that might not make sense to you, but are intersting nonetheless. Plus you can always ask someone who was there for a full explanation:
After, I got to see a lot of Montreal, and ate in the best French restaurant I've ever been in outside of Paris. (sorry I missed the BOF everyone - hunt me down and yell at me tomorrow at 10:30 AM - I'll be wearing a red PerlMonks shirt ;) Overall, the city has a very safe feel to it, even at night, which is a nice change from most US cities. I think Montreal, although a bit far for some, was a great choice, as it was a chance to see a whole new country, not just another US city (okay, it was not a new country for *some* people there...). If you can't make a YAPC (and you should by any means possible next years'), at least make an effort to attend or even arrange one of Damian's talks around the world to local PM groups (that's PerlMongers, not PerlMonks, of course. But we would welcome Damian here as well.)