17 septembre 2012

JugSummerCamp 2012

Sauf à avoir déconnecté Twitter pendant 3 jours vous n'avez pas pu passer à côté : vendredi avait lieu la troisième édition du JugSummerCamp.

Le camp commence dès le jeudi soir, au gite que les organisateur ont loués pour les speakers. L'occasion de se retrouver autour d'une bonne table, de mieux faire connaissance, et de passer un bon moment avant d'attaquer la journée de conférence. L'occasion aussi, après quelques verres, de se faire coller un gage pour le keynote du lendemain :  caser "catadioptre" et "funiculaire" dans le discours d'ouverture :-/

Le vendredi matin, on rejoint l'équipe Serli au commande de cette conférence qui peaufine les derniers détails. On retrouve de nombreuses têtes connues, habituées de ce rendez-vous devenu incontournable. Après un café (lyophilisé) on attaque une grosse journée par la keynote de bienvenue.

J'ai eu l'honneur d'ouvrir ce JugSummerCamp 2012. L'exercice "keynote" est particulièrement délicat si on veut faire un sujet sérieux, et je suis resté sec pendant un bon moment, jusqu'à tomber sur ce tweet. C'était donc décidé, les cast-codeurs seront bien présents au JugSummerCamp, pour une session de "muppet-show" 


Pas trop de fond dans ma présentation donc, mais au moins on a bien rigolé et le public a apprécié ce moment de détente avant d'attaquer des sujets plus sérieux.

J'ai suivi la session d'Alexis Moussine-Pouchkine et Martin Görner sur le développement d'une application Google AppEngine en HTML5. En deux fois 30 minutes, et en choisissant quelques sujets précis utilisés dans cette application, ils ont réussi à donner une idée précise du développement et de l'animation en HTML5. Accessoirement, on pouvait gagner une place à Devoxx en se servant de leur application ;)

Nicolas Martignole présentait ensuite une présentation sans play (enfin, presque). Il s'agissait pour lui de présenter la société ZapTravel qu'il a rejoint, les enjeux techniques à relever pour affronter un marché très concurrentiel, et les options qu'ils avaient retenus. On sent qu'il s'éclate sur ce boulot, tant mieux !

Mathieu Ancelin enchainait avec un Quickie Play! permettant à la salle de jouer à une space battle. Développé en Play/Akka/Canvas ce petit exercice de style était l'occasion de mettre en pratique ces technos et de nous en faire un retour.

Un passage par l'excellent buffet, délaissant les quickies à venir pour tenter de chopper le wifi - capricieux cette année - nécessaire pour ma session Cloud de début d'après-midi. Pour une fois (sic) je suis content d'être chez Orange, ce qui m'a permis de chopper le wifi de l'opérateur.

Ma session consistait à montrer en quoi le Cloud est une libération pour les développeur pleins d'idées. J'ai donc suggéré à la salle de "niquer Google" en développant un moteur de recherche concurrent. Partant from scratch, en live-coding (avec une anti-sèche) j'ai donc crée une application hébergée sur CloudBees, un index WebSolr, marié les deux dans une IHM générée sur un générateur de template de site. Le but était de montrer que ces offres Cloud permettent de tester une idée en grandeur nature en quelques heures, sans contraintes ni coûts significatifs, et de la laisser murir ou de l'abandonner rapidement. Autrement dit, l'agilité dont rêvent les grosse boites, crispées sur leurs demandes de budgets. 

David Gageot proposait dans la session suivante un pur live-refactoring 100% code dont il a le secret. Mes quelques lignes de code paraissaient bien ridicules à côté, et il ne s'est pas privé de lancer quelques gentilles piques. Le but de David était de nous montrer la démarche et l'esprit général pour attaquer du code legacy : construire une suite de test systématique plutôt que de chercher à valider la spec (dont on ne sait pas si elle est à jour), chercher les symétries, faire confiance à l'IDE pour tous les refactoring simples afin d'éviter les surprises. En 30 minutes, le code immonde du début est recomposé de manière compréhensible et bien structurée, avec un peu de délégation via Lombok parce que c'est super pratique :)

Laurent Huet proposant ensuite une session "hardware" avec la programmation sur BeagleBone. Petit soucis, la carte a cramé juste avant de partir à la Rochelle, l'occasion de montrer que le warning du slide #3 "attention aux tensions" n'est pas inutile. Qu'à cela ne tienne, Laurent à réussi à équiper une raspberry Pi pour faire tournée sa démo, et allumer une LED depuis sa console bash devant un public émerveillé, ou effrayé (selon) devant la possibilité de faire interagir du soft avec du hard. Beaucoup étaient venus avec des idées de pilotage de leurs volets-roulants / aquarium / etc et sont repartis avec des idées un peu plus réalistes :) Quoi qu'il en soit, un sujet très sympa, que je n'avais pas pu suivre au BreizhCamp, et qui change des présentations de frameworks ultra-abstraits.

Dernier sujet, une présentation de Programmatoo Audrey Neveu et Ludovic Borie. Pourquoi attendre la Fac pour découvrir la programmation ? Ici on prend des enfants qui savent tout juste lire (ou pas, selon les outils) et on leur met entre les mains des outils adaptés. Les résultats sont étonnants, comme toujours avec les gosses. Les outils sont nombreux, et on ne parlait ici que de ceux qui était francisés. N'hésitez pas à les contacter pour organiser un Coding gouter :)

La journée se termine autour d'une bière, puis d'un bar (le poisson), puis d'une autre bière... pour finir dans une ambiance night-club avant de retourner au gite et de se rendre compte ... qu'on a pas le code de la porte. David a donc mis en place un refactoring complet de la porte et trouvé le code en testant toutes les combinaisons impliquant les touches les plus usées ! Comme quoi, faut toujours avoir un David sur soi.

A bientôt pour tout ceux que je n'ai pas pu saluer, un énorme MERCI aux organisateurs, et rendez-vous l'an prochain (avec les vrais castcodeurs cette fois) !


11 septembre 2012

maven settings et sécurité apparente

Maven 3 permet de crypter les mots de passe serveurs stockés dans votre fichier settings.xml. C'est un net progrès pour ce fichier qui peut vite contenir tous les sésames de votre infrastructure. Cependant beaucoup (trop ?) de personnes semblent se contenter de la sécurité apparente de voir leur mot de passe remplacé par un obscur "{ABCDEF1234567890ABCDEF1234567890=}".

Un indice : Maven 3 est en mesure de retrouver vos mots de passe, sans vous demander quoi que ce soit : le cryptage est donc réversible sans votre intervention. Si vous utilisez un client ssh vous vous souvenez peut-être avoir mis en place un agent qui "cache" votre passphrase pour ne pas avoir à la retaper à chaque commande. Bien pratique, l'effet pervers de ces outils est qu'on finit par oublier où se situe la réelle sécurité dans le système.

Petit rappel donc : Maven utilise un mot de passe maître,  stocké dans votre settings-security.xml, et lui même cryptée pour ne pas révéler de manière trop évidente cette info capitale. Cette clé sert pour crypter vos autres mots de passes. Si cette clé est inaccessible à un malveillant, vous êtes en sécurité (dans la limite du raisonnable, comme tout système cryptographique l'attaquant très bien armé et très patient pourra passer au travers - il peut aussi vous couper les orteils un a un pour vous faire révéler votre mot de passe c'est souvent plus simple)

On se retrouve donc avec deux fichiers bien obscurs qui donne un sentiment de sécurité. Seulement que ce passe t-il si un vilain pas bô peut accéder à ces deux fichiers ? Disons qu'il passe 2 minutes à regarder le code de maven et qu'il essaye un truc du genre :

PlexusCipher _cipher = new DefaultPlexusCipher();
String bare = _cipher.unDecorate( "{...=}" );
String master = _cipher.decryptDecorated("{...=}", SYSTEM_PROPERTY_SEC_LOCATION);
System.out.println( _cipher.decrypt(bare, master) );


Ne m'accusez pas de révéler une faille de sécurité, c'est vraiment à la portée du premier stagiaire venu de retrouver ce fragment de code à partir du code source Maven :P

La documentation de Maven vous le dit très clairement, le fichier settings-security.xml est la clé du système et doit donc être traité avec tous les égards. La solution recommandée consiste à renvoyer, dans le settings-security.xml par défaut, vers un autre fichier que vous placez sur une clé USB, disque réseau, ou tout autre ressource que vous pouvez "débrancher" en votre absence. On en revient donc au final à la bonne vielle sécurité physique. 

La réelle sécurisation proposée par Maven consiste donc à déplacer le problème de sécurité des mots de passe. En fait, si on considère le scénario où vous placez votre fichier sensibles sur une clé USB à reconnaissance d'empreinte digitale,  une simple redirection du fichier settings.xml donnerait une sécurité globalement équivalente. La sécurisation proposée par maven 3 est donc :

  1. d'éviter que vos mots de passe apparaissent en clair, par exemple lorsque vous ouvrez votre fichier settings.xml en plein pendant une démo lors d'une conférence (non, ça ne m'est pas arrivé :P)
  2. de vous permettre de séparer l'accès à vos mots de passe en deux fichiers. Un attaquant opportuniste qui vous piquerait l'un des deux éléments ne serait pas plus avancé.


C'est donc un réel progrès, mais le risque que je constate - risque général d'ailleurs - c'est qu'on est tenté d'utiliser son ID et le même mot de passe un peu partout. Résultat, dans le settings.xml utilisé par le serveur d'intégration continue je vais retrouver les clés du responsable technique du projet. Si celui-ci est conscient de ce risque (et c'est désormais le cas, vu qu'il lit forcément assidument ce blog) il aura créé un utilisateur dédié sur son Nexus / Artifactory / Archiva pour les déploiements maven. 

Moralité, sortez couverts !

update : 
si vous récupérez le mot de passe de session Windows de votre chef-de-projet-apprenti-responsable-technique par ce biais, merci d'envoyer de sa part un mail à toute l'équipe déclarant que la journée du 14 septembre sera chômée afin de tous vous envoyez au JugSummercamp à ses frais.

09 septembre 2012

Jenkins User Event CPH

Une fois n'est pas coutume, pour être lisible de mes hôtes je rédige ce billet en pseudo-anglais (c'est comme le pseudo-code, ça ne compile pas mais ça donne l'idée générale)


Last week, praqma was organizing in Copenhague a "Jenkins User Event". A User Event, compared to JenkinsConf, is a lighter meeting with (suposed to be) reduced costs organized by volunteers. Praqma got sponsorship from both CloudBees and Programing Research so that they can book a high quality conference room and prepare a nice meeting with all commodities.

That was my first travel to Danemark. I enjoyed the winds-farm on northern sea as well as the duty-free lego shop at airport, but didn't have much time to discover the city - so will have to come back next year ;)


Thursday was about a Jenkins Code Camp (aka "hackathon"), that I joined late at 2pm due to flight being delayed. 20 geeks were talking about some technical issues, new features, implementation strategies for a large set of topics. I contribute a group to solve an integration issue by creating a new extension point in jenkins-core. Those already confident with jenkins development helped to write this code, some discovered the extension point design as well as way to contribute to jenkins (github pull request, etc), some were looking at jenkins source code for first time so learned a lot.



Day ended with beer then a chinese restaurant (typical Danish food :P), with lots of fun and nice discussions.


Ajouter une légende
Friday was the Jenkins User Event. To reduce costs for such an event, compared to other Jenkins Conferences organized by CloudBees this year, lunch was not provided and conference program was "packed" into afternoon. This let praqma get a "reasonable" cost for this nice event, but still have a high quality conference, with printed programs, goodies, and coffee break. All praqma team was involved to make this event as pleasant as possible for all attendees, thanks a lot to them for contributing !

Conference was sold-out on friday morning, with 80 attendees.

After Lars Kruse welcome speak, and CloudBees to announce partnership with Praqma for DK, the conference started with two options : either an introduction to Jenkins, or an open-space discussion (~barcamp-like) for those that already know it well. I joined a small group first discussing about pre-tested commit, and then we divert speaking about best-practices, job and test performances issues, etc. Was a great exchange with interesting feedback.

The rest of the conference was single-track.


1rst session was about "facilitate strategic reuse of software" using jenkins CI. This session exposed how a industrial company changed it's internal software development practices and team organization to share components and be more efficient. This for sure introduced some coordinations and integration costs but resulted in a significant productivity improvement. This talk was interesting as it demonstrate that highly industrial companies (here, a low energy consuming water pumps producer) today follow development practice to share component and use continuous integration practice to help. I just wondered speaker said "Clearcase facilitated" sharing components  -I wouldn't expected those two words in same sentence :P

"Tales from the trenches" was a funny session explaining how Nokia came from stone age (manual integration with code freezes) to modern development practices. After reinventing the wheel with ~15 home made, perl-script based CI tools, they switched to Jenkins and Git as common tooling. Explanation on Git selection, evaluating multiple DVCS popularity, then migration from ClearCase, helping a lot early adopters, and later evaluating benefits (1 day / week / developer) was very interesting. Conclusion was that, "some tools a radically better" and "deep process renewal depends heavily on tools renewal".

"Continuous Code Inspection" talk explained use of industrial C++ coding standard and normative coding convention, with dedicated analysis tools. After explanation on those rules and tooling, a dedicated jenkins plugin was demonstrated. Such jenkins integration makes QA mostly a single checkbox to enable, and provide history graphs, reports, and external tools integration. Introduction was a little slow imho but content was demonstrating the power of jenkins plugin model to adapt software factory to specific industrial needs.


Coffee break with delicious Danish chocolates ...

Sony was presenting its "Huge Jenkins Cluster", with 4 master, some of them handling up to 6000 jobs, 300 slaves, 7000 builds a day an executing 175,000 tests a day for android platforms. Development teams use a dedicated slave machine with android devices connected through USB.

Such a build farm requires a dedicated support team and monitoring/maintenance tooling. IT only provides the computer and maintain the OS, but all Jenkins stuff is under the hands of a dedicated team. They evaluate plugins and core upgrades, educate teams, and analyse errors.

With 45Gb for a single full android build, they have to monitor available disk space, and developed maintenance scripts to delete old build artifacts and cleanup /tmp. They also use a local git mirror to speed-up cloning, and integrated with CFEngine-managed infrastructure to ensure no update occurs as a slave is running a build. They also significantly optimized build speed by switching from NFS to SAN, and are now evaluating XFS.

Remaining issue is about jenkins build queue (subject discussed on Jenkins Code Camp) because a 9 in the morning, thousand users connect to jenkins master and the UI widget to expose the queue status hits the queue synchronisation bottleneck.


Next talk was mine, exposing Jenkins Enterprise and demonstrating one ouf our Enterprise plugins. I'm not pleased by my talk, both because my english is crappy (maybe you already noticed?) and also because I was not confident with the standard JE slides. Assuming I jad more time to prepare this talk, and as a tribute to this Danish event, I'd have used a bunch of lego bricks pictures to present Cloudbee plugins. So I quickly left the slides to run a demo, setting-up Jenkins Enterprise to run pre-tested commits. Hope you enjoyed the talk.

Last talk was Lars one, exposing praqma "Corporate approach to opensource". This light, generalist talk was welcome as last one after a heavy-technical afternoon. Lars exposed reason to switch to open-source :

  • costs - for sure, 
  • but also open standards and interoperability, 
  • and contribution to public good. 
This last point distinguish "innovators" that create new content and contribute to the oss project, and "free riders" that only want to save money and consume other efforts. Lars didn't went deeper into what "contributing" can be about, but spending some time joining the mailing lists, exposing detailled bug report, or writing blogs or documentation about the issues you encounter is already a huge contribution to opensource. Organizing such a great user event also is ;)



Meeting ended with a "socialize" time, sponsored by Pragmatic Research, with beer and sandwiches. A nice time to discuss with speakers, know a face to match an #irc nickname, discuss about everything geeks like to discuss about, and round off this pleasant day.

So, back in France, and hope we can find volunteers, sponsors, and a low-cost location to get a comparable Jenkins User Event in Paris the day before Devoxx France 2013, stay tunned !





05 septembre 2012

un billet pour JavaOne

JavaOne, la grosse grosse conférence organisée chaque année à San Francisco pour évangéliser l'écosystème Java se déroulera la première semaine d'octobre, précédé le dimanche par la Jenkins User Conférence. 

J'ai tenté ma chance au call-for-paper sans succès, aussi j'ai voulu re-tenter en passant par le programme "press & bloggers". Demande envoyée début juin, restée sans réponse...

... jusqu'à réception de ce mail :



mail daté du 21 août, juste avant mon départ en vacances, autant dire qu'il est grand temps de s'organiser pour un départ aux "States" fin septembre.

Etape 1 : négocier avec mon employeur préféré pour une semaine quasiment chômée au support CloudBees (rassurez-vous, mes collègues assurent dans ces cas là). CloudBees étant sponsor de JavaOne, l'équipe marketing est ravie de pouvoir compter sur moi pour donner un coup de main.

Etape 2 : trouver un vol pas cher et un hotel ... et là  c'est pas le plus facile vu que JavaOne crée un véritable vide dans l'offre d'hébergement à San Francisco. Je serais finalement au Kabuki, raisonnablement pas trop cher et bien placé (1 mile). L'hotel, un peu moins cher, que j'avais trouvé sur booking n'a pas accepté mon paiement par carte bancaire !

Etape 3 : gérer les formalités administratives ... et là évidement mon passeport n'étant plus valide, ça se complique. A savoir que la préfecture met 1 mois et demi en moyenne pour produire ce document, aussi on passe par la case "lettre justificative de l'employeur" pour demander un passeport en urgence pour raison professionnelle. Dispo 10 jours plus tard. Reste à remplir le formulaire de visa "êtes vous un terroriste ? oui - non"...

Etape 4 : changer la date de la session de rentrée du BreizhJug, justement prévue le 1er octobre. Heureusement, Julien Dubois qui viendra pour cette occasion à Rennes est assez souple sur son agenda. Je dois aussi annuler ma proposition pour Agile Tour.

Etape 5 : annoncer à madame qu'elle va devoir gérer les 3 délinquants juvéniles pendant une semaine. Sachant que je pars déjà à Copenhague (Jenkins User Event) puis à la Rochelle (JugSummerCamp), juste pendant la rentrée scolaire, je sens qu'il va falloir être très très gentil, et que je lève le pied en Octobre pour la préparer psychologiquement à rempiler pendant Devoxx ...

La suite ... bientôt ! J'essayerais de vous faire vivre JavaOne en live sur ce blog (vu que c'est tout de même ce qui me donne mon billet, il va bien falloir faire le boulot).

13 août 2012

Pourquoi il ne faut pas aller voir le talk de Julien Dubois au JugSummerCamp

Le JugSummerCamp 2012 vient d'annoncer son programme. Je ne m'attarderais pas à essayer de vous convaincre de la nécessité de vous joindre à cette merveilleuse conférence, qui a su doser à la perfection décontraction et excellence technique pour une rencontre inoubliable (bref, un peu comme le BreizhCamp quoi :P)



Par contre, vous aurez peut être remarqué dans le programme la session de Julien Dubois. Voici donc 10 raisons pour ne pas perdre votre temps avec cette session :


  1. C'est le sujet qu'il a présenté à Devoxx, et que vous avez peut être déjà vu ou que vous pouvez consulter sur Parleys.
  2. Ca parle de Spring, HTML5, Rest, Cassandra, bref rien que des technologies sans grand intérêt.
  3. C'est programmé juste après le repas, autant dire qu'à cette heure là avec la digestion ça va être dur d'encaisser un cours magistral sur NoSQL
  4. Le sujet est l'application Tatami, le Twitter-like de Ippon. Tout le monde sait bien que ça ne sert à rien twitter, surtout en entreprise - d'où la configuration du proxy qui le bloque d'ailleurs.
  5. Julien sera au BreizhJug le 1er Octobre pour nous présenter ce même sujet avec plus de temps pour répondre à toutes vos questions, alors autant attendre un peu.
  6. A la même heure il y a une excellente session que je vous recommande vivement.
  7. Julien a un gros nez.

Je sais, ça ne fait que 7 raisons, mais je n'en trouve pas plus. Du coup je vais devoir mettre les bouchées doubles pour blinder la session concurrente. 

Consolation, ceux qui choisirons son sujet (très bon soit dit en passant, pour l'avoir suivi à Devoxx) m'auront tout de même accompagné le temps de la keynote, car le JugSummerCamp me fait l'immense honneur d'ouvrir cette troisième édition.

rendez-vous le 14 septembre !

09 août 2012

Debug en production

Avec toute la bonne volonté du monde, on arrive parfois pas à reproduire un bug et il faut donc tapper sur la production pour analyser ce qui s'y passe.

Je suis tombé sur ce cas et j'ai donc du mettre en place un remote-debugger sur nos machines de production. Comme je risque de ne plus me rappeler la procédure la prochaine fois, voici un pense bête.

Etape 1 : mettre le workspace local dans l'état du code distant. Ca peut paraître bête, mais ce n'est pas une fois le debugger connecté qu'il faudra se rendre compte que les sources ne collent pas au runtime !

git checkout dev-at-cloud-1.447.2

Etape 2 : établir un tunnel SSH. J'avoue être totalement novice en la matière et avoir fait appel à
Google pour trouver la commande miracle, très bien expliquée par Korben.


ssh -i ~/.ssh/operations-ci.pem -L 5008:localhost:5005 root@10.192.xxx.xxx

######################################################################
Unauthorized access to this CloudBees system is forbidden and will
be prosecuted by law. By accessing this system, you agree that your
actions may be monitored if unauthorized usage is suspected.
######################################################################


Etape 3 : relancer l'instance en mode debug. Il ne semble pas possible de faire "passer" un JVM en mode debug après son lancement, même avec des API propriétaires de la JVM Sun/Oracle. C'est dommage, ce serait sacrément pratique.


-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005


Et enfin étape 4, lancement du remote debug depuis Idea.



Bon évidemment, à traverser l'atlantique pour debugger la production c'est pas ultra véloce, mais c'est nettement mieux que de rester planté devant les logs vierges ;)


Une autre option, que j'ai testé quelques fois et qui à l'avantage de ne pas souffrir de la distance qui sépare mon portable des datacenters Amazon : YouDebug

YouDebug utilise lui aussi le port de remote debugging, mais n'est pas interactif comme l'est un IDE. Il utilise des scripts Groovy pour définir les actions à réaliser sur un point d'arrêt. Il est ainsi possible de tracer le passage dans des méthodes, chopper le valeurs des paramètres et dumper la stack d'exécution courante. C'est évidemment moins confortable, mais c'est tout de même très pratique.


04 août 2012

passez votre clavier à la machine

faites le bouillir ...

Pour un poste de travail confortable, j'ai branché à mon MacBook un clavier USB Apple avec pavé numérique. Comme il était plutôt encrassé, à l'occasion d'un grand ménage du bureau j'ai voulu le nettoyer avec un coup de pchitt + chiffon. Et là, grand moment de solitude au moment de reprendre le taf : la moitié des touches ne répondent plus. Quelques heures plus tard, le clavier ne donne plus aucun signe de vie. Et m..., 50€ de fichu en l'air (et oui, tarifs Apple)



Au hasard des forums, j'ai appris que certains avaient ainsi "cramé" leur clavier à coup de café renversé ou autres maladresses, et qu'on leur conseillait un passage au lave vaisselle, suivi de quelques jours de séchage, pour retrouver un clavier 100% fonctionnel.

J'avoue ne pas être très convaincu par la neutralité du lave-vaisselle, entre les 70° du bain de lavage, l'agressivité du produit et la chaleur du séchage en fin de cycle, donc je me suis contenté d'un bon lavage à l'eau chaude. Le clavier a ensuite passé 15 jours posé sur les touches (pendant mes vacances).

Retour à la maison, et bonne surprise, le clavier fonctionne parfaitement - et en plus, il est propre !



Bon, je ne dis pas que c'est la solution de nettoyage idéale, ni que ça marche à tous les coups [disclaimer] toute opération équivalente que vous tenteriez sera à vos risques et périls et ne sauraient engager ma responsabilité [/disclaimer] mais si comme moi vous pensez avoir fait la connerie de trop avec votre clavier Mac, vous savez ce qui vous reste à faire.



NB: je n'ai pas testé avec le MacBook passé à la machine à laver, si quelqu'un a essayé merci de se faire connaître d'urgence des services psychiatriques.

02 août 2012

L'été sera chaud

Depuis l'an dernier, je savais qu'il y avait une source quelque part dans mon jardin (ou plutôt, ma prairie). Rénovation d'une vielle grande, ancienne ferme encore habitée il y a 60 ans, je me doutais que les précédents habitants n'allait pas à la rivière pour chercher de l'eau, mais la fontaine (comme disent les gens du coin) présente était tarie depuis longtemps, et l'agriculteur avait fait poser un compteur d'eau - ce qui nous a bien arrangé au moment des travaux.

Sauf que ... avec les travaux de terrassement il semble que la source se soit dé-tarie. Déjà l'an dernier le bas du pré était bien humide et en creusant un peu on avait mis en évidence une petite source. Cette année, après un printemps pourri et un été pourri, avec une moyenne de 28 jours de pluie par mois, la source semble s'être renforcée.

C'est donc, de retour de vacances, directement dans mon jardin au pied de la maison que j'ai pu faire "flotch flotch" en marchant dans de l'herbe très verte. Après quelques tours de jardin j'ai finalement fait un "sgrrrr-plouch" enfonçant ma botte de 20 cm dans la glaise détrempée. J'appellerais ce point "point S.P."

Plan A : poser un drain et canaliser toute cette eau vers le fossé le plus proche, autrement dit ce que j'ai fait l'an dernier - la vie est un éternel recommencement.

En creusant au niveau du point SP je me suis rapidement trouvé submergé par l'équivalent d'un robinet ouvert, le tout à 10 cm de la surface. Du coup, c'est comme pour le lancement de java 7, on change de plan.

Plan B : creuser un puit ! Pour ceux qui se posent la question, voici comment on creuse un puit à la main :



  • Acheter des buses en béton de 80cm de diamètre minimum. Problème, ça pèse très lourd. J'ai donc pris des 80cm x 20cm qui sont manipulable à une seule personne. Les buses spécifiques pour puit de 1m x1m pèsent 350 kg !
  • S'équiper d'une pelle à manche court (pelle américaine), marteau+burin, seau à gravats, etc.
  • Poser une buse à plat sur le sol, se placer à l'intérieur, et creuser ...
  • Sous son poids, la buse va descendre dans le trou en cours de formation. Dès qu'elle atteint le niveau du sol on en place une autre par dessus, et re-belote. 

Le trou est ainsi étayé pendant le creusement et la mise en place des buses est facile. Par contre, on est un peu à l'étroit dans 80cm de diamètre, d'où un choix important de l'outillage et de la longueur des manches !

Pour info, après les deux premières buses, je suis passé des bottes au maillot de bain, car le trou se remplissant rapidement d'eau c'était ingérable. J'aurais du me faire prendre en photo tiens... La glaise détrempée se creuse quasiment à main nue, tant qu'on ne tombe pas sur une #&$£@! de caillasse.

A la troisième buse, j'ai du écoper pour "vider" le puit régulièrement afin de voir ce que je faisait. Si je veux aller plus profond il faudra investir dans une pompe vide-cave (qui accepte l'eau "chargée"). J'avoue hésiter, parce que l'exercice est assez fatiguant et un peu spécial. J'ai trouvé sur des forums des témoignages de fadas qui ont appliqué cette technique jusqu'à 6m de profondeur, faut pas être claustrophobe ! Et puis, j'ai déjà 50cm d'eau (soit 0,25 m3), sous réserve que la source reste aussi active quand (si ?) le soleil reviendra.


Reste à mettre un couvercle (avec les gosses, c'est SUPER dangereux ces conneries), à faire un joli habillage, et à évacuer les gravats.

Voila pour ce billet de mi-été. Peut être le début d'une reconversion comme puisatier ?

04 juillet 2012

Maven n'aime pas WebDav

Maven 2 disposait d'un client webdav pour le déploiement d'artifacts dans les dépôts de ce type
Maven 3, pourtant conçu pour être 100% compatible, n'a plus cet extension. 

La conséquence immédiate, c'est qu'il n'est plus possible de faire une "mvn deploy:deploy-file" vers ce type de repository. On est obligé d'avoir recours à une astuce pourrie, consistant à avoir un pom.xml bidon qui configure maven avec l'extension nécessaire, juste pour invoquer le deploy-file :

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelversion>4.0.0</modelversion>
    <groupid>com.example</groupid>
    <artifactid>webdav-deploy-pom</artifactid>
    <packaging>pom</packaging>
    <version>1</version>
    <name>Webdav Deployment POM</name>

    <build>
        <extensions>
            <extension>
                <groupid>org.apache.maven.wagon</groupid>
                <artifactid>wagon-webdav</artifactid>
                <version>1.0-beta-2</version>
            </extension>
        </extensions>
    </build>

</project>


Ca c'était pour l'astuce du jour.
On peut aussi chercher le pourquoi de cette incompatibilité. 

  • Il faut admettre que le composant wagon-webdav, péniblement amené à une version 1.0-beta-2 est un morceau de code assez obscur et peu maintenu. Dans la refonte générale à l'origine de Maven 3, il n'était pas aberrant de le mettre au placard.
  • Il faut aussi admettre que c'est un protocole assez merdique, qui va nécessiter 40 requêtes HTTP pour tester puis créer chaque niveau de répertoire pour finalement n'uploader qu'un unique fichier  - avis personnel, il a sans doute aussi des avantages.
  • Il faut aussi savoir que Nexus gère le déploiement en HTTP POST "brut" et crée la hiérarchie de répertoires à la volée. Je ne suis pas sur pour Artifactory ou Archiva mais c'est bien possible qu'ils fassent de même vu que dans ces systèmes le "groupId" n'est plus un répertoire mais un identifiant logique. Tous ceux qui utilisent ces outils n'ont donc que faire de ce wagon-webdav.

Cependant, aujourd'hui le projet Apache Maven dispose d'un nouveau composant WebDav basé sur jackrabbit, 100% fonctionnel, bien conçu et supporté. Le premier argument saute. Le second est discutable, mais si on n'utilisait que des outils et des protocoles bien foutus on ne ferait pas grand chose de nos ordis. Quand au troisième... il me semble que le retour de WebDav dans maven 3.0.x serait la preuve que le projet est indépendant de tout éditeur.

Enfin, je ne voudrais influencer personne ;)

22 juin 2012

One Year at CloudBees

Et oui,  un an déjà passé chez CloudBees !



Cela fait en fait un an et une semaine, mais BreizhCamp oblige j'ai un peu laissé filer la date.

Mon bilan ?

J'ai rejoins une équipe exceptionnelle. CloudBees s'est entouré de pointures, et je me sens souvent bien petit, mais j'en prends plein les yeux. Vous connaissez buildhive ? Il y a quelque temps Kohsuke nous en parlait comme un petit projet rigolo développé pendant ses vacances. Et n'allez pas croire que c'est un cas isolé ;) Avec une équipe composée d'ex-SUN et d'ex-JBoss, on est servi.

J'apprends tous les jours, je découvre via l'activité support les méandres de Jenkins et ses multiples utilisations, ainsi que les mile et une subtilités de la gestion d'une plateforme Cloud. Je prend aussi un grand bol de DevOps chaque jour, avec comme guides Ben Walding (Mr infra chez codehaus) et Ryan Campbell (Architecte DEV@Cloud) . Je prépare un sujet dessus, j'espère avoir l'occasion de vous en reparler

Je travaille de chez moiAucun frais de transport ni temps perdu dans les bouchons, ça libère du temps efficace pour bosser. Sans perturbations, j'ai rapidement été impressionné par la productivité qu'on peut atteindre. Les premières semaines on été dures, car la concentration est telle qu'il faut apprendre à "quitter le boulot" le soir  et à se ménager des pauses (pause aspirateur, pause sortir les poubelles, ... :P). Depuis j'ai pris mon rythme, et - rassurez-vous - le contact de mes collègues ne me manque pas. J'ai troqué les discutions à la machine à café sur le dernier match contre une place dans l'association de parents d'élèves.  

Je travaille avec des méthodes légères. Je ne dirais pas "agile" parce que, télétravail oblige on est pas dans un cadre qui s'y prête et je m'attirerais les foudres de certains puristes, cependant l'équipe applique les principes d'auto-organisation, d'amélioration continue, de simplicité et de pilotage par la valeur utilisateur. Nous travaillons beaucoup avec Trello pour la gestion de tâches, IRC ou skype pour la communication. Il y a évidemment plein de choses qu'on devra expérimenter et améliorer, ou qui ne fonctionneront plus quand la société aura grossis, mais c'est un contexte qui change de MS Project.

Je suis libre de mon tempsJ'amène mes gosses à l'école chaque jour, je suis libre de mes horaires, et ça, c'est une régal. En gros, start-up oblige, il y a du boulot autant qu'on en veut, et le tout est de faire le maximum sur les tâches les plus prioritaires pour faire avancer le schmilblick. Ca veut aussi dire donner parfois de son temps en soirée (l'équipe étant fortement localisée aux US), ou le week-end, mais aussi pouvoir prendre une heure dans la journée sans prise de tête, ou aller prêcher la bonne parole dans les JUGs sans poser un RTT. 

Je peux (enfin) boire du bon caféJ'ai aussi un accès Internet qui dépote (et encore, j'habite en bout de ligne), sans proxy à la con. J'ai une vraie machine de développement, sans antivirus merdique et avec plus de 3.25Gb de mémoire - machine que j'avais déjà chez Orange, mais installée en douce. Par contre je n'ai plus de photocopieuse relieuse trieuse recto-verso couleur 200 pages/minutes. En même temps j'avoue ne plus en avoir tellement l'usage.

Je n'entre plus dans les cases de la sécu. J'ai été en arrêt une semaine pour une pneumonie et, clairement, bosser en France de chez sois avec une entreprise dont le siège est en suisse et la maison mère immatriculée dans le Delaware, ben s'est pas prévu dans le formulaire. J'ai pourtant un contrat de droit français, aussi je n'ose pas imaginer ce que ça doit être dans des cas plus exotiques.

J'ai fait de vagues progrès en anglais. Mon accent est toujours aussi pourri (je cite ma femme qui enseigne cette langue aux primaires et qui a un très bon niveau) mais l'oreille s'est affinée, et j'ai même apris quelques mots, comme "awesome" et "onward" :)

Bref, je rempile ;D


16 juin 2012

BreizhCamp, édition 2012

Et voila,
le BreizhCamp 2012 est terminé, et après une nuit de 14h, j'attaque l'encodage des 250Gb de vidéo.



Des sourires sur (presque) tous les visages, de très chaleureux remerciements, bref un joli succès.

Ce succès c'est celui de l'équipe qui a accepté de se plier à toutes mes volontés de dictateur. Je les en remercie !

Ce succès, c'est aussi celui des speakers qui ont donné de leur temps et de leur énergie pour préparer des sujets, parfois pour 3 heures sur scène, et eux aussi je les remercie !

Ce succès, c'est celui des communautés qui ont su s'entraider pour faire passer l'information, recruter des speakers pour notre call for paper, et profiter de cette occasion pour échanger et mieux se connaitre.

Ce succès, c'est aussi le votre, vous qui avez fait confiance à un gugusse qui raconte des âneries sur son blog et qui vous demande en plus 20€ pour une conférence dont le programme n'est même pas connu (20% des inscriptions on eu lieu avant même que le programme soit publié !).

gros succès pour l'atelier Git



Les points forts :

La qualité du buffet a fait l'unanimité. Il faut dire qu'on est en France, donc c'est un sujet sur lequel on est vigilant et l'estomac à son mot à dire ;) Notre traiteur a fait un travail remarquable et très apprécié, avec d'excellents produits, disponibles en quantité.



Le programme a également été apprécié, chaque session ayant trouvé son public. Nous avons à nouveau misé sur la diversité, investissement gagnant.

Enfin, le cadre a été apprécié par ceux qui faisaient le déplacement à Rennes spécialement pour le BreizhCamp. Comme quoi la pluie de vendredi ne vous a pas effrayé - note: comme l'an dernier et ses trombes d'eau, le lendemain samedi il a fait un temps magnifique ... comme quoi notre service de réservation climatique spécial touriste est extrêmement efficace.

Les points faibles :

Le WiFi est le sujet qui fâche. Pour la session "codelab AppEngine" cela a été un point noir, la session étant sauvée par le talent de ses animateurs. Pour les atéliers en général, cela a clairement été pénalisant à un moment ou un autre. Plus généralement pour participants twitophiles, cela a été un élément de frustration, au point que certains on confondu notre "keep-drop-start" avec un défouloir, avec un commentaire qui m'a particulièrement déplu, indiquant aussi que notre TShirt était trop marqué par la pub de nos sponsors. ok, désolé les gars, on a besoin de sous pour faire tout ça, promis l'an prochain on met 0 sponsors et l'entrée à 100 €. Bon, ceci dit, il faut bien quelqu'un pour jouer le rôle du #connard.

keep-drop-start, pour collecter à chaud vos impressions


Quoi qu'il en soit, le WiFi pour les participants est un sujet qu'il va falloir aborder avec l'ISTIC qui accueille le Camp, afin de voir comment nous pourrions bénéficier de leur fibre optique très haut débit tout en respectant les contraintes très stricte de leur charte de sécurité Internet. A étudier dès aujourd'hui pour 2013.


Antonio à aussi regretté le manque de Chouchen au buffet. S'il était arrivé la veille pour le "speakers dinner" on aurait pu le contenter ;) ... pour rappel, nous ne pouvons servir d'alcool dans les locaux d'un établissement d'enseignement public - il faut faire avec - et le coup du camion "galette saucisses" de l'an dernier a bien failli nous valoir une interdiction de séjour sur le campus.


Les points à améliorer concernent surtout les conditions d'inscription :

On nous demande par exemple des inscriptions pour un seul jour. L'idée nous a évidemment tenté, cependant cela crée une incertitude supplémentaire, sur la fréquentation et les commandes à effectuer en amont de la conférence. A réfléchir.

On nous demande aussi plus de places disponibles. Pour info, il y avait 20 personnes en liste d'attente, et le grand amphi qui limite notre capacité d'accueil était loin d'être plein jeudi matin. Il est sans doute possible dans ces condition de faire du "surbooking".

Le DIF est également un sujet assez obscur. Certaines entreprises ne demandent rien, d'autres m'ont obligé à rédiger un "programme pédagogique de la formation" et un questionnaire de "validation des acquis" ... Pour ceux qui ont utilisé ce droit, Zenika envera à l'eMail d'inscription le certificat de formation validant votre présence. Il faudra que l'on clarifie la procédure.

Nous n'imposons pas de template pour les présentations, contrairement aux grosses conférences, entre autre parce que cela impose un travail supplémentaire pour les speakers disposant déjà d'un sujet, et pour en avoir fait l'expérience, le changement de template sous powerpoint tourne vite à la catastrophe. Cependant de nombreux speakers aiment "localiser" leur sujet. Cas extrême, Vincent Massol nous a même développé le site de l'an prochain pendant sa session XWiki ! Aussi pour la prochaine édition nous mettrons à disposition des resources graphiques.

La signalétique a été aussi bien appréciée que mal comprise. Il semble qu'elle soit peu visible lorsque le hall est très encombré. A revoir

Enfin, on nous suggère d'adapter nos goodies pour les rendre plus spécifiques de la région ouest : K-Way, parapluie... ainsi qu'à envisager une green-conférence sans déchet plastique, concernant la quantité de gobelets plastique qui sont partis à la benne. Là aussi, des sujets à creuser !

Autre point à améliorer : nous n'avons que très peu de photos correctes de l'événement car mon appareil ne donne rien de bon avec un faible éclairage d'intérieur :'( - si, comme Alex, vous en avez fait, envoyez les moi.


Bref, BreizhCamp 2012 n'était PAS parfait,
... aussi une édition 2013 s'impose pour voir si nous arrivons à faire mieux !
heureusement, il y a le JugSummerCamp le 14 septembre pour nous montrer l'exemple ;)

15 mai 2012

Start me up

La grande majorité d'entre nous travaille en SSII. Ces sociétés, il y en a de tous types, de toutes tailles, comme les missions qu'elles proposent, et il me semble que c'est un bon moyen pour se construire un bon bagage technique via la diversité des projets proposés. Evidemment, ça reste du service, donc l'engagement qu'on peut avoir sur un projet se limite à la durée de la mission.

Passionnés (en tout cas, ceux qui perdent leur temps à lire des blogs comme le miens), nous rêvons tous de participer à un grand projet de son ébauche sur un coin de table au succès planétaire. Pour ça, il faut savoir sortir un moment de sa zone de confort et tenter sa chance dans une start-up. Ambitions, innovation, implication, mais aussi prise de risque - très modérée si on considère le scénario du pire : il suffira de re-postuler dans une SSII pour revenir à la case départ. Nous avons la chance dans notre milieu de pourvoir (re)trouver du boulot (après, du bon boulot, c'est un autre débat).


Pour concrétiser ce projet fou, il n'est pas indispensable d'aller s'expatrier dans la Silicon Valley (même si ça peut être une option), ni d'avoir eu comme binôme un crack du Web. Il existe en France, et pas seulement à Paris, de très nombreuses start-ups avec des projets plein la tête et des étincelles dans les yeux qui ne demandent qu'à s'épanouir. 

Alors bien sûr, on ne peut pas vous assurer la gloire, mais en tout cas un projet sur lequel vous investir, montrer votre talent, et être acteur à 200% de votre projet.


Comment, avec une poignée de bonnes volontés, monter le service du futur ? Si vous avez vu le film "The Social Network" vous avez sans doute apprécié les moments technico-hollywoodien où Mark Zukerberg monte un second server MySQL et patche ses pages PHP. Disposer de talents pour gérer l'infra, la complexité de votre applicatif, plus la communication et le businesss plan de la start-up c'est rare. 

Avant de rejoindre CloudBees j'ai fait la connaissance de Pod-programming, start-up Rennaise qui est en train de créer le service PodBox. C'est pour moi l'exemple type de la start-up à la Française : une techno innovante, une connaissance très pointue du domaine métier, une équipe soudée et très complémentaire, des moyens qui n'ont rien à voir avec une levée de fond à l'américaine, compensée par une gestion intelligente du projet et de sa dynamique. 

Nés dans la révolution Cloud, ils n'ont pas fait l'erreur de louer/acheter leur propres machines. Ils pensaient donc héberger leur service sur Amazon. Si vous avez déjà essayé d'estimer un coût d'hébergement Amazon vous comprenez le problème : à la question "combien d'I/O par mois" que répondez-vous ? Depuis ils ont choisi de se faire héberger sur un PaaS, en l'occurrence CloudBees vu le beau discours vendeur que je leur ai fait - ils ne m'ont pas encore lynché donc il faut croire que je n'ai pas trop embelli la réalité.

0 IT, 0 sysadmin, une plateforme qui montera en charge le moment venu, c'est autant de resources libérées pour se focaliser sur l'application et avancer vite. Et dans ce domaine, avancer vite c'est ce qui fait la différence entre la start-up qui va remporter le marché et celle qui va rester sur une bonne idée jamais concrétisée. La révolution du Cloud c'est surtout ça : libérer les idées en offrant un socle suffisamment élaboré pour que vous ne perdiez pas de temps sur les détails techniques - vous aurez bien le temps de créer votre propre DataCenter quand la boite sera valorisée en Milliards ;) 


Aujourd'hui, le projet PodBox continue d'avancer, si bien que la société recrute un développeur pour compléter l'équipe :

Le projet

Podbox est une plateforme cloud qui permet d'intégrer très facilement des données (cible les non-développeurs) provenant de différentes sources pour les nettoyer, les enrichir, les rassembler dans le but d'avoir une vue unifiée de l'ensemble de ses données. Elles sont consultables depuis un navigateur web et un mobile. Nous poursuivons la quête du Graal de l'intégration totale des données : all-in-one place. Le projet est basée sur la technologie POD, spécialité exclusive de la maison.

Le Poste

Un développeur Java (débutant ou jusqu'à 5 ans d'expérience), motivé par un projet innovant et à l'écoute des dernières nouvelles technologies et pratiques : Cloud, déploiement continu, GWT, REST, HTML5/CSS3, mobile, SCRUM.

Poste à pourvoir au plus vite, basé à Rennes (Betton)
Cerise sur la gâteau, à partir du mois de juillet on travaillera

Si l'aventure vous tente, contactez dom_at_podbox_dot_com de ma part ... (je prends 10% :P)



10 mai 2012

OSSGTP

Je viens d'être admis à l'OSSGTP




J'ai toujours cru que c'était un groupe de rencontre discussion entre Parisiens, une sorte de ParisJUG bien avant le ParisJUG, mais en fait c'est aussi (surtout ?) un club virtuel qui regroupe des gens de toutes provenances géographiques : même mon patron Suisse Sacha Labourey (mince, va pas falloir dire de conneries).

J'ai donc cherché un mentor (Arnaud) pour m'introduire me présenter au groupe, qui a ensuite voté pour savoir si j'étais assez, heu, bein en fait je ne connais pas les critères, mais bon "assez" pour faire partie du groupe.


Donc maintenant, on s'appelle entre nous "frère", on se serre les coude, on est super heureux tous ensemble et on va changer le monde.



En même temps que moi,  Mathilde Lemée est également intronisée et est la première fille du club ! Bientôt la parité ;?

J'avoue ne pas avoir encore tout compris mais en tout cas c'est plein de gens sympas :D


PS: dites les amis, on est vraiment obligé de boire dans des crânes ? Ca donne un drôle de gout à la bière...

Dans les gouttelettes du Cloud


CloudBees, CloudBees, CloudBeeeees, je vous en parle beaucoup aussi pourquoi ne pas passer à travers le nuage et voir sur quoi repose cette start-up ?

CloudBees dispose d’une infrastructure Cloud complète au travers de son DataCenter CB-FR-WEST, judicieusement placé dans une région ne manquant pas d’eau pour assurer le refroidissement des machines ni d’un climat chaleureux qui les ferait souffrir.

Suivant l’exemple d’OVH, nous avons opté pour un système de refroidissement innovant basé sur une circulation de fréon. Chaque serveur est implanté dans un rack conçu tout spécialement pour optimiser la densité des machines et l’efficacité énergétique (nous avons un R.U.E. AA+ d’après Darty).

Les alimentations des machines sont placées dans un compartiment sous le rack, disposant d’un refroidissement autonome (nous parlons de « bac »). Un dense réseau catégorie 6 relie toutes ces machines à notre système de routage.




Sur cette photo, vous voyez que nos serveurs sont, comme dans beaucoup de DataCenters, des machines low-cost de technologie « grand public » en grand nombre et non de grosses bécanes hors de prix. Ici deux de nos fameux « m1.large » (1) et un « m1.small » (2).

Chaque machine dispose d’un espace de stockage élastique (3), que nous pouvons à la demande faire grimper de 2 à 64 Giga-Octets. Celui-ci est sécurisé par une chaînette sur laquelle on peut accrocher des clés privées. Vous apercevez en haut à gauche  notre système de monitoring (4) qui permet de signaler par SMS toute défaillance d’une machine à nos ingénieurs.

Notez aussi les ailettes de refroidissement intégrées dans la structure du rack pour maximiser la captation de la température produite par les machines.

Ces machines sont reliées via un réseau catégorie 6 quadruplé (nous avons mis quatre paires torsadées dans chaque câble) à notre rack de routage. Celui-ci brasse le trafic réseau vers le point d’accès Internet à très haut débit. Ce rack dispose évidemment de sa propre alimentation, redondante pour assurer le fail-over par basculement sur un prise backup.





En bas de la photo, prise lors d’une intervention technique – le DataCenter n’est jamais visité le reste du temps - vous apercevez le routeur d’accès à Internet. Sur cette photo, le point rouge indique une défaillance qui sera totalement invisible pour vous grâce au basculement immédiat sur notre DataCenter CB-EIR-1, lui aussi en zone humide et fraiche.

Bon, blague à part je profite d’un moment de répit de ma pneumonie et de ma LiveBox qui délire à fond (moi aussi d’ailleurs, la Cortisone c’est puissant et ça fait un peu Extasy) pour vous indiquer :


  • Sacha Labourey sera Lundi 15 mai au Paris JUG pour une soirée Cloud. Ne le manquez pas.


  • Si vous le manquez quand même (!), n'ayant obtenu une des 187 places maxi et pas une de plus dont dispose le ParisJug, vous pourrez avoir ma version au NormandyJUG le 22 mai.


Voilà, passez une bonne nuit, il me reste encore 2, 3 heures avant que la Cortisone me laisse m’endormir et on repart pour une folle journée.



24 avril 2012

Devoxx France première édition

La semaine dernière la twittosphère était animée par le tag #devoxxFr, première édition de la conférence phare dans sa variante Francophone. 

Voici, comme il se doit, mon petit résumé perso de ces trois jours très, très denses, avec pour commencer un aperçu de la moquette du Marriott qui en a laissé plus d'un dubitatif :



Day 1 : universités 

La première journée de Devoxx est consacrée aux "universités", des sessions longues : 3 heures (avec pause) pour couvrir en profondeur un sujet. Le sujet que j'avais proposé était en "backup", et j'ai donc attendu qu'un speaker rate une marche dans l'escalier. Au final, je suis bien content que tout le monde soit sain et sauf, un sujet de 3h étant tout de même assez délicat à préparer en une nuit ... 

Je suis allé voir la présentation des 5 mercenaires du DevOps, bien menée, dans un esprit de saine camaraderie, sur la base d'une petite histoire romancée d'un projet qui se "DevOps-ifie". Insistant sur les changements de comportements et d'organisation nécessaires, bien plus que sur l'outillage indispensable mais secondaire, la session était (amha) une très bonne présentation de la tendance DevOps, qui inspirera j'espère ceux qui l'auront suivie.

Henri Gomez étant de la partie, ils ont évidement dépassé le temps imparti, mais en tout cas j'ai apprécié ce sujet et je n'ai pas vu le temps passer pendant cette session. On pourra regretté de ne pas avoir eu une jolie démo de vagrant et puppet, mais bon, il fallait faire un choix pour rester dans le cadre de ces 3h d'universités: virer puppet ou virer Henri :D Par ailleurs, DevOps est trop souvent réduit à ces outils, qui sont particulièrement puissants et utiles, mais masquent le fond du sujet, aussi +1 pour ce talk.



En début d'après midi, je rejoins le hackerGarten, qui propose de contribuer à un projet open-source en présence de contributeurs prestigieux : Emmanuel Bernard, Guillaume Laforge, Vincent Massol, Arnaud Héritier, ... La salle prévue a été complètement débordée par le succès de la session, et on a donc squatté le hall. Je n'ai malheureusement pas pu rester bien longtemps, mais j'espère avoir modestement contribué au succès de cette rencontre


L'après midi et la soirée étaient consacrée pour moi à une réunion CloudBees avec nos partenaires, puis à une soirée entre collègues pour fêter les 2 ans de CloudBees - et oui, je suis à Devoxx pour le boulot ;)

J'ai aussi profité de la journée pour faire un peu de pub discrète (mais si, mais si, j'aurais pu faire pire) pour le breizhcamp. Si les organisateurs ne peuvent autoriser n'importe qui à transformer la conférence en mur de petites annonces, porte ouverte à toutes les dérives, les exposants se sont montrés particulièrement réceptifs : ceux qui nous sponsorisent comme FastConnect ne se sont pas privés d'afficher leur soutien sur leur stand, d'autres comme Sfeir ne se sont pas trop formalisés de voir le logo de leurs concurrents sur les flyers que je leur ai laissé. 




Day 2 : conférences 

La matinée commence par les keynotes (plénières), pour laquelle l'équipe DevoxxFrance présente la conférence, une petite rétrospective du chemin parcouru depuis la première réunion du ParisJug dans une salle de 25 places (pour 40 présents) à l'organisation de DevoxxFrance, qui a fait salle comble avec 1450 participants. Détail amusant, sur toutes les photos présentées, il y a un gars en chemise orange :)


Stephan Jansen, Papa de Devoxx World (nouveau nom de Devoxx à Anvers), a ensuite présenté la plateforme Parleys à un public déjà conquis.

On change alors de registre pour une présentation de l'initiative "Fier d'être développeur", dans laquelle nous sommes nombreux à nous reconnaître, portée ici par Pierre Pezziardi, Boss chez Octo mais avant tout Geek et Développeur. Cette fierté, elle passe aussi par une remise en question de notre nombrilisme de développeur, fier de notre code et de ses détails technique, et à des kilomètres des besoins de l'utilisateur. Je n'en dit pas plus, rendez-vous au BreizhCamp, où ce sujet sera présenté en keynote ;)


Ben Evans et Martijn Veburg du LondonJug mettent ensuite en scène l'avenir de Java dans un monde paradisiaque, avant de se grimer en bad-boys pour nous montrer la version infernale des mêmes prédictions, pour conclure sur notre rôle dans l'avenir de la plateforme : OpenJDK 7 a connu quelques déboires à sa sortie suite à des incompatibilités avec des projets open-source majeurs (Lucene entre autres). Pourtant, les builds de test du JDK étaient dispo de longue date et auraient pu éviter ce souci. Le programme AdoptOpenJDK a pour objectif de ne pas reproduire cette erreur pour Java 8.


Julien Ponge et Frederic Le Mouel présentaient l'un des côtés obscurs de la JVM : la manipulation de bytecode. Après avoir montré la structure générale de ce langage intermédiaire, ASM est présenté pour la production de bytecode à la volée (javassist est nettement plus facile à utiliser si vous voulez tenter l'expérience). C'est ensuite AspectJ puis byteman qui nous est proposé pour modifier le code exécutée par la JVM, suivi d'un projet de recherche encore en développement, JooFlux qui exploite invokeDynamic pour customiser les appels de méthode à la demande et à chaud. Salle comble pour un sujet qui passionne toujours les geeks, à mi chemin entre technologie avancée et magie noire.

Tous ceux qui voulaient découvrir le sujet en ont eu pour leur argent et sont repartis avec une liste d'outils à tester qui devrait les occuper jusqu'au prochain Devoxx. Et pour ceux qui en voulaient encore, la session InvokeDynamic qui suivait (et que je n'ai pas vue) était d'après ce qu'on m'en a dit encore plus "velue" :)


Julien Dubois présentait le développement d'une application "nouvelle technos", avec un regard intéressant : pas question ici de prendre toutes les technos Buzz-word du moment, mais juste ce qu'elles proposent d'intéressant et de mature. L'application en question est Tatami, un twitter intranet, dispo sur le github d'Ippon et qui a donné lieu à un concours de forks, et a permis à l'heureux gagnant de participer à Devoxx.

Une IHM en Twitter bootstrap, exploitant HTML5 pour ses aspects les plus matures et les plus "entreprise" (pas de 3D ici, ni de websocket qui ne passent pas le proxy). Le backend est développé en Spring pour son côté universellement connu des développeurs java, avec du Spring MVC+REST qui permet d'exposer rapidement le modèle métier. Avantage certain ici : même si les endpoints REST se multiplient, un designer Web/JS peut travailler facilement avec un Java-iste backend. Le stockage est confié à une base cassandra, dont la distribution et les performances sont un atout pour une appli de ce type. Enfin, la mobilité est assurée avec les mêmes API REST mais un frontend HTML5 orienté mobile, et packagé avec PhoneGap en application native.

Une session sympa, avec une vision pragmatique de l'adoption des nouvelles technos, et surtout une mine d'information sur le github Tatami et ses différents forks, pour découvrir d'autres approches (par exemple, une variante full JavaEE6)


Petite pause pour moi sur le stand Google à me goinfrer de barres glacées et à vous préparer une surprise - je n'en dirais pas plus (sinon ce ne serait pas une surprise !).


Ayant un peu discuté avec Petra Cross sur le stand, je n'ai pas été voir son talk sur les méthodes de développement de Google, sujet qui a fait salle comble (note: elle sera également présente à Mix-IT). J'ai été voir Sacha Labourey qui présentait la reprise du pouvoir par les développeurs, ou une introduction au PaaS (Platform as a Service). Là où DevOps cherche à réduire les murs entre les Devs et l'IT, le Cloud permet tout simplement d'éliminer le second acteur. Les équipes de développement peuvent alors bénéficier d'une liberté qui leur permet de répondre en un temps record aux demandes toujours plus urgentes, focalisés sur un niveau d'abstraction qui leur est propre, et non sur celui nettement plus bas qui est le quotidien de la production.

Exemple parlant : LooseIt, 2 millions d'utilisateurs, des pics de charge à 2500 requêtes/s, et ... 4 personnes pour porter l'entreprise ! Mettez vous dans la peau de Weight-Watchers, et demandez vous, avec votre IT traditionnelle, ses coûts de fonctionnement et ses délais de réaction, comment vous survivrez ?

Sacha en profite pour détourner les affiches électorales, histoire d'être en phase avec l'actualité :D

  

La journée se termine avec la soirée "meet and greet", qui - DevoxxFrance oblige - ne tourne pas à la bière / frite mais au vin rouge / fromage :) Je reprends ici quelques instants ma casquette CloudBees (sponsor de la soirée avec SonarSource et Atlassian) pour assister mes collègues sur le stand, avant de rejoindre une trentaine de user-groups présents pour les BOFs. "Birds Of a Feather (eat together)" : profitons d'être tous présents à Devoxx pour prendre 1h et discuter ensemble. Pendant le BOF JUG-leaders, la question récurrente des relations avec Oracle ("qui", "comment", "pourquoi") n'avance pas vraiment, et nous glissons vers des discussions sur nos besoins d'échange d'info.


Pas de décision tranchée au final, mais des initiatives pour "fluidifier" les échanges entre JUGs sont possibles. Dans les autres salles, les Android-addicts, Javascript-istes, Scala-mens ou JDuchess profitaient de ce moment pour discuter de leurs communautés respectives.

Retour sur le stand CloudBees, mince ce n'est pas moi qui gagne la tablette Android - en même temps, on me dit à l'oreillette que je n'avais pas le droit de jouer... Un petit verre de vin rouge, et on part chercher un resto qui accepte 25 geeks bruyants pour terminer la soirée.

Devoxx c'est aussi - beaucoup - surtout ? - des rencontres, et des liens à construire dans notre communauté. Nicolas Martignole citait le jour ou il s'est trouvé à manger un morceau à Anvers à côté d'un gars, responsable des APIs chez Google (Patrick Chanezon) ... une rencontre inattendue, et une soirée inoubliable. Ce genre de rencontres, on en a tous à raconter, avec parfois des demandes en mariage.

Day 3 


La journée commence à nouveau par les keynotes. La première, par Monsieur X d'IBM (qui préfère rester anonyme) a été un carnage. Slideware indigeste et un discours sans intérêt. De toute évidence préparée sans réaliser le public à qui elle s'adressait, les twitts se sont multipliés pendant ces 30 minutes de souffrance, écroulant complètement le réseau 3G dans le secteur, et obligeant l'équipe à annoncer une panne du twittwall pour ne pas mettre le speaker en mauvaise posture devant des messages de plus en plus virulents.

Patrick Chanezon prend alors la parole (après avoir furtivement affiché son client twitter, petit cachotier) et nous fait respirer un grand bol d'air frais et salvateur avec une présentation, à nouveau dans l'esprit "fier d'être développeur", mais cette fois mise en scène sur la trame du film the Artist, pour aboutir sur la révolution Cloud en marche qui redonne le pouvoir aux développeurs.


-> http://www.slideshare.net/chanezon/devoxx-france-2012-portrait-du-developeur-en-the-artist

Enfin, Neal Ford a pris la parole pour nous expliquer en quoi les abstractions que nous empilons en couches successives peuvent biaiser voir condamner notre travail, comme par exemple l'icône "disquette" pour la sauvegarde sous Word 2010, ou ... Maven (sic). Une maîtrise complète de l'art de la présentation et de Keynote fait de ce show un régal pour les yeux

Maven, rigide et dogmatique ? Ca se saurait !

J'ai ensuite rejoint le temps d'une itération l'équipe de CodeStory, dont la salle n'a pas désemplie pendant deux jours, et qui a donné à tous ceux qui sont passés une redoutable leçon de bonnes pratiques de développement et d'agilité, du genre qui va faire mal lundi en retournant au boulot. Si nous avions affaire à la crème du développeur, sélectionnée par les étapes successives du challenge CodeStory, il y avait là une source d'inspiration démesurée sur tout ce qu'on peut mettre en place pour améliorer nos développements au quotidien. Sortant de cette session, il me semble INDISPENSABLE qu'on mette en place un coding dojo à Rennes, si l'aventure vous tente ...



Seul quickie auquel j'ai assisté, la session d'Arquilian d'Alexis Hassler était, optimisée pour placer deux démos dans ce format difficile de 15 minutes, et m'a conforté dans mon choix de l'inviter au BreihzJug le 14 mai ! Je n'en dirait donc pas plus ...

Google présentait ensuite Guava, au cours d'une session d'introduction bien rodée et rythmée, qui m'a parmi de découvrir cet outil qui vient compenser de nombreux manques du JDK. A inclure d'urgence dans votre boite à outil.

Didier Girard et Ludovic Champenois présentaient Google AppEngine, réutilisant l'application développée en codeLab mardi. GAE est un conteneur de Servlet adapté spécifiquement au contexte Cloud, et ne faisant aucun compromis. Il fournit de nombreuses API certes propriétaires, mais optimisées pour un usage dans ce contexte et qui permettent de développer des application performantes et complètement scalable.

Alors que j'ai lancé un script JMeter bourrin sur l'appli pendant la session, le pic de charge montré en live était en effet parfaitement absorbé par l'application. Après ce test pirate, Ludo risque de recevoir une facture ... de quelques cents, car le cloud c'est aussi une réduction drastique des coûts.

Si la polémique sur le changement de tarif à fait du bruit dans la blogosphère, l'attrait pour la plateforme n'a pas faiblit. Une architecture correctement pensée pour limiter les accès au storage permet de rester dans des coûts ridicules : le coût d'exploitation de l'appli "A bon entendeur"  de Didier, c'est deux cafés par jour !

-> slides
info : Didier sera présent au BreizhCamp pour rejouer le codeLab et co-animer avec Guillaume Laforge et votre serviteur une université Cloud

Après cette dernière session (pour ce qui me concerne), j'ai eu le plaisir de constater que mon score sur le stand Infine n'avait pas été battu et je peux donc rédiger ce blog depuis un Macbook Air flambant neuf ;)

Bravo en tout cas à l'équipe de DevoxxFrance pour un dévouement et un engagement énorme, qui remonte bien au delà de cette seule semaine à être sur le pied de guerre chaque jour à 6h, et qui a su garder le sourire tout le long de la conférence, gérant les inévitables grains de sables dans les rouages dont les participants n'ont pas imaginé l'existence. Une petite pensée pour leurs familles qu'ils ont embarquées dans cette folle aventure.


Merci à tous, et après un succès de cette ampleur, rendez-vous en 2013 !

Les photos sont extraites des albums de Pierre-Antoine, Arnaud et Claude