J'étais à Devoxx France 2014

La conférence des développeurs passionnés

| Celira | Mickael Baron | Régis Pouiller | Romain Linsolas | Thierry Leriche-Dessirier |

L'équipe Java était présente lors de la conférence Devoxx France 2014 qui s'est déroulée du 16 au 18 avril 2014 à Paris. Nous vous proposons un résumé des principales sessions et activités de cette conférence dédiée au monde Java.

Pour réagir à ce compte rendu, un espace de dialogue vous est proposé sur le forum. Commentez

- Titre : J'étais à Devoxx France 2014

- Auteurs : Celira, Mickael Baron, Régis Pouiller, Romain Linsolas, Thierry Leriche-Dessirier

- Parution : 28 mai 2014

- Licence : Copyright ® 2014 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- I-A. À propos des photos

- I-B. Versions

- II. Devoxx France

- III. Conférences que nous avons vues

- III-A. Jour 1 (mercredi)

- III-A-1. Université de la performance

- III-A-2. Je fais ce que je veux avec Java EE

- III-A-3. Tout ce que vous avez toujours voulu savoir sur les lambdas et plus encore

- III-A-4. JavaScript as a first programming language : votre IC prête pour la révolution

- III-A-5. Java 8 Streams et Collectors : patterns, performances, parallélisation

- III-A-6. Linux101 (ou Linux dompte le pingouin)

- III-A-7. Application Web Moderne en Java - The Code Story Way

- III-A-8. Git++ : Passez au niveau supérieur de la gestion de version

- III-A-9. Créons un Web component avec Polymer

- III-A-10. SonarQube sans quitter son IDE

- III-A-11. 30 minutes pour développer une appli Java EE ? C'est largement suffisant avec Forge 2.0

- III-A-12. One Java library to rule all security protocols

- III-A-13. Tout ce que vous avez toujours voulu savoir de la JVM sans jamais oser lui demander en ligne de commande

- III-A-14. Au secours, mon portable part en prod ! (ou presque…)

- III-A-15. Ansible in action - le provisionning au bon niveau d'abstraction

- III-A-16. Devoxx 4 kids

- III-B. Jour 2 (jeudi)

- III-B-1. Bienvenue à Devoxx France 2014

- III-B-2. L'ère numérique

- III-B-3. Le métier de développeur

- III-B-4. Simplon

- III-B-5. La France a besoin d'une update

- III-B-6. Des SSII aux SS3I ? Sociétés au service de l'ingénierie informatique

- III-B-7. Du legacy à Scala

- III-B-8. Bitcoin et monnaies cryptographiques

- III-B-9. Chrome Apps for Desktop and Mobile

- III-B-10. Cassandra une nouvelle ère

- III-B-11. Square: de la collecte d'information à la prise de décision

- III-B-12. Vive les WebSockets libres

- III-B-13. Votez pour nous ! L'Internet des objets par l'exemple

- III-B-14. Au secours, mon code Angular est tout pourri

- III-B-15. Soyons RESTful avec RESTX

- III-C. Jour 3 (vendredi)

- III-C-1. Programmer avec émotion

- III-D. Transformez votre Digital Self en une base de connaissances

- III-E. 900 000 emplois IT à pourvoir d'ici 2015 en Europe. Comment susciter des vocations

- III-F. Crazyflie: Développement d'un quadrirotor miniature open source

- III-G. Pourquoi utiliser un portail en 2014

- III-H. Outils pour manager une équipe

- III-I. Des maths et des recommandations

- III-J. Le bon testeur il teste… et le mauvais testeur il teste aussi

- III-K. Pas à Paas : Cloud-Foundry in action

- III-L. 50 nouvelles choses que l'on peut faire avec Java 8

- III-M. Hadoop @ Criteo, du laboratoire à la production 24h/24

- III-N. Étendre le Web avec les Web Components

- III-O. Extremist Programming : l'art de s'amuser avec du code

- IV. Logistique

- IV-A. Tarif et réservation

- IV-B. Boissons

- IV-C. Repas

- IV-D. Vestiaire

- IV-E. Badges

- V. Stands, animations et Goodies

- V-A. Stands

- V-B. Animations

- V-B-1. Soirée vin et fromage

- V-B-2. Massages

- V-B-3. Crazy flie

- V-B-4. Seed Networking

- V-B-5. Musique élétro

- V-B-6. Photo

- V-C. Goodies

- V-C-1. Stylos

- V-C-2. Balles

- V-C-3. Tasse

- V-C-4. Divers

- VI. Conclusions

- VI-A. Et les femmes dans tout ça ?

- VI-B. Ce que j'ai aimé et un peu moins aimé

- VII. Remerciements

- VIII. Annexes

- VIII-A. Liens

- VIII-B. À propos de nous, nos stratégies

- VIII-B-1. Celira

- VIII-B-2. Mickaël

- VIII-B-3. Régis

- VIII-B-4. Romain

- VIII-B-5. Thierry

- VIII-C. Slides des conférences

I - Introduction

La troisième édition de Devoxx France s'est déroulée à Paris, à l'hôtel Marriott, du 16 au 18 avril 2014. Comme le nombre de places était limité et que tout le monde n'a donc pas pu y assister, je vous propose un petit résumé personnel. Quand je parle à la première personne (je), je devrais dire « nous » car plusieurs membres de l'équipe de la rédaction de Developpez.com étaient au rendez-vous.

Comme le dit le slogan, Devoxx est la « conférence des développeurs passionnés ». Plus prosaïquement, ce sont trois jours durant lesquels on va parler de Java et de son écosystème, au sens large. Si je me permets, ici, de dire « on », c'est que les participants sont aussi de la partie. D'abord, les orateurs (speakers), choisis par un comité (CFP) comme nous l'expliquait Arnaud Héritier à l'occasion d'une interview, sont également des spectateurs. Dans certaines sessions, comme dans les Hand's on Labs ou dans les BOF, les spectateurs sont invités à participer et sont acteurs. Enfin, Devoxx, c'est aussi un lieu de vie, si j'ose dire, où l'on peut rencontrer plusieurs centaines d'autres passionnés.

I-A - À propos des photos

Cette page est illustrée à l'aide d'une sélection de photos prises durant l'événement. Vous retrouverez une galerie avec plus de 350 photos de Devoxx France 2014 sur Flickr. Si vous apparaissez de façon visible sur une de ces photos et que vous souhaitez qu'elle soit retirée, envoyez-moi un message.

Je voudrais préciser que ces photos ne sont pas libres de droit. Je vous laisse les utiliser sous réserve de m'envoyer un petit message pour m'indiquer où.

J'ai aussi utilisé quelques photos de Claude Falguière (@cfalguiere) dont vous retrouvez une sélection sur la page Google+ de Devoxx France.

I-B - Versions

10/05/2014 : création du document

II - Devoxx France

Devoxx France est la déclinaison parisienne de Devoxx qui se déroule à Anvers et dure cinq jours. Une des particularités de Devoxx France est de proposer 75 % de conférences dans la langue de Molière. Notez qu'il existe également Devoxx Uk, une version londonienne de l'événement, qui se déroulera les 12-13 juin prochains.

Les thèmes de Devoxx France 2014, présentés par plus de deux cents passionnés, sont :

- Langages alternatifs

- Future[Devoxx]

- Java SE, Java EE

- Agilité, DevOps

- Web, HTML5

- Startup et Innovation

- Mobile

- Cloud, Big Data, NoSQL

Et ces sessions sont présentées dans l'un des formats suivants :

- University (3 heures)

- Hand's on Labs (3 heures)

- Tools-in-Action (30 minutes)

- Conférence (45 minutes)

- B.O.F. (Bird of a Feather)

- Quickie (15 minutes)

Mais Devoxx, c'est aussi une équipe de bénévoles, vêtus ou non de rouge, qui sélectionnent les présentations, installent les stands, accueillent et orientent les participants ou encore travaillent dans l'ombre pour que tout se passe le mieux possible. Il ne faut donc pas les oublier, car si on en croit tout ce qui s'est dit sur Twitter (entre autres), ce n'était pas de tout repos. D'ailleurs, rien qu'à en voir le programme papier (carrément un livret) ou les gabarits de présentation, ça saute aux yeux.

Et le CFP ? Ça aussi, c'est une sacrée affaire, comme l'explique Nicolas Martignole dans un article intitulé « CFP de Devoxx France, présentation ». Le CFP en 2014, en quelques chiffres :

- 560 personnes se sont inscrites ;

- 494 ont proposé au moins un sujet, certains ont proposé deux ou trois sujets ;

- 292 orateurs ont été refusés ;

- 202 speakers acceptés (avec les speakers keynotes, les invités, etc.) ;

- 678 propositions ont été reçues par le CFP ;

- cela a entraîné 7696 revues, par 16 bénévoles pendant plus de deux mois ;

- pour ne retenir que 163 propositions finalement (hors keynotes et événements spéciaux).

Pour en savoir plus à propos de Devoxx, je vous encourage à lire les interviews que nous avons réalisées ces trois dernières années.

III - Conférences que nous avons vues

Durant ces trois jours, les membres de Developpez.com ont vu beaucoup de conférences. Ils les ont choisies en fonction de leurs goûts propres et de leurs attentes. Ils en ont aimé certaines et d'autres un peu moins… Voici donc ce que nous avons vu, ce que nous en avons retenu et ce que nous en avons pensé. Pour ce qui est de nos notations ou de qui nous sommes, vous trouverez les détails en annexe.

III-A - Jour 1 (mercredi)

Ce premier jour est dédié aux universités, c'est-à-dire des présentations de trois heures sur un thème particulier.

III-A-1 - Université de la performance

Par Henri Tremblay, Ludovic Piot, Marc Bojoly et Mickael Robert (Université, partie 1).

Dès les premiers instants de cette conférence, on se dit que ça va être animé. Quatre orateurs sur scène, c'est l'assurance d'avoir du rythme. Et puis un petit accent québécois comme on les aime s'est invité dans la partie. Ça va donc être bon. Durant les trois heures de cette université, l'objectif est d'analyser une webapp relativement simple mais qui a des problèmes (plus ou moins gros) de performance.

J'ai bien aimé le parti pris de montrer que tout marche avec des faibles volumétries. Les écrans font ce qu'ils doivent faire et les temps de rendu sont raisonnables. Avant d'aller plus loin, il convient de vérifier que ça marche unitairement. Mais le tableau s'assombrit au fur et à mesure que la quantité de données augmente. C'est là qu'apparaissent les soucis de performance. D'ailleurs les orateurs rappellent qu'il est bon d'intégrer assez rapidement des volumes de test réels (i.e. conséquents) tôt dans le cycle de développement, pour corriger le tir si besoin avant de s'être trop engagé dans une voie. Et, évidemment, tout cela doit être automatisé et outillé. Le cadre de la présentation est posé.

Le premier point sur lequel nous sommes tombés, c'est un web service un peu lent lorsqu'il y a beaucoup de données en base. Après quelques recherches, on a pu identifier que cela provenait d'une requête SQL. L'analyse du plan d'exécution indique qu'il faut ajouter un index sur la colonne qui sert de discriminant, car il n'y en avait pas. Cela provoquait donc un « full scan » et donc des lenteurs. Je dirais que c'est le cas de base (sans jeu de mot).

Les orateurs ont ensuite expliqué comment fonctionnent les index. J'avoue que je ne m'étais jamais vraiment posé la question. Un index, c'est un index, quoi… Derrière l'aspect magique, il faut savoir que les bases de données gèrent des statistiques qui lui permettent d'orienter le fameux plan d'exécution. Dans l'exemple, la base de données a été remplie à l'aide d'un batch qui réalise des insertions en masse. Dans ce cas de figure, j'ai l'habitude d'arrêter l'index et de le relancer après les insertions. En effet, le calcul des statistiques est hyper long. Je préfère donc redemander un gros calcul un peu long à la fin plutôt que de faire des millions de petits calculs qui, finalement, ont un coût cumulé plus important. Un autre effet que nous ont indiqué les orateurs est que les statistiques calculées lors d'un import important (quand on n'arrête pas les index) peuvent être fausses. Ainsi, dans leur cas, ils ont importé dix millions d'enregistrements mais les statistiques n'en prenaient en compte que cent mille. Autant dire que l'index ne vaut plus rien avec une telle approximation.

Bon, je dois dire que je ne suis pas resté à la seconde séance, car il y avait un problème dans cette présentation. Le fond était vraiment bon et intéressant mais il y avait un souci sur la forme. Je vais vous l'expliquer mais vous l'avez sûrement deviné, car une heure et demie pour un index sur une colonne, c'est long… Dès le départ, les orateurs nous ont expliqué qu'ils ne connaissaient pas la machine (un Mac Book) utilisé pour la présentation. Cette machine avait d'ailleurs une configuration particulière. Ce n'était donc pas seulement une question de Linux Vs Windows Vs iOS, ou de clavier Azerty Vs Qwerty. En gros, les orateurs s'embrouillaient sans arrêt sur les raccourcis. Je ne leur lance par la pierre, car je suis un utilisateur de Windows et je galère à chaque fois que je dois utiliser un Mac. Mais finalement, ils passaient beaucoup de temps à se marcher les uns sur les autres pour trouver les bonnes commandes au point d'y consacrer plus d'énergie que présenter le sujet. J'avoue que j'ai été un peu déçu.

Bonus :

- ROTI : ❤❤♡♡♡

- Slides de la présentation

III-A-2 - Je fais ce que je veux avec Java EE

(Université, partie 1)

Le titre est prometteur, surtout que c'est exactement ce que je voudrais faire. La conférence est divisée en deux parties : une sur CDI et une sur JCA.

Honnêtement, avant « CDI » pour moi, c'était la dénomination de la bibliothèque au lycée. Plus maintenant. Maintenant, j'ai une seule idée en tête : travailler sur un projet qui utilise ce formidable mécanisme d'injections et d'intercepteurs. Même si en réfléchissant bien, le framework avec lequel je travaille utilise quelque chose qui y ressemble dans sa version 3.x (framework propriétaire, ne cherchez pas).

La partie JCA m'intéresse moins, peut-être parce que c'est surtout centré sur des files MQTT (en tout cas c'est l'impression que j'en retiens) et je travaille déjà avec des files MQ à longueur de journée.

Bonus :

- ROTI : ❤❤❤❤♡

III-A-3 - Tout ce que vous avez toujours voulu savoir sur les lambdas et plus encore

Par Rémi Forax (Université, partie 2)

T : J'aime bien assister aux présentations de Rémi. Il est un des (trop) rares orateurs à sensibiliser le public sur le fait que Java n'est pas qu'un langage de programmation. Dans Java, il y a bien entendu le langage, qui passait en version 8 cette année et dont les lambdas ont attiré toute l'attention. Dans Java, il y a aussi la JVM (Virtual Machine) qui est une spécificité de l'écosystème. J'aurais tendance à penser que la JVM est tout aussi importante que le langage. Pourtant, encore trop de développeurs font comme si c'était un détail.

Ayant manqué la première partie de la présentation, j'ai eu un peu de mal à me rattraper aux branches. Il faut dire qu'une présentation à la mode Forax, c'est minimum 50 % de bytecode et d'assembleur. Cela peut en intimider plus d'un, surtout la première fois, mais on s'y fait vite.

J'ai découvert plein de choses auxquelles je n'avais même pas pensé à propos des lambdas, à commencer par le fait qu'elles ne sont pas sérialisables par défaut, ce qui est logique quand on y pense. Si on a besoin d'une lambda sérialisable, il suffit de la déclarer ainsi :

@FunctionnalInterface
interface Foo extends IntBinaryOperator, Serializable {
...
}

Foo ibo = (a, b) -> a + b;

Je trouve que ça a le mérite d'être clair. Mais quand on ne peut pas, il existe une seconde façon, « pas très sexy ». Ça pique un peu les yeux mais c'est assez clair également :

IntBinaryOperator ibo = (IntBinaryOperator & Serializable) (a, b) -> a + b;

Durant la seconde partie, Rémi est revenu sur l'implémentation multiple. Ce qui nous intéresse ici, c'est surtout le cas des interfaces fonctionnelles. En effet, l'implémentation multiple sur les interfaces existe depuis toujours dans Java. Cela ne posait toutefois aucun problème puisque les interfaces ne faisaient que définir des contrats. Maintenant que les interfaces peuvent contenir du code, les choses se corsent. Mais prenons un exemple. Imaginons deux interfaces I1 et I2, possédant toutes les deux une méthode par défaut nommée « truc » :

interface I1 {
default int truc() {
&#8230;
}
}

interface I2 {
default int truc() {
&#8230;
}
}

Et bien entendu, il n'y a absolument aucune raison que les méthodes « truc » de I1 et I2 fassent la même chose. Imaginons maintenant une classe qui implémente I1 et I2 :

class C implements  I1, I2 {
...

Si on n'écrit rien de plus, ça ne compile tout simplement pas. Il faut choisir si on veut la méthode de I1 ou celle de I2. L'utilisation de la notation I1::truc ne marche pas. Vous savez pourquoi bien entendu… À la place, on va utiliser le mot-clé super dans un nouveau contexte :

class C implements  I1, I2 {
public int tru() {
I1.super.truc();
}
}

Reste à savoir comment on compile tout ça, puisqu'une présentation de Rémi se doit d'aborder cette question, mais cela va dépasser mes compétences. Je vous invite donc à voir ou à revoir cette session sur Parleys.

R : J'ai trouvé cette présentation très intéressante et intense (c'est peut être d'ailleurs le plus gros souci si on n'est pas suffisamment prêt : le flot d'informations). De part son expérience de la JVM, Rémi nous a expliqué certaines limites (erreurs) liées à la conception initiale du langage. Je serais bien incapable de tout réciter de mémoire. Mais j'ai surtout retenu le cas du rajout d'une méthode abstraite dans une interface alors que cette interface est une composante d'une API publique (si l'on rajoute, les équipes implémentant cette interface ne vont pas être forcément contentes). D'où la solution apportée dans Java 8 de l'ajout du nouveau mot-clé default pour la création d'une implémentation par défaut pour une méthode d'une interface. J'en retiens également une règle d'or très importante pour les lambdas : ne pas faire de surcharge (il est trop hasardeux de définir quelle méthode sera appelée quand les méthodes ont le même nombre de paramètres). Cette présentation devrait être disponible sur Parleys : je la recommande (en plus, l'avantage c'est comme pour les présentations en anglais, on peut repasser les passages un peu complexes ;-))

Bonus :

- ROTI T : ❤❤❤❤♡

- ROTI R : ❤❤❤❤❤

- Lien Devoxx France

III-A-4 - JavaScript as a first programming language : votre IC prête pour la révolution

(Université, partie 2)

Bon, là on oublie l'objectif principal : je travaille en Java et je vais probablement continuer à travailler en Java pendant un certain temps (à moins qu'un projet PHP se débloque quelque part dans les tuyaux, parce que bon, à la base je suis une PHPiste). Mais ça fait un bout de temps que j'entends parler de Node.JS, c'est trop tentant. Donc direction la conférence Node.JS.

Résultat : deux jours après, j'avais un serveur Node.JS installé sur mon ordi personnel, avec pour objectif de recoder un de mes rares programmes personnels. C'est vous dire si j'ai été enthousiasmée. A priori, tout ce que je pouvais faire du PHP, je pourrais le faire en Node.JS ou presque. Pour Java, ça reste à voir, étant donné qu'on utilise Java pour de grosses usines à gaz.

Bonus :

- ROTI : ❤❤❤❤❤

III-A-5 - Java 8 Streams et Collectors : patterns, performances, parallélisation

Par José Paumard (Université, partie 2)

R : Comme la présentation sur les lambdas du matin ne m'avait pas complètement achevée, j'ai choisi de remettre cela avec les Streams et Collectors. Clairement après ces deux présentations, on se rend compte que Java 8 marque une évolution très importante (à mon sens plus importante que Java 5). José nous prévient d'entrée de jeu : les Iterators vont prendre un sacré coup d'obsolescence. Et en effet, durant la présentation, on se rend compte que cette nouvelle API (c'est une fluent API ce qui permet de chaîner les instructions) permet vraiment beaucoup de choses en très peu de lignes : filtrer, trier, extraire une valeur… Cerise sur le gâteau, tout cela peut être parallélisé sans aucun souci : il suffit de l'indiquer et la JVM se charge de tout.

T. : Attention, une simple boucle for sera souvent plus efficace que l'utilisation d'un lambda, en compréhension comme en performance. J'ai peur que les développeurs codent des lambdas à toutes les sauces, y compris pour parcourir des listes relativement petites. Dans ce cas, non seulement ça devient illisible mais en plus c'est contre-productif. Un des gros intérêts des lambdas est de fonctionner en multithread, mais ce n'est rentable qu'au-dessus d'une certaine taille (à déterminer selon le contexte). En effet, ça a un coût de gérer la parallélisation. En outre, les lambdas ne s'appliquent pas forcément à tous, en particulier lorsque les éléments de la liste sont interdépendants. Je pense toutefois que José a raison puisqu'on utilise les itérators pour parcourir et traiter les éléments sans mettre en évidence une éventuelle dépendance entre eux.

Bonus :

- ROTI : ❤❤❤❤❤

- Slides de la présentation

III-A-6 - Linux101 (ou Linux dompte le pingouin)

Par P.Grégoire et F.Weisbecker (Université)

Je suis un utilisateur du système d'exploitation Windows pour mon travail et également à la maison mais depuis quelque temps je redécouvre Linux pour tout ce qui touche à la virtualisation (Vagrant et Xen Server ). J'ai donc choisi cette université pour faire un point sur mes compétences et tenter de dénicher des astuces. Cette présentation était destinée à des débutants puisqu'elle reprenait les bases de Linux du système de fichiers, les droits utilisateurs, les montages d'unités de disques et finalement le packaging d'applications. La présentation était très plaisante du fait que les deux orateurs jouaient un rôle et était illustrée par de nombreuses expérimentations. Même si je connaissais la plupart des commandes, j'ai quand même appris certaines petites choses sur le montage d'unités de disques.

Bonus :

- ROTI : ❤❤❤❤♡

- Slides de la présentation

III-A-7 - Application Web Moderne en Java - The Code Story Way

Par Jean-Laurent de Morlhon et David Gageot (Hands-on Lab, parties 1 et 2)

J'avoue que je suis allé à ces deux sessions les mains dans les poches. Les autres participants sont tous venus avec un ordinateur portable. Je comptais y assister en tant que simple spectateur mais Jean-Laurent et David nous ont invités à travailler en binôme donc j'ai tout de même été actif et ce n'était pas plus mal. J'ai été un peu surpris de voir autant de monde avec un ordinateur portable. C'est impressionnant. Par contre j'ai été déçu de voir que les personnes ayant fait l'effort de trimbaler leur machine n'avaient pas (pour beaucoup d'entre eux) fait l'effort d'installer les logiciels (Java 8, Eclipse, Maven, etc.) à l'avance. Il a donc fallu consacrer un certain temps à corriger ça. Heureusement, nous avions accès au Wi-Fi.

Nous avons ensuite travaillé sur un projet très simple en partant de zéro. Pour cela, nous avons utilisé une dépendance Maven permettant de créer un site Web léger très facilement. C'est une dépendance qui utilise globalement la même stack que celle utilisée dans Code Story, ce qui fait que je la connaissais déjà en partie, mais de loin.

Le principe de la session est de réaliser le projet proposé en avançant par étape. Chaque étape est une sorte de petit exercice d'une quinzaine de minutes. Quand le délai est écoulé, les deux animateurs proposaient une solution et quelques explications. Vous retrouverez les étapes de ce Hands-on sur le github de David. Voici tout de même un résumé des premières étapes.

<dependencies>
<dependency>
<groupId>net.code-story</groupId>
<artifactId>http</artifactId>
<version>1.42</version>
</dependency>

Nous avons ensuite créé un premier fichier MarkDown, nommé « index.md » sans surprise, qui servira de page d'accueil pour le projet Web en cours de création. Pour commencer, on peut se contenter de dire bonjour dans ce fichier.

Et voilà, c'est tout ce dont on a besoin, grâce à «  Fluent http », pour créer une webapp avec un moteur HTTP embarqué. Il ne reste plus qu'à la lancer. Pour cela, un main Java sera largement suffisant :

public class Server {
public static void main(String[] args) {
new WebServer().start();
}
}

Ça démarre en quelques secondes et ça connaît déjà tous les formats qu'on utilisera par la suite (et donc pas seulement html et markdown)… Dans la suite, on a consommé du Jason, fait du templating à l'aide de différentes technos, organisé le template avec Bootstrap, lancé des tests, etc.

Au passage, on a ajouté plusieurs technos front, comme Bootstrap, non pas à l'aide d'un ajout statique du fichier JavaScript, mais à l'aide des versions packagées sous forme de Jar (webjar) directement à l'aide de Maven :

<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.1.1</version>
</dependency>

Allez, je vous laisse découvrir la suite sur le GitHub de David. Bon, nous n'avons pas réussi à tenir tout le planning et à aller jusqu'au bout du programme. Je crois que j'aurais pu rester une heure de plus pour avoir le plaisir de terminer. En tous cas, j'ai trouvé ça vraiment sympa. Les animateurs, comme les spectateurs, étaient accessibles. En suivant des célébrités comme Jean-Laurent et David, j'ai tendance à être impressionné mais je suis toujours impressionné de voir qu'ils n'ont pas pris la grosse tête et qu'ils sont vraiment « gentils » et ouverts.

Je dois dire que le travail en binôme était une bonne idée. J'ai ainsi constaté que je n'avais clairement pas les mêmes sensibilités ni d'ailleurs les mêmes compétences que mes voisins. Il y a des points sur lesquels j'avance super vite alors que mon binôme se sentait perdu. Et il y a d'autres points sur lesquels j'avais tendance à me démotiver, faute de ne rien comprendre du tout (ou disons de ne pas bien voir où on allait), alors que mon binôme semblait s'amuser.

Pour être franc, j'avais prévu de n'assister qu'à une seule séance mais c'était tellement bien que je suis resté jusqu'au bout. On pouvait admirer une vraie entraide entre les participants, ce que je n'ai pas toujours l'occasion d'observer au bureau (mais c'est une autre histoire). J'ai pu découvrir des technologies que je connaissais de nom mais auxquelles je ne m'intéressais pas plus que ça, car je pensais, à tort, qu'elles n'étaient pas biens ou pas adaptées à mes besoins.

Bonus :

- ROTI : ❤❤❤❤❤

III-A-8 - Git++ : Passez au niveau supérieur de la gestion de version

Par Cyril Lakech, Hubert Sablonniere (Tools in action, partie 1)

J'ai retenu deux points intéressants : le squelette pour le commentaire lors du commit et le ménage dans l'historique de la branche de développement avant le merge avec la branche principale.

Dans le squelette de commentaires, on retrouve le type (évolution, correction, refactoring…), la portée dans l'application (par exemple sur quelle page web cela porte), un titre, un descriptif un peu plus détaillé dans les lignes suivantes en finissant par une référence sur le ticket d'incident.

Pour le ménage dans l'historique cela consiste sur la branche de développement à fusionner les différents commits en un seul « gros » commit grâce au « rebase » avec un commentaire portant uniquement sur le but de la branche et du coup les commits polluants (comme celui où l'on se rend compte que l'on a commité par erreur avec une faute de frappe) sont purgés. Comme indiqué par les orateurs, cette technique n'est pas valable sur la branche principale et comporte certains risques qui nécessitent une équipe bien formée sur l'outil.

Bonus :

- ROTI : ❤❤❤❤♡

- Slides de la présentation

III-A-9 - Créons un Web component avec Polymer

Par Julien Jakubowski et Romain Linsolas (Tools in action)

R : Je m'abstiendrais de donner mon avis sur cette présentation, étant moi-même le présentateur. Sachez juste que j'ai modifié mon Tools In Action pour la proposer sous forme de « Brown Bag Lunch ». Donc si vous l'avez ratée, vous savez comment la revoir (elle ne sera hélas pas disponible sur Parleys, ce TiA n'ayant pas été filmé).

T : Durant cette présentation, Julien et Romain nous ont montré comment créer des composants/balises HTML personnalisés à l'aide de la bibliothèque Polymer. On en a besoin lorsqu'on doit souvent répéter l'utilisation d'un ensemble de balises. Pour illustrer la présentation, les orateurs ont pris l'exemple d'une application donnant la liste des personnages Marvel (Wolverine, Spider Man, etc.) et les faisant combattre.

Le code HTML pour afficher un personnage n'est pas très complexe mais il est un peu long. Il est d'autant plus long lorsqu'on doit afficher une demi-douzaine de super-héros. Voici le code en pur HTML pour Iron Man :

<div class="row row-super-hero">
<div class="col-lg-4">
<div id="box" class="hero">
<span class="profile">
<img src="images/1009368.jpg">
</span>
<div class="info">
<div class="desc">
<strong>Iron Man</strong>
<span>Wounded, captured and forced to build a weapon by his enemies, billionaire industrialist Tony Stark instead created an advanced suit of armor to save his life and escape captivity. Now with a new outlook on life, Tony uses his money and intelligence to make the world a safer, better place as Iron Man.</span>
</div>
</div>
</div>
</div>
</div>

Avec Polymer, on va définir un nouveau tag, qui correspondra à tout ce code. Voici le code avec Polymer pour créer une balise « super-hero » :

<polymer-element name="super-hero" attributes="heroId">
<link rel="stylesheet" href="../styles/super-hero.css">
<div class="col-lg-4">
<div id="box" class="hero">
<span class="profile">
<img src="{{ heroId + '.' + hero.thumbnail.extension }}">
</span>
<div class="info">
<div class="desc">
<strong>{{ hero.name }}</strong>
<span>{{ hero.description }}</span>
</div>
</div>
</div>
</div>
<script>
var module = (function() {
var fetch = function(id) {
// Pour des problèmes de réseau, on utilise le stockage local plutôt que l'API de Marvel directement.
var storedHero = localStorage.getItem('hero.' + id);
return JSON.parse(storedHero);
};
return {
ready: function () {
this.hero = fetch(this.heroId);
}
};
})();
</script>
</polymer-element>

Il suffit ensuite d'utiliser cette nouvelle balise en passant les paramètres nécessaires comme des attributs.

<div class="row row-super-hero">
<super-hero heroId="1009718"></super-hero>
<super-hero heroId="1009351"></super-hero>
<super-hero heroId="1009610"></super-hero>
</div>
<div class="row row-super-hero">
<super-hero heroId="1009368"></super-hero>
<super-hero heroId="1009664"></super-hero>
<super-hero heroId="1009220"></super-hero>
</div>

Durant la présentation, les orateurs ont créé un générateur de combats de super-héros. Cela suppose que les composants puissent dialoguer les uns avec les autres, et qu'ils aient accès à JavaScript.

Bonus :

- ROTI : ❤❤❤❤❤

- Slides de la présentation

- Repo Github

- Descriptif du déroulement de la présentation

III-A-10 - SonarQube sans quitter son IDE

(Tools in action)

SonarQube, c'est un logiciel pour (entre autres) vérifier la qualité du code, le pourcentage de couverture des tests, ce genre de choses. Pratique, mais ça tourne à partir des branches SVN (ou assimilés, il se trouve que je travaille avec du SVN) avec des analyses planifiées.

Et là, ce qu'on nous présente, c'est un plugin Eclipse (ou IntelliJ) qui permet d'utiliser SonarQube directement en local, sans avoir à mettre le code en ligne (pratique pour un code non terminé) et capable de faire la différence entre les mochetés qu'il y avait avant et celles que vous venez d'ajouter (et que vous devez retirer avant de commiter, sinon votre chef va vous arracher les oreilles).

I'm in love, je vais essayer d'installer un serveur SonarQube et le plugin qui va avec au boulot.

Bonus :

- ROTI : ❤❤❤❤❤

III-A-11 - 30 minutes pour développer une appli Java EE ? C'est largement suffisant avec Forge 2.0

Par Antonio Goncalves (Tools in action)

Je dois avouer que je suis un grand fan d'Antonio. C'est quelqu'un que j'admire et que je respecte énormément. Et autant le dire tout de suite : il assure. Je comprends pourquoi il est si souvent invité dans des conférences.

Antonio nous a montré la puissance de JBoss Forge, un outil développé par JBoss (sans surprise) et qui me fait penser à Spring Roo, à travers différents cas d'usage classiques (au sens légitime). Forge s'utilise en ligne de commande dans un terminal standard (option utilisée durant la démonstration) ou dans votre IDE favori. En gros, il s'agit de taper des commandes. Antonio a d'ailleurs beaucoup insisté sur l'utilisation de la touche de tabulation qui permet la complexion et qui propose les commandes disponibles. Au début, je trouvais que c'était un peu « bidon » mais force est d'admettre que c'est vraiment puissant, car les propositions s'adaptent au contexte. En outre, Forge adapte les commandes et leurs actions en fonction de votre historique.

@Claude

Alors, à quoi ça sert Forge ? En gros, cela permet de créer des « éléments » plus ou moins complexes avec une simple commande. On peut ainsi créer des classes, y ajouter des attributs ou des méthodes, ou même créer un projet complet depuis zéro. Chaque commande a une action bien spécifique qui dépend du contexte et il est possible/recommandé d'écrire un script pour en enchaîner plusieurs.

Il est également possible d'ajouter de grandes fonctionnalités en choisissant son framework de prédilection. Durant la présentation, Antonio nous a ainsi montré comment créer une application CRUD complète (avec 4-5 beans) utilisant JSF 2 et JPA. Et l'IHM ainsi créée n'avaient rien de ridicule, bien au contraire.

En modifiant un peu son script, il avait ensuite la possibilité de remplacer JSF par AngularJS. Quelques commandes simples plus tard, il avait ajouté des Web services REST au projet. Moi qui ne suis pas très copain avec ce genre d'approche, je dois bien reconnaître que c'était vraiment fort. D'ailleurs, c'est une technique qu'on peut utiliser pour apprendre une nouvelle technologie, en ajoutant des fonctionnalités pas à pas.

En outre, Forge est un outil d'analyse et d'écriture de code, ce qui nous amène à la seconde partie de la présentation. En effet, on peut ajouter de nombreux modules complémentaires déjà prêts à Forge. Le module AngularJS serait un bon exemple. Mais on peut également créer (et partager) ses propres modules. Antonio nous a ainsi montré comment développer un petit module qui permettra d'ajouter des annotations maison au projet.

R : N'ayant été inspiré par aucun sujet, j'ai choisi cette présentation pour la réputation d'Antonio. Je ne regrette pas. J'aurais besoin de manipuler un peu pour bien déterminer les limites de JBoss Forge. Mais cette présentation très claire en 30 minutes était parfaite pour se faire un premier avis. Cet outil permet tout de même de créer en très peu de temps une application tout à fait opérationnelle. J'ai particulièrement apprécié la convivialité : complétion des instructions, analyse du code déjà existant, possibilité de travailler en script, extensibilité… Bref un bon outil qui me semble bien pensé et très efficace…

C : Pas mieux ;-) Si j'avais à débuter un projet, là tout de suite, je recommanderais l'usage de Forge. Et pour les gens qui utilisent des frameworks propriétaires avec une architecture particulière, il doit être possible de mettre au point ses propres extensions pour faire du code compatible avec le framework en question.

Bonus :

- ROTI T : ❤❤❤❤❤

- ROTI R : ❤❤❤❤❤

- ROTI C : ❤❤❤❤❤

III-A-12 - One Java library to rule all security protocols

Par Jérôme Leleu (Tools in action)

Pour une présentation planifiée en fin de journée, alors que les spectateurs commencent à ressentir la fatigue, je trouve qu'elle s'est très bien déroulée. Le sujet présenté par Jérôme n'est pas simple. Il est pourtant important pour de nombreux projet puisqu'il s'agit de l'authentification sur les systèmes.

Que vous ayez eu à programmer un simple login/password avec un minimum de sécurité ou utiliser un des protocoles à la mode comme OpenId ou Oauth avec Facebook ou Google en provider, vous savez que cette fonctionnalité est loin d'être triviale. Qui plus est, chaque méthode a ses particulatités et on s'emmêle vite les pinceaux.

La bibliothèque PAC4J, présentée lors de cette session, a pour objectif de simplifier et uniformiser tous ces traitements. PAC4J est constituée de modules. Au module Core, qui sert de socle commun, il suffit d'ajouter le module cible avec Maven.

Voici par exemple comment ajouter le module d'identification Oauth pour se connecter avec Facebook :

<dependency>
<groupId>org.pac4j</groupId>
<artifactId>j2e-pac4j</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.pac4j</groupId>
<artifactId>pac4j-oauth</artifactId>
<version>1.5.0</version>
</dependency>

On pourra ainsi écrire son client dédié, avec éventuellement plusieurs protocoles.

public class MyClientsFactory implements ClientsFactory {
@Override
public Clients build() {
final FacebookClient facebookClient = new FacebookClient("fbKey", "fbSecret");
final TwitterClient twitterClient = new TwitterClient("twKey", "twSecret");
final Google2Client googleClient = new Google2Client("gooKey", "gooSecret");
return new Clients("http://localhost:8080/callback", facebookClient, twitterClient, googleClient);
...
return clients;
}
}

Et il ne reste plus qu'à ajouter un filtre dans votre web.xml pour sécuriser votre webapp :

<filter>
<filter-name>FacebookFilter</filter-name>
<filter-class>org.pac4j.j2e.filter.RequiresAuthenticationFilter</filter-class>
<init-param>
<param-name>clientsFactory</param-name>
<param-value>org.leleuj.config.MyClientsFactory</param-value>
</init-param>
<init-param>
<param-name>clientName</param-name>
<param-value>FacebookClient</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FacebookFilter</filter-name>
<url-pattern>/facebook/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

Notez qu'il est très facile de développer un nouveau module, pour un protocole qui ne serait pas encore couvert (PAC4J connaît cinq protocoles et dix-huit fournisseurs), car les processus d'authentification sont toujours plus ou moins basés sur les mêmes interactions.

À la suite de cette présentation, nous avons rédigé un article initulé « Tutoriel pour s'authentifier avec Facebook, Twitter ou Google, à l'aide de bibliothèque PAC4j, en 5 minutes » que je vous invite à lire, car il montre à quel point cela peut être facile.

Bonus :

- ROTI T : ❤❤❤❤♡

- Slides de la présentation

III-A-13 - Tout ce que vous avez toujours voulu savoir de la JVM sans jamais oser lui demander en ligne de commande

Par Brice Leporini (Tools in action)

C : Tout est dans le titre : de la ligne de commande, plein de lignes de commande pour voir la JVM et ce qu'elle a dans le ventre.

Enfin, je sais pourquoi mon Eclipse rame autant quand je modifie une malheureuse ligne de commentaire.

R : On pourrait se dire quel est l'intérêt de travailler en ligne de commande avec les outils graphiques actuels. Mais comme le fait remarquer dès le départ l'orateur, on fait comment sur des machines sans IHM ou sur lequel il n'est pas possible de brancher ces fameux outils graphiques. D'où le bénéfice de notre bonne vieille ligne de commande. Durant cette présentation, nous avons pu nous rendre compte que si l'on prend un peu de temps pour connaître, la ligne de commande est tout à fait suffisante pour identifier un problème.

Bonus :

- ROTI T : ❤❤❤❤❤

- Slides de la présentation

III-A-14 - Au secours, mon portable part en prod ! (ou presque…)

Par P.Chaussalet (Tools in action)

Comme je cherchais les sessions qui parlaient de Docker, j'ai failli louper cette session, car le titre n'était pas très évocateur. C'est en lisant le descriptif que j'ai su que ça allait parler de Docker. Malheureusement pour moi la présentation est passée rapidement sur le principe de Docker. D'un autre côté c'est peut être de ma faute, car il y avait un Hand's of Labs le matin que j'ai loupé et qui aurait pu être profitable pour en apprendre plus sur Docker. N'empêche que ce tools in action était bien ficelé, car il montrait tout l'intérêt de Docker pour réduire les phases de déploiement et simplifier les livraisons. À la fin de la session, je ne savais pas quoi penser de Docker, car c'est encore tout neuf. Je viens juste d'investir du temps pour monter en compétence sur Vagrant. Certes, Docker c'est moins gourmand qu'une machine virtuelle mais je ne sais pas quoi penser si au niveau production la distribution Linux est différente de la distribution utilisée pour le développement.

Bonus :

- ROTI T : ❤❤❤❤♡

- Slides de la présentation

III-A-15 - Ansible in action - le provisionning au bon niveau d'abstraction

Par O.Girardot (Tools in action)

J'ai entendu parler de Ansible il n'y a pas si longtemps, car j'ai souhaité installer ShareLatex et il y avait un projet sur Github pour provisionner cette application sous Linux. Par ailleurs, c'est un peu la foire sur les outils pour provisionner (Puppet, Chef, Ansible, Sous-Chef, Fabric…) et actuellement j'ai choisi le parti d'utiliser Puppet sans être un grand spécialiste. Je voulais donc comprendre via cette présentation ce que pourrait m'apporter Ansible. Après une introduction vantant les mérites d'utiliser un outil pour provisionner, Olivier a ensuite détaillé Ansible. C'est un projet écrit en Python et où les fichiers sont décrits dans des fichiers de configuration appelés PlayBooks via une syntaxe YAML. À la grosse différence avec Puppet c'est qu'Ansible n'est pas installé sur les machines à déployer mais sur le poste hôte. L'accès se fait uniquement par SSH. Olivier a ensuite détaillé le contenu d'un fichier PlayBooks où l'on retrouve des Inventory, Hosts, Tasks, Handlers, Variables et Templates. Sans vouloir tout détailler, les tasks, par exemple, vont appeler un des nombreux modules Ansible pour réaliser une action comme copier un fichier, installer un package ou démarrer un service. La présentation a ensuite parlé des bonnes pratiques mais n'étant pas un spécialiste, je n'ai pas pu en profiter. C'est suivi de quelques mots sur l'intégration de Ansible avec Vagrant qui se fait très facilement puisqu'il suffit d'indiquer le fichier Playbook.yml. Finalement, Olivier a donné un avis personnel déjà acquis à la cause d'Ansible ;-)

- ROTI T : ❤❤❤♡♡

III-A-16 - Devoxx 4 kids

Ayant plus de 14 ans, je n'ai bien entendu pas participé à cet événement spécial dont le but est de « permettre aux enfants d'être plus créatifs avec un ordinateur, de leur faire découvrir la programmation, la logique informatique et l'utilisation des différents services disponibles sur Internet tout en s'amusant ».

Nombre d'enfants : 9 (6 garçons et 3 filles).

Moyenne d'âge : 9 ans.

Cette année, les enfants ont pu jouer/programmer un petit robot Nao et ils ont beaucoup aimé au point que ça a été difficile de les faire décoller pour le goûter et les bonbons. Les enfants ont également pu s'initier à Scratch et Leap Motion.

III-B - Jour 2 (jeudi)

Le deuxième et le troisième jour de Devoxx France sont plus classiques. Le matin, tout le monde est réuni dans la grande salle pour assister aux keynotes. Puis la grande salle est divisée en plusieurs petites salles dans lesquelles se tiendront les conférences.

III-B-1 - Bienvenue à Devoxx France 2014

Le « 8 » était le chiffre du jour, comme l'annonçait José en introduction. C'est vrai que c'est aussi un petit peu celui de l'année avec la sortie du dernier JDK. La présentation a été un peu (trop) brève. José nous a tout de même donné quelques chiffres :

- 1375 visiteurs le mercredi ;

- 1497 le jeudi/vendredi ;

- 202 orateurs.

L'édition 2014 a été un vrai succès. la conférence a été marquée « sold out » très tôt, si bien que toutes les places ont été vendues au tarif « early bird ».

Nicolas, quant à lui, nous a parlé de l'organisation. Nous sommes tous des développeurs « passionnnés » et nous avons des T-Shirts pour le prouver, a-t-il dit. Le T-shirt arborait en effet une faute d'orthographe. Et je crois bien que je n'étais pas le seul à ne pas l'avoir vu ;-)

La grande annonce de la matinée était la date de Devoxx France 2015. Cette édition se déroulera du 8 au 10 avril 2015. Et ce sera au Palais des Congrès. L'hôtel Marriott était très bien mais un peu petit au vu du nombre de participant croissant.

Et pendant tout ce temps, un petit quadricoptère survolait la scène. Il était équipé d'une caméra et envoyait son flux vidéo sur le grand écran.

III-B-2 - L'ère numérique

Par Gilles Babinet et Kwame Yamgnane (Keynote)

J'ai bien aimé cette keynote pour son dynamisme mais je suis d'accord avec Guillaume certaines parties étaient un peu polémiques sans pour autant apporter des vérités.

- ROTI : ❤❤♡♡♡

III-B-3 - Le métier de développeur

Par Guy Mamou-Mani (Keynote)

C : Honnêtement, une semaine après, je me rappelle surtout le fait que la SSII est maintenant une ESN, qu'il y a un loupé quelque part parce que dans le domaine du numérique on a à la fois des chômeurs et des demandes non pourvues, et qu'il n'y a pas assez de femmes (mais ça, j'avais pas besoin qu'on me le dise : nous sommes deux dans une équipe de dix…).

R : Je ne suis pas trop en accord avec une partie de cette présentation. L'orateur a expliqué que nos talents en informatique étaient parmi les meilleurs du monde, car les pays étrangers venaient chercher nos ingénieurs alors que nous ne faisions pas l'inverse puisque nous avions déjà les personnes les plus fortes en France. J'aurais été moins chauvin : j'ai eu plusieurs collègues provenant d'autres pays (ils venaient simplement de pays où l'on gagne moins bien sa vie dans le métier et dans certains cas leur but était également de se faire une expérience à l'étranger pour améliorer les opportunités s'ils retournent dans leur pays natal). Donc peut-être que tout simplement les gens partent travailler hors de France dans un but similaire.

- ROTI C : ❤❤♡♡♡

- ROTI R : ❤❤❤♡♡

III-B-4 - Simplon

Par Henri Fournet (Keynote)

R : Simplon est une école qui a un an d'existence. L'idée est de fournir une formation intensive en développement à des personnes qui n'ont aucune connaissance en développement mais qui ont un projet.

Si je ne crois pas que l'on puisse devenir développeur en quelques mois de formation intensive, j'aime bien l'idée, car finalement cela donne un coup de pouce à des projets qui ne seraient peut-être pas apparus sans cela. Et puis il faut bien débuter…

C : Un non-développeur qui se dit « Et si on apprenait à coder à des gens ? » et qui lance une école sur le thème, ça a le mérite d'être intéressant. Et ce même si on est soi-même un dev et qu'on ne se sent pas du tout concerné.

T : J'ai discuté un peu avec lui après. Pour la deuxième classe, ils vont changer de concept en ne prenant que des gens intéressés par l'informatique et non plus des gens qui pensent que ça serait une compétence annexe en plus, pour ensuite devenir Chef de projet. Notez qu'un mec au chômage, qui prend un cours d'info en espérant devenir CP, je trouve que c'est du foutage de gueule et même insultant.

- ROTI R : ❤❤❤❤♡

- ROTI C : ❤❤❤♡♡

- ROTI T : ❤❤❤♡♡

III-B-5 - La France a besoin d'une update

Par Tariq Krim (Keynote surprise)

Tariq est intervenu en invité surprise. Pas la peine de le chercher sur le programme ; il n'y est pas. Tariq est le fondateur de Netvibes et il a fait parler de lui dernièrement après avoir établi une liste des cents (120) meilleurs développeurs français. J'avoue à titre personnel que je n'ai pas bien compris la constitution de cette liste, et ce n'est pas parce que j'en suis absent.

Ses slides indiquaient que « la France a besoin d'une mise-à-jour ». Après avoir décrit comment il est tombé dans l'informatique, Tariq a expliqué comment il s'est retrouvé dans la mission du gouvernement pour le numérique et pourquoi il a donné un coup de pied dans la fourmilière. En effet, les plans datent d'il y a vingt ans. Une maj s'impose donc. En outre, le modèle français est orienté sur les objectifs et non sur les personnes comme c'est le cas dans d'autres régions qui fonctionnent comme à la Silicon Valley. C'est pour cela qu'il a établi sa fameuse liste.

C : J'aime les gens réalistes : quelqu'un qui dit que le problème du numérique en France, c'est que la France pense « Structure » là où les USA pensent « Personnes » et que les gens qui décident ne comprennent rien au domaine (Qui a pensé « pare-feu Open Office » en lisant ceci ?) et qu'il faut que ça change, ça c'est quelqu'un de réaliste.

- ROTI C : ❤❤❤♡♡

- ROTI T : ❤❤❤♡♡

- ROTI R : ❤❤❤❤♡

III-B-6 - Des SSII aux SS3I ? Sociétés au service de l'ingénierie informatique

Par Aude Amarrutu et Betty Moreau (Conférence)

Dans cette présentation, rondement menée, les deux charmantes oratrices nous expliquent que les sociétés de service (SSII) sont des marchands de viande. Cette réputation ne serait pas (toujours) usurpée. La faute en reviendrait en partie au code du travail, d'après elles. La plupart des SSII n'auraient pas de vrai service RH. Un RH, c'est un vrai métier. Et un RH, ce n'est pas un commercial.

Elles précisent que ce serait aussi de la faute des clients qui veulent toujours plus en payant toujours moins. Et les SSII n'auraient pas d'autre choix que de suivre. Derrière tout ça, précisent-elles, il y a une réalité économique que les oratrices ont illustrée de nombreux chiffres. Dans les grandes lignes, au salaire de la personne, il faut ajouter les coûts de fonctionnement (commerciaux, loyers, électricité, etc.) de la SSII, ce qui multiplie déjà le salaire Brut par 1.8 (voire 2.2 pour les grosses structures). À titre d'exemple, pour un salaire de 36k€, cela revient à 64k€ au patron. Pour de plus amples détails sur les calculs, je vous recommande la lecture d'un billet de blog intitulé « que coûte un salarié ». Sur une base de 217 jours travaillés par an, le seuil de rentabilité de la personne est donc à 300€ par jour. Si le prestataire est vendu 320€/j, il génère donc un bénéfice quotidien de 20€, soit seulement 4600€ par an, ce qui est finalement assez peu. Moralité, ce n'est pas le commercial (souvent intéressé) qui se rempli les poches.

Elles précisent que c'est aussi au développeur de faire le travail. C'est à lui de se faire connaître. C'est à lui de faire connaître ses envies à son responsable. Il doit se prendre en main. Et quitte à faire tout ce travail, la tentation de devenir freelance est forte. Elles illustrent d'ailleurs (là encore) cette idée avec de nombreux chiffres.

J'ai trouvé la présentation très didactique mais, en même temps, il y a certaines choses que je n'ai pas aimées. Par exemple, les présentatrices nous parlent de ces freelances qui, après avoir passé plus de trois ans dans la même entreprise, ont profité du code du travail pour imposer une embauche avec des conditions salariales très intéressantes. Je ne pourrais pas dire si c'est une histoire vraie. Je peux dire, en revanche, qu'un indépendant qui ferait ça se tirerait une balle dans le pied. Mais les SSII aiment bien raconter cela aux clients et ce n'est pas la première fois que j'entendais cette histoire. Quelqu'un connaît-il le nom de cet indépendant « indélicat » et de la société dont il s'agit ?

Les chiffres annoncés dans cette seconde partie de la présentation m'ont également un peu dérangé. D'ailleurs les spectateurs n'ont pas manqué de marquer leur désapprobation à la fin lors des questions/réponses. Je précise que les chiffres/propos n'étaient pas faux mais, sortis de leur contexte, ils changent le sens de ce qui était dit. Je suis d'accord sur le principe de tirer la couverture de son côté, mais pas n'importe comment. Bref, je suis sorti de la salle en étant fâché et je n'étais pas le seul.

Heureusement les SSII changent. Il faut désormais compter avec les ESN et, donc, avec les SS3I. Et fort heureusement aussi, il existe de bonnes SSII. Ouf. Le principe des SS3I présenté est vraiment intéressant et on espère que cela va faire évoluer la profession dans le bon sens.

- ROTI : ❤♡♡♡♡

- Calculette des freelances

- Slides de la présentation

III-B-7 - Du legacy à Scala

Par François Sarradin (Code story)

Cette année, le format de Code story a un peu changé. Lors de l'édition précédente, un projet était réalisé par une équipe et par paliers d'une heure. Cela permettait donc d'aborder un type de besoin à chaque session. Le scénario est un peu différent cette année puisqu'il n'était plus question de dérouler les étapes d'un projet unique. À la place, des intervenants de renom nous ont proposé des séances de « live coding » sur des thèmes particulier. J'avoue que je me suis installé dans la salle sans être au courant de ce changement de programme, mais j'aime bien également.

Je n'ai assisté qu'à la session animée par François Sarradin, qui traitait d'optimisations/évolutions dans les tests (d'acceptance) en Scala. Les tests, ça va, je connais. Les TDD, je maîtrise assez bien. Ici on faisait plutôt du BDD mais je me sens aussi à l'aise sur la question. Par contre, je ne connais que les grandes lignes de Scala, qui reste un langage sur la JVM. Cela ne m'a pas empêché de suivre (à peu près) la séance.

Le code allait vraiment très vite, d'autant plus que François maîtrise vraiment bien son IDE (IntelliJ) et surtout ses fonctionnalités d'assistance lors de la phase de codage. Mais comme il explique bien les concepts et qu'il avance par étapes logiques, on n'est jamais perdu. Cela dit, je serais bien incapable de reproduire ce qu'il nous a montré. C'est vraiment dommage que ça ne soit pas enregistré.

- ROTI : ❤❤❤❤♡

III-B-8 - Bitcoin et monnaies cryptographiques

Par Grégory Paul (Conférence)

Qui n'a jamais entendu parler du Bitcoin, cette monnaie électronique dont le cours atteint des sommets ? Tout le monde voit « à peu près » ce que c'est. Enfin, il voit mais ça reste assez flou, n'est ce pas ? La présentation de Grégory avait pour objectif de démystifier le Bitcoin et d'en expliquer les concepts sous-jacents.

Pour faire simple, le Bitcoin est une monnaie dont il existe une quantité limitée d'unités. Par analogie avec les monnaies plus traditionnelles, on pourrait dire qu'il existe une quantité fixe de pièces (virtuelles) en Bitcoin. Et il n'est pas possible d'en ajouter, contrairement à l'Euro par exemple dont le nombre d'unité en circulation varie selon les besoins des gouvernements. D'ailleurs, tous les Bitcoins n'ont pas encore été « minés », c'est-à-dire qu'ils n'ont pas tous été encore générés. Ça veut dire que la quantité maximale de Bitcoins en circulation n'a pas encore été atteinte.

En outre, le système des Bitcoins n'appartient à personne, ni à une banque, ni à un état, ni à une organisation quelconque : à personne… Le Bitcoin se suffit à lui-même. Son cours n'est pas fixé en fonction d'une réserve d'or ou de terre ; il suit les principes de l'offre et la demande. C'est pour cela qu'on entend souvent dire que le Bitcoin est une valeur spéculative, à juste titre.

Pour le moment, très peu de magasins acceptent les Bitcoins. Et ça reste un peu gadget. Enfin, un gadget à plusieurs milliards de Dollars tout de même… Un des avantages de cette monnaie réside dans les faibles coûts de fonctionnement et de commission lors des transferts. Prenons un exemple. Lorsque vous échangez des dollars contre des euros, vous devez d'abord accepter un taux de change, qui n'est pas forcément le taux officiel, et vous devez verser une commission. Cette dernière varie d'un organisme à l'autre mais se situe généralement entre 5 et 10 %. Il en va de même lorsque vous souhaitez envoyer un peu d'argent à votre famille de l'autre côté du globe. Certaines sociétés en vivent d'ailleurs grassement. Avec le Bitcoin, vous n'allez payer qu'une broutille qui couvrira tout juste les dépenses en électricité. Voici un autre exemple. Certains pays interdisent aux capitaux (en monnaie locale) de quitter le territoire. Avec le Bitcoin, vous pouvez facilement contourner le problème.

Bon, je crois que c'est l'essentiel à connaître sur le Bitcoin. Parlons maintenant de la technique qui se cache derrière. Le Bitcoin est une monnaie dites « cryptographique » dont l'algorithme est publique. Vous pourrez le retrouver sur GitHub, car c'était la volonté de son créateur, un certain Nakamoto. Ce point est essentiel. Le Bitcoin ne repose pas sur des secrets technologiques mais sur des algorithmes connus, ce qui est bien plus sûr, notamment parce que de nombreux experts ont pu mettre ces algorithmes à l'épreuve. Et comme vous devez vous en douter, si le Bitcoin existe toujours, c'est que ses principes de fonctionnement sont robustes.

Pour générer des Bitcoins, il faut les « miner ». C'est comme miner de l'or. Pour ce faire, vous devez utiliser un algorithme de hashage (SHA-256) sur des entiers, de sorte que la réponse corresponde à une séquence de 0 et de 1 bien spécifique. Le nombre de séquences possibles correspond d'ailleurs au nombre maximal de Bitcoins. Lorsqu'un mineur résout une série de séquences, il se voit offrir un Bitcoin en récompense de son « travail ». Un Bitcoin est généré pour chaque série de 25 séquences. Il suffit de résoudre une séquence au bon moment pour gagner le lot. Cela peut donc faire 24 malheureux et un heureux. Pour éviter ce désagrément, la plupart des mineurs se regroupent désormais en ferme (équipe) et partagent les gains.

Pour résoudre (casser) une fonction de hash, il faut mettre à contribution l'unité de calcul de votre processeur. Il faut donc des processeurs très puissants. Ici, on ne mesure pas la puissance en nombre de calculs par seconde mais par rapport à la consommation énergétique. À ce jeu-là, les GPU des cartes graphiques, qui savent travailler sur des matrices, sont bien plus performantes que les CPU classiques. Mais les GPU restent encore trop peu performantes. Les grands mineurs leur préfèrent donc des cartes dédiées. Pour vous donner une idée de la puissance de calcul que cela représente, si vous cumulez la puissance des cinq cents plus gros super calculateurs, cela représente environ 250 pétaflops. La puissance du réseau Bitcoin est estimée à 64 000 pétaflops, soit 256 fois plus.

Lorsqu'une personne reçoit un Bitcoin, celui-ci est encrypté avec la clé privée de cette personne. Le Bitcoin devient alors inviolable. Mais si la personne perd sa clé, elle ne peut donc plus utiliser les Bitcoins associés. Vous avez sûrement déjà entendu parler de ces personnes qui ont cassé leur disque dur, perdant ainsi une petite fortune. Il est possible de stocker ses Bitcoins sur une banque en ligne. Les plus sérieuses sont relativement bien sécurisées. Mais vous avez certainement, là encore, entendu parler de ces sites qui se sont fait pirater, car ils étaient mal protégés. Au final, les pertes sont énormes, en particulier quand cela conduit à la fermeture pure et simple du service.

Pour comprendre le reste, il faut bien comprendre que le réseau Bitcoin est décentralisé et fonctionne pair à pair. Lorsqu'un Bitcoin est généré, qu'une transaction est effectuée, ou pour tous autres événements, il y a une action sur un des nœuds du système. Puis une réplication sur les autres nœuds est effectuée, ce qui peut prendre quelques minutes. Lorsqu'on réalise des transactions en Bitcoin, une chaîne (liste chaînée) de blocs de transaction est créée. Il n'est alors pas impossible, si les actions s'enchaînent assez vite, que deux chaînes soient créées. heureusement le réseau sait rétablir la situation en ne conservant que la chaîne la plus longue.

- ROTI : ❤❤❤❤♡

III-B-9 - Chrome Apps for Desktop and Mobile

Par J.Marini (Conférence)

M : c'était une présentation en anglais qui s'intéressait à présenter le principe des applications Chrome sur le bureau (Desktop). En fait ce sont juste des applications Web qui peuvent profiter des ressources locales via des API fournies par Chrome. Tout l'intérêt est de combiner les avantages du Web et des applications Desktop, en gros des clients riches. Bref, rien de révolutionnaire sur le principe (Flash et Applet, même principe) mais derrière il y a le rouleau compresseur Google qui arrivera à imposer cette technologie. Au final, intéressant même si je n'investirai pas de temps là-dessus.

R : Cette présentation était en anglais. C'était beaucoup plus difficile avec mon niveau en anglais de comprendre toutes les subtilités. Mais cela était suffisant pour comprendre les grandes lignes. Les applications sont développées en HTML5, CSS, JavaScript et l'API fournie par Chrome. Les applications peuvent fonctionner en offline. Le principal intérêt est que Chrome sert d'interpréteur à l'application : elle peut donc être déployée sur toutes les plateformes où une version de Chrome est disponible (cela peut être intéressant pour développer à la fois pour Android, iOS, Mac OS, Linux et Windows).

C : Bref, une Chrome App, c'est comme une Web App mais sans le Web : c'est codé avec les mêmes technos, ça tourne avec le moteur de Chrome (mais pas dans Chrome même) et ça peut fonctionner offline.

- ROTI M : ❤❤❤❤♡

- ROTI R : ❤❤❤❤♡

- ROTI C : ❤❤❤❤♡

III-B-10 - Cassandra une nouvelle ère

Par Jonathan Ellis (Conférence)

J'ai souhaité aller à cette présentation essentiellement pour l'orateur, car c'est quand même monsieur Cassandra. Il n'est pas le créateur mais il a énormément contribué aux codes de Cassandra. Il est cofondateur de la société DataStax qui propose une distribution de Cassandra. Chose surprenante, la session était en français. Son français était hésitant, pas parfait mais je salue l'effort réalisé. Concernant le contenu de la présentation, elle s'adressait clairement au débutant et elle se focalisait sur les aspects commerciaux de Cassandra puisque Jonathan a présenté les caractéristiques et les usages de la base de données NoSQL à travers son utilisation au niveau de trois entreprises.

- ROTI M : ❤❤❤❤♡

III-B-11 - Square: de la collecte d'information à la prise de décision

Par Pierre-Yves Ricau (Conférence)

La société Square fournit un matériel (avec le logiciel associé) qui se branche sur la prise Jack audio d'un smartphone et qui permet de lire la piste magnétique d'une carte de crédit afin de faire un paiement. L'orateur nous a présenté le retour d'expérience dans la gestion de la boucle de feedback : différentes méthodes de collecte d'informations (support, comportement de l'utilisateur, etc,) et restitution de ces informations aux différents décideurs.

- ROTI M : ❤❤❤❤♡

III-B-12 - Vive les WebSockets libres

Par Jean-François Arcand (Conférence)

L'orateur est le créateur d'Atmosphère. Atmosphère est à l'origine de la JSR 356 sur les Websockets. Mais cette JSR et les Websockets comportent certaines limites à cause de certains navigateurs, des pare-feux et de certains serveurs d'applications. L'orateur nous a présenté avec humour ces différentes limites et comment elles sont évitables grâce à Atmosphère.

- ROTI M : ❤❤❤❤♡

III-B-13 - Votez pour nous ! L'Internet des objets par l'exemple

Par Pablo Lopez (Conférence)

J'ai souhaité participer à cette présentation pour comprendre comment avaient été conçus et fabriqués les boîtiers utilisés pour voter en fin de session de chaque présentation avec le badge Devoxx. C'était une très bonne présentation vivante puisque Pablo alternait phases de conception, développement et mise en production sur des aspects matériel et logiciel. De nombreux problèmes ont été soulevés comme l'électricité statique générée par l'épaisse moquette du Marriott où le fait que les gens pouvaient aussi voter avec autre chose que leur badge (par exemple cartes bancaires équipées de puce RFID). J'ai retenu beaucoup de choses de cette présentation : les boîtiers sont équipés de Raspberry Pi, le site Web Adafruit permet d'acheter des modules supplémentaires à son Raspberry Pi, Fritzing un outil libre pour réaliser des montages électroniques, l'utilisation de Vert.x pour le contrôleur, MQTT le protocole de communication pour l'Internet des objets ou finalement Paho, une API Java pour MQTT.

- ROTI M : ❤❤❤❤❤

III-B-14 - Au secours, mon code Angular est tout pourri

Par T. Chatel (Conférence)

R : Thierry Chatel, formateur sur AngularJS, nous propose une session dédiée aux bonnes pratiques lorsque l'on développe une application avec AngularJS, ainsi que les différentes choses à éviter. J'ai été déçu pour deux raisons. Déjà, Thierry manquait un peu d'énergie comme présentateur, mais surtout cela s'est borné à une énumération de bonnes ou mauvaises pratiques. C'est bien, mais il manquait vraiment du concret, des exemples de code. Je crois avoir attendu 15 minutes avant de voir la première ligne de code Angular ! C'est dommage, le sujet était forcément très intéressant et aurait mérité mieux. En tout cas, ça m'a rassuré sur ma pratique d'Angular, qui n'est pas si pourrie que ça :o)

C : un peu abstrait pour moi, mais j'ai pris plein de notes, qui une fois confrontées à ma formation AngularJS (qui a eu lieu après la Devoxx ;)) me paraissent pleines de bon sens. Cela dit, il est vrai que la présentation ressemblait beaucoup à « ça c'est bien, ça non, ça oui, ça non » et que ça manquait d'exemples.

- ROTI R : ❤❤❤♡♡

- ROTI C : ❤❤❤♡♡

III-B-15 - Soyons RESTful avec RESTX

Par Xavier Hanin (Conférence)

Xavier Hanin est le créateur de RESTX. Une grande partie de la présentation était en LiveCoding. L'objectif était de développer une application avec REST. En plus de permettre de réaliser rapidement de nouveaux services, RESTX offre une console d'administration qui permet de lister les différents services, de les manipuler (envoyer une requête et visualiser le résultat), effectuer du monitoring et des tests (je n'ai pas trop compris cette partie mais en tout cas il y a quelque chose de prévu ;-)).

- ROTI M : ❤❤❤❤❤

III-C - Jour 3 (vendredi)

III-C-1 - Programmer avec émotion

Par Geert Bevin (Keynote)

R : Geert Bevin en plus d'être développeur est un joueur d'Eigenharp. Parmi les points évoqués lors de cette Keynote, j'ai retenu deux choses. La première c'est qu'il ne faut pas oublier que notre travail est un travail de création. Et la deuxième plus importante à méditer, c'est que nos œuvres ne nous appartiennent pas.

C  Et aussi qu'on peut utiliser une Eigenharp pour faire défiler les slides d'une présentation :) et qu'on peut être artiste et développeur (ou peut-être artiste en développement)

- ROTI R : ❤❤❤♡♡

- ROTI R : ❤❤❤❤♡

III-D - Transformez votre Digital Self en une base de connaissances

Par Serge Abiteboul (Keynote)

R : L'orateur nous a d'abord rappelé que nos données (à savoir des données sur nous-mêmes) existent dans beaucoup d'endroits et sur autant de sujets que l'on ignore. L'idée de cette Keynote est que tant à ce que des données sur nous existent, autant essayer d'en gérer l'hébergement par nous-mêmes. La gestion d'hébergement n'est pas obligatoirement de l'auto-hébergement (réservé à une minorité ayant les connaissances nécessaires). Il peut être également fait via un prestataire avec lequel on signe un contrat afin de rester propriétaire de nos données. Tout ceci dans le but de préserver notre vie privée avec la possibilité si on le souhaite d'exploiter ces données.

C : J'ai cinq adresses mail personnelles, plus deux professionnelles, des comptes dans un certain nombre de sites (vente en ligne, forum…), et là maintenant j'écris dans un Google Doc. Quand on y réfléchit, on éparpille vraiment nos données aux quatre coins de l'Internet. Et savoir qu'il existe d'autres solutions que de monter son propre serveur, ça rassure quand même un peu.

- ROTI T : ❤❤♡♡♡

- ROTI R : ❤❤❤❤♡

- ROTI C : ❤❤❤♡♡

III-E - 900 000 emplois IT à pourvoir d'ici 2015 en Europe. Comment susciter des vocations

Par Dominique Van Deth et Danny Gooris (Keynote)

Selon les prévisions, les besoins en compétences informatiques ne vont qu'aller en augmentant. Dans cette optique, les orateurs nous ont présenté les démarches d'Oracle pour former les développeurs de demain (dont la Oracle Academy).

- ROTI : ❤❤❤❤♡

III-F - Crazyflie: Développement d'un quadrirotor miniature open source

Par Arnaud Taffanel, Marcus Eliasson, Tobias Antonsson (Conférence)

R : Le Crazyflie est un petit quadricoptère Open Source. Au départ, c'est le projet d'un groupe d'amis en dehors de leur travail. Durant la présentation, ils nous présentent les différentes étapes de leur projet du prototype à l'industrialisation, les différentes difficultés techniques liées au poids ou la stabilité de l'engin. J'ai beaucoup aimé cette présentation. D'une part parce qu'un seul des deux orateurs parlait couramment français (ils viennent de Suède) mais le second a fait l'effort de s'exprimer dans notre langue au moyen d'un texte qu'il a lu donc merci pour cela. Et surtout parce que c'est une sympathique success story de trois amis qui se sont réellement investis dans un projet où ils ne connaissaient rien au départ mais après trois ans d'effort, ils ont réussis. Résultat : un quadricoptère de moins de 10 centimètres et moins de 20 grammes et qui peut rester en vol 7 minutes. Attention : l'orthographe est particulière, car ils ont fait une faute involontaire dans le nom qui leur permet maintenant d'être bien distingué dans Google.

C : Une bestiole électronique volante qui peut porter jusqu'à son propre poids, une caméra ou des loupiotes qui clignotent et qui fait du rase-motte au_dessus des participants, voilà quelque chose qui retient l'attention. Et ensuite, on écoute l'histoire d'un groupe de gars qui ont commencé par souder des composants dans une poêle et qui sont allés jusqu'à trouver le moyen de faire des kits en série, pour les vendre à tous ceux qui avaient vu les vidéos et disaient « je veux le même ». Moi, je dis chapeau !

- ROTI R : ❤❤❤❤♡

- ROTI C : ❤❤❤❤♡

III-G - Pourquoi utiliser un portail en 2014

Par Emmanuel Pavaux (Conférence)

Dans cette conférence, après être revenu sur les différences principales entre un portail, un blog et un CMS, l'orateur nous a décrit plus spécifiquement ce qu'est un portail. Ce point était important, car chaque solution a tendance à (largement) empiéter sur le domaine des autres.

Par exemple, si on s'intéresse à Jahia, qui édite le CMS éponyme, on remarque que sa gamme de produits couvre bien plus de besoin que le CMS, de la solution de partage documentaire sociale et collaborative au portail d'entreprise en passant par un moteur de e-commerce.

Si on revient aux fondamentaux, un portail est principalement un agglomérateur de services et de contenus. On pourra considérer que les pages sont constituées de blocs. Par exemple, un bloc pourrait contenir un module météo, des entrées de blog, des dossiers de CMS, une boîte email ou encore des logiciels spécifiques. Bien sûr, un portail doit proposer des fonctions transverses ou, au moins, des connecteurs vers ces fonctionnalités. On pensera par exemple au mécanisme de connexion ou d'administration du profil de l'utilisateur.

Les modules des portails respectent des normes, à commencer par celle des Portlets. Cela permet notamment aux modules de communiquer entre eux. Ainsi le module calendrier peut dialoguer avec le module de réservation des véhicules.

Dans l'ensemble, c'était une présentation intéressante mais un poil trop générale. J'ai trouvé que ça restait un peu trop à la surface. En outre, le parti pris de l'orateur pour Liferay, une solution intéressante au demeurant, m'a semblé un peu trop omniprésent.

- ROTI : ❤❤♡♡♡

III-H - Outils pour manager une équipe

Par Youen Chene (Quickie)

T : Durant cette courte présentation d'une quinzaine de minutes, Youen nous a parlé des outils qu'il utilise au quotidien dans sa mission de manager.

Youen nous a aussi conseillé le podcast « outils du manager » qui donne de très bons conseils, notamment autour de DISC (Dominant, Influent, Stable et Conforme). À titre personnel, je dois dire que je l'ai découvert à Devoxx et que ça fait seulement une semaine que je l'écoute, mais je l'adore déjà. Je vous le recommande donc également.

Après ce Quicky, je me suis donc intéressé à l'outil DISC et j'ai développé un petit outil gratuit pour mesurer votre DISC, sous la forme d'un formulaire en ligne en PHP (pas taper hein).

R : Cette présentation a bien tenu ses promesses parce que dans un temps très court l'orateur a su nous présenter quelques outils : la réunion courte, assez souvent en face à face avec un membre de l'équipe (juste écouter ce que la personne a à dire), puis dans un deuxième temps lui faire un retour constructif avec des exemples sur ses actions et les conséquences positives et négatives. Ensuite, il y a le principe de délégation qui n'est pas de distribuer les tâches mais la responsabilité de certaines tâches et pour finir le coaching qui consiste à trouver avec le membre de l'équipe des solutions pour qu'il puisse s'améliorer.

- ROTI T : ❤❤❤❤❤

- ROTI T : ❤❤❤❤❤

- Slide de la présentation

III-I - Des maths et des recommandations

Par Loïc KNUCHEL (Quickie)

Durant cette présentation courte et très intéressante, l'orateur nous a présenté quelques méthodes de calculs permettant de faire des recommandations (bandes annonces proposées en fonction de celle que nous sommes en train de visualiser, livres suggérés en fonction de ceux que l'on a déjà dans le panier…)… Mais… Aïe… C'est lorsque l'on voit passer certaines formules que l'on se rend compte que l'on oublie vite des choses qui sont naturelles quand on est dans le circuit scolaire.

- ROTI : ❤❤❤❤♡

III-J - Le bon testeur il teste… et le mauvais testeur il teste aussi

Par Agnès Crepet et Guillaume Ehret (Conférence)

Durant cette présentation, Agnès et Guillaume sont revenus sur un ensemble de mauvaises pratiques (trop) souvent employées lors des tests.

Parmi les mauvaises pratiques on retrouve les méthodes de test regroupant plusieurs tests (une méthode ne doit être que pour un seul test), les noms des méthodes de test ne correspondant au test effectué dans la méthode, les méthodes de test contenant une phase d'initialisation (il vaut mieux utiliser l'annotation @Before ou une Rule si mutualisation de l'initialisation sur plusieurs classes de test). Parmi les conseils de bonnes pratiques, les orateurs ont également rappelé que pour tester la levée d'une exception, il n'est pas une bonne pratique de tester le libellé de l'exception : il est juste important de tester la levée ce qui est possible avec l'élément expected de l'annotation @Test de Junit. Pour finir, nous avons vu que pour effectuer des tests paramétrés (c'est-à-dire une liste de tests où l'on vérifie des résultats différents en fonction de valeurs en entrée), TestNG est meilleur que JUnit, car il permet notamment de définir les tests paramétrés au niveau de la méthode au lieu de la classe : ce qui permet de n'avoir qu'une méthode en tests paramétrés.

Dans un second temps, et après avoir inversés leurs rôles du bon et du mauvais testeur, les deux orateurs nous ont proposé quelques outils pour aller un peu plus loin en termes de qualité de test.

Infinitest : il s'agit d'un plugin Eclipse ou IntelliJ qui relance automatiquement les tests lors de changement dans le code.

DBSetup : c'est une alternative à DBUnit. À la différence de DBUnit qui permet de charger pour un test des valeurs en base à partir d'un fichier XML, DBSetup permet de charger des valeurs à partir du code Java. Cet outil comporte les avantages suivants : plus rapide, car sans étape de parsing XML (avec en plus la possibilité de ne pas recharger les données de test si le test dans seulement de la lecture), plus sympa à écrire que du XML avec en plus une API fluide (fluent interface). Il comporte les inconvénients suivants : pas de possibilité d'extraire des informations d'une base existante puis de les charger pour des tests, pas d'API de test des données à la fin du test.

public class ListeCoursesTest {

@Autowired
private DataSource dataSource;

private static DbSetupTracker dbSetupTracker = new DbSetupTracker();

@Before
public void setUp() throws Exception {
Operation operation =
sequenceOf(
CommonOperations.DELETE_ALL,
CommonOperations.INSERT_REFERENCE_DATA,
insertInto("LISTE_COURSES")
.columns("IDENTIFIANT", "LIBELLE", "QUANTITE")
.values(1, "Chocolat", 25)
.values(2, "Farine", 100)
.build());
DbSetup dbSetup = new DbSetup(new DataSourceDestination(dataSource), operation);

// Les données sont chargées en base si nécessaire
dbSetupTracker.launchIfNecessary(dbSetup);
}
}

@Test
public void testEnLectureSeule() throws Exception {
// Indique que le test ne modifie pas les données
// donc lors du test suivant on peut éviter le chargement.
dbSetupTracker.skipNextLaunch();
...
}
}

AssertJ : c'est un fork de FEST Assert. C'est un jeu d'assertions très complet qui permet d'éviter le « style à la Yoda » des assertions classiques de JUnit. Il permet de tester une chaîne de caractères, une liste… Voici un exemple d'assertions :

assertThat(element.getLibelle()).isEqualTo("Chocolat");

L'API est fluide (fluent interface) :

assertThat(element.getLibelle())
.endWith("olat")
.containsIgnoringCase("cOL");

R : Peut-être pour moi, la présentation qui m'était la plus adaptée (sans qu'il n'y ait rien de négatif pour les autres présentations). Il y avait un rythme très sympa par l'échange entre les deux orateurs. J'ai pu apprendre des choses intéressantes, car je ne connaissais pas certains des outils présentés (AssertJ, Infinitest et DBSetup) et quels que soient les projets sur lesquels on travaille il est « facile » de mettre rapidement en application cet apprentissage… Une bonne présentation sur un sujet qui a un intérêt immédiat…

- ROTI T : ❤❤❤❤❤

- ROTI R : ❤❤❤❤❤

- ROTI C : ❤❤❤❤❤

- Slide de la présentation

III-K - Pas à Paas : Cloud-Foundry in action

Par Thibault Chassagnette et Ghislain Seguy (Conférence)

Cette présentation était vraiment bien préparée. Les orateurs nous ont diffusé un petit film d'introduction, réalisé quelques jours avant dans leurs bureaux afin d'illustrer leurs propos. Le point de départ correspond à une situation malheureusement trop bien connue de la plupart d'entre nous. Vendredi, à 18h00, le commercial de la société Ippon reçoit un appel du client et lui promet monts et merveilles. Après avoir raccroché, il indique au responsable de l'application qu'il doit mettre le produit en place sur un nouvel environnement pour lundi, puis s'en va en week-end.

Le technicien est évidemment en panique. Va-t-il monter un serveur en récupérant le PC du stagiaire ? Comment va-t-il s'en sortir ? Heureusement, chez Ippon, ils ont une solution très facile et rapide à mettre en place, nommée Cloud-Foundry, qui fonctionne dans le nuage comme son nom le laisse deviner.

Les orateurs nous ont ensuite fait une petite démonstration sur la façon de créer un projet dans cet environnement mais je dois avouer que je n'ai pas réussi à tout suivre. Passer après le déjeuner, ça n'aide pas. Et puis, j'ai trouvé que ça devenait un peu trop commercial, même si ça avait l'air vraiment puissant. J'ai donc rapidement décroché.

- ROTI : ❤♡♡♡♡

III-L - 50 nouvelles choses que l'on peut faire avec Java 8

Par José Paumard (Conférence)

On a beaucoup parlé des Lambdas lors de la sortie de Java 8 et il est vrai que, à elle seule, cette nouveauté va révolutionner nos habitudes de travail. Mais il ne faudrait pas oublier qu'il y a de nombreuses autres nouveautés dans Java 8 qui valent le détour. Dans cette conférence, José Paumard nous en présente d'ailleurs une cinquantaine.

Nous avons vu plein de petits « diamants » qui sont ajoutés dans Java 8 et qui vont nous simplifier la vie. Ces nouveautés sont dans la nouvelle API Date (voir également l'article sur la nouvelle API Date et Time), dans l'API String (pour la concaténation), avec l'utilisation des Stream pour travailler sur le système de fichiers, dans l'API de Collection, dans les Comparator, la parallélisation et la concurrence d'accès.

Quelques exemples (bien qu'il y ait bien d'autres choses intéressantes) de ces diamants :

// Ôte les chaînes de caractères de plus de 5 caractères de la liste
List<String> list = new ArrayList<String>();
list.addAll(Arrays.asList("Chocolat", "Farine", "Sucre", "Oeuf"));
boolean remove = list.removeIf(s -> s.length() > 5);
System.out.println(remove);    // Donne : true
System.out.println(list);        // Donne : [Sucre, Oeuf]

// Comparator permettant de trier simplement des beans
List<Personne> list = new ArrayList<Personne>();
list.add(new Personne().setLibelle("Chocolat").setQuantite(200));
list.add(new Personne().setLibelle("Sucre").setQuantite(250));
list.add(new Personne().setLibelle("Oeuf").setQuantite(10));
list.add(new Personne().setLibelle("Sucre").setQuantite(100));

Comparator<Personne> comparator = Comparator.comparing(Personne::getLibelle)
.thenComparing(Personne::getQuantite);

list.sort(comparator);

list.stream().forEach(p -> System.out.println(p.getLibelle() + " : " + p.getQuantite()));

// Donne :
// Chocolat : 200
// Oeuf : 10
// Sucre : 100
// Sucre : 250

- ROTI R : ❤❤❤❤❤

- ROTI T : ❤❤❤❤❤

- Slides de la présentation

- News de la sortie de java 8, intitulée « Java 8 est disponible, la plate-forme se met aux expressions lambdas, Tour d'horizon des nouveautés »

III-M - Hadoop @ Criteo, du laboratoire à la production 24h/24

Par J.Note, L.Le Bel (Conférence)

Un retour d'expérience sur l'utilisation d'Hadoop au sein de la société Criteo. Clairement cette présentation s'adressait à des experts. Au début elle a commencé doucement, peut-être pour attirer les hésitants mais après c'est vite devenu compliqué à suivre. Ce que j'ai pu retenir de cette présentation c'est que chez Criteo, ils utilisent la distribution Hadoop de base puisqu'ils ne souhaitaient pas être liés à une distribution comme Cloudera par exemple. De même, un message important transmis lors de cette présentation c'est que pour faire du Hadoop, cela ne s'improvise pas. Il y a beaucoup de compétences qui rentrent en jeu comme le réseau, l'infrastructure, le déploiement et finalement le développement (ça c'est pour moi). J'ai également retenu que chez Criteo, ils montent leurs distributions Linux en mémoire pour des besoins de performances.

- ROTI : ❤❤♡♡♡

III-N - Étendre le Web avec les Web Components

Par C. Jolif

Christophe nous a expliqué le principe des web components, ce qui était intéressant. Mon Tools In Action était justement dédié à la librairie Google Polymer, l'implémentation de Google du standard des web components.

J'ai trouvé que la présentation a beaucoup (trop ?) tourné autour de l'implémentation d'IBM des web components, Delite.

- ROTI : ❤❤❤♡♡

- Slides de la présentation

III-O - Extremist Programming : l'art de s'amuser avec du code

Par C. Martraire et E. Lefebre-Ardant

Une présentation décalée faite par Eric Lefevre-Ardant et Cyrille Martraire, cela ne peut pas se manquer. Et clairement, ça a été mon gros coup de cœur sur cette édition 2014 de Devoxx France. Tout comme la conférence Boucles étranges : étranges boucles (puzzlers et curiosités) d'Eric lors de Devoxx France 2013, difficile de retranscrire ici le contenu de cette session, qui essayait de nous montrer comment l'art et le développement peuvent cohabiter. Tous les ingrédients d'une excellente présentation étaient présents : présentateurs plein d'énergie et parfaitement complémentaires, des informations intéressantes, de l'humour et des cookies (très bons d'ailleurs). Je recommande sur Parleys, même si la vidéo sera sans doute un peu moins bonne que le live…

- ROTI : ❤❤❤❤❤

IV - Logistique

Dans une conférence comme Devoxx France, on aurait tendance à ne parler que des présentations, des orateurs vedettes ou encore des goodies. Mais ce serait oublier tout ce qui se cache (ou non) en coulisse, ou même ce qui se montre à la vue de tous mais qu'on finit par ne plus voir, comme si c'était naturel.

IV-A - Tarif et réservation

Devoxx France reste une des conférences les moins chères. On pourrait comparer le prix avec « Le Web » ou « Ted » ou encore « USI ». Cette année, comme l'expliquait José Paumard en keynote de bienvenue, toutes les places sont parties au tarif « early bird » avant même que le programme des sessions ne soit établi.

En revanche, c'est tout de même assez compliqué de réserver des places pour son équipe. J'en prends pour preuve les difficultés qu'a rencontrées mon chef. Il a commandé deux places non nominatives aux frais de la société. Et évidemment, nous n'avons pas de carte bleue à disposition. D'ailleurs, chose étrange, les payements par CB et par chèque n'ont pas été ouverts en même temps. Nous nous sommes donc rapprochés du service achat/trésorerie pour faire établir un chèque. Vous savez ce que ça implique comme lourdeurs de faire signer un chèque dans une grosse structure ? Bon, jusque-là c'est notre affaire me direz-vous… Là où on était surpris, c'est qu'il n'y a pas vraiment de confirmation d'envoyée, ou du moins rien de bien clair, avec des explications sur les prochaines étapes. Quant à savoir si le chèque a été encaissé, c'est le service compta qui a pu nous le dire, ce qui a fait office de confirmation.

Cette année, un peu moins de la moitié des spectateurs a profité du DIF (Droit Individuel à la Formation), prouvant ainsi que la formule fonctionne. J'avais écouté un podcast dans lequel les animateurs se demandaient pourquoi il n'y avait pas plus de monde qui en profitait, y compris les indépendants. Je me lance dans une proposition d'explication. D'abord, le DIF est réservé aux salariés. Les freelances ne peuvent donc pas s'en servir. En revanche, dans certains cas, cela entre dans une ligne comptable particulière. Mais la compta et les développeurs, ça fait (souvent) deux. Et puis ça passe déjà en frais… En ce qui concerne les entreprises, il faut savoir que le DIF est un processus relativement lourd. Si je reprends l'exemple de mon chef, il n'avait tout simplement pas envie de se casser les pieds avec les formalités alors qu'il sait gérer les notes de frais. C'est aussi simple que ça. En outre, le DIF est nominatif. On ne peut donc pas prendre des billets génériques (dev1, dev2, etc.) et se les partager. Et puis, si je profite du DIF, je préfère que mon patron me paye une formation Mongo à 1500€ qu'une entrée pour Devoxx France à seulement 450€. C'est con (ou pas) mais je pense sincèrement que beaucoup de gens raisonnent ainsi.

IV-B - Boissons

Comme l'année dernière, de nombreuses boissons chaudes et froides étaient disponibles durant ces trois jours. Il y avait notamment du café en dehors des repas. Il y en avait forcément un peu moins mais largement assez pour ceux qui en voulaient. L'année dernière, un certain nombre de participants (et pas seulement les filles) avaient indiqué qu'ils auraient bien aimé des sodas sans sucre. Cette année, il y en avait plein : du cola, de l'orange, etc. Et vu la vitesse à laquelle les canettes partaient, je crois qu'on peut dire que c'était apprécié.

IV-C - Repas

J'ai trouvé que les petits-déjeuners étaient très sympas. Il y avait principalement des fruits frais et des viennoiseries. Qui plus est, les viennoiseries étaient super bonnes. Je me suis régalé avec les feuilletés aux abricots.

Un petit-déjeuner est offert dans la plupart des conférences, si bien que je n'en avais pas pris chez moi. J'ai eu bien raison, contrairement à mes collègues qui en avait pris un à l'hôtel.

Pour le repas du midi, je suis un peu plus mitigé. On avait droit à des salades composées et des sandwichs découpés. Comme il y avait vraiment beaucoup de monde et que c'était difficile d'accéder aux tables, je n'ai pas testé les salades. Elles ne semblaient pas exceptionnelles pour le peu que j'en ai vu dans les assiettes des autres participants. Je me suis concentré sur les sandwichs, car il suffit de tendre le bras pour en attraper un ou deux avant de s'éloigner du présentoir. Si je me souviens bien, il y a eu des sandwichs au thon et au jambon de dinde. Ils étaient bons sans plus.

En payant 450€ sa place, on s'imagine qu'on va déguster des petits fours à s'en faire péter le ventre. J'ai entendu beaucoup de remarques là-dessus dans les allées du Marriott. Ne rêvez pas, les petits fours, ça coûte une vraie fortune et c'est hyper compliqué à gérer. J'en avais discuté avec les organisateurs l'année dernière. En fait c'est bien plus compliqué que ça en a l'air. Il faut penser à toutes les allergies, aux normes sanitaires et, surtout, à la logistique.

En fait, l'équipe de Devoxx France délègue les repas au centre de conférence du Marriott dont c'est le métier. Imaginez bien que servir 1500 personnes, ce n'est pas la même chose que de contenter une centaine. Rien qu'au niveau du temps de préparation des sandwichs, c'est énorme. Je me suis lancé dans des approximations basées sur mon expérience. J'ai pris à chaque fois 5-6 morceaux de sandwich. En quantité de pain, cela doit représenter les deux tiers d'une baguette. L'air de rien, c'est déjà pas mal. Mais passons au calcul. Si chaque personne a fait comme moi, ça veut dire qu'il a fallu garnir et découper l'équivalent de 990 baguettes. À raison de deux minutes consacrées à chaque baguette en vitesse de croisière, cela fait 33 heures de travail. Cela implique de monopoliser pas moins de neuf personnes chaque matin, juste pour préparer les sandwichs. Voilà qui remet un peu les choses dans le contexte. À cela, il faut ajouter les salades et la mise en place.

On pourrait se dire que ce serait plus simple de proposer un buffet (comme au Paris JUG), où chacun pourrait étaler son pâté ou ses rillettes sur des tranches de pain. Oui, on pourrait l'imaginer, sauf que ça ne coûterait pas moins cher, ça demanderait tout de même beaucoup de préparations et, surtout, ce serait un vrai bordel autour des tables. Au Paris JUG, c'est déjà difficile avec une assemblée « réduite » alors imaginez avec 1500 participants affamés. Et comme on l'a déjà dit, c'est déjà difficile avec des sandwichs tout prêts alors qu'est-ce que ça serait s'il fallait les faire…

En fait, les repas, c'est un vrai projet à eux seuls.

IV-D - Vestiaire

Ce qui est pas mal, c'est de pouvoir laisser son manteau et son (gros) sac au vestiaire. Ce n'est pas le cas dans toutes les conférences, car ça nécessite du personnel (bénévole ou non). Dans le cas de Devoxx France, je trouve juste que les heures de fermeture sont un peu tôt, ce qui oblige à reprendre ses affaires avant la fin des conférences. Ce n'est pas la fin du monde mais c'est un peu dommage. Et puis tout le monde veut reprendre son manteau le plus tard possible, ce qui provoque donc un peu de queue mais rien d'insurmontable. Là, on est vraiment dans le détail.

On notera que le vestiaire acceptait les valises le vendredi, ce qui est assez pratique pour tous ceux qui avaient dû libérer la chambre d'hôtel le matin. Les organisateurs avaient d'ailleurs eu la bonne idée de faire une file d'attente dédiée.

IV-E - Badges

On pouvait prendre son badge en arrivant le matin, quitte à faire un tout petit peu de queue, ou passer le chercher la veille. Cette seconde option était particulièrement intéressante pour les personnes ayant acheté plusieurs places, car elle leur permet de les distribuer tranquillement au bureau.

@Claude

Pour ma part, c'est une charmante demoiselle de Soat qui est venu me remettre en main propre mon badge, ce qui m'a permis de discuter un peu. En l'attendant, j'ai pu constater que les personnes n'avaient vraiment pas longtemps à attendre pour retirer leur badge. D'ailleurs, à partir d'une certaine heure, on voit bien que les spectateurs arrivent par vagues, correspondant aux arrêts du métro. À l'accueil, c'était très organisé. Il y avait une file pour les badges achetés de manière classique et une autre pour les personnes ayant bénéficié du DIF.

Je crois qu'on avait également la possibilité d'acheter/récupérer le livre d'un des orateurs des keynotes. Est-ce que je me trompe ?

Une fois son badge autour du cou, on pouvait récupérer un sac avec quelques goodies (cf. plus loin) dont un T-shirt et de quoi prendre des notes, mais surtout avec le livret officiel de Devoxx détaillant le programme. Ce dernier devient d'ailleurs très vite indispensable et vraiment pratique.

V - Stands, animations et Goodies

V-A - Stands

Il n'y a pas grand-chose à dire à propos des stands. La plupart offraient des goodies et étaient tenus par de charmantes hôtesses.

La plupart des stands étaient soit des sociétés françaises, soit avec des personnes francophones. Une minorité des stands étaient avec des personnes anglophones. Il m'a semblé que même si par notre métier nous avons une connaissance de l'anglais les gens allaient plus facilement communiquer avec les stands francophones.

V-B - Animations

V-B-1 - Soirée vin et fromage

Le jeudi se déroulait une soirée « vin et fromage » dont l'entrée était libre (sous réserve d'inscription). Durant cette soirée, il y a des animations, des jeux, de la musique, etc. Bien sûr les conférences se poursuivent, notamment les BOF.

Je me suis imposé de tester tous les vins et tous les fromages. Je vous vois venir. Vous êtes en train de vous imaginer que je suis un poivrot. Hé ben non. Figurez-vous que je ne consomme que des fonds, quitte à jeter le reste du verre. Et pour éviter le gâchis, je le précise au serveur.

Pour les fromages, je n'ai pas atteint mon objectif, car il y avait trop de monde et manifestement pas assez de portions disponibles. J'ai l'impression qu'il y en avait moins qu'en 2013 et assister à un BOF impliquait de sauter le fromage du coup. J'ai beaucoup aimé les fromages que j'ai pu goûter. En revanche, je n'ai pas trop aimé les vins (deux rouges et un blanc). Je ne dis pas qu'ils n'étaient pas bons mais simplement qu'ils n'étaient pas à mon goût. D'ailleurs, les amis avec qui je discutais à ce moment-là les ont trouvés très biens. Les goûts et les couleurs…

V-B-2 - Massages

Cette année, il y avait bien quelques masseurs le jeudi soir. En revanche c'était un peu caché et j'ai l'impression que beaucoup de gens ne l'ont pas vu. Comme pour le vin, je me suis forcé à tester le massage (comme chaque année d'ailleurs) pour pouvoir vous en parler. Ça c'est l'excuse pour ma femme ;-) Moi qui ne suis pas très à l'aise dans ce genre de situation, j'ai trouvé ça très sympa. Et c'est vrai que ça détend après une journée de conférence durant laquelle on n'était pas forcément bien installé.

Comme vous le voyez sur la photo ci-dessus, il s'agit juste de massage sur chaise. Ce n'est donc pas le massage californien ni celui qu'un kiné, mais ça reste un bon moment. J'aurais tendance à dire que ça manquerait s'il n'y en avait pas.

V-B-3 - Crazy flie

Le Crazy flie est un petit quadricoptère, de quelques grammes seulement, équipé d'une caméra. Lors des keynotes, on a pu voir le flux vidéo sur le vidéo projecteur. Au passage, savez-vous que les assurances nécessaires pour faire voler ce gadget de geek au-dessus de nos têtes n'ont pas été une partie de plaisir, à en croire les indiscrétions qui circulent ?

Bonus :

- Vidéo sur Youtube

V-B-4 - Seed Networking

Cette année, il y avait une session de speed dating, non pas pour trouver l'amour de sa vie (quoique) mais pour faire se rencontrer des développeurs et des entrepreneurs. Les premiers ont des compétences techniques. Les seconds ont des projets et des finances.

Bonus :

- Site Web de Seed Networking

V-B-5 - Musique élétro

Le jeudi soir, on pouvait également aller écouter les musiciens volontaires. Je dois dire que je n'y ai pas croisé grand monde, sans doute parce que c'était un peu à l'écart (comme pour les massages).

V-B-6 - Photo

Sur le stand de Xebia, il était possible de se faire prendre en photo sur fond à damier. Les hôtesses proposaient différents accessoires comme des nœuds papillons fluos, des perruques aux couleurs acidulées, des chapeaux de clown, etc. Les photos seront ensuite mises à disposition. Par contre je ne sais pas quand et où…

V-C - Goodies

Que serait une conférence dans l'informatique sans tous ces petits cadeaux gadgets distribués par les organisateurs et les sponsors ? Alors, évidemment, on ne repart pas de Devoxx France avec une tablette en poche (quoique) mais on a largement de quoi s'occuper ensuite au bureau.

V-C-1 - Stylos

Je ne saurais pas dire pourquoi les stylos passionnent tant les geeks que nous sommes alors que nous ne voyons que par nos claviers. Cette année, le stylo le plus sympa, même si je ne vois pas trop à quoi il peut servir, était celui offert dans le pack de bienvenue. Il s'illumine d'une douce lumière bleue. Et en plus il écrit.

L'autre tendance qu'on a pu observer sur les stylos (et pas seulement à Devoxx), ce sont les stylets qui fonctionnent sur nos écrans tactiles (tablettes, smartphone, etc.) Pour cela, le bout est équipé d'une sorte de petit gomme en caoutchouc qui réagit avec la surface tactile par je-ne-sais-quel moyen physique. Je me souviens que cela valait une fortune il y a encore deux ou trois ans. Et maintenant ce sont des cadeaux publicitaires. On n'arrête pas le progrès.

V-C-2 - Balles

Ça c'est le cadeau empoisonné. Les balles sont censées avoir un effet anti stress. Mais en réalité, elles sont surtout utilisées soit à la maison, car votre gamin vous l'aura chapardé, soit au bureau pour faire des combats dans l'open space, au grand désespoir de tous vos collègues non informaticiens.

V-C-3 - Tasse

Cette année, les organisateurs nous ont offert une petite tasse à café aux couleurs de Devoxx dans le pack de bienvenue. C'est original et bien pensé. Il est vrai que les geeks sont de très gros consommateurs de café (enfin pas tous) et la tasse est assurée d'avoir une place sur nos bureaux un certain temps.

V-C-4 - Divers

Quelques stands proposaient (offraient) des petits gadgets comme des yo-yo, des décapsuleurs, ou encore des autocollants.

En outre, plusieurs sponsors faisaient gagner des lots un peu plus sympa sur leurs stands. Pour cela il suffisait de participer à une loterie ou à un jeu concours. Cette année, les gros lots étaient des tablettes (Kindle et Nexus 7) mais certains stands offraient également des Caméras GoPro, des téléphones, des T-shirts ou même des Raspberry Pi.

VI - Conclusions

2014 était l'année de Java 8. Le sujet était donc incontournable dans une conférence comme Devoxx. Il n'était pas omniprésent non plus, ce que j'ai particulièrement apprécié. Il est vrai que ce n'est pas le sujet qui me passionne le plus, au moins dans l'immédiat, car je ne suis pas près de l'avoir sur mes serveurs de prod. Les applications réactives étaient aussi de la partie, et de manière générale un peu toutes les grosses tendances.

Devoxx France est devenu une référence dans le petit monde du Java et de son écosystème. Ce n'est pas simple de se renouveler d'année en année sans perdre de vue son cœur de cible. Sur de nombreux points, j'ai trouvé que c'était encore mieux que les éditions précédentes, qui étaient déjà très biens. Sur quelques points, j'ai été un peu déçu. Je pourrais ainsi parler des keynotes qui étaient mémorables en 2013 mais dont les versions 2014 m'ont laissé sur ma faim.

Évidemment, la conférence Devoxx ne se suffit pas en elle-même. Vous ne pouvez pas imaginer assister à trois jours et repartir certifié expert du domaine. En revanche, ça vous donne une vue d'ensemble assez condensée et les billes pour aller plus loin une fois de retour à la maison ou au bureau.

Devoxx France 2014 s'est conclu avec l'enregistrement live de l'épisode 101 des CastCodeurs, le podcast présenté par Emmanuel Bernard et qui résume assez bien l'ambiance en cette fin de conférence. D'ailleurs, cela se traduit aussi dans les diapositives (slides) utilisées dans l'épisode. Et puisqu'on en est à parler de podcast, je vous conseille l'écoute de l'épisode 18 de NipDev qui vous propose un retour audio de ces trois jours.

@Ludovic

Dans tous les cas, une grosse partie des conférences sera prochainement (Antonio annonçait trois semaines dans les CastCodeurs) disponible sur la plateforme vidéo Parleys. Vous pourrez donc les voir et/ou les revoir.

VI-A - Et les femmes dans tout ça ?

Il y a les femmes qu'on a laissées à la maison et qui acceptent qu'on aille s'amuser trois jours entre mecs (car Devoxx c'est pas du travail évidemment). Il y a les demoiselles sur les stands, toutes plus charmantes les unes que les autres. Il y a les femmes de l'équipe organisatrice. Enfin, il y a les oratrices. Et ces dernières n'étaient pas nombreuses. Le métier de l'informatique est-il encore un milieu d'homme ou y a-t-il de la discrimination lors du CFP ?

Pour répondre à cela, il faut regarder les chiffres. Sur les 211 orateurs, il n'y avait que 8 femmes, ce qui représente un peu moins de 6%. C'est peu, mais pas si mal que cela si on considère qu'il y a eu 18 propositions féminines lors du CFP, sur 565, soit environ 3%. Finalement, on peut dire que 45% des femmes ont été retenues, contre 37% des hommes.

Bon, on ne va pas se le cacher, l'informatique reste un milieu d'homme, y compris dans les écoles où les femmes représentent en moyenne 8% des effectifs. Mais intéressons-nous aussi aux spectateurs, puisqu'ils sont acteurs également. Quand on regarde les chiffres des inscriptions, les femmes représentent environ 11%…

Cet article a été écrit par des femmes à hauteur de 20%.

Pour en savoir plus, je vous recommande la lecture d'un billet de blog intitulé « la place des femmes à Devoxx France ».

VI-B - Ce que j'ai aimé et un peu moins aimé

Dans l'ensemble, j'ai donc beaucoup aimé Devoxx France 2014. Du point de vue de l'organisation j'ai apprécié tous les progrès par rapport à l'édition 2013, qui était déjà très bien. Pour les présentations, j'ai tout de même trouvé que c'était mieux l'année dernière. Cela vient-il du format, plus court pour les conférences. Suis-je tout simplement mal tombé. Ai-je des critères qui augmentent d'année en année ? Est-ce que je deviens plus sévère ? À vous de juger. En tous cas, j'essaie de rester objectif.

Les organisateurs de Devoxx France sont demandeurs des retours qu'on peut leur soumettre. Voici qui est donc fait pour moi. Comme vous avez pu le constater, les rédacteurs de Developpez.com ne sont pas toujours tendres. Notez bien que nous sommes partenaires presse de Devoxx France mais que nous ne sommes liés en aucune manière avec les organisateurs. Quand nous n'aimons pas, nous n'aimons pas. Quand nous aimons, nous aimons. Et nous ne nous forçons pas. Pour autant, je voudrais dire aux orateurs/organisateurs que nos critiques ne sont ni méchantes ni personnelles.

Aimé :

- l'organisation générale de l'événement ;

- le livret avec les détails du programme ;

- les boissons ;

- la facilité avec laquelle on peut parler avec les gens, puisqu'ils sont tous là pour les mêmes raisons que vous ;

- la qualité globale des présentations ;

Pas aimé :

- les présentations mal/pas préparées (quand les orateurs s'emmêlent les pinceaux sur le macbook qu'ils ne maîtrisent pas);

- les slides bâclés (genre listes de points) ;

- la manipulation trop poussée dans une présentation ;

- la publicité déguisée ;

- les titres accrocheurs alors que la présentation laisse le spectateur sur sa faim ;

- les stands sur lesquels les animateurs font la gueule ;

- la durée des conférences (45 minutes) me semble trop courte. Je préférais l'année dernière. Il y avait seulement 5 minutes de plus mais ça compte.

Il y a eu beaucoup de propositions au CFP et très peu d'élus ont pu finalement faire une présentation lors de Devoxx France 2014. On pourrait donc imaginer/supposer que les présentations (PowerPoint) seraient toutes chiadées mais, sans aller jusqu'à dire qu'elles ont été créées dans le métro cinq minutes avant, j'aurais tendance à dire que certaines n'ont pas reçu autant d'attention qu'elles auraient méritées.

VII - Remerciements

D'abord, je voudrais remercier l'équipe de Devoxx France 2014, sans qui cette fantastique conférence n'aurait pas eu lieu. Évidemment, un grand merci aussi aux orateurs qui nous ont offert des superbes moments. Et je n'oublie pas les spectateurs qui font aussi l'événement, comme je l'ai déjà expliqué plus haut.

Je voudrais remercier encore les organisateurs de Devoxx France pour avoir invité une partie de la rédaction de Developpez.com ainsi qu'un de nos lecteurs. En effet, cette année nous sommes venus accompagnés de Yan Bonnel qui a remporté le Quizz Java.

En tant que rédacteurs pour Developpez.com, nous avons eu la bonne surprise d'être invités par les sociétés Soat et Palo IT, qui sont de très bons partenaires. Au passage, je vous invite à lire les articles de Soat et les articles de Palo-It qui ont été repris sur Developpez.com. J'adresse donc mes sincères remerciements à Palo IT et Soat.

Plus spécifiquement en ce qui concerne cet article, je tiens à remercier l'équipe de Developpez.com et plus particulièrement à Celira, Mickaël, Régis, Romain, Thierry et Fabien.

VIII - Annexes

VIII-A - Liens

Les sites Devoxx :

- Devoxx.com

- Devoxx UK

- Devoxx France

- Devoxx4Kids

Interviews que nous avions réalisées à propos de Devoxx :

- Antonio Goncalves

- Hugo Lassiège, du comité de sélection des présentations pour Devoxx France

- Nicolas Martignole, organisateur de Devoxx France

- José Paumard et Zouheir Cadi, organisateurs de Devoxx France 2013

- Charles Sabourdin et Benoît Dissert, du comité de sélection des conférences de Devoxx France 2013

- Romain Linsolas, un super Devoxxien

- Arnaud Héritier, du comité de sélection des présentations de Devoxx France 2014

Galeries :

- Photos par Thierry Leriche-Dessirier (350 photos) sur FlickR

- Photos de Pierre Antoine

- Photos de Ludovic Poitou

Billets de blog :

- La place des femmes à Devoxx France

- Devoxx France 2013 sur Today's tip

- Devoxx France 2012 sur Today's tip

Divers :

- FAQ officielle

VIII-B - À propos de nous, nos stratégies

Chaque participant choisit ses conférences selon des critères qui lui sont propres. Voici comment, nous, les auteurs de cet article, les avons sélectionnées.

VIII-B-1 - Celira

Personnellement, c'est mon premier Devoxx. J'ai donc une idée assez floue de ce à quoi m'attendre. Heureusement je ne suis pas seule : dans le cadre de formations, ma société a envoyé un certain nombre de gens, dont moi (Merci Patron !) J'ai donc circulé dans la Devoxx en tandem avec un collègue, histoire de pouvoir trancher sur les dilemmes du genre « Cette présentation-là ou celle-ci ? » et à l'inverse d'être motivée pour aller voir quelque chose si rien ne m'intéresse vraiment dans un créneau.

Objectif principal : voir un maximum de choses applicables à nos projets actuels et/ou à venir à court terme.

Objectif secondaire : voir un maximum de choses intéressantes tout court.

J'évite les thèmes qui me sont totalement inconnus, parce que je n'ai pas envie de passer la totalité de la présentation à admirer les fossettes du speaker parce que je ne comprends rien à ce qu'il dit.

Je ne privilégie pas les présentations pures Java 8, parce que Java 8, c'est tout nouveau, tout beau, c'est magnifique (et ça comporte enfin quelque chose de pratique pour manipuler les dates), mais en pratique, ce n'est pas demain la veille que je vais l'utiliser. Donc s'il y a autre chose d'intéressant dans le même créneau, je n'irais pas voir le Java 8.

Bref, si on compare avec les critères de Thierry, c'est assez différent, ce qui explique qu'on ne finisse pas dans les mêmes conférences.

Même critère de notation que Thierry, mais je vais jeter un coup d'œil à mes notes de temps en temps, histoire de ne pas m'emmêler dans les acronymes (après tout, c'est pour ça que j'ai pris des notes).

VIII-B-2 - Mickaël

C'est la troisième fois que je fais Devoxx France. C'est également ma seule conférence technique de l'année. Je me réserve plus pour des conférences scientifiques. Pour le choix des sessions, j'ai procédé par élimination. Je me suis refusé d'aller voir des sessions concernant JavaScript, développement Web et langages alternatifs. Je me suis plus intéressé aux sessions qui parlaient de DevOps, de retours d'expérience sur BigData et finalement des nouveautés liées au langage Java.

- Blog

- Page Pro

- Linkedin

- Github

- Page DVP

- Twitter

VIII-B-3 - Régis

C'était ma première fois. Je ne savais pas trop à quoi m'attendre mais je m'étais fait une petite opinion sur les présentations qui me semblaient les plus intéressantes. Mes critères (sans être rédhibitoires) étaient les suivants : privilégier les présentations en français (je rejoins l'opinion de Thierry : c'est quand même plus simple de suivre une présentation en anglais sur Parleys, de pouvoir repasser les passages les plus complexes), pas de langages alternatifs, pas de JavaScript. À l'inverse, j'étais intéressé par les présentations sur Java 8 (car même si je rejoins mes collègues, il ne sera pas disponible dans l'immédiat dans nos environnements. Il comporte son lot de nouveautés que je préfère appréhender au plus tôt pour être le plus fluide possible le moment venu). J'étais également intéressé par le monde BigData mais je me suis rapidement rendu compte que je n'avais pas le niveau d'expérience dans ce domaine pour suivre les présentations. Pour finir, il faut bien l'avouer dans certains cas, l'orateur a été un critère (secondaire, car le sujet prime mais un critère tout de même).

- Page DVP

- Viadeo

- LinkedIn

- Github

VIII-B-4 - Romain

C'est ma troisième participation à Devoxx France (5e en comptant les Devoxx belges), à chaque fois comme orateur en plus. Très grosse particularité cette année pour moi : mon entreprise était sponsor. Connaissant très bien l'univers un peu décalé de cette conférence, j'avais insisté pour prendre en charge une grosse partie de l'organisation de ce sponsoring. Au final, j'ai fini par passer 80% de mon temps au Marriott sur notre stand, ou dans les allées. J'ai finalement assisté à très peu de conférences. Le mercredi, si on excepte les BOF (ParisJS, BOF Docker et BOF BBL) je n'ai assisté qu'à un seul Tools In Action, le mien ! Sur les deux jours suivants, je n'ai vu que quatre conférences (et un peu de la keynote du jeudi). Leur qualité était inégale, mais j'ai vraiment adoré la présentation de Cyrille Martraire et Eric Lefevre-Ardant sur « Extremist Programmer : l'art de s'amuser avec du code ». Une présentation passionnante, avec des présentateurs très inspirés et inspirants, de l'humour, des cookies… Bref, tous les ingrédients qui font d'une présentation une vraie réussite !

- Twitter

- Blog

- Github

VIII-B-5 - Thierry

La plupart des présentations de Devoxx France 2014 seront disponibles sur Parleys dès que les vidéos auront été montées. Il sera donc possible de les voir et les revoir. Je me suis donc dis que je pouvais me permettre des expériences cette année.

D'abord, je n'assiste pas, ou presque pas, à des présentations qui ne seraient pas francophones. Je n'ai rien contre l'anglais (même si je serais plutôt un ardent défenseur du français) mais je préfère me les réserver pour plus tard, lorsque je pourrai les regarder tranquillement au calme sur Parleys. Comme ça, j'aurai aussi l'occasion de rembobiner lorsque je ne suis pas certain de comprendre les subtilités.

J'évite aussi les conférences à propos de sujets sur lesquels je me sens déjà très à l'aise et qui ont tendance à me décevoir. J'essaie au contraire d'assister à des présentations sur des sujets inconnus. Pour le coup, ça me donne l'occasion de découvrir quelque chose de nouveau, avec la possibilité d'avoir de bonnes surprises. J'essaie de varier les thèmes et les formats. Enfin, quand c'est possible, j'assiste aux sessions présentées par mes copains.

Tout cela est très personnel et je n'encourage personne à m'imiter. Je vous explique simplement ma démarche, car elle m'entraîne à suivre des sujets qui sont clairement hors de mon domaine de compétences ou sans lien évident entre eux.

Pour chaque présentation/activité, je donne une notation de type ROTI (Return on Time Invested) qui, là encore, est très personnelle et n'engage que moi et mon ressenti. Comme j'écris cet article quelques jours après que Devoxx France 2014 ait fermé ses portes, et que j'ai la tête froide, car l'excitation du moment est retombée, cette notation est aussi basée sur ce qu'il me reste comme souvenir sans consulter mes notes. En gros, si j'ai déjà tout oublié après seulement quelques jours, c'est que j'ai perdu mon temps et le ROTI sera faible. Au contraire, si j'ai le sentiment d'être un peu plus riche, le ROTI sera fort.

- Twitter @thierryleriche

- Page DVP

- Blog

- Site perso

- Github

VIII-C - Slides des conférences

Voici une sélection des slides des conférences. Si vos slides sont manquantes et que vous souhaitez que nous en ajoutions le lien vers Slide Share, alors envoyez-nous simplement un message.

- Linux 101

- 50 nouvelles choses que l'on peut faire avec Java 8

- Les applications réactives, un nouveau paradigme pour relever les défis de l'économie numérique

- Fais ce que tu veux avec Java EE

- 50 New Features of Java EE 7 in 50 minutes

- Le bon testeur il teste le mauvais testeur il teste…

- Do you really get Classloaders?

- Rétrospective cloud

- Gradle ne fait pas que remplacer Maven

- Tout ce que vous avez toujours voulu savoir de la JVM sans jamais oser lui demander en ligne de commande

- Comment développer un PaaS Java en 30 minutes avec docker

- Attaquez le Mahout de face et exploitez vos Terraoctets d'historique !

- Realtime Web avec Kafka, Spark et Mesos

- Des SSII aux SS3I : Sociétés au Service des Individus de l'Ingénierie Informatique

- Université de la performance

- LCC 101 - Devoxx France 2014 - ils reviennent et ils ne sont pas contents !

- CDI 1.1 university

- One java library to rule all security protocols

- Faible latence haut debit

- Etendre le Web avec les Web Components

- Outils du manager