Blog Arolla

Devoxx Fr 2014, en attendant Parleys

Ronan Le Roy (RLR) et Nicolas Fédou (NF), deux développeurs d’Arolla, vous proposent un court résumé des différentes sessions Devoxx auxquelles ils ont assisté cette année. Ou comment attendre patiemment la mise en ligne des sessions sur Parleys…

Software Craftsmanship

Par Sandro Mancuso

NF : Sandro Mancuso nous a décrit ce qu’est le compagnonnage dans l’édition de logiciel en puisant des exemple dans sa propre vie. Cette présentation est en permanence dans son sujet et ne dérive jamais. Cette présentation est « parfaite » si vous voulez découvrir ce que signifie être un compagnon du logiciel ou un software craftsman.

RLR : Une très belle présentation de ce qu’est un artisan développeur. L’Agilité n’est pas une fin en soit, elle permet juste de mettre en lumière des problèmes. L’artisan quant à lui s’attache à éviter les problèmes que l’on rencontre de façon récurrente dans le monde du développement. Pour résumer, l’élégance et la lisibilité du code est aussi important que le fait qu’il soit correct si on veut pouvoir le garder fonctionnel et le faire évoluer facilement.

Des SSII aux SS3I : Société de services aux individus de l’ingénierie informatique

Par Aude Amarrurtu et Betty Moreau

NF : L’équipe des Brown Bag Lunch RH nous a présenté leurs idées et leurs valeurs. L’open source semble avoir déteint sur cette équipe. Elles ont présenté des pistes pour que les RHs aident le consultant à développer son savoir-faire et d’autres pistes pour que les consultants reprennent leur carrière en main. En faisant des raccourcis, une ressource semble interchangeable, alors qu’un individu qui s’exprime par des blogs, des présentations dans les communautés, etc. est connu et contacté pour son savoir-faire.

RLR : La vision de notre métier à travers le prisme de deux RH 2.0 qui ne veulent pas limiter leur métier à celui de recruteur et rédacteur de fiche de paie, mais surtout d’accompagner les ingénieurs dans leur carrière. Pour elles, leur rôle est de nous aider à prendre en main notre carrière, à faire connaître notre savoir faire sous la forme de « personnal branding », les SS2I doivent se transformer en SS3I et tout le monde y gagnera car au final le développeur expérimenté pourra justifier sa facturation supérieure à celle d’un junior vendu comme un vulgaire bout de viande par une SS2I classique.

Un petit bémol cependant, la présentation s’éloigne de son sujet en cassant du sucre sur le droit du travail et en idéalisant le fait de devenir indépendant. Et, à mon sens, si le rôle de la SS2I est de vendre de la flexibilité à ses clients, c’est aussi d’apporter de la sécurité à ses employés et de leur épargner les tâches administratives et commerciales pour que nous puissions nous concentrer sur notre métier. Et puis qui sera là pour nous bichonner si nous devenons freelance ?

Le bon testeur il teste…. et le mauvais testeur aussi….

Par Agnès Crepet et Guillaume Ehret

NF : Cette conférence est un tools in action dont vous êtes l’outil principal. Ils y présentent quelques bonnes pratiques et quelques bons outils utiles aux tests. Ça se regarde une fois en notant les quelques bonnes idées qu’on a loupé de notre côté (JunitParam pour ma part qui permet de lancer la même méthode de test sur des jeux de données différents).

33 things you want to do better

Par Tom Bujok

NF : Tom Bujok est un Suisse qui aime les librairies qui lui simplifient la vie. Dans sa vision : on constate une gène dans notre code, et on cherche une solution par une pratique ou une librairie. Lorsque l’on s’est entraîné au nouvel usage, on peut alors le mettre en pratique sur nos projets professionnels et ainsi remplacer une mauvaise habitude par une meilleure.

Développer en mode Kick-Ass

Par Samuel le Berrigaud

RLR : L‘orateur présente les bonnes pratiques mises en places chez Atlassian pour sortir des logiciels « qui déchirent » en ayant des développeurs aux quatre coins du monde. Si il ne se gêne pas pour casser un peu de sucre sur l’Agilité, il n’en fait pas trop et reste bien constructif : il n’y a pas besoin d’une méthode ni de gourou pour faire du bon travail, il faut surtout en avoir envie.

Pour cela ils se sont attachés à rapprocher au maximum le développeur du testeur et du designer en échangeant leur rôle de temps en temps (créer des full stack développeurs ?) mais aussi en responsabilisant tout le monde sur la qualité du produit fini mais aussi à faciliter la vie de celui-ci en lui permettant d’aménager son lieu et son temps de travail comme il l’entend, en rendant plus fluides les développements en branche et les code reviews, en automatisant l’intégration continue, en raccourcissant les tests, en éliminant les faux positifs, en privilégiant les modes de communication asynchrones (chat rooms).

Pour conclure, développer en mode kick-ass c’est :

  • Automatise-toi toi-même, marre des cordonniers mal chaussées.
  • Partage tes échecs, c’est en se trompant qu’on apprend.
  • Développe une culture, la qualité c’est l’affaire de tous.

Pourquoi vous devriez essayer sérieusement les Object Calisthenics

Par Guillaume Duquesnay

RLR : Guillaume lève le voile sur ce mot barbare qui est la qualification des exercices que vous faites tous pour transformer votre bedaine en plaquettes de chocolat et sculpter votre corps d’athlète.

Comme nous sommes des développeurs, on va se contenter de se muscler le cerveau grâce à des exercices de code qui nous pousseront naturellement à rédiger du code propre et lisible. Pour les allergiques aux bouquins comme moi, l’efficacité sera décuplée.

D’ailleurs les Jams de code d’Arolla permettent de faire ce genre de choses en groupe avec de la bière et des chips !

Extremist Programming

Par Eric Lefevre-Ardant et Cyrille Martraire

NF : Cette conférence ne se prend pas au sérieux pour nous diffuser un message pourtant important : écrire du code étant une activité littéraire, nous sommes des écrivains et par extensions des artistes ! En prenant exemple sur des génies de notre métier comme Ward Cunningham et Kent Beck, le duo nous montre qu’il est utile d’essayer nos idées folles pour constater leurs effets AVANT de les rejeter. Qu’une idée soit folle n’est pas une garantie de pertinence, mais voir ces effets nous permettra d’affiner notre jugement sur les idées suivantes ! En tout cas, si vous avez envie de vous faire plaisir en programmant, cette conférence vous démontrera avec brio que vous avez bien raison !

RLR : Une présentation qui ne se prend pas au sérieux : Distribution de cookies et pipo bingo au menu ! Faites passer le mot, nous sommes des artistes et pour révéler le génie que nous avons en nous, il ne faut pas hésiter à tenter tout ce qui peut nous passer par la tête, au pire on se rendra compte que l’idée n’est pas bonne, au mieux on aura peut-être inventé le nouveau truc qui va changer le monde du développement logiciel.

2 méthodes rigolotes que j’ai noté :

  • Le Mob programming : un écran (panoramique), un PC, un clavier, et toute l’équipe dessus pour du pair programming poussé à l’extrême.
  • L’Anarchy Programming : Supprimez tout, manager, PO, marketing, fonctionnel, ne gardez que l’essentiel : un client et un développeur.

Fifty New Features of Java EE 7

Par Arun Gupta

RLR : Un marathon ! L’orateur à 50 points à passer en 50 minutes. Une présentation à garder dans un coin de sa tête lors de son passage de JEE 6 à JEE 7 pour éviter de réinventer une roue déjà intégrée à l’API.

Tout ce que vous avez toujours voulu savoir sur les lambdas et plus encore

Par Rémi Forax

RLR : Une conférence très instructive qui explique pourquoi et comment la programmation fonctionnelle apparaîtra dans Java 8. On commencera par l’envie d’éviter de dupliquer du code en passant des fonctions en paramètres et la frustration de ne pouvoir le faire en Java. Suivront la Grande Guerre des Closures de 2006/2007 entre BGGA (les gourous du compilo Java), CICE (les gourous de l’API Java), et FCM (les utilisateurs). Une explication de la syntaxe (le coloncolon et la simple flèche ‘->’). Mais aussi en détail ce que cela donne au niveau du bytecode.

Java 8 Lambdas in the Stream

Par  Paul Sandoz

RLR : Une très belle présentation expliquant l’API Stream couplé avec les lambda dans Java 8. Voici comment passer d’un code très séquentiel, impératif, à un code qui s’attache à l’essentiel, la manipulation de son jeu de données qui pourra être parallélisé aisément par la JVM.

50 nouvelles choses que l’on fait avec Java 8

Par José Paumard

NF : Vous suivez l’actualité de Java, vous connaissez tout des lambdas et des streams… Et bien, voici le reste des changements apportés par Java 8. Et les singletons se font avec des Enum n’ayant qu’une seule valeur depuis Java 5.

RLR : Parler de Java 8 sans évoquer les Lambdas, ni les Streams tient de l’exploit que l’orateur relève aisément. A noter une simplification de l’API date orienté développeur, le StringJoiner qui permet d’éviter les traitements « aux limites » ie supprimer cette dernière virgule qui rend le code tout moche, une manipulation de fichier simplifiée, et le CompletableFuture…

Linux 101, domptez le pingouin

Par Pierre-Antoine Grégoire et Frédéric Weisbecker

NF : L’introduction sur Linux ne m’a pas appris beaucoup, mais les slides sont déjà disponibles. De mon point de vue, j’aurais ajouté quelques commandes comme :

  • « reset » qui réinitialise le terminal après avoir affiché le contenu d’un fichier binaire
  • « file » qui lit les premiers octets pour nous afficher le type de fichier. Ce dernier nous dit si l’exécutable est un lien, un script shell/perl/… lisible ou un exécutable compilé (elf/a.out).
  • « lsof » liste les fichiers ouverts dans le système. Sachant que les sockets sont des fichiers au même titre que les binaires, les librairies, les fichiers de log.
  • et enfin, « strace » que liste les appels système fait par un process, voire par un process et ses fils.

Votre Livrable avec Docker en prod dès demain

Par Julien Vey et Pierre Padrixe

NF : L’atelier Docker dont je n’ai pas pu faire les exercices présentait bien docker en nous faisant mettre en place une usine logicielle (Jenkins+Git+Déploiement d’images docker). Le TP est sur Github et et les images docker dans l' »index » de Docker, vous pouvez donc encore les faire !!!

Au secours, mon code Angular est tout pourri

Par Thierry Chatel

NF : Cette présentation manque d’exemples de code pour un novice comme moi, mais cela lui a permis d’aborder plus de bonnes pratiques. Il faut regarder cette présentation dès que l’on a fini les premières fonctionnalités d’une application pour pouvoir apprécier ses opinions et conseils.

Models and Rest APIs on Angular JS with RestAngular

Par Martin Gontovnikas

NF : Martin Gontovnikas s’est lancé dans Angular sans penser que ce framework avait des limitations. Il en a trouvé avec $resources qui exploite mal les liens entre les ressources REST et il a réalisé RestAngular qu’il nous a présenté. Son API se souvient de l’origine d’une url et s’en sert lorsque l’on souhaite accéder à une ressource liée. En bonus, RestAngular nous fournis un moyen d’ajouter des méthodes aux objets reçus ce qui en fait des objets métiers et non plus des simple conteneurs de données.

30 minutes pour développer une appli Java EE ? C’est largement suffisant avec Forge 2.0!

Par Antonio Goncalves

NF : Forge est un « quick starter » qui nous génère le code de l’application CRUD que l’on décrit. Son cœur se nomme la fournaise (« furnace ») et parse le code existant pour permettre aux modules externes d’ajouter facilement du code. Le code ajouté se résume à du CRUD annoté pour les librairies de J2EE dont JSF et/ou Angular.js. Il reste à voir comment cela se comporte une fois que l’on y intègre du code métier… Pouvons-nous encore ajouter des champs dans des objets modifiés ? Comment ajouter du code sans perturber l’outil ?
Les slides sont sur slide share et ne sont pas représentatives de cette séance de live coding. Le plus proche que l’on ait est la présentation d’Antonio au Glassfish User Group qui montre Forge en action sachant que la version de Devoxx présente en plus comment étendre la génération de code en dix lignes de code.

Tests de Performance Continue

Par Guillaume Arnaud et William Montaz

RLR : Un lab sous forme de présentation de ce que des ingénieurs de Xebia ont mis en place pour Voyage-SNCF : intégrer à leur usine logicielle des tests de charge. Cela leur permet de détecter des baisses de performance de l’application au plus tôt lors de leurs développements et d’éviter de se rendre compte le lendemain de la mise en production que leur code ne tient pas lors du passage à l’échelle. Pour cela ils présentent l’intégration des outils suivants :

  • Gatling : un outil en Scala permettant de scripter les scénarios,
  • Jenkins : l’usine logicielle bien connue,
  • Jmxtrans : un outil pour exposer des informations JMX vers Graphite
  • Graphite : un outil simple de visualisation de données

Pour la démo, la bonne idée est de nous fournir des VM sur une clé USB qui nous permettent de jouer avec ces quatre outils (j’ai pu découvrir à quoi ressemblait Scala et ce qu’était devenu IntelliJ), la mauvaise est de prévoir trop d’exercices pour la session et de ne nous permettre que de les survoler mais surtout de nous concentrer sur les optimisations à réaliser sur l’application de tests plutôt que sur l’exploitation des résultats des tirs.

Git++ : Passez au niveau supérieur de la gestion de version

Par Cyril Lakech et Hubert Sablonnière

RLR : Une présentation rapide de GIT, le célèbre outil de gestion de versions. Les deux compères nous présentent leur façon d’utiliser GIT dans leur projet afin d’en finir avec les commentaires de commit vides de sens et les historiques sales.

Ils utilisent une norme pour leur commentaires comportant un type (feature, fix, refactor, test, doc, style, etc.), un scope (le module impacté), un sujet, une description plus développée, et des références.

Ils se permettent de « réécrire l’histoire » en utilisant la commande « git rebase-i » pour mettre à jour leurs commits avant intégration dans la branche master.

Cela leur permet de générer des belles notes de mise à jour de version de façon automatique.

Chez les barbus: master chef et puppet show

Par François le Droff et Romain Pelisse

RLR : Je ne savais pas trop où j’allais, appâté par le nom de la présentation. Une présentation sympa et drôle mais sur un sujet qui ne m’intéresse pas particulièrement. Les orateurs présentent deux outils similaires, Chef et Puppet, permettant de supporter le passage à grande échelle de son parc informatique. L’intérêt de la chose est de pouvoir rentrer la configuration de son parc dans un gestionnaire de sources.

Quelques bonnes pratiques à garder en tête :

– On ne traite pas son parc de serveurs comme des animaux domestiques mais comme du bétail.

– Si quelque chose n’est pas dans le gestionnaire de source, c’est qu’il n’existe pas.

Ansible in action – le provisionning au bon niveau d’abstraction

Par Olivier Girardot

NF : Ansible est un concurrent de Puppet et Chef dont l’originalité est de se contenter d’un serveur ssh sur la machine cible (ndlr : ne pas me demander comment on installe et configure ssh, merci ! ;-)). Le DSL décrivant l’infrastructure est simple et décrit un état cible, un moyen d’y arriver et un critère de bonne réalisation. Il existe beaucoup de code dont on peut se resservir comme pour l’installation d’une JVM ou d’un Tomcat. On y décrit facilement les procédure d’installation, par contre, la configuration semble un peu moins triviale.

Hadoop@Critéo, du laboratoire à la production 24h/24

Par Jean-Batiste Note et Loïc Le Bel

NF : Ils ont eu besoin d’un cloud privé, de le provisionner, de déployer, d’upgrader à chaud, de le déménager… C’est un boulot un peu dingue et l’aventure qu’ils présentent doit être passionnante. Elle continue et ils recrutent si ça vous intéresse.

RLR : Un retour d’expérience des gourous du réseau et d’Hadoop de Critéo. Quelques citations :

– A propos de la mise en place d’Hadoop à l’échelle de Critéo : « Anything that could go wrong – will go wrong » (Loi de Murphy).

– A propos de la mise en place d’un cloud : « Qui fait les choses à la main tombe dans le ravin ! ».

– A propos de leur topologie de réseau : « Un hypertore à N dimensions » (qui se résume en un triangle ne vous inquiétez pas 😉 ».

Cassandra, une nouvelle ère

Par Jonathan Ellis

RLR : Cette présentation m’aura permis de découvrir les concept devant être mis en œuvre dans le monde du BigData :

  • Répartition des données sur différents nœuds du cluster en fonction d’un hash de leur PK.
  • Duplication des données pour les rendre plus facilement disponibles.
  • Permettre des mise à jour simultanées de la même valeur en répartissant celle-ci sur plusieurs nœuds, puis en consolidant les modifications lors de la consultation.
  • Dé normalisation des données (ie on ne stocke pas des références mais directement les valeurs).

Un monde totalement différent de celui des base de données relationnelles mais pour répondre à des problématiques différentes.

Attaquez le Mahout de face

Par Sidi Mohammed Ramdani

RLR : L’orateur présente un outil de calcul de recommandations. Cet outil permet en 10 lignes de code de faire abstraction de tous les calculs mathématiques qui se cachent derrière ce système qui permet de booster les ventes de son site e-commerce ou de faire se retrouver sur votre réseau social des amis perdus de vue depuis 10 ans. Cependant il ne faut pas oublier qu’utiliser un outil n’empêche pas d’être intelligent, Mahout propose différents algorithmes et il est vivement recommander de valider l’utilisation de l’un ou de l’autre, voire de réaliser un panachage de plusieurs algorithmes en lui demandant de tourner sur 90% de son échantillon avant de le confronter au 10% restant.

Bitcoin et monnaies cryptographiques

Par Paul Greg

RLR : J’ai enfin pu comprendre comment marchaient les bitcoins grâce à cette présentation. Si je résume, il s’agit d’une monnaie pour laquelle la validation des transactions, au lieu d’être centralisée (par les banques) peut être validée par n’importe qui à partir de calculs cryptographiques.

Quand je me connecte au réseau, je récupère le montant de mon compte en fonction d’un dernier « bloc » validé.

Quand je veux réaliser une transaction, je demande au réseau de la rajouter au prochain bloc à valider.

C’est dans la validation du bloc que les « mineurs » interviennent. Ceux-ci, forts de la connaissance intégrale de l’historique des transaction (20Go actuellement) sont en concurrence pour valider un bloc qui comprendra les transactions en attente de validation, la signature du mineur ainsi qu’un nombre qui permettra au bloc d’avoir certaines propriétés (une valeur de « hash » commençant par un certain nombres de 0). Une fois cette valeur trouvée, elle sera soumise au réseau et le mineur sera récompensée de quelques bitcoins, et les mineurs commenceront à travailler sur le bloc suivant.

Plusieurs mineurs pouvant trouver une validation en même temps, on pourra se retrouver temporairement avec un arbre plutôt qu’une chaîne de blocs. Les mineurs devront éliminer les branches les plus courtes. Le souci est que, du coup, si une « ferme de minage » dispose de plus de la moitié de la puissance de calcul, elle pourra faire croître des branches originalement plus courte pour dépasser la branche principale, invalidant ainsi beaucoup de transactions et brisant la confiance dans le bitcoin : cela ne doit pas arriver.

Le calcul de hash pour le bitcoin demande beaucoup de CPU, il n’est pas rentable de miner avec son propre PC, mais il est possible de faire partie d’une ferme de minage qui partage les gains à la validation d’un bloc. La difficulté du calcul est mis à jour régulièrement afin de garder un rythme de validation de blocs de 1 toutes les 10 minutes.

Le bitcoin est donc adapté pour le e-commerce ou la validation d’une commande peut attendre un peu et la mise en place d’un service de CB demande à passer par une banque qui prendra sa commission au passage. Il est par contre moins approprié pour acheter sa baguette de pain.

A noter aussi qu’il existe d’autre monnaies cryptographiques basées sur d’autres algorithmes (le Litecoin demande de la mémoire et non du CPU).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

* Copy This Password *

* Type Or Paste Password Here *