YAPC::NA days zero and one

I doubt my recounting will be anywhere near as colourful as Yanick’s, but I think it’s worthwhile to share my experiences at YAPC::NA 2011.

The wee hours

My trip began at 4am, whereupon I cursed myself for having this wonderful idea of going to YAPC, and my boss for giving me the time off. However, security is quick, as you might imagine, and I was in plenty of time to eat a surprisingly good breakfast at the airport. A couple short hops later, and I was getting off the same plane as Larry Wall. I hitched a ride, and we arrived in the early afternoon on Sunday. He’s a genuinely nice guy, and a huuuuuge geek :)

I then had to wait about 3 hours for a room – but that provided a good opportunity to begin networking with all the other early birds. Yanick was one – just as I checked his Twitter feed to see if he’d arrived yet, he sidled up beside me. “You rang?” I’d promised him to do some hacking together, but we never did. That night, we headed for Lexington Ave. Brewery for a great meal, and then to bed in preparation for the whirlwind day one promises.


Day one began with Larry Wall’s keynote, which focused on community issues. Like any open-source project, the Perl community has social challenges as well as technical, and those social challenges have been getting more attention in the past year. The first set of lightning talks came immediately after. I was meant to give mine here, but had to go buy a new hard drive for my laptop. I returned in time to hear (again) about a great project from Sartak – Pod::Cpandoc. The perldoc utility that ships with Perl is used for viewing documentation on the core language, some FAQs, and the documentation for installed modules. However, it can’t display documentation for modules that aren’t installed. Pod::Cpandoc simply fetches the module’s documentation and formats it in exactly the same way perldoc does. It also passes through all the perldoc switches, so you can use it in place of the perldoc utility:

echo 'alias perldoc=cpandoc' >> ~/.bash_aliases

Perl Best Practices

Jacinta Richardson, a well-respected Perl trainer from Australia presented Perl Programming Best Practices, which covered some modern Perl idioms, and features available in recent versions of Perl. Jacinta doesn’t recommend modifying your system’s perl because the scripts that use it tend to be fragile. Instead, install your own – this is made easy by App::perlbrew. This little bundle of joy automates the tedium of building your own perl, making it trivial to install several parallel perls in your home directory. I was glad to see Jacinta recommend installing your own modern perl, and using Perlbrew to do it. I’ve contributed a little code to that project, and it’s always satisfying to know your software is useful to people.

I was once a fan of smart matching, and I think it’s certainly useful in some cases. This was one selling point Jacinta cited for getting Perl 5.10 or newer. But just about a week later, a thread was started on p5p about the horrors of smart matching. This says it all:

<fellow> Maybe Perl isn't given to over-magic line-noisy crap.
         I hear there's even a new version. What'd it get us?
<japh>   ~~, for smart matching, with 27-way recursive runtime dispatch
         by operand type!
<fellow> ...

It really is an ugly beast, when you go beyond the surface. While I want Perl to move fast, a 27-way dispatch table is a huge red flag that the feature needs to be reconcieved. I’m glad Jesse wants to push for clearer rationales for new features, I just hope it doesn’t slow down progress in other areas. More on this in day 2