Here's my Day Two summary for YAPC::NA 2008. Day two consisted of talks all day, followed by the main YAPC Banquet.
If you haven't read the [day one]{yapc-na-2008-day-one} summary, start there first
I attended:
Social Perl ( abstract )
Clayton Scott, who also lives in Ottawa, gave an overview of social networking APIs and how to get your app working with them. A fairly code-free talk, it covered the architecture of an app for various sites. Unfortunately, due to conference disorganization, he started late and the interesting bits at the end had to be cut short.
He presented this to the Ottawa Perl Mongers earlier this month, but I couldn't make it. I will probably try to convince Clayton to present this to OCLUG so I can see the full talk.
Fey(::ORM) and YA(F)ORM ( abstract )
Dave Rolsky speaking about Yet Another F***ing ORM. Fey actually looks interesting -- mostly because it's highly Moose-ified. It's comparable (but there are no actual comparisons...) to DBIx::Class and Rose::DB::Object.
Scaling DBs with DBIx::Router ( abstract )
DBIx::Router is a (mostly) transparent DBI class that can be used for connection pooling, query load balancing, failover, or sharding of data. It's based on DBI::Gofer, which is a stateless DBI proxy. Looks fairly interesting, but has the huge drawback of not being able to support transactions, as the Gofer backend is stateless. He's working with the DBI::Gofer maintainer to fix this in the future.
Module isn't on CPAN, but is available via Google Code http://code.google.com/p/dbix-router/
Moose - Postmodern Objects ( abstract )
A quick overview of Moose, a "post-modern" object system for Perl 5. It's supposedly mostly Perl 6 forward-compatible, and handles most of the tedium of using things like Class::Accessor or rolling your own objects.
It does add a build-time penalty, but in mod_perl, fastcgi, or embedded Perl interpeter environments like MIMEDefang, this isn't an issue. It isn't really optimized for runtime performance yet, but it doesn't currently have much of a penalty. It is, however, optimized for developer performance (== faster coding), which is definitely a win even with a small runtime penalty.
Working with and around timezones. ( abstract, slides )
Details some of the issues encountered with timezones while writing an app that deals with timed items. Slides cover the major issues, but things to note are:
Date::Extract is the current best way to extract dates from textual entry, as it doesn't fail in surprising ways.
Surprisingly, users get annoyed when their specific timezone name isn't available even if an equivalent timezone is available (America/New_York vs America/Montreal, for example). They "solved" this by just listing EVERYTHING in their user preferences box.
User expectations can be weird. For example, does "in a week" mean 7 days from now, or at the beginning of next week? Does "tomorrow" mean tomorrow morning, or tomorrow at the same time as right now? etc,etc.
Joy of S'Ex: Sub::Exporter ( abstract )
A beginner overview of Sub::Exporter. Mostly covered things I already knew, so I pretty much tuned this one out. It was the only one available in the timeslot after the timezone talk, so I stuck around anyway. See below for details on the "advanced" Sub::Exporter talk, which was much more useful.
Wow. That was just the morning. Talks continued in the afternoon, after a lunch of barbecued cafeteria food.
Testing Code and Assuring Quality ( abstract, slides )
A good overview of how to test your Perl code, and generally improve your test coverage and code quality through better testing. Since I'm just so amazing, I already do all of these things, so this was basically a review session punctuated with lolcats. That said, if I didn't already know all this stuff, it would have been the perfect introduction to the concepts. I highly recommend that anyone who writes Perl and isn't already a testing guru should click on the "slides" link above and read the presentation RIGHT F***ING NOW!
Perl::Critic and Perl::Tidy ( abstract )
Two highly underrated developer tools covered in one talk. Perl::Critic checks your code for "best practices" -- some of those covered in the Perl Best Practices book, and others -- that help with the readability, maintainability, and general quality of a Perl project. Perl::Tidy is a style checker and code formatter that can keep your project's code looking consistent across developers, making it easier to read.
I already use both, but I did learn a few things in this talk anyway. One of these was Test::Perl::Critic::Progressive, which can make the process of fixing older code easier by highlighting any new policy violations that appear after a baseline test, allowing you to gradually clean up your old violations without having to endure test failures from day one. I will definitely be using this in the near future. Another was Perl::Critic::Compatibility, which can be used to check your code for Perlisms that are incompatible with older or newer versions of Perl.
Testing Data with The Sims ( abstract, slides )
I almost didn't attend this one, based on the title alone. However, it has nothing at all to do with The Sims. Instead, it's about creating a set of valid data for test purposes, and then randomly generating testable objects using that data. The main example is generating random people with names, birthdates, etc fitting various constraints. It's a simple idea, but a good one. Other tricks mentioned include making your tests be selectably reproducible by outputting your RNG seed with the test output, so that if a bug is triggered, the same randomly-generated test can be used repeatedly to reproduce it.
How To Be a CPAN Tester ( abstract )
An overview of the CPAN testing process, and how to get involved. Slides are not online (that I know of) but most of the info is available here
Buildbot and Smolder ( abstract )
This was about Buildbot and Smolder, two tools for automated testing and reporting. Buildbot runs your build and test process, and Smolder gives you nice reports on anything that outputs TAP - the Test Anything Protocol.
I use both, and am currently trying to get Smolder working better with it, so this talk was an obvious one for me to attend. It didn't tell me much that I didn't already know, but it confirmed that I'm not doing anything too weird, and that even the Smolder maintainer doesn't have tighter Buildbot integration yet.
Day Two ended with a round of Disc Golf at the IIT course (9 over par, not bad for my second time ever), the YAPC Banquet and auction, and the usual MST3K-style bad movies.
More to come in my [day three]{yapc-na-2008-day-three} post.