Nordic Perl Workshop 2006

Copyright © 2006 - Sébastien Aperghis-Tramoni

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

Chapeau

Bien que dénommée workshop, cette conférence est de fait très internationale tant par son organisation (qui alterne chaque année entre la Norvège, la Suède et le Danemark) que par les orateurs qui y ont été invités, tels Audrey Tang, Jesse Vincent et Michael Schwern (qui a donc accepté de laisser WoW de côté pour au moins quelques heures ;-)).

Mercredi 14 juin - Early Birds Dinner

[logo de la conférence NPW 2006]

Comme il est souvent de coutume, un petit dîner est organisé la veille pour accueillir les personnes qui viennent de loin et aussi, pour les organisateurs, afin de se donner du courage avant le grand saut. Jos Boumans joue à une version grandeur nature de Où est Charlie en essayant de me trouver dans Oslo pour me guider jusqu'au lieu du dîner. S'y trouvent les organisateurs, Salve Nilsen, Trond Michelsen et Dag Asheim, ainsi que certains conférenciers comme Gisle Aas, Jos Boumans et Marcus Ramberg. Salve et Trond présentent un projet sur lequel ils travaillent : une carte détaillée d'Oslo pour Google Earth, liée à un site web connexe pour fournir des informations complémentaires, par exemple les horaires des bus, tramways et métros.

À la fin du repas, le groupe se sépare en deux : une partie, menée par Jos, va chercher d'autres endroits où boire, l'autre va mettre en place les panneaux pour indiquer le chemin d'accès.

Jeudi 15 juin

Opening - Salve J. Nilsen

Salve a quelques problèmes pour connecter son PowerBook au projecteur. Son écran apparaît, puis laisse place à un écran noir et enfin une guru meditation. Le Nordic Perl Workshop 2006 est officiellement ouvert. Salve présente le sujet de la conférence, Managing complexity, puis donne quelques informations pratiques comme où boire et manger. Il annonce aussi qu'il y aura un barbecue au bâtiment de chimie.

Benchmarking Perl - Gisle Aas

Gisle a travaillé pendant plusieurs années chez ActiveState sur plusieurs projets comme leur format d'archive PPM. Le sujet de sa présentation est un autre projet, Perl Bench, qu'il a codé vers 1997-98. Comme son nom le laisse entendre, il s'agit d'un programme de comparaison de vitesse entre différentes versions de Perl, qui fonctionne en exécutant un jeu de microbenchmarks sur chaque version. Il montre des critiques de Jarkko Hietaniemi et Nicholas Clark qui doutent fortement de la pertinence de ces résultats. Gisle continue néanmoins d'améliorer Perl Bench et indique comment il compte utiliser gettimeofday() et des fonctions récemment ajoutées à Time::HiRes, afin d'avoir de meilleures mesures de temps.

Salve remercie Gisle et lui donne une tasse NPW 2006. Il fera de même pour chaque conférencier.

Jifty - Jesse Vincent

Jesse présente Jifty, « the only web application framework that JFDI and comes with a pony ». Tout fonctionne grâce à la commande jifty et Jesse montre les étapes pour créer un petit blog, y compris comment le censurer avec Regexp::Common::profanity_us. L'interface fonctionne même dans Lynx ! Il présente ensuite les internes d'une application Jifty : Jifty::DBI, la partie ORM qui cache toute la gestion de la base de données et fournit même un outil pour les mises à jour; Jifty::Dispatcher, le noyau écrit par Audrey Tang ; Jifty::Continuations, qui promet de faciliter le développement des applications web : « The web is built on GOTO. I prefer GOSUB ».

Les vues sont actuellement basées sur Mason, mais Jesse promet un support d'ici peu pour Template Toolkit. Jifty fournit enfin un très bon système de debuggage, y compris pour les templates et le SQL au travers des halos. Il est tout de même rapide grâce à Apache, Memcached et des modules comme CSS::Squish et JavaScript::Squish. Jesse promet un éditeur de type wiki pour le futur.

Agile Development in Theory and Practice - Johannes Brodwall

Membre d'une association qui organise des réunions sur l'eXtreme Programming, Johannes commence par présenter la théorie de Barry Boehms sur l'économie des logiciels (mais ne semble pas convaincu de sa pertinence). Il explique ensuite la base du développement agile : découper les projets en petites unités fonctionnelles en se concentrant sur chacune individuellement, écrire un test, le faire réussir ; livrer régulièrement du code testé et qui fonctionne correctement ; enfin, s'adapter aux retours du client.

Il met l'accent sur l'importance d'une suite de tests automatisée et rappelle que si les tests unitaires sont faciles à écrire, les tests d'acceptation sont d'une plus grande valeur. Une suite de tests, en particulier exécutée par un smoker, permet aussi bien d'écrire du nouveau code en TDD (Test Driven Development que de refactoriser de l'ancien. Il précise que ces techniques ont permis à son équipe de retravailler ainsi plus de 500 mille lignes de code réparties sur plus de 400 fichiers.

RT - Request Tracker - Jesse Vincent

Jesse brosse l'histoire de RT, détaillant les principales fonctionnalités de chaque version majeure, par exemple le gros travail de refonte interne de RT 3.0 (ce que Jesse appelle I22N, internal rationalisation) et son support pour l'internationalisation, en particulier le chinois, réalisé par Audrey Tang. RT 3.6 apporte aussi son lot de nouveautés : interface refaite en CSS (Jesse montre RT avec un thème gothique), rappels automatiques, page principale personnalisable, champs personnalisés avec support AJAX, graphes, recherche à la Google et bien d'autres. Jesse explique alors qu'il avait promis lors du précédent NPW de fournir Jifty avant Noël. Il l'a sorti le 25 décembre. Mais où est RT 3.6 ? Jesse le publie sous les yeux du public.

Perl, PDL and Air Pollution - Heiko Klein

Heiko, qui travaille pour l'Institut norvégien de météorologie, explique comment Perl est utilisé pour vérifier le modèle d'un programme Fortan qui brasse des dizaines de gigaoctets de données. Ils utilisent pour cela PDL, qui apporte à Perl une puissance de calcul comparable à celle de Fortran et de C. Chaque objet PDL est un tableau multidimensionnel fortement typé, mais qui se comporte aussi comme un objet Perl standard.

Deploying Perl 6 - Audrey Tang

Pour Audrey, « Perl 6 is here today ». Pugs et Parrot sont déjà disponibles pour l'expérimentation, mais elle promet Perl 6 pour Noël ;-)

Elle présente la pragma feature qui sera présente dans Perl 5.10 et qui offrira certains aspects de syntaxe provenant de Perl 6. Elle présente aussi Moose, un module qui offre les sémantiques objets Perl 6 en Perl 5, ainsi que plusieurs modules de Pugs tel Pugs::Compiler::Rules, et explique quelques unes des nouvelles fonctionnalités comme les captures nommées ou le contrôle du backtrack.

Elle montre ensuite pourquoi « tout le monde déteste Spiffy » : le code est beaucoup trop magique ! La raison est qu'il est basé sur Filter::Simple, ce qui est très coûteux et pose de nombreux problèmes. Mais en utilisant un comportement peu connu de Perl5 (use Machin cherche d'abord un Machin.pmc avant un Machin.pm), Audrey a écrit Module::Compile qui permet de sauver le résultat du filtre dans un fichier .pmc, d'où des temps de chargement réduits. Cette technique permet même d'écrire une meilleure version de Filter::Macro, qui permet de remplacer une fonction par son code :

    use Inline::Module Filter::Simple => "slurp";

Mieux, on peut même exécuter du Perl 6 sur Perl5 !

    use v6-pugs;

Ici, -pugs est en réalité une option du module v6, et lui indique d'utiliser Pugs pour transformer le code Perl 6.

Inside-Out Objects - Abigail

Il s'agit de la même présentation qu'Abigail a faite lors de LPW 2005[1]. Gisle Aas lui demande si ces objets sont compatibles avec le debugguer Perl. Abigail avoue qu'il ne l'utilise pas mais pense que non.

Barbecue

Le barbecue prend place dans un atrium du bâtiment de chimie, ce qui donne accès à une grande quantité de neige carbonique (pour refroidir la bière). Comme Jos Boumans demande à Audrey Tang si elle a encore une maison à Taiwan, vu qu'elle voyage beaucoup, celle-ci le rassure et lui confirme que oui, mais que cela peut changer à tout moment vu le contexte politique. Elle indique aussi que sa prochaine étape dans son tour du monde à la Erdös sera à Seattle, chez Microsoft[2]. Jos and Jesse Vincent plaisantent ensuite sur le fait que, comme il n'y a pas de cabale, il n'y aura pas de réunion certains jours pendant les prochains mois.

De l'autre côté, on distribue des goodies Sun : t-shirts Java, DVD OpenSolaris et une amusante batterie additionnelle pour bidules mobiles.

Vendredi 16 juin

logicShop - Jonas B. Nielsen

Jonas présente rapidement sa société logicLab, l'un des sponsors de NPW, puis continue avec son principal produit, logicShop, un moteur e-commerce basé sur Class::DBI et PostgreSQL, montrant son fonctionnement et son architecture. Il prévoit une intégration avec Handel et espère supporter d'autres langages que Perl (Ruby, PHP).

» http://logiclab.dk/

Writing applications with Qpsmtpd - Fred Moyer

Qpsmtp est un daemon SMTP écrit en Perl par Ask Bjørn Hansen, un genre de mod_perl du SMTP, et qui fournit une API orientée plugin facilitant l'écriture d'extensions. Fred commence par expliquer le format de configuration, puis montre comment écrire un plugin pour filtrer des mails sur leur sujet. Il explique ensuite le concept d'applications SMTP, par exemple pouvoir prendre des photos avec un téléphone mobile, les envoyer par mail où un plugin peut les extraire et les poster sur un site comme Craig Lists ou FLickr. Il donne enfin quelques conseils comme exécuter son application après tous les autres plugins et juste avant la queue, ou renvoyer un mail de réponse indiquant si le processus s'est bien déroulé ou non.

Barely Legal XXX Perl - Jos Boumans

Adam Kennedy a écrit le module Acme::BadExample pour montrer un exemple de code Perl qui est syntaxiquement correct mais impossible à exécuter. Il a promis un mètre vertical de bière à qui pourrait l'exécuter. Or, Jos aime vraiment la bière... Il explique d'abord le fonctionnement du code de Acme::BadExample, puis montre des astuces de syntaxe à peine légales (comment déclarer puis invoquer une fonction dont le nom n'est composé que de chiffres). Il montre aussi qu'on peut faire croire qu'un module est déjà chargé en alimentant le hachage %INC. Avec un rappel du fonctionnement de Acme::CodePolice et de Acme::FreedomFighter, il montre que l'on peut modifier dans une certaine mesure le fonctionnement des fonctions intrinsèques de Perl. Après un peu d'expérimentation, il a finalement réussi à faire fonctionner Acme::BadExample :-)

Module::Release - brian d foy

Le problème de brian est qu'il maintient beaucoup de modules et qu'il doit donc traiter régulièrement des problèmes remontés par les utilisateurs. brian explique que si déposer du code sur le CPAN est facile, bien le faire est plus difficile. C'est donc pour automatiser cette procédure qu'il a écrit Module::Release et la commande release qui va avec. Il lui suffit alors d'exécuter cette commande pour vérifier différents points de la distribution, exécuter les tests (disttest), déposer l'archive sur PAUSE puis sur SourceForge, tagguer la version dans le SCM et enfin l'annoncer publiquement. brian compte offrir un support au-delà des modules Perl par des plugins.

Seven Principles For Transforming Difficult Tasks Into Simple Ones - Michael Schwern

Michael expose dans sa présentation des principes, principalement de bon sens, dans le but de construire des systèmes (pas seulement informatiques) qui rendent les tâches plus faciles et comment en règle générale éviter de pousser les utilisateurs à faire des choses stupides. Il illustre ses propos avec des exemples sérieux et amusants : pour configurer son fuseau horaire, tzconfig sous Unix demande la zone géographique, ce qui est une interprétation, alors que sous Mac OS X, il suffit de cliquer son emplacement sur une carte du monde.

Le feedback est un point important des systèmes complexes : cp(1) n'en fournit aucun alors que scp(1) oui ; les informaticiens étaient habitués à détecter les problèmes des disques durs au bruit, mais maintenant ils sont silencieux ; et si on parle fort dans un téléphone mobile, c'est que ces derniers, contrairement aux téléphones fixes, ne fournissent pas le retour de sa propre voix.

Il recommande chaudement la lecture de The Design of Everyday things, dont il s'est inspiré pour préparer sa présentation.

CGI::Prototype - brian d foy

brian présente CGI::Prototype, un module qui permet d'éviter le travail mécanique d'analyse, de validation et de traitement des données reçues. Il s'inscrit dans la lignée des environnements MVC type Maypole et Catalyst, mais s'apparente plus à CGI::Application pour la légèreté. CGI::Prototype s'appuie principalement sur Class::DBI et XML pour le modèle et Template Toolkit ou XSLT pour la vue, chaque état du contrôleur se définissant par un espace de nom et un template. Les actions correspondent donc à des changements d'espace de noms. Un mode sûr est de plus disponible afin d'éviter toute erreur 500.

Lightning talks

Marcus Ramberg dirige les présentations éclairs. Gisle Aas explique comment ActiveState a contourné une limitation de Perl, qui est qu'il ne détecte son environnement qu'à la compilation et pas lors de son exécution, en introduisant le module ActivePerl::Config qui permet de surcharger les valeurs de %Config pour refléter le système hôte. Kjetil Kjernsmo prend le relais pour présenter des notions de web sémantique (principalement le RDF) et les modules Perl associés. Il enchaîne sur Formatter, une classe de base qui définit une API générique de formatage. Vient Dmitry Karasik qui parle de DBIx::Roles, encore un autre enrobage "simple" de DBI, puis de Regexp::Log::DateRange, qu'il a écrit pour trier des logs SMTP par date et sortir les lignes entre deux dates. Abigail vient encore râler sur l'incohérence de Perl concernant le message "%s (...) interpreted as function". Anton Berezin parle de POOP (Pointless Object Oriented Programming) et présente un hypothétique module pour "corriger" ça.

Vient enfin Audrey Tang qui présente ppencode, une présentation mise au point pour YAPC Asia 2006 et adaptée ici pour le NPW. C'est génialement délirant : l'unfactoring et comment forcer les programmeurs Perl à écrire du Ruby sont deux des points abordés avant d'en venir au programme ppencode lui-même. Regardez la présentation pour tous les détails ;-)

Closing - Salve J. Nielsen

Salve promet les vidéos ainsi que les slides des présentations. Il distribue quelques prix par tirage au sort. Tous les organisateurs posent pour une photo de groupe, et ils invitent les locaux à joindre Oslo.pm. Salve annonce enfin que le prochain Nordic Perl Workshop se tiendra à Copenhague et clôture NPW 2006.

Conclusion

Je tiens à remercier encore une fois Salve Nielsen et Trond Michelsen qui m'ont aidé à trouver un hôtel et m'ont même voituré à quelques reprises. Combinée au temps exceptionnel (il faisait aussi chaud à Oslo qu'à Antibes) et au très bon réseau de transports en commun de la ville, cette conférence, préparée avec soin, s'est déroulée de manière fort agréable et conviviale et donne clairement envie de venir participer à la prochaine édition.

Notes

  1. cf. London Perl Workshop 2005, GNU/Linux Magazine France n°79, http://articles.mongueurs.net/comptes-rendus/lpw-2005.html#h1.3

  2. Rappelons que c'est chez Microsoft R&D que travaille Simon Peyton Jones, auteur de GHC, l'interpréteur Haskell utilisé par Audrey Tang pour Pugs.

Liens

Auteur

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

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