YAPC::NA::2010 – Perl is alive!

This was my first YAPC, and I wasn't really sure what to expect.

What I experienced was absolutely amazing!

There is a perl community that is alive and growing.  Perl5 releases may have been troublesome in the past, but are now being brought under control.  They are organized, and quite predictable now.  Just look at the Perl5.10 and Perl5.12 releases.

The history of perl was shown.  I never realized that perl was so old!  Yet perl isn't old and crufty.  It is alive and growing.  Thanks to ideas developed in perl6, we can enjoy modern OO with Moose and Web development frameworks like Catalyst.

The mantra of “There is more than one way to do it” is indeed perl.  That's why there are so many modules in CPAN.  It allows perl to try different solutions to problems before committing to a single solution.

I attended many of the introduction to sessions, which gave a quick overviews of Moose, DBIx::Class, and Catalyst.  All of which are modern perl, built upon the Moose OO system.  I'm sorry, trying to give an overview of just one of these wouldn't do them justice, nevermind all three of them, and this was just part of Day 1!

The talk on Modern Perl peaked my interest.  It must be about perl6, right?  Clearly the old perl5 couldn't be considered modern, could it?  Well, they are both considered to be “Modern Perl”.  Why?  Because modern perl5 programs are based upon Moose.  And Moose was based upon ideas in perl6!  The perl community is alive and growing, and enjoys borrowing good ideas.  With Moose, it has allowed the perl community to experiment, and come up with new ideas of how to solve problems in OOP.

I must interject here – since this was my first year, I was pulled aside and given a VIP ribbon for my badge.  I'm a VIP because I'm new to YAPC.  They wanted to know what I was doing with perl, and if I had any questions about anything with perl.  I asked about roles in Moose, I didn't quite understand where they fit into things.  I've worked with OO before in C++, but roles didn't seem to be anything that fit into anything I knew about OOP.  Well, after a few, “it is like Java interfaces, but it isn't” comments, which had me scratching my head, I suddenly understood roles.  Roles are similar to inheritance (the object gets those attributes defined in the role), but they aren't inherited.  Here's the example given to me.  You have objects that are modeled after a room.  Some objects you can sit on, some you can't.  You can define this in a role, and apply it to what you want.  Inheritance is vertical, roles are horizontal.  In other words, there are objects that won't ever fit correctly into an inheritance tree, but roles allow you to apply common attributes to objects.  And this is something that is solved in perl today.  Wow!

I'm  using perl to interface to websites on the web.  Some have been painful due to excessive use of javascript to implement navigation.  (sigh)  I was told one word:  “Selenium”.  Ok, I had heard of it before, but wasn't sure exactly what it was.  Why, yet another gem in CPAN that I didn't know about!  It allows you complete control over a web browser.  Who cares about how much ajax/javascript is on the page!  Let the browser handle all of that, and you tell the browser what to do.  And yes, it can handle popup authentication windows, yes, it can handle ajax.  If it works in a browser, you can script it with Selenium!  Why have I been wasting so much time trying to use WWW::Mechanize against javascript based sites?  No more of that nonsense with Selenium!

Next is Lightning talks.  Quick, short talks about a given topic.  This was the highlight of the day for me.  Quick talks that covered about everything!  One talk was singing a silly tune.  Another was about what do to with the closet that's full of YAPC conference T-shirts.  Another, why Python is better then perl.  Hey, can you do that at YAPC?  Well, yes, you can, and to be fair, he spent the last half of his talk going over what perl does better then Python!

Then there were modules mentioned.  Some of which I had heard of, but never used.  Others I had no idea about.  But many of them, I just said to myself, “Why haven't I ever heard of these modules before now?”.  I almost wish there was a newsletter or electronic magazine that would allow module authors to give a public announcement about their modules and what they can do for you.  Or, like in the case of MooseX::POE, where the author tells you not to use this module because it sucks, why it sucks, and what you should use instead.  This type of information would really be useful to know when searching through CPAN!

Modules in my notes that I must experiment with:

  • local::lib
  • CPAN::Mini
  • perlbrew
  • autodie
  • Modern::Perl
  • Regexp::Grammars
  • IO::Prompter
  • Try::Tiny
  • DBIx::Class::TimeStamp
  • KiokuDB

There was so much information about what new modules are available, I really felt like I didn't know anything at all about perl, or what was going on in the community!  But I'm actively using perl everyday. Really!  How can I be so out of touch with everything that is going on?

This type of information is the most valuable that I gained from attending YAPC.  I've learned about even more time saving modules, then I knew before.

I'm not ready to give a talk, yet, but I'm definitely ready for YAPC::NA::2011 in Asheville, North Carolina!  Teach me more about perl!