30/04/2015

Tu fais encore du GWT ?

Ben oui, je fais encore du GWT.
C'est une question que j'ai eu plusieurs fois à Devoxx.
Ce n'est pas du tout 'hype' d'utiliser un outil qui a 10 ans.
Quoi 10 ans! oui, Java a bientôt 20 ans, et GWT bientôt 10 ans.

Samy Jaber leur répond que cette année, c'est le retour en force de GWT.
C'était le titre de sa présentation.
GWT n'est pas mort.
Alors je répète et complète ce qu'il a dit.

Pourquoi c'est un bon outil ?

 - Coder en Java, avec un typage fort
 - Utiliser les IDE Java, en insistant sur la compilation (c'est le feedback le plus rapide pour un dev)
 - Les refactoring sont facilités
 - Multiples vérifications de syntaxe html, de typo de style, et de clé de traduction
 - Utiliser les outils de Test Java
 - Utiliser les outils de build Java
 - Utiliser les outils de mesure de qualité de code Java
 - Les performances pour l'utilisateur final sont optimales
 - La taille du javascript à télécharger pour l'utilisateur final est optimal (élément critique pour une utilisation sur mobile)
 - Les différences des navigateurs sont masquées
 - Google le maintient et l'utilise

Pourquoi il a eu un creux ?

 - Les temps de build étaient long
 - Ce n'est pas parce que l'on code en java que l'on peut se passer de bien comprendre comment fonctionne une page web.
 - Lorsque Google a libéré le projet à la communauté Open Source en 2012, il y a eu comme un flottement.
 - L'API navigateur utilisé par le Dev Mode, NPAPI a été annoncée dépréciée en 2013, elle a été supprimée mi 2014 et n'existe plus sur les dernières versions de chrome et firefox. Et durant cette phase, le super dev mode n'était pas complètement opérationnel.
 - A la meme époque, l'écosystème Node, Javascript a grandit très vite avec des outils de build et une gestion de package comme bower en 2012

Pourquoi il a de l'avenir ?

 - Google continue de l'utiliser, par exemple pour Inbox, mais n'est plus tout seul
 - Le steering comitee et la communauté sont très actifs
 - Une conférence annuelle nommée gwtcreate sur deux sites (Mountain View et Munich)
 - Un nouveau logo, et un nouveau design du site web gwtproject
 - La version 2.7 est d'excellente qualité
 - Le super DevMode permet de faire une compilation partielle, seulement pour la permutation nécessaire, et incrémentale.
 - Debuggage dans le navigateur avec sourcemap ou dans l'IDE IntelliJ ou Eclipse avec SDBG
 - Les temps de build complet on été améliorés, et cela va continuer
 - Les applications hybrides basées sur des vues web
 - les applications android réutilisant du code de l'application web gwt
 - Le language javascript et les API des navigateurs évoluant sans cesse, GWT saura utiliser au maximum les possibilités de chaque navigateur, en utilisant elemental
 - Votre application web est ou va être complexe par les fonctionnalités qu'elles va proposer et les apis du navigateur qu'elle va utiliser

 Que contiendra la version 2.8 ?

 - Les performances au runtime vont continuer de s'améliorer
 - JsInterop va faciliter l'appel de code Javascript (les wrappers)
 - Utilisation des webcomponent
 - Une nouvelle syntaxe pour écrire les feuilles de style, GSS
 - Et surtout, support du JDK 8, qui corrige le côté verbeux de java

Quelques conseil pour commencer ou continuer

- Utiliser activity/presenter & places
- Utiliser des regions
- Tester les activity/presenter
- Utiliser Mockito
- Ne PAS utiliser Jukito
- Utiliser des événements pour communiquer entre les activités/presenter
- Utiliser l'injection avec gin
- N'utiliser les widgets que si nécessaire
- Ne pas mettre du tout de code css dans les ui.xml
- Utiliser RestyGWT
- Utiliser GQuery
- Utiliser Bootstrap
- Utiliser Usefull Logging 

Sources

http://fr.slideshare.net/samijaber/devoxx-fr2015-gwt
http://www.gwtproject.org/
https://en.wikipedia.org/wiki/Google_Web_Toolkit
http://gwtcreate.com/slides/
https://github.com/ronanquillevere/GWT-Multi-Activities
http://gwt-france.blogspot.fr/2014/09/utiliser-le-nouveau-super-dev-mode-avec.html

Devoxx 2015


La 4eme edition de Devoxx France a réuni 2500 personnes durant 3 jours. Ce qui est le plus marquant, c'est que ca part dans tous les sens, Jusqu'à 10 sessions en parallèle!

Keynotes Jeudi

L'equipe - Nicolas Martignole (Indep) @nmartignole, Antonio Goncalves (Indep) @agoncal, Zouheir Caidi (Telecom Paris Tech)

Beaucoup d'énergie et d'humour pour lancer la conférence des developpeurs passionnés.

Le futur de la robotique personnelle - Rodolphe Gelin (Aldebaran)

Dans des videos d'anticipation, nous voyons un Nao tenant compagnie à une personne agée.
On connaissait déjà Nao, et voici Romeo, un robot plus humanoide et plus grand (1m40 contre 58cm pour le Nao).
Le "robot de maison" utilise finalement à peu près les mêmes fonctions que le smartphone, mais c'est une experience utilisateur complètement différente.

La problématique du contrôle des technologies de l'information - Eric Filiol (Esia) @efiliol

Une bonne piqure de rappel sur notre rôle de citoyen, surtout dans le contexte actuel de la loi sur le renseignement.

Reading and Writing in 20 years - Dan Allen (Red Hat, Asciidoctor) @mojavelinux

Retour sur la dualité livre physique / livre numérique. Une porte ouverte sur l'aspect collaboratif de l'écriture numérique.


Sessions Jeudi

Personal kanban - Guillaume Lours (The Host) @glours

Quelques conseils pour bien gérer son temps en adaptant la pratique du kanban pour un usage personnel. Perso j'en suis encore à la todo-list avec wunderlist .

10 trucs que j'ai appris en lisant le code source de Chrome OS - Francois Beaufort (en retard) (Google, Chrome) +FrancoisBeaufort

Plusieurs experiences sur des features chachées dont on découvre la présence et le fonctionnement en regardant le code Open Source de Chromium .

15min to try apache Spark using the Apache Spark Notebook and Docker - Andy Petrella (NextLab) @noootsab

Je découvrais apache spark, et pour l'avoir essayé depuis, la facilité d'utilisation est impressionnate.
Un petit rappel des couches présentées
- Spark Notebook  : Interface web permettant de gérer des projets de scripts en scala et de visualiser les résultats. Inspiré de Scala Notebook
- Apache Spark  : Packaging intelligent de plusieurs briques dont hadoop, avec des api pour Java, Scala et Python
- Hadoop : Plateforme Map-Reduce Distribué, avec une API en Java, ...
- HDFS: Système de fichier utilisé par Hadoop

La latence applicative mobile: enjeux, sources, solutions... la révolution Netflix + Push - Nicolas Babel (Motwin, streamdataio), Allan Denis (ICDC)

Pour commencer un petit rappel de l'importance des performance. 0.5s est la limite à partir de laquelle le corps sort du comportement de reflexe.
Il n'ont pas pu faire la demo du produit streamdata.io , mais je l'ai vue ensuite sur leur stand.
Le principe est simple, mais terriblement efficace. Pour une application real-time , streamdata fournit un proxy intelligent et un SDK Javascript. Vous configurez votre source, une url qui fournit des données au format json, et stream data se charge de vous fournir une première version, puis de vous notifier des changements, mais ne transite entre votre navigateur et le proxy, que des diff au format json patch .

Je déploie dans mon datacenter virtuel avec OpenStack - Sylvain Avril (Indep) @sylvain_avril

Open Stack est un ensemble d'API permettant de gérer les différentes parties d'un cloud.
Présentation des composants
- Virtualisation, CPU: Nova
- Disque: Cinder
- Image de machine virtuelle, OS: Glance
- Reseau: Neutron https://wiki.openstack.org/wiki/Neutron
- Base de donnée relationnelles et autres: Trove
- Base de données objet: Swift
- Certficats: Barbican
- DNS: Designate
- Hadoop: Sahara
- Message Queue, Event: Zaqar
- System de fichier partagé: Manila
- Machines physiques: Ironic
- Docker, Kubernetes: Magnum
- Deploiement d'application: Murano

Enfin, non relié directement à OpenStack, Mesos https://mesos.apache.org/

Changing the Wheel of a moving car: Faire évoluer l'infra sans interruption - Nicolas de Loof (Cloudbees) @ndeloof

Le service de build utilisant des serveurs amazon, basé sur  Jenkins, application utilisant intensivement le système de fichier.
Utilisation de VFS pour faire des images et des restaurations de disques.
Une approche Chaos monkey, mais ils le font encore à la main.
Check engines: nagios , pingdom, ...
notifications: pagerduty, ...
Monitoring: newrelic, ...

On n'est pas que des cobayes : ORM OGM et NoSql sont-ils solubles ? - Emmanuel Bernard (Red Hat, Hibernate) @emmanuelbernard

Démonstration que le mapping designé pour une base de donnée relationnelle a une correspondance 'naturelle' en nosql, c'est à dire la manière la plus courante de le faire pour une base.
Des travaux sont en cours pour MongoDB, Infinispan, EhCache, Neo4J. Cela me semble intéressant et prometteur.

Machine Learning avec Spark, MLLib et D3.js - Hayssam Saleh (ebiznext) @hayssams

Autre présentation sur apache Spark mllib Machine Learning
Recherche du bon modèle par l'apprentissage.
Nécessité de fournir les bonnes valeurs.

Jeu de rôle en ligne massivement multijoueur avec Firebase - Alexis Moussine Pouchkine (Google) @alexismp, Thomas Guerin (Xebia) @Tom404_

Ils présentent un petit jeu de checkin dans les gares, utilisant firebase.
Le concept de firebase est que le developeur de jeu ne s'occupe ni de la disponnibilité du reseau, ni de la synchronisation des données. Un SDK Javascript est disponible, mais aussi Java, Objective-C, et une API rest. Pour le SDk Javascript, On peut imaginer une architecture où le backend est composé uniquement de la base de données. Si l'on veut ajouter de la logique, firebase propose des handlers. De plus, GeoFire permet de gérer des données de localisation.

BOF des Google user Group - Thibault Pouget (Cirruseo) @thibaultpouget, Jean-Francois Garreau (SQLI) @jefBinomed, Alain Regnier (Alto Labs)

Une présentation des nouveauté Google, de plus en plus là où on n'attend pas google.

BOF Docker Paris - Adrien Blind (Société générale) @adrienblind, Patrick Aljord (Indep) @patcito, Patrick Chanezon (Docker) @chanezon

C'était pour les participants l'occasion de poser des questions à Patrick Chanezon qui a tout récemment rejoint Docker.

Keynotes Vendredi

Un robot peut-il apprendre comme un enfant ? - Pierre-Yves Oudeyer (Inria) @pyoudeyer

Un aperçu de ce que nous reserve l'intelligence artificielle.

The upcoming decentralisation Singularity - Stephan Tual (Ethereum) @stephantual

Présentation de Ethereum , platte-forme de publication décentralisée.

The end of server management: hosting have to become a commodity - Quentin Adam (Clever Cloud) @waxzce

Une comparaison originale avec l'électricité, que l'on considère maintenant comme une simple marchandise.
http://www.slideshare.net/quentinadam/the-end-of-server-management-hosting-have-to-become-a-commodity-keynote-devoxx-fr-2015

Java; the next 20 years - Brian Goetz (Oracle) @briangoetz

Quelques examples pour nous montrer que la plate-forme évolue avec une attention particulière à la rétro-compatibilité.

Sessions Vendredi

Ifinite Infinispan - Ray Tsang (absent) (Google) , Ludovic Champenois (Google) @ludoch

Le cache en mémoire et distribué à grande échelle, avec des exemples sur la plate-forme Google Cloud.

API Hypermedia - David Martin (Ippon) @_dmartin_

Une bonne piqure de rappel et quelques concepts radicaux. Une API basée sur des liens permet de donner des possibilités de découverte et de navigation aux dévelopeurs qui consomment ces APIs. Cela porte le nom de Hateoas (Hypermedia as the Ebgine of Application State). Le petit poster offert par Octo résume bien cela aussi.
http://www.slideshare.net/delirii/api-hypermedia-devoxx-fr

Developement Web, ce qui vous attend en 2015 - Romain Linsolas (Société Générale) @romaintaz

- EcmaScript 6
- Web Components
- AngularJS 2
- React JS
- Ionic framework
- Aurelia
http://www.slideshare.net/linsolas/devoxx-france-2015-dveloppement-web-en-2015

Le retour en force de GWT - Samy Jaber (DNG) @samijaber/

Une passion qu'il partage.
Vous trouverez un article dédié à gwt.

Mot de la fin

Merci aux organisateurs, à toute la team et aux speakers, et à mycom de m'avoir donné la possibilité d'y aller, j'en ai pris plein la tête.

26/03/2014

Oubliez les Epics

Je voudrais me pencher sur ce concept d'Epic

http://referentiel.institut-agile.fr/stories.html
http://www.mountaingoatsoftware.com/blog/stories-epics-and-themes

Un epic est une grosse story, qui n'est pas détaillée et n'est pas découpée en 'vraie' story, c'est à dire une story qui peut rentrer dans un sprint. L'intérêt de l'epic est donc de commencer un backlog avec des éléments assez gros pour que l'on sache jute de quoi on parle, mais sans que cela prenne trop de temps à détailler. C'est dans ce premier travail de constitution du backlog que l'équipe commence à construire son langage. Ce qui me gène par contre dans les epics, c'est quand cela devient systématique et que l'on commence à devoir rattacher une story à une epic et que cela devient de la comptabilité. Je pense que certains outils de gestion de backlog peuvent nous pousser à cette systématisation.

Ce qui fait le plus de sens pour moi aujourd'hui, c'est de n'avoir que des stories.

Lors d'un release planning, les stories en haut du backlog doivent commencer à ressembler à des story prêtes pour le sprint, qui respecte le Definition of Ready de l'équipe. Mais les story en bas du backlog ne sont constituées que d'un mot ou une courte phrase. Toutes les story sont chiffrées et le périmètre de la release est proposé. Ce périmètre peut changer mais cela permet de donner de la visibilité.

Lors d'un sprint planning, les stories doivent respecter le Définition of Ready, être INVEST et tenir dans un sprint. Cela est possible par un affinage progressif du backlog. Le product owner découpe et affine les story afin de les décrire à l'équipe. Cet affinage peut être fait par le product Owner seul, ou avec l'équipe lors d'un 'backlog refinement', ou encore pendant le planning game.

Afin de découper les stories, on peut utiliser différentes techniques. Le mieux est de trouver une sous-partie de la story qui a de la valeur. On aura recourt à un découpage technique si cette valeur métier ne peut-être obtenue sans l'ensemble de ses parties.

Pour se raccrocher à la terminologie utilisée précédemment, l'epic disparait lorsque son découpage en story est assez fin, et ce n'est pas la peine de le garder.

Le product owner peut ainsi maitriser son product backlog, son 'stock' de user story. Ce stock total doit avoir une taille de l'ordre d'une release. Le stock de story prêtes doit aussi avoir une taille de l'ordre de un sprint.

Cela fait partie de mes réflexions sur le 'faire juste à temps' au lieu de 'faire bien'.

Sources d'inspiration et références:
http://www.aubryconseil.com/post/Ma-presentation-sur-les-bacs
https://leanpub.com/agile-expression-de-besoins
http://referentiel.institut-agile.fr/invest.html
http://referentiel.institut-agile.fr/ready.html
http://www.agileforall.com/wp-content/uploads/2012/01/Story-Splitting-Flowchart.pdf

Et pour terminer, une video très bien faite qui présente le 'product backlog refinement meeting'.
http://scrummethodology.com/scrum-epics/








23/01/2014

MYCOM

J'ai rejoint l'éditeur de logiciel MYCOM après 5 ans en société de conseil (Norsys et Sfeir).

La société de service m'a permis de voir rapidement des contextes différents en me poussant à apprendre et à m'adapter rapidement. Pour moi, c'est un environnement qui pousse à la veille technologique et au partage avec des passionnés.

Mais je souhaitais avoir la possibilité de m'engager à plus long terme sur le développement d'un produit logiciel. Cela est plus en phase avec mes valeurs agiles, et c'est exactement ce que j'ai trouvé à MYCOM.

En deux mots, le métier de MYCOM est la gestion de la performance des équipements téléphone et réseau des opérateurs téléphonique.

Mais bien sur je reste artisan du SI.