After 3 days of very spotty internet access in GPW, and 3 more days of delightful realspace tourism, I'm now back to cyberspace to resume journaling about the two conferences, as well as the huge backlog of exciting developments.
At OSDC I presented all four of my regular talks: Pugs, Haskell, VB, Larry. Thanks to gaal's suggestion, I switched to black-on-white with purple cursors, and I think the visual effect was much better this time. The audience was very receptive; a few people asked me to make podcasts (or Flash movies) for them -- that's a good idea and I'm definitely going to try it out.
Larry picked up the Takahashi method from me for his talk, Translating Perl 5 to Perl 5 (abbreviated P5 → P5 in traditional Takahashi style). Although the pace was a bit uneven due to JIT slidemaking, the subject was very interesting: Larry instrumented perl5 core to save the textual, PPI-like parse tree along with the optree, preserving comments and whitespaces as op_junk nodes. He calls the textual annotations MAD (Misc Attribute Decoration): MAD properties are therefore madprops, and the flag to toggle MADness is madskills.
This entire mad business is to enable Perl5-to-Perl6 translation to look not only at the opcodes (which would result in functional but quite unintelligible code), but also translate various idiomatic uses of Perl 5 into their corresponding Perl 6 idioms, by looking at the textual nodes and layout around it. That's highly reminiscent of one of my favourite books on translation, Le Ton beau de Marot; it's perhaps no coincidence that Larry mentioned the book to explain the impossibility to get it 100% correct, either with automated or manual procedures.
Be as it may, a parallel op/doc tree for Perl 5 is useful in its own right; it gives us for the first time something like AST for Perl 5 -- we can even serialize it as YAML with "p55 -Y hello.pl > hello.yml"! This has many applications, such as semantically correct syntax highlighting, with proper handling of prototypes, quotelikes, BEGIN{} blocks etc. Hence it's great to know that Nicholas is now merging a snapshot of Larry's p55 tree into bleadperl, as part of his TPF grant.
Other talks in OSDC.il were uniformly quite interesting. Gaal's talk (A peek into Pugs Internals) was particularly well-delivered; unlike the Takahashi style of brainwashing, his Spork-powered, Judoesque talk discusses Pugs's use of Parsec at depth, then recasted the same concepts of combinatorial parsing with Perl 6 Rules, based on the freshly specified result objects syntax. (That's also the central technique of the pX bootstrap -- but I'll journal about it later.) Well worth a look!
As usual, the most enjoyable track is the hallway track: We resolved many more corner cases in the language design -- including the singlemost important Spec commit I've done to date: all unqualified variable names (i.e. $a, %b, @c) are always lexical by default, and would not fall back to the global scope. This guarantees static binding for most variable names, which enables a lot of optimization techniques. (To refer to the global $*OUT, either write it as that, or import it with "use GLOBAL <$OUT>".)
Oh, and the auction was quite... spirited, to the point where a Pugs commit bit invitation, offered by nothingmuch, was auctioned off for USD$50. It's all in good fun, though, as I made sure that everyone involved know that it can also be obtained completely for free. ;-) Combined with Hackathon, I think Pugs netted ~10 new committers during my visit to Israel. Woot!
All in all it was a very delightful conference. Thanks to Gabor, Issac, Uri, Itzik, Muli, Oded, Omer, Amit and other people in the organizer team for pulling off a wonderful OSDC. Let's hope that OSDC.tw will live up to its two previous sister conferences (OSDC.au and OSDC.il), and maybe more Perl mongers will make the YAPC->OSDC move and work with other language communities -- there is, indeed, much to learn from each other...
i haven't gone through the slides yet, but your xul slideshow tool is UBERCOOL. did you code this or borrow it? great use of xul.
Posted by: grumpY! | 2006.03.07 at 02:22 PM
the pugs slides were very informative, thank you
Posted by: grumpY! | 2006.03.08 at 12:25 AM
grumpY!: Thanks for the kind words. :-)
I took Takahashi XUL code from http://piro.sakura.ne.jp/xul/applications/takahashi/ but hacked on it a lot, most notably providing custom-class support so I can have italics and highlighting.
Posted by: Audrey T | 2006.03.10 at 06:13 PM