lundi 19 octobre 2015

NetBeans Day Paris 2015

On the 16th of October was hold the first NetBeans Day event in France thanks to Geertjan Wielenga (@geertjanw), Nebrass Lamouchi (@NebrassLamouchi) and Paul Bernardi from Davidson who hosted the event.
It was great to meet people from such a vibrant community and to be able to meet in real life actual users of my WildFly plugin.

Thanks to Charles Sabourdin (@kanedafromparis) from the Paris JUG and Devoxx France the presentations where filmed and hopefully you might watch them shortly.
Geertjan and Eric Barboni (of NetCat fame) showed us how full of life is the NetBeans community and how the NetCat program works from the inside, giving the community a veto over a release of the IDE.
This famous NetCat program is the proud father of JBoss Tools - Community Acceptance Testing (CAT)
I was impressed by seeing how many teachers and universities use Netbeans to teach programming.

We saw various usage of Netbeans from the IDE tool with Nebrass showing us how to develop a Java EE Rest application with an Angular JS front end (ot bad he didin't use WildFly), to the various usages of the Netbeans platform.
Be aware people from Ivory Coast that thanks to NetBeans and Fabrice Irie the IRS is tracking you
You may also check Geertjan's blog entry on the event : NetBeans Day Paris in Tweets! (Geertjan's Blog)

vendredi 17 août 2012

Tester son code LDAP avec OpenDJ

Ceci est la reprise de l'article que j'ai écrit pour Silverpeas. Par rapport au commentaire de Fanf concernant les différentes possibilités de tester du code LDAP avec Unboundid pour un mode complètement en-mémoire, bien que je trouve cette possibilité élégante et sûrement plus performante il se trouve que nous utilisons OpenDJ en production et que je préfére utiliser un code de serveur de production (même en mode mémoire) pour mes tests plutôt qu'un bouchon, aussi performant soit-il.

A l'heure du TDD et du test unitaire il convient de pouvoir tester son code facilement et rapidement.
Si pour les bases de données relationnelles cela est bien documenté, ce n'est pas le cas des annuaires LDAP qui viennent d'un temps où les exigences en termes de tests étaient moindre.
Heureusement les serveurs LDAP Java libres et modernes commencent à prendre ces paramètres en compte.
Si ApacheDS propose un runner JUnit, j'ai eu quelques difficultés à le mettre en œuvre.
J'ai donc décidé d'utiliser OpenDJ qui peut être facilement embarqué et qui peut utiliser un stockage mémoire ce qui permet d'avoir des performances acceptables pour une exécution dans un mode test.
Cependant même si OpenDJ utilise un backend mémoire, sa configuration reste gérée par quelques fichiers. C'est pourquoi vous devrez embarquer quelques fichiers dans vos tests.

Avec JUnit nous avons deux possibilités pour gérer des ressources externes :

  • utiliser un runner particulier qui va gérer les références au serveur embarqué (c'est le choix fait par ApacheDS).
  • utiliser des règles (rules) pour démarrer et arrêter le serveur embarqué. C'est ce choix que nous avons fait en utilisant une ClassRule : c'est à dire une règle qui s'applique sur une variable static de la classe de test. Cette fonctionnalité est disponible depuis JUnit 4.10

Afin de faciliter la configuration du serveur LDAP pour le test nous allons définir une annotation nous servant à passer un certain nombre de paramètres, CreateLdapServer :

  • un fichier LDIF pour insérer des données dans l’annuaire
  • le chemin (en relatif ou absolu) vers le répertoire contenant la configuration minimale d'OpenDJ
  • l'identifiant du backend mémoire où seront mises les données de test
  • le DN de base associé à ce backend.

Maintenant il ne reste plus qu'à écrire notre règle qui doit implémenter l'interface org.junit.rules.TestRule.
Nous avons donc une méthode à réaliser :

@Override
public Statement apply(Statement stmnt, Description d) {
  CreateLdapServer annotation = d.getAnnotation(CreateLdapServer.class);
  if (annotation != null) {
    return statement(stmnt, annotation.serverHome(), annotation.ldifConfig(), annotation.
        ldifFile(), annotation.backendID(), annotation.baseDN());
  }
  return stmnt;
}

La première ligne recherche la présence de notre annotation CreateLdapServer et si celle si est présente alors nous allons encapsuler le test pour démarrer le serveur au chargement de la classe et l'arrêter à la fin des tests. C'est là le rôle de la méthode :

private Statement statement(final Statement stmnt, final String serverHome,
  final String ldifConfigFile, final String ldifFile, final String backendId,
  final String dn) {
  return new Statement() {
    @Override
    public void evaluate() throws Throwable {
      before();
      try {
        stmnt.evaluate();
      } finally {
        after();
      }
    }
    private void after() {
      stopLdapServer();
    }
    private void before() {
      try {
        startLdapServer(serverHome, ldifConfigFile);
        loadLdif(ldifFile, backendId, DN.decode(dn));
      } catch (Exception ex) {
        ex.printStackTrace();
        throw new RuntimeException("Could'nt start LDAP Server", ex);
      }
    }
  };
}

On voit qu'on crée un org.junit.Statement qui encapsule le test originel avec deux méthodes : before() appelée avant l'exécution du test, et after() une fois le test exécuté, quelque soit son résultat. Ces méthodes sont très simples :

  • before() va démarrer le serveur LDAP et y charger le contenu du fichier LDIF,
  • after() va se contenter d'arrêter le dit-serveur.


Les données étant chargées dans un backend mémoire nous n'avons pas besoin de les nettoyer avant d'arrêter le serveur. Pour l'implémentation du démarrage du serveur et son arrêt je vous laisse consulter le code.
Comment utiliser tout cela dans un test :
Tout d'abord vous devez utiliser l'annotation que nous venons de créer :

@CreateLdapServer(ldifConfig="opendj/config/config.ldif", serverHome="opendj", ldifFile="silverpeas-ldap.ldif")
public class LDAPDriverTest {
...

Maintenant, il nous faut déclarer notre règle :

@ClassRule
public static OpenDJRule ldapRule = new OpenDJRule();

Nous voilà donc presque prêts à tester. Il ne nous manque plus que les ressources nécessaires. Dans le cadre d'un projet Apache Maven il faut ajouter les dépendances vers les bibliothèques d'OpenDJ nécessaires :

    ...
    <dependency>
      <groupId>org.forgerock.opendj</groupId>
      <artifactId>opendj-server</artifactId>
     <version>2.4.5</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.sleepycat</groupId>
      <artifactId>je</artifactId>
      <version>1.4.7</version>
      <scope>test</scope>
    </dependency>
    ...


Les ressources nécessaires sont au nombre de deux :
  • le fichier ldif (silverpeas-ldap.ldif) que nous avons déclaré et qui va se retrouver dans src/test/resources
  • le répertoire opendj qui contient la configuration minimale et va lui aussi dans src/test/resources
Attention à ne pas filtrer ce répertoire opendj et tout ce qu'il contient avec Apache Maven.

Le code source et un exemple d'utilisation est disponible sur Github : https://github.com/ehsavoie/embedded-ldap

Merci à Ludovic Poitou pour son aide sur la configuration et l'utilisation OpenDJ.


dimanche 13 novembre 2011

Revue du livre Apache Maven 3 Cookbook

Ce nouveau livre sur Apache Maven se veut un ensemble de recettes pour mettre en œuvre Apache Maven 3 lorsque l'on souhaite démarrer un projet.
Il se compose de 9 chapitres :
  1. Une introduction aux concepts et à l'utilisation d'Apache Maven 3

    Ce premier chapitre est une introduction 'classique' à la mise en place et la configuration d'Apache Maven 3 sur un poste de développement.

  2. Les techniques d’ingénierie logicielle

    Ce chapitre parle des bonnes pratiques de développement d'un logiciel et de l'utilisation de Maven dans un tel contexte. On y parle de TDD, de qualité de code et de gestion des dépendances et comment Apache Maven facilite cette mise en œuvre. On pourra regretter le choix de PMD pour la qualité logicielle plutôt que d’un outil plus complet comme Sonar.

  3. Les principes agiles de développement et de collaboration

    L'auteur explique ici comment intégrer Apache Maven dans votre organisation avec un gestionnaire de dépôts, un serveur d'intégration continue, ... Bref comment tirer un profit maximum des outils autour de Maven pour développer vos logiciels.

  4. Rapports et documentationNous découvrons l'usage des taches de reporting d'Apache Maven pour produire un site statique, de la Javadoc et plusieurs autres rapports. On pourra regretter le fait que les POM montrés utilisent la vieille forme de configuration d'Apache Maven 2.x et non ce qui est spécifique à Apache Maven 3.

  5. Développement Java avec Maven

    On voit ici comment produire un squelette pour chaque type de projet Java d'entreprise :

    • application Web et comment l'exécuter avec Jetty
    • pour J2EE : archetype
    • pour Spring : on construit un vrai projet Spring
    • pour Hibernate : utilisation du hibernate3-maven-plugin
    • Seam avec Seam Forge : projet Maven de generation de code

  6. Développement Google avec Maven

    C'est pour moi le chapitre le plus intéressant car on y voit comment Apache Maven permet de développer dans le monde des technologies Google : Android, GWT et GAE (Google App Engine).
    Android : comment configurer son environnement pour développer et déployer une application Android.
    GWT : Là encore comment configurer son poste pour créer et tester (que ça soit avec l'outil de test intégrer ou Selenium) une application web GWT.
    GAE : comment utiliser la plate forme de cloud de Google et les différents archétypes disponibles pour construire vos applications.

  7. Scala, Groovy et Flex

    Si pour Scala il existe l'outil Simple Build Tool, celui-ci est destiné aux projets Scala purs, si vous mélangez Scala et Java utilisez Maven et ses archétypes.
    Groovy fournit un archétype et un plugin gmaven qui permet aussi l'exécution des scripts Groovy et l'utilisation de la console et du shell Groovy.
    Enfin pour le troisième langage, Flex, nous découvrons flexmojo qui permet de produire la structure d'un projet Flex type ainsi que la documentation de ce plugin.

  8. Intégration dans un EDI

    Les EDI modernes (Netbeans, Elipse, Intellij IDEA) offrent une excellente intégration d'Apache Maven. Chaque EDI est présenté ainsi qu e sa manière d'intégrer Apache Maven et d'importer un projet Apache Maven dans l'outil.

  9. Étendre Apache Maven avec vos plugins

    Apache Maven est extensible au moyen de plugins. Nous voyons ici comment créer un plugin en Java mais aussi les autres manières d'en faire en utilisant des scripts Apache Ant ou Ruby avec JRuby.

En conclusion ce livre apporte plusieurs détails importants, cependant s'il permet une rapide mise en œuvre d'Apache Maven (et c'est bien là son but affiché) un débutant devrait s'orienter vers un livre offrant une vision plus complète pour mieux en maîtriser les concepts avant d'enrichir sa bibliothèque avec cet ouvrage.

mardi 27 avril 2010

Soirée Jersey et Atmosphere

Lundi soir c'était la 3ème soirée de l'AlpesJug et nous avons eu la chance d'avoir Paul Sandoz, spec leader pour JAX-RS et développeur de Jersey.

Après une légère introduction aux principes de REST qui permettent de créer des services :
  • agregeables
  • faiblement couplés
  • scalables
  • simples
  • apportant des fonctionnalités insoupçonnées
JAX-RS (et donc Jersey) apporte une approche par annotation pour l'exposition REST des services. C'est à ce moment là que j'ai bien cru revenir à la présentation Play! framework. Cependant les fichiers de configuration sont remplacés par des annotations et donc on profite de l'IDE pour coder.
Là encore le développeur n'est pas oublié et on obtient des traces très intéressantes sur le routage dans les headers des réponses HTTP de Jersey (si le mode trace est activé) !!!
Paul avance le long de ses démos nous présentant ensuite Jersey MVC, ce qui permet d'aller vers une application web classique (un futur remplacement de Spring MVC ? ;) .
Courageux, Paul se lance dans une démonstration du framework Atmosphere, qui permet la gestion les connexions HTTP persistantes et le véritable push Ajax. Les démos venant de Jean-François Arcand, tout a bien fonctionné mais Paul n'a pas pu être aussi libre qu'il l'avait été pour les démos Jersey.


Enfin, Paul nous a présenté Jersey couplé à différents moteurs de template basés sur Scala (grâce à Scalate) et là la comparaison avec play! est devenue plus qu'évidente. J'ai vraiment l'impression qu'on peut voir dans Jersey un sérieux concurrent aux frameworks web, tout en conservant une grande souplesse (là où Play! a fait le choix tout à fait respectable de définir une pile complète) en termes de frameworks (JEE6, mais d'autres sont aussi possibles).

Pour récupérer les slides et le code des démonstrations.

mercredi 20 janvier 2010

Coder c'est beau

J'ai voulu m'amuser à voir tout le travail que nous avons effectué chez Silverpeas depuis que nous avons décidé d'ouvrir le code.
Pour réaliser cette vidéo j'ai utilisé gource et ffmeg pour encoder le tout en h264. C'est un premier jet mais ça permet de voir qu'ouvrir un logiciel ce n'est pas si évident.

Silverpeas Gource from Emmanuel Hugonnet on Vimeo.

vendredi 4 décembre 2009

Ca bouge dans les Alpes

Et oui ça bouge dans le monde Java de la région grenobloise. Tout d'abord une annonce fracassante : l'AlpesJug est né. Et oui Grenoble a de nouveau son Java User Group. Les réunions mensuelles vont commencer dès le 22/02/2010 avec la venue d'Antonio Goncalves pour nous présenter JEE6 et le 29/03/2010 Arnaud Héritier célèbre dans toute la communauté Maven pour son livre en français avec Nicolas de Loof viendra nous parler de Maven 3.


Toujours à propos de Maven, la traduction de Maven - The definitive guide en français est maintenant achevée et nous (Erwan et moi-même) attendons les retours de vos relectures. Pour vos remarques et vos corrections, passez par Github et pour lire soit le pdf ou la version HTML, une seule adresse : http://www.maven-definitive-guide.fr/

mercredi 25 novembre 2009

Soigner sa schizophrénie

Voici la présentation que nous avons donnée avec Hervé Lourdin d'Octo lors de l'Agile Tour 2009 à Grenoble:


Pour télécharger le flash : A ouvrir dans un navigateur

lundi 26 octobre 2009

Agile Tour 2009 c'est fini (enfin pour moi)

Cette année j'ai quitté la vallée grenobloise pour m'exporter chez nos voisins genevois et valentinois. C'est donc à 3 sessions de l'Agile Tour 2009 auxquelles j'ai pu participer (avec 2 conférences à chaque fois).
J'ai commencé par l'étape de Genève où j'ai donné dans la schizophrénie avec Rémy, avant que nous nous lancions dans le Coding Dojo sur l'ATDD avec cuke4duke. C'est là que nous nous sommes rendu-compte qu'une heure c'est vraiment très court pour un dojo. Pour les sessions suivantes nous avons donc essayé d'optimiser la partie codage (que nos amis suisses se rassurent la session de Grenoble a été filmée et j'espère pouvoir la mettre en ligne rapidement). J'ai rapidement épuisé mes autocollants ARxTA durant ces sessions mais j'ai gagné un bracelet "TestObsessed". J'ai vraiment apprécié l'ambiance de cette étape (et surtout la criée des orateurs pour laquelle je pousserai dorénavant à Grenoble) qui s'est terminée autour d'un verre :)

C'est par un verre qu'a d'ailleurs commencé l'étape grenobloise. La veille au soir nous avons pu profiter de nos deux guest speakers Elisabeth Hendrickson et Henrik Kniberg. Une soirée très sympathique où les stars ne se prenaient pas pour des stars justement, avec des discussions très ouvertes et variées.


Le lendemain ce fut la foule avec plus de 300 personnes (ce qui nous a valu un article dans le Dauphiné Libéré).

Enfin jeudi tout s'est terminé à Valence avec une organisation au poil et des salles là encore combles :o)
Je remercie tous les organisateurs pour ces conférences de qualité . Il me reste un an pour préparer de nouveaux sujets ...
En attendant voici mes slides :







Le code source sur Github.

Quelques liens :
Emmanuel Etasse.
Miguel Moquillon.
Alexandre Boutin.

mercredi 30 septembre 2009

Maven, vers un guide ultime


Cela fait maintenant quelques mois j'avais lancé l'idée de traduire le livre sous Commons License Maven - The definitive guide écrit par Sonatype et publier chez O'Reilly.
Ce travail avance vite grâce à mes deux co-traducteurs de choc que sont Erwan Alliaume de chez Xebia et Jérôme Van Der Linden de chez Octo Technology.
Nous venons de finir de traduire la première partie du livre, et nous lançons donc une première relecture publique :

Pour démarrer :


N’hésitez pas à contacter l’un des membres de l’équipe pour toute question (mon adresse email : emmanuel DOT hugonnet AT gmail.com).

mercredi 23 septembre 2009

AgileCamp à Grenoble


Pour redémarrer l'année des réunions mensuelles du CARA, Rémy Sanlaville et moi-même vous proposons de vivre l'expérience du premier AgileCamp à Grenoble, qui sera animé par Luc Bizeul.
Lors de ce BarCamp nous pourrons partager au cours de discussions libres nos idées et nos dernières nouvelles autour des méthodes Agiles.
La soirée est libre, ouverte à tous et ne demande simplement qu'une inscription car le nombre de place est limitée.

Qu'est-ce qu'un BarCamp ? Quand cela se passera-t-il ? Comment s'inscrire ?...
Toutes les réponses à vos questions sur la page web dédiée à cet évènement.

Rendez-vous donc mardi 29 septembre 2009 à l'ENSIMAG.

vendredi 10 juillet 2009

Récursivité

Hier je regardais tranquillement dans mon TER la fin de la vidéo de Brian Marick à AgileRoots. Je n'avais pu voir que les premières minutes ayant été trop pris par l'USI.
Quelle ne fût pas ma surprise en voyant les 5 dernières minutes .....


Afficher une image d'une présentation qui cite mon blog sur mon blog m'a fait prendre conscience que j'étais devenu un vrai informaticien ;o)

Voici la vidéo complète que je vous engage à regarder.

jeudi 9 juillet 2009

Innovations Techniques Au Service Du Test De Recette Automatisé

Voici la présentation que nous avons faite Hervé et moi-même lors de l'USI 2009:
Bon visionnage :o)




Les slides:

mercredi 8 juillet 2009

Maven en couleurs


J'en avais marre de voir l'affreuse trace de Maven en noir et blanc lors de son exécution. Surtout après avoir testé mon application avec Cucumber. Je me suis donc lancé dans l'immense tâche de colorier les traces de Maven.
Pour cela j'ai utilisé les commandes ANSI supportées par les pseudo-terminaux X et j'ai fait un joli patch. Par contre je ne sais pas comment le faire marcher sous Windows (peut-être avec Cygwin).
En attendant que tout soit intégré dans Maven je vous propose de télécharger la dernière version de Maven (2.2.0) en mode colorié ici:
apache-maven-2.2.0-bin.tar.gz
apache-maven-2.2.0-bin.tar.bz2
apache-maven-2.2.0-bin.zip.

Il suffit d'exécuter la commande avec -Dcolorized.console=true.
Ce qui donne par exemple:
mvn -Dcolorized.console=true clean install
Amusez-vous bien :o)




Pour changer les couleurs il suffit d'éditer dans maven-2.2.0-uber.jar:
org/codehaus/plexus/logging/console/default.properties

lundi 15 juin 2009

It's evolution baby, Do the revolution


Une nouvelle cellule Artisanal Retro-Futurism crossed with Team-Scale Anarcho-Syndicalismvient d'ouvrir dans les Alpes françaises.
Je tiens à remercier Brian Marick, un des créateurs du Manifeste Agile,pour ses autocollants et cette nouvelle forme d'Agilité.
Voici donc la traduction: ARxTA
On ne pouvait terminer cette lecture sans un produit qui n'est pas loin de rassembler toutes ecs qualités (jusqu'à la couleur de l'emballage ;o) )

samedi 30 mai 2009

Xpday 2009 Paris 2ème Jour

La matinée commence par une série de lightning talks sur les outils logiciels.



J'assiste enfin à une présentation de Sonar (si Simon lit ça je vais me faire tuer :oP ) et je suis convaincu par l'outil. Vivement que Silverpeas soit entièrement sous Maven pour que je puisse le sonariser et que l'on rentre dans un cercle vertueux d'amélioration. J'y pense il faudra que je leur demande s'il y a une mesure Crap4J.
La présentation suivante se fait sur le monde .net, pas sectaire je reste et je suis impressionné par la qualité des outils présentés par MCNext.
Comme d'habitude Microsoft fournit un outil tout intégré qui fait tout, coute les yeux de la tête et rame ;o) (j'ai pas pu m'en empêcher). Ndepend est vraiment très bien fait, je comprends mieux se qu'a voulu faire Octo avec son Xdepend.

Enfin on termine par une présentation en mode fire in da house de Pyxis et de leur outil pour les tests d'acceptance GreenPepper. La discussion post-présentation est fort intéressante, j'en profite pour faire remonter mes remarques. Il va falloir que je regarde d'un peu plus près la partie opensource de ce moteur.

J'intègre l'atelier sur les Styles sociaux en action où je ne reste pas le modèle me semblant très proche de celui de HBI que nous avait présenté Marc Vilcot à la réunion du CARA. Je vais donc voir une présentation de Lean où on nous présente un retour d'expérience de Valtech sur la mise en pratique des outils Lean: Value Stream Mapping, les 5 pourquoi, les graphes Ishikawa et Paruto. Intéressant, même si j'en aurais aimé qu'on passe plus de temps sur les retours plutôt que sur la classique introduction aux concepts Lean. J'apprends que Mary Poppendieck va sortir son troisième livre cet automne.

Après-midi chargé car on a deux présentations avec Rémy (même si pour la dernière je n'interviens que pour les questions finales). Je passe donc tout mon temps dans la Salle Belvédère.
Eric Lefèvre-Ardant nous présente une introduction au TDD pour les managers, sous Excel. C'est bien mené, et le duo fonctionne bien même si on peut regretter l'usage d'un outil propriétaire ;o) Mais bon, c'est un truc de managers. Rien de bien neuf pour un développeur comme moi si ce n'est un vocabulaire et une idée à creuser pour convaincre et évangéliser les managers qui sont souvent un frein aux pratiques.


Nous voilà donc avec une toute petite demi-heure pour présenter ce qu'on essaye de faire aux coding dojos de Grenoble. Une demi-heure c'est court, aussi on met aux votes les trois points qu'on a préparés histoire de répondre le mieux à notre audience. C'est vraiment un format intéressant lorsqu'on a peur de manquer de temps, ça permet d'apporter le maximum de valeur.
Rémy poursuit par le retour d'expérience d'Orange sur la mise en place de son usine logicielle. J'en profite pour prendre quelques photos. Une fois qu'il a terminé sa présentation, je réponds aux questions de l'assistance pendant qu'il reprend son souffle.

On laisse alors la plac à Thierry Cros et Jean-Marie Damas pour conclure ces xpday pour un manifeste d'une informatique hédoniste et responsable. Jean-Marie nous présente cette recherche du plaisir, et Thierry apporte sa pierre à chaque étape en nous exposant comment en assumant nos responsabilités et uniquement celles-ci on arrive à respecter cette recherche du plaisir. L'épisode de Challenger est le point d'orgue de cette notion de responsabilité, puisque l'ingénieur s'est retrouvé à changer de casquette pour devenir manager le temps d'une prise de décision qui incombait à ses responsables.

Les xpday se terminent et nous courrons prendre nos trains respectifs. Le mien est quasiment vide (grève SNCF oblige) et je rentre heureux mais vidé de ces xpdays. Vivement l'année prochaine et ce coup-ci je prépare mon programme à l'avance ;o) surtout que maintenant je connais les speakers.

Xpday Paris 2009 - 1er jour

Enfin un peu de repos, …
La première série de conférences s'achève avec les XpDay 2009.
Voici donc mon retour sur l'ensemble de ces deux journées.
Nous avons eu la chance de lancer le bal avec notre présentation "Soigner sa schizophrénie MOA/MOE: voyage au pays des spécifications exécutables".

La salle était pleine pour cette session qui du point de vue orateurs s'est très bien déroulée. Le ROTI laisse à penser que le public était lui aussi satisfait de notre prestation. Je vous laisse lire les retours trouvés sur différents blogs:

Petite remarque, nous avons présenté FitNesse/SLIM lors de notre présentation pour l'aspect graphique de FitNesse, cependant ce n'était pas une préconisation. D'ailleurs personnellement j'ai été séduit par JBehave2 pour Java, et Cucumber pour Ruby qui présentent la même approche et (du point de vue développeur) sont plus intuitifs. Cependant il leur manque l'éditeur sexy et collaboratif.
Voici nos slides :


Nous avons ensuite laissé la main à un retour d'expérience Valtech notamment autour de FitNesse, qui venait corroborer notre présentation :o).
Je suis ensuite allé voir la présentation de Dominic Williams sur le développement hédoniste où il faisait le parallèle entre l'école de pensée hédoniste et matérialiste et le développement agile.

On parle Démocrite, Epicure, Nietzsche par opposition à Platon et sa vision transcendantale. La présentation est très dynamique, alternant vidéo de Matrix, tableaux classiques (Poussin, Raphael, …) et citations de Deleuze. Tout s'articule autour des quatre principes du manifeste Agile.
1- Le matérialisme
Un logiciel qui s'exécute plutôt que la documentation.
La documentation est platonicienne, elle fait partie du monde des idées, de la recherche d'un idéal. Le logiciel qui fonctionne (plus ou moins) est matérialiste. Si pour Platon nous sommes encore dans la Caverne, la production de livrables qui tournent nous engagent plutôt à faire usage de nos sens et de notre perception directe de la réalité.
2- Le Jardin d'Epicure
Epicure et son jardin égalitariste s'oppose là encore à l'académie platonicienne. Il faut rester ouvert, accepter tout le monde pour créer une communauté. On en choisit les membres par élection et éviction. L'anecdote autour des cornalines (bague portant l'effigie d'Epicure) me fait penser à Unclebob et son Green Band pour un code propre.
3- Dieu
Pour bien développer il faut développer heureux et prendre du plaisir.
Il faut tuer le Bouddha (ou Dieu, c'est selon) pour se libérer de ses chaines et devenir enfin libre et donc heureux (ce qui correspond d'ailleurs pour moi au passage au niveau Compétent du modèle de Dreyfus, lorsqu'on commence à prendre en autonomie). Nietzsche et son éternel retour, le fait de ne choisir d'agir que pour avoir vécu une vie où on ne changerait rien de ses choix me fait penser aux rétrospectives, on élimine par ce mode de pensée (que dois je garder de mes actions dont je suis vraiment heureux du résultat pour moi) les actes commis sous la pression social, religieuse, … On s'améliore personnellement et on se libère ainsi. Il faut tuer le Bouddha pour se libérer et pouvoir assumer et prendre plaisir dans chacun de ses actes. Cet appel anarchiste me fait penser à Brai Marick et son AR⊗TA (Artisanal Retro-Futurism crossed with Team-Scale Anarcho-Syndicalism).
4- Le Plaisir
Pour atteindre le plaisir il faut surtout éviter le déplaisir: aussi pour éviter les bugs qui nous pourrissent la vie on va suivre un cycle incrémental. Bref en bon geek on va suivre une Hacker Ethic (de Pekka Himanen) et prendre plaisir à ce qu'on fait.

Sur ces bonnes paroles ma première matinée se termine.

L'après-midi commence avec un retour d'expérience de Sébastien Sacard sur son rôle en tant que Product Owner.
Suite à un problème technique il démarre un peu tard et se retrouve donc à devoir avancer rapidement dans ses slides (ce qui est dommage, surtout quand on sait que les retours d'expérience ). Si on doit retenir une chose de cette présentation c'est qu'un bon Product Owner doit avoir un passé technique pour ne pas s'en laisser trop conter par l'équipe ;o). Ce rôle, que l'on qualifie souvent de central dans la démarche Scrum, est relativement mal défini et les formations sont peu nombreuses ou mal adaptées d'où l'importance de l'expérience. Il nous explique comment il conçoit son rôle de diplomate envers le Business Owner dont il faut freiner les ardeurs tout en lui donnant de la visibilité au travers d'une feuille de route sur les deux ou trois itérations à suivre. Puis son rôle de leader pour l'équipe à qui il doit apporter et conserver la vision du produit tout en la protégeant pour ne pas que l'enthousiasme s'effrite.
Il nous parle de sa gestion des backlogs: un backlog produit où on retrouve les exigences fonctionnelles et un backlog technique pour les exigences non fonctionnelles.
Hélas le temps lui manque et on ne peut lui poser de question :o(

La présentation suivante s'enchaine pour nous parler de TDD et de Mock.

Le framework de moking choisi est EasyMock (dommage j'aurai préféré Mockito). Même les intervenants maitrisent excellemment Eclipse et même si tout s'enchaine parfaitement, on assiste plus à une introduction au TDD qu'à une vraie discussion sur le mocking. Les mocks n'arrivent d'ailleurs qu'à la fin de la présentation, rien n'est dit sur les bonnes pratiques d'utilisation de ceux-ci, sur la différence mock/stub. Je reste donc sur ma faim :o((

Une fois la pause passée je vais voir la présentation d'Arnaud Bailly sur Javascript. Une vraie présentation de geek, purement géniale et très très agréable à suivre. Dans sa rétrospective il indique qu'il pense avoir été trop vite et qu'il a perdu du monde en route. Moi j'ai trouvé ça plus que génial, j'en aurais bien pris encore quelques heures alors que pourtant Javascript et moi on est fâché de longue date (qui parle encore de Netscape/ Internet Explorer 4).
J'avais lu quelques articles sur les langages à prototype mais après cette présentation tout s'éclaire :o). Je n'aime toujours pas les langages à typage de canard (on ne se refait pas) mais j'ai vraiment apprécié la création de ce simple DSL de validation de formulaire. Arnaud revient !!!!
Pour la démo et les slides c'est ici.
J'apprends un peu plus tard que j'ai raté une de ses présentations le matin même, je suis trop déçu o:(( j'ai perdu trop de temps sur ce programme où les intervenants n'étaient pas nommés pas.

La journée se termine par une introduction au coaching Agile. C'est dynamique, sympathique et on nous présente bien le rôle de coach mais je regrette encore Arnaud et son Emacs magique ;o).

vendredi 22 mai 2009

Behaviour Driven Dojo

Mercredi dernier nous avons commencé à mettre en pratique le Behaviour Driven Development lors de notre Coding Dojo.
Ce dojo faisait suite à la présentation que nous avions faite Rémy et moi lors du précédent dojo:

Après un atelier de spécification avec notre 'Product Owner' Emmanuel, nous nous sommes séparés en plusieurs groupes pour réaliser notre jeu du pendu.
pour ma part j'ai rejoins le monde Ruby sous Netbeans avec Cucumber.
Voici mes codisciples alors que Sébastien Nicouleaud nous montre comment utiliser Cucumber :

Mes vagues connaissances de Ruby étaient amplement suffisantes pour suivre et j'ai trouvé Cucumber très simple d'utilisation. Il est vraiment très proche de JBehave et j'aime vraiment cette idée d'écrire les scénarii dans un format texte avec le trigramme: Given / When / Then.
Avec Cucumber on peut même le faire en français ;o) (pour JBehave ça ne doit pas être compliqué à ajouter).
J'attends avec impatience de reprendre ce dojo, car ayant dû partir avant la fin:o(, j'ai envie de mettre la main à la pate.
Si Ruby n'est pas votre tasse de thé, Bruno Orsier a lui participé au groupe .Net et NBehave, et donne ses conseils et ses retours sur son blog.

vendredi 15 mai 2009

Cerveau Gauche / Cerveau Droit


Je viens de terminer a "Whole New Mind" de Daniel Pink (oui le même qui était derrière le manga agile).
Dans ce livre il nou explique que si la révolution industrielle a été possible grâce à notre 'cerveau gauche' et sa logique, une nouvelle ère arrive: l'age conceptuel durant lequel il va nous falloir apprendre à utiliser notre cerveau droit en combinaison avec notre cerveau gauche.
Pour lui l'automatisation (par l'ordinateur) et la mondialisation (Chine, Inde) rendent l'aspect cerveau gauche caduque: le raisonnement, l'analyse et la logique pure peuvent être ou automatisés ou délocalisés. Il faut donc apporter du sens, de l'émotion, de l'empathie à nos produits / travaux et donc il faut faire pénétrer le cerveau droit dans le monde du travail exclusivement tourné vers notre cortex gauche.
Il présente les six nouveaux sens qu'il va nous falloir développer dans ce nouvel age:
  1. le Design
  2. l'histoire (à raconter)
  3. la Symphonie
  4. l'Empathie
  5. le Jeu
  6. le Sens

Chaque point est décrit puis une séri d'exercices, des lectures et de compléments est fournie pour pouvoir le travailler.
Je n'ai pu m'empêcher de penser à l'agilit (oui ça me travaille en ce moment ce sujet ;o) )lorsque j'ai lu la partie histoire qui ressemble à s'y méprendre à une introduction aux histoires d'utilisateur.
De même qund il explique le rôle du jeu et de l'amusement dans l'apprentissage je pense à nos dojos de code où on essaye de se faire plaisir en codant ce qu'on a rarement la possibilité de faire dans un contexte professionnel.
Bref un bon moment de lecture....

lundi 27 avril 2009

Et une de plus


Je vais enfin pouvoir rencontrer les membres du JUG lyonnais le 19 mai, puisque je vais aller y parler de Java Content Repository (JSR-170) et plus précisément de Jackrabbit que j'ai mis en œuvre dans le cadre de notre produit Silverpeas.
En attendant que Silverpeas soit enfin OpenSource (et on y travaille dur) et que l'on puisse complètement migrer notre solution sur cette API, je vous propose de venir en discuter à l'INSA de Lyon le 19 mai.

lundi 20 avril 2009

Oracle rachète Sun


Tout est dit dans le titre, maintenant il ne reste plus qu'à attendre pour compter les pots cassés :o(
Que vont devenir la JVM de Sun (ou Jrockit), Glassfish (ou Bea Weblogic), MySQL, Netbeans (ou JDeveloper) ? Je ne sais pas si IBM aurait fait mieux mais c'est clair que j'aurai du mal à voir disparaitre tous ces produits qui m'ont suivi tout au long de ma carrière de développeur, parfois même avant que Sun ne les rachète.
C'est avec un brin de nostalgie et de tristesse que je vois disparaitre l'un des cavaliers blancs. Une société vraiment orientée technique, c'est surement pour cela que leurs produits me plaisaient autant.
Bye bye Sun, finalement ce n'est pas Eclipse (et IBM) qui auront eu raison de toi :o((