yarffaJ nalA (jnala) wrote in lj_dev,
yarffaJ nalA

Notes from YAPC

I'm at YAPC in Montreal. There've been a number of talks that would be of interest of LJ hackers. Typing this from the back row of a talk, so it'll have to be quick.

Nat Torkington has been recording a bunch of talks and putting links in his journal. I only caught the tail of his talk on Perl idioms and style, but if he has the slides as well as the recording, it'd be pretty useful. I missed Damian's keynote address on Perl6, but Damian is an amazing speaker, so I'll be listening to it ASAP. Damian brought down the house with his talk on Life, The Universe, And Everything (Conway's Life! quantum computing! thermodynamics! Klingons!) but it won't make much sense without the slides.

Someone did a Lightning Talk on Concurrent::Object, a really lightweight way to fake threads, for instance doing two blocking computations (like database calls) at the same time. Looked nice. Another Lightning Talk was on Exception::Class, the best-looking exception system I've seen for Perl, and Log::Dispatch, a nice-looking system for sending errors or messages to different filehandles, different files, syslog, web server error logs, ticker tape, whatever. Another on the Everything Engine ("Zope Is For Sucks"), which intrigued me enough to go read more. And then there was the brief Shakespearean play presenting Inline::Files, a perverse presentation of a perverse module (read/write persistent virtual filesystem inlined in the script body?!)

MJD gave a talk on "Secrets Stolen from the Wizards of the Ivory Tower". Thesis 1: Higher-order functions and closures can dramatically increase algorithmic clarity and code reuse with much less overhead and awkwardness than OO patterns. (Not that OO doesn't also have its place.) Thesis 2: Perl is in many ways closer in functionality to Lisp than C, so maybe we should pick up some tricks from the Lisp hackers and their decades of experience rather than just write sugared C.

Brian Ingerson gave a couple of talks on Inline. Their goal is to make XS obsolete, except as the underpinnings of Inline. Inline::C is very sweet - C inlined in your Perl program, object code gets compiled and cached automatically first time you run the script, and recompiled only when the C part of the script changes - and Inline::MakeMaker removes some concerns I'd had about writing modules using Inline. He also demonstrated CPR ("C Perl Run"), which is a C interpreter (just stick #!/usr/bin/cpr at the top of a C program) that operates by feeding the C code to Inline::C within a Perl script. Cool.

Inline::Java is really impressive. You can tell it to "study" a Java class, and it'll use reflection to create a full Perl interface to it. It'll even handle overloading appropriately. Three lines of code for the foreign interface. Java can be pretty damn fast for a lot of purposes, and there are a lot of good Java class libraries out there, so I think I'll be using this a lot.

Everyone's using Parse::RecDescent. I need to learn Parse::RecDescent.

Michael Schwern gave a talk on "Disciplined Programming: How to be lazy without really trying." Slides are here. I liked it because you don't often hear people talk about software engineering practices in the context of enthusiastic hackers in real-world workplaces. He referred to Rapid Development by Steve McConnell a lot; I think that's going on my reading list.

Chris Nandor did a talk on Slash: Taming The Beast. Some of the stuff they've been doing with Slash to make the code easier to modify, easier to package, faster, etc. They took all the database functionality and stuck it in a Slash::DB module, from which Slash::DB::MySQL, Slash::DB::Oracle, etc, etc all inherit. They've moved to using the Template Toolkit, which he gave great praise to, but didn't describe in enough detail for me to know why it's so cool. They haven't really tackled internationalization (i18n), but lots of Slash sites are just translating the templates, and most stuff is using the templates these days. They have a Slash::Install module for installing plugins; he didn't talk extensively about the plugin system.

An interesting note is that Slashdot isn't actually using Slash 2.0 yet because they haven't tested it on something that large; they're working on ways to pound it sufficiently hard without just putting it into production and praying. Their performance bottleneck is the database, and they've had internal debates over replication vs. throwing more and more RAM at the quad Xeon and upgrading to faster CPUs as they become available. For now, they're doing the latter.

I'm going to install a Slash site sometime soon, just to see how it works. It's definitely the biggest and most widely-used open-source project that's anything close to what we're doing.

I went to the first hour of a talk on HTML::Mason, but I got the impression I'd do just as well to read the manual and play around with it, and there was a very annoying person asking literally dozens of dumb questions, so I left halfway through.

Well, that wasn't all that quick, but I type fast. Lots of fun stuff.

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded