YAPC::Europe 2005

Copyright © Sébastien Aperghis-Tramoni

[+ del.icio.us] [+ Developers Zone] [+ Bookmarks.fr] [Digg this] [+ My Yahoo!]


This year, the Perl community's European conference went South and promised countless planned and unplanned surprises.

An expected conference

[conference logo]

Compared to the previous year's edition and its clear lack of communication, this conference's organisers did a great job to inform and answer the numerous questions of the future participants, by mail, web and IRC, and reassure worried people that, unlike what could be gathered from TV news, Braga wasn't surrounded by a giant fire.

Taking place in Braga, one of the oldest cities in Portugal, this conference was quite expected because of the presence of Larry Wall and his wife Gloria, as Larry hadn't come back to a European conference since YAPC::Europe 2002 in Munich.

The organisers, José Castro, Alberto Simões and Magda Silva, worked hard to organise what happened to be the most successful european YAPC ever done. Several hotels proposed special fees for the conference, and a bus was dedicated to the transportation of attendees between two of the hotels and the venue, Minho University, located in the outskirts of Braga. The conference took place in a building with three lecture rooms, a large hall, a lounge, and large lawns suitable for lying down under the sun.

Wednesday, 31th August

[photo of the Fotango room, the first day]
Part of the participants present in the Fotango
room on the first day. In the foreground, Gloria Wall in
a blue shirt, and Allison Randall in a mauve t-shirt.

To everyone's surprise, nearly all attendees were on time in the main lecture room, the transportation bus being most probably partially responsible of this small miracle ;-)

José officially opens the conference and presents the venue. He remembers that because of the YAPC::Europe 2004 auction and the weird idea of a certain French monger, the organisers are supposed to wear fishnet t-shirts. He puts this point aside and prefers to present the content of the bags, which are quite well stuffed: an orange t-shirt for each participant (organisers' are dark green), a poster of the conference, a copy of the schedule (of course already obsolete), very nice proceedings, a copy of the very first issue of The Perl Review, a red and black rooster, symbol of Portugal, and several other goodies. José thanks the people who helped and will help them during the conference, as well as the sponsors.

After a few more advice and details, he remembers something. «Oh! I almost forgot... the fishnet..» Under applause, José and Alberto put on large black fishnets on top of their clothes. José then proposes that each member of the fishnet clan wear these in turn. The first one is of course Philippe Bruhat, then José gives one to Nobert Gruener, YAPC Europe Foundation president. «Norbert, how could you do this to us? You were supposed to help us!».

José then leaves the mike to Larry Wall, who wears his traditional Hawaiian shirt.

[photo of Larry Wall]
Larry Wall, profession Perl guru.

With his talk entitled Engineering a new community, Larry explains how the open source communities appear (spontaneously around beer), and explores the usual forms of contradiction in everyday life and in open source communities by putting side by side several affirmations and their opposite. He then presents Perl 6 in a very didactic manner, translating examples of Perl 5 code into Perl 6. He concludes with Perl 6 is/isn't just another version of Perl

Next, Allison Randall presents her State of the carrot, with news about the Perl community. It comes as a parody of The Snark Hunting by Lewis Caroll, with Larry, Damian, Mark, Chip and other members of the cabal[1] as the main characters. About the 5.8 and 5.9 branches of the Perl code and their recent security fixes for the suidperl program, Larry comments with «It was a bad idea!» Allison goes on and speaks about Parrot which keeps on going, with Particle (Tcl interpreter) which already passes 10% of Tcl test suite; about Nicholas Clark who's working on Ponie and is discovering many Perl5 internals to improve and optimise; about Pugs and the lambda-camels it's gathering, about the Perl Foundation and their grants for projects like Adam Kennedy's PPI and Steve Jouke's pVoice. She also thanks the companies that graciously offer money, hosting, or people's time to sustain the Perl community.

After the pause, Smylers, in Maintaining bad Perl code, gives some advice towards maintaining ugly Perl code. It mainly means writing a test suite to check code behaviour , then beginning to refactor it with strict and warnings, all while adding comments when you understand (or not) how it works. And of course you must use a version control system like CVS or SVN in order to come back to a previous version in case of regression.

Next, Scott McWhirter presents similar ideas in his talk The legacy of Perl.

In an other room, Igor Roman presents Log4perl in Logging for fun & profit. This very powerful logging module is a member of the family of Log4J ports. This port uses a similar API to send messages to the console, files or databases. The configuration files, quite complex on their own, are completely portable between the different languages.

After lunch, Marcus Ramberg presents Catalyst, the MVC framework inspired by Ruby on Rails and Apache Struts. Marcus presents Catalyst a very modular architecture of Catalyst: 10 execution engines, 8 ORDB mappers, 6 view engines and more than 50 plugins. He explains its inner working, but only shows a recorded movie as a demonstration. Quite disappointing, and may confirm that if Catalyst is "elegant", it doesn't look that simple.

Meanwhile, Nicholas Clark begins his famous tutorial When Perl is not fast enough (which will last the whole afternoon), where he presents several tips, tricks and advice to optimise Perl programs.

Next, Barbie[2] introduces in Yet Another CPAN Smoker the notion of smoker and presents CPAN Testers. He shows that the graphs of test reports, as well as the number of testers, are both increasing. He promises a web site http://perl.grango.org/ with more information on this subject. He then presents CPAN::YACSmoke, the modular framework to automatically test modules from the CPAN.

Thomas Klausner then comes on stage to speak about CPANTS. After a serious presentation, he shows the CPANTS Game, where the aim is to constantly truing to improve each own Kwalitee score. He also shows the new version of the web site, with loads of new things.

[photo of Bom jesus]
The very smiling R. Geoffrey Avery at the bottom
of the last stair in the climbing to Bom Jesus.

The much hyped SVK was presented by its author Chia-lang Kao. He begins by speaking of that «hateful piece of software» known as CVS, whose problems have all been solved in Subversion! He explains that the problem with free/libre version control system is they take a long time to be developed (they need very competent people) and to be deployed (users mustn't loose time to learn the tool). Chia-lang briefly shows the other systems, then explains that he quite likes SVN, except for its slowness due to the intensive network use. In 2003, he was fed up and took a year to develop SVK. It uses the lowest two layers of SVN for the storage, but can be used with CVS, SVN and P4. SVK main feature is that it is distributed, with users able to work in unconnected mode. SVK interactively handles conflict resolution, promotes easy creation of patches, even on read-only repositories. Chia-lang also show that SVK is quite fast and disk frugal, especially when compared to SVN. He ends with the precision that SVK is already used by several projects such as Ruby on Rails, Pugs, Parrot, Request Tracker and Catalyst, and gives away a few SVK badges.

With a solid experience as a CPAN tester for Windows, Barbie proposes Preparing for CPAN several advice for CPAN modules authors to make their modules more portable and able to pass automated tests. Apart from the usual advice, he also recalls the existing solutions to common problems, like how to detect whether a library is available. For this case, he advises to look at the have_library() function in XML::LibXML::Common Makefile.PL.

Lastly, Ivor Williams presents Packaging Perl Applications that shows many ways to distribute Perl code, from packages (CPAN, RPM, Deb) to PAR and live CDs.

After the talks come the BOFs. Today's subject is how to create and run a Perl monger group, how to evangelise about Perl.

For the evening, José proposes to some attendees the visit of Bom Jesus church, located on top of a hill one has to climb through a road of long stairs, on the side of which succeed chapels with scenes depicting the canonical scenes of crucifixion.

Thursday, 1st June

[photo of the ninjas kombat]
Ninjas kombat!

This second day begins with a lightning talks session, directed as the previous year by R. Geoffrey Avery. Philippe Bruhat is the first one to go and speaks about his module Acme::MetaSyntactic, helped by Éric Cassagnard for the soundtrack. I then follow to present Acme::JavaTrace and its professional version, Devel::SimpleTrace, then stay to show the different search sites around Perl. Philippe comes back to present spod5, a S5 slides generator. Salvador Fandino then presents his module Sort::Key. Alexandre Martins de Carvalho follows to talk about web accessibility for blind people. Jean-Louis Leroy then shows two cases where Perl was faster than Korn shell in the first one, then slower in the second.

José Castro then presents the small show he did at OSCON, a genuine ninjas kombat with a deep and complex scenario narrated by David Adler. Philippe comes back again for a special talk: Greg McCarrol unrolls the slides while Philippe removes the t-shirts from previous YAPC::Europe conferences one after the other. He ends up wearing only a pink fishnet, soon joined by other French mongers all wearing fishnets!

Normal talks resume with Thomas Klausner who shows in Using Use the various aspects of use usage: its inner working, how to add search paths with lib and FindBin, how to generate on-the-fly code inside an import() function. Thomas confesses that his examples use Acme::MetaSyntactic with the donmartin theme and shows how this module's import() function works.

After the pause, Nuno Barreto presents web development methods in Web developing with HTML Mason and CSS layout, but loses much time on secondary and uninteresting aspects.

In another room, Jean-Louis Leroy exposes advanced object persistence in Tangram T-3: Object persistence (and more) but the most technical parts are complex enough that even Simon Cozens and Jesse Vincent feel difficulty understanding everything.

During this time, José Castro shows weird things, syntax hijackings and bug-xploitation of the Perl parser in Black Magic, with the obvious aim to write the strangest obfuscations. He also presents several obfuscations such as Thomas Klausner's Space Invaders and the $A++ page of the French mongueurs. He invites Abigail[3] to explain

    perl -Mstrict -we '$_="goto F.print chop;\n=rekach lreP rehtona tsuJ";F1:eval'

an example of self-modifying code. He then proposes to several well-known obfuscators to write a cadavre exquis Perl counterpart: Marty Pauley, Philippe Bruhat, Thomas Klausner, Abigail et Simon Cozens all oblige to write a small JAPH.

After lunch comes Leopold Tötsch who presents, as for each conference, news about the Parrot virtual machine.

Next, Christian Aperghis-Tramoni explains in Using Parrot as a pedagogic platform why he teaches, with his friend and colleague Jacques Guizol, Parrot assembly rather than x86: it's much cleaner and more understandable for the students, and avoids polluting their minds with ugly make work code.

Next comes a Kick in the monads. Ouch. Marty Pauley attempts to explain what is a monad. Of course, he can hardly avoid bursting in laughter while explaining the title ;-) In short, a monad is an ugly hack to do I/O in Haskell, or more generally a means to introduce sequential instructions in purely functional code. «Before monads, you could not perform I/O in Haskell because you can't time travel in Haskell.»>

In his talk Debugging Perl, Léon Brocard begins with the currently available ways to debug a Perl program (strict, warnings, print()) and naturally comes to perl5db.pl, the debugger included in Perl. It's powerful but it's a big, awful and barely understandable script. He shows several comments from the source as evidence. Then it's YAPC::Taipei where Jesse Vincent feels that Perl need a new debugger, all while giving a beer to Léon. Hence Devel::ebug, a very extensible debugger with a perl5db.pl-like console interface but also a shiny and Ajax-y web interface.

Then Paul Johnson presents his famous module Devel::Cover, thanks to which it's very easy to know what parts of a program or module are executed and hence the extent of a test suite's coverage.

Next, Chia-lang Kao presents an interesting deployment system in Streamlining WebApp development and deployment with RunApp. Its aim is to simplify all the installation and configuration steps of the several components needed to run a web application (like Kwiki or RT) using one single point of entry, RunApp. He shows an example with a Kwiki launched just by configuring a single YAML file.

Paul Johnson comes back for Advanced use of Devel::Cover. He shows that Module::Build and ExtUtils::MakeMaker::Coverage both offer a testcover target for executing a test suite with Devel::Cover. For mod_perl-based modules or applications, he recommends Apache:Test. He also shows how to calculate the coverage of XS code with gcov. He evokes the problem of error conditions like open(..) or die and remarks that it's a matter of personal taste whether or not to test for these conditions, with tricks like *CORE::GLOBAL::close = sub {0}. Same remark for nearly impossible to test code like $x = shift || 7. Paul reminds us that Devel::Cover has no way to fully know what happens in a language as dynamic as Perl.

This second day comes to an end when the BOFs can take place, today's subject being about repetitive strain injuries.

The evening of this second day is dedicated to dinner, offered to all the attendees (while it's traditionally only offered to the speakers). It takes place in the university restaurant, but the food is not the same as usually served :-) It's also time for the Beers of the World BOF, where the participants brought beer from their respective countries.

Friday, 2nd June

[photo of H. Merijn Brand and José Castro]
H. Merijn Brand (black t-shirt) and José Castro (green t-shirt)

As the previous one, this third day begins with a lightning talks session . David Doward is first and presents the WebService::Validator::HTML::W3C module and the associated W3C site whishc code is no longer in Java but in Perl. Then Jan-Pieter Cornet shows a funny thing he wrote with H. Merijn Brand, find Unicode characters that allow to write upside-down. He called this module Acme::Rot180 but asks if anybody is a member of the Unicode Board in order to introduce missing characters. Then comes Merijn who presents a JAPH written upside-down. Will Whitacker (Mock) follows and shows how to control email traffic with mod_perl and Apache. Then Anthony Fisher speaks about good practices in management and work methods.

Abigail exposes a bug in the Perl parser which may or may not generate a warning depending on the number of spaces in the expression func(3+4)*5. Martin Vorlaender explains how he uses Perl to analyse C and Pascal files with Parse::RecDescent. Anton Berezin shows how to create a FreeBSD port of a Perl module with BSDPAN. Brian McCauley presents the blueprints of the Games::Fluxx module he's writing, based on the Fluxx cards game. Next, Thomas Klausner presents this year's numerous Perl Workshops. He invites the organisers (including myself) to speak of their conference.

Finally comes a surprise speaker in the person of Gloria Wall, who gives a low-tech talk with paper slides entitled Ten things about Larry. One word is written on each paper, with her commenting how it describes a part of Larry's personality.

After a few announcements, José Castro invites David Adler to speak. He launches the NJPAH Awards. Two awards will be attributed to the most practical and to the strangest programs of 2005. Next, Alberto Simões gives the award for the best article for the proceedings to Paul Johnson for SureSpell, a software designed to help dyslexic children.

Then José comes back to give the YAPC::Europe Perl Girls Awards to Allison Randall for all the hard work she does for the community, and to Gloria Wall because she keeps Larry a sane guy. Finally comes Léon Brocard and his White Onion Awards. He actually just wanted his own awards et therefore created this one, where he gives onions to randomly selected friends of his, and a jar of onions to José and Alberto to thank them for the conference.

As there is still quite some free time before the coffee pause, José gives us Larry for a session of questions and answers. To start the discussion, José asks Larry what he was thinking; Larry whistles the music of Close encounters of the Third Kind. Allison proposes to speak about Perl 6. Larry admits he didn't speak that much about the migration from Perl 5 to Perl 6. He explains he's working on a Perl5 to Perl6 translator, but is first trying to convert Perl5 to Perl5, which is not an easy task. Mark Overmeer asks whether people will follow Perl 6. Larry answers with the highway metaphor: there are several lanes, the right-most goes slower, the left-most goes faster, but as a whole, it's fluid. He counts on the Perl community to act as a lubricant wherever necessary. Ivor Williams asks about the migration of the CPAN. Larry answers that it's up to the community to see what must be done, but he's himself convinced that it's mainly a problem of metadata. To Mark Overmeer who asks a question about the Pod format, Larry says he would like to offer a mechanism to expose the documentation to the Perl code.

When asked about the Perl5 features he would have implemented (or avoided), Larry thinks for a bit. Someone shouts «threads!» Larry laughs and admits there are several things that should have been done another way. When asked if he think Perl5 was a success, Larry answers: «Good, fast, cheap. Pick Two. It's open source so it's cheap. Then we chose good and not fast.» Finally, Mark Fowler asks what would be the most practical mean to help him. «Do you know Haskell?» He explains that Pugs is very useful in order to test several aspects of the language. He adds that Perl5 will need to be maintained because many people just won't move from it. «There are people who are genetically programmed to go up to the next language, and people who are not.»>

José finally comes to free Larry by announcing the coffee pause.

After the pause, Karen Pauley speaks as the previous year to shake a little all these sleepy guys in The decline of Perl?. She particularly disagrees with the motto of the conference, «Perl Everywhere», because she thinks this optimistic vision is not at all realistic: Perl is far from being everywhere and its use declines because of languages like Java, PHP, Python, Ruby.

Then Marc kerr presents in Perl everywhere: from the Bible to Necronomicon (and beyond) funny and crazy rewritings of the Genesis and Necronomicon, with of course Perl and Larry Wall as main stars. He apologises «to Larry for comparing him to God, and to God for comparing him to Larry.»

Follows Marty Pauley who, in The other .pl, explains what makes Prolog such a different language when compared to Perl or Java: it's very difficult to write a simple "hello world", but very easy to solve complex problems. He shows a Flash animation to illustrate the classical "cross a river" problem, then describes the corresponding Prolog program which solves this problem.

"Wyt ti'n medru siarad Saesneg?" And why you need a phrasebook. With that quite surprising title, Barbie introduce the phrasebook concept, a book to translate words or phrases from one language to another. He adds that the title means «Do you speak English?» in Welsh. He presents Data::Phrasebook, a set of modules to easily create phrasebooks and query them. Barbie explains that the module doesn't provide data, only a complete framework to manage them. To H. Merijn Brand who asks whether it's possible to use the data from spell checkers like Aspell or MySpell, Barbie has the ultimate answer : plugins.

After lunch, I introduce basic CSS notions in my CSS Crash Course. I show their purpose, their syntax, and live edit a stylesheet thanks to Firefox and WebDeveloper.

Next, Jonathan Stowe with Protecting your web applications with the DNS. He uses DNSBL (DNS Black Lists) to protect wikis, blogs, and other web applications. He advises to check the services provided by several DNSBL servers, as well as their use policy.

In Using Perl to gather information from the web, Tom Hukins presents WWW::mechanize. It is used to create one's own web services where none exists. He shows a short example and explains that WWW::Mechanize uses HTML::Parser, but it's not enough. Therefore, he uses XPath for an easier tree walking. Thus /html/body//a/@href is a quick way to get all the links. For non conforming HTML pages, he advises to clean them with HTML::Tidy. As he regrets the absence of JavaScript support, I remind him of the existence of Abe Timmerman's Win32::IE::Mechanize for Windows and Scott Lanning's Mozilla::DOM.

After a last coffee pause comes the last sprint of the conference. Allison Randall and Norbert Gruener give a present to José Castro and Alberto Simões to thank them for the perfect organisation of the conference. Then Norbert announces the city selected for the next YAPC::Europe: Birmingham. Barbie, Jon Allen and Brian McCauley come and project a movie made like an old silent movie with a piano as musical soundtrack and slides for the dialogues, narrating the burlesque story of the organisation, The Birmingham Job.

The movie begins in Paris during YAPC::Europe 2003. Birmingham.pm members have decided to host the conference next year. They get back home, write the documents, but some evil villains come and steal them. After a crazy chase, DanDan (Barbie's young son) catches one of the villains, but he's so evil he destroys the CD-ROM where the documents are. Fortunately, Barbie had a backup copy, thus allowing Birmingham.pm to present their proposal.

Then comes the time of the charity auction. As in 2003, Greg McCarroll hosts it, assisted by the organisers to deliver the purchased objects and bring back the money which is collected by Alberto and counted by R. Geoffrey Avery. Greg explains the rules and reminds us that this is for fun and for the profit of the Perl Foundation. He concludes «Have fun and give generously».

Several books are sold very quickly (too quickly), including the very new Perl Best Practices, Perl Testing Developer Notebook and Advanced Perl Programming 2nd Edition. First special bid: Léon Brocard's right to wear orange (his favorite colour) during the next YAPC. He finally keeps his right, but he ends up wearing a pink fishnet for the photo (with a sad puppy-like look nobody believes in). More books and t-shirts are sold, including a Higher Order Perl autographed by Mark-Jason Dominus bought 200 euros by Will Whittaker. Other special bids: the middle name of Jonathan Stowe's baby and a dinner at Greg's home who promised very good meals. Next proposed for bidding is a polemic t-shirt (following the famous Perl is my bitch in 2000) made with a photoshopped picture of former Iraqi Information Minister Muhammed Saeed al-Sahaf saying «Pugs has always been in the Perl 6 Roadmap. Oh yes. The Python infidel are already surrending.». Only five of these t-shirts were produced. This results in a duel between Nicholas Clark and David Cantrell, each trying to overtop the other. Greg interrupts them at 500 euros with a promise they'll both have a t-shirt.

Then the fishnets are sold. The two black ones worn by the organisers are bought by Will Whittaker and Brian McCauley. Philippe Bruhat proposes that Barbie wear the pink fishnet on the first day of the conference, but loses with 225 euros for and 240 euros against that idea. After several other books, the opening language of the conference is proposed for bidding. Although I bid on Elfish with Barbie, it's finally Japanese subtitled in Morse and British sign language that wins (well, maybe... nobody really knows what the exact combination is).

Following comes a copy of the proceedings autographed by all the speakers, a deckchair and a red umbrella covered (once again by the speakers) with advice for lazy programmers, and also several objects signed by Larry Wall and Allison Randall, and again several books and t-shirts, including Barbie's with his son DanDan on it. Thanks to Greg, this auction makes a grand total of 7 200 euros!

José Castro comes back to speak about the Seven stages of a YAPC Europe organiser where he relates anecdotes and misadventures. As this sponsor who proposed them several big boxes of... sugar! Or that one that contacted them to confirm they were interested... after the beginning of the conference. He also thanks Éric Cholet and Philippe Bruhat for Act, the conference management application which was extremely helpful. Besides, the statistics show that about 50 people come from the United Kingdom, as many from Portugal, and less than 10 from each other country. He concludes that only crazy people go to YAPC, and that the United Kingdom really is full of crazy people :-) He finally thanks all the volunteers who helped them, and also Léon Brocard, Marty Pauley and Simon Cozens who gave them the idea to organise YAPC::Europe and provided advice. José ends the conference and gives rendezvous to everybody in Birmingham.


It's already been said, but let's say it again: this conference was perfectly organised and swept away the worries of those who thought the YAPC::Europe conferences were declining. The difficulty that now weighs on Birmingham members will be to be as good as Braga members were. To be completely honest, the only deception, but purely independent of the organisers, is the astonishing difficulty to find classical restaurants in Portugal, while tearooms are countless. This point of detail aside, YAPC::Europe 2005 was a true success, with numerous news and surprises.



  1. There is no cabal.

  2. Although he also has long hair, he's a he who took that pseudonym, and not the blond puppet :-)

  3. Same remark as previous: even though it's a feminine name, he's also a he.


Sébastien Aperghis-Tramoni, <sebastien@aperghis.net>, {Marseille,Sofia}.pm

Translated to English by Sébastien Aperghis-Tramoni with the invaluable help of Éric Cholet and Stéphane Payrard.

[IE7, par Dean Edwards] [Validation du HTML] [Validation du CSS]