Here's my Day Three summary for YAPC::NA 2008. Day two consisted of talks throughout the morning, with lightning talks and the closing keynote in the afternoon.
If you haven't read the [day one]{yapc-na-2008-day-one} and [day two]{yapc-na-2008-day-one} summaries, start there first
Today, I attended:
The Stack ( abstract )
A good discussion of the issues involved in shipping a Perl-based app. Mostly applicable to people who need to ship code to customers, rather than those who just need to push to servers under their control. The gist of it was "Don't make your customers use CPAN, because you'll scare them away". Which, for the most part, is true. You also risk incompatibilites (customer installs Foo::Bar 1.2, and you only work with 1.1 or earlier).
At work we follow two of the options outlined in the talk. First, we ship our major CPAN dependencies along with our source install. Second, with our binary installs, we build distribution-specific packages of our stuff AND our dependencies for the major Linux distributions. And third, something not mentioned in the talk, but in the Q&A afterwards, we build a Debian-based appliance that bundles everything together for the customer.
Rescue Your Doomed Project ( abstract )
This was a mostly social/political talk about keeping your project from failing. Covered the reasons why a lot of projects fail, and a few ways to address some of them.
One of the key success factors identified was the ability to do a release at any time. If your project is able to do this, it probably means you've got good testing and documentation, some degree of process automation, and sane coding and checkin practices. I don't think any projects I work on are in this state, but it's definitely something to strive for.
Everything You Always Wanted To Know About S'Ex But Were Afraid To Ask ( abstract )
The advanced Sub::Exporter talk. This one covered most of the power features of Sub::Exporter that make it more than just a replacement for Exporter.pm. Sub::Exporter makes it very easy to do automatic currying of arguments, renaming methods at import time, and most importantly, synthesizing methods based on use()-time parameters.
Very impressive. This will likely be used in a future release of MIMEDefang to make backwards-compatibility methods available without having to pollute the namespace of those using modern interfaces.
What Is Obvious? The Fundamentals of Interface Design ( abstract )
An overview of what makes a good interface (both user-facing interfaces and coding interfaces). A very good talk, during which I unfortunately took few notes, so I don't have much to summarize. Of note:
Users prefer exploratory interfaces, where they can learn by doing, and mess around with things without negetive consequences. Things like confirmation dialogs for destructive actions and multiple levels of undo consistently available for all actions let users learn by doing without fear of wrecking everything.
Several books recommended:
- The Design of Everyday Things, Donald A Normal
- Don't Make Me Think, Steve Krug
- **The Visual Display of Quantitative Information", Edward Tufte I've had a couple of these on my TODO list for a while, so perhaps this will motivate me to read them.
Using RRD with Perl ( abstract )
I came in to this talk late, but it seemed to boil down to "You should use RRDTool::OO, and here's how". Having tried a few other Perl interfaces for RRD, I would have to agree.
Another uneventful lunch occurred. Campus food tends to grow on you after a while.
After lunch came the lightning talks. A full list, and some abstracts can be found here. Here are notes from some of the notable ones:
Swish-e is an indexer for full-text search. It seemed interesting, until it was mentioned that there's no UTF8 support, that the index must be entirely rebuilt to add content, and that the indexes are platform and word-size depenedant making them non-portable. Some of those issues are being worked on, though.
"Is Perl Relevant in an AJAX World?" This being a Perl conference, the answer is of course yes. This was a quick overview of what where2getit.com did -- they moved 100kloc of their Perl product to 22kloc of back-end perl (the M of their MVC) and moved the view and controller code to Javascript in the browser. Sounds neat.
"Testing with Math::Combinatorics". They use this module to generate test sets to exhaustively test all possible combinations of input data. This might be worth a closer look for work.
"Devel::Cover for Template Toolkit". Code coverage testing for templates. This could be very useful if you've got a lot of logic in your templates. It's on CPAN as Devel::Cover::TT.
"Test your Database with pgTAP". A port of Test::More to PostgreSQL, so that you can write tests in SQL within your database.
"Porting the Smalltalk Debugger". This seems interesting, if a bit ambitious. Josh wants to port the Smalltalk (well, Squeak) debugger to Perl so that all the wonderful Smalltalk-ish features are available to Perl developers. Code inspection and stepping, class browser, and modifying the running code at runtime with the debugger would all be nice to have. As a first step, he has Enbugger::Restarts on CPAN, that should let you redefine methods and then restart execution at an arbitrary point in your call stack.
There were also quite a few funny talks that I won't bother describing here, except to say that they probably only make sense to Perl people, and were probably only funny in context. I played the "FSB" video for some friends in Ottawa, and they didn't get it.
Following the lightning talks was a brief closing address from the 2008 organizers, and an announcement of the 2009 YAPC::NA location -- Pittsburgh.
Then came the keynote by Ben Collins-Sussman and Brian Fitzpatrick. The talk was mostly about respecting and trusting your users. Not much Perl content, and another attendee pointed out to me afterwards that it was actually a recycled talk that had been presented at two other conferences. I suspect it was only given because Google was a major sponsor, and so was allowed to pick the keynote speaker -- both presenters work on Google Code. I wasn't terribly impressed... I hope that next YAPC, the closing keynote has a bit more effort put into it.
Following this was a Perl Foundation closing address, and a town hall meeting, which I skipped out on early so that I could call my wife before running off to dinner with an old friend from university.
And that was YAPC::NA 2008. I highly recommend this conference if you have anything at all to do with Perl. If there's anything you'd like to see at YAPC::NA 2009, I've been told that the organizers are taking requests this year, and in addition to the traditional call for speakers, they plan to try and find speakers on topics that are heavily requested by the community.