Fréquence Valtech n°12 : Propriété du code

Publié par Eric Le Merdy, le 16/07/2015, dans Fréquence Valtech

Nicolas Bétheuil et Audrien Fontaine sont mes camarades pour cette discussion sur la propriété du code.

On y parle de cowboys, sprinteurs, peloton, Tour de France. On y parle des enjeux qu’on a identifié :
frequence-valtech-12-code-ownership-serious

  • envergure du projet
  • responsabilité
  • maintenance
  • qualité
  • cohésion

Nous partageons ensuite nos expériences pour le débat.

Voici un petit aperçu visuel de notre préparation, ya du cowboy là-dedans

code ownership

Vous pouvez télécharger ce podcast au format ogg ou mp3 ou encore vous abonner via le flux rss dédié.

Le thème musical provient de podcastthemes.

Et on s’est bien amusés
frequence-valtech-12-code-ownership-not-so-serious


Susy Sass and Adobe AEM

Publié par Thibaut Gilbert, le 3/06/2015, dans Front End, Sass, Tutoriel
thumbnail typewriter logo susy adobe aem

Prerequisite

Some experience with Sass. For more details on Sass and Susy.

Context

Susy is a Sass framework which provides Sass mixins and functions to create complex and easily maintainable grid layouts.

The old fashion way was to use out of the box monolithic responsive frameworks. These frameworks have some flaws, I listed the main ones:

– as I work with Foundation mostly, I use it as example –

  1. responsive frameworks add a lot of extra markup. Especially tags of class row and column. Though it’s a good practice to put the column class directly on a useful element, it’s impossible to do so for the row class which leads to extra divs.
  2. Foundation’s CSS source is huge and most of the time we only need a little fraction of it. This should be balanced by the ability to import (via Sass partials) only the needed components (eg the Grid, Forms, Buttons…) but even this way it’s not optimal: are you really going to use all the Grid’s classes? I doubt that… Moreover due to this very nature (lots of factorized declaration blocs) debugging a Foundation website isn’t easy, as the code is bloated.
  3. those frameworks offer grid nesting but the nesting fail against too specific use cases (thanks designers! :) )

Along the way we have to overwrite more and more CSS to reach our goals.

Apart from those conceptual constraints, using a responsive framework on an AEM project may lead to other headaches:

  1. AEM introduces a composition constraint: some components can host other ones (via drag and drop in the editor mode). Thus, when he integrates those components, the front end developer has to keep in mind the various combinations of CSS (to prevent eventual CSS conflicts). The extra tags and CSS added by Foundation increase the amount of combinations
  2. when a component need a change in its layout it’s necessary to update both the CSS and the HTML in the JSP file. And everybody knows that the front end guy isn’t the Java best friend…
  3. sometimes the AEM workflow has to duplicate divs, along with their classes. When this duplication hits Foundation markup, the corresponding CSS has to be modified accordingly because CSS conflicts has arisen and some selectors need more specificity

Lire la suite »


Devoxx France : édition 2015

Publié par Valtech France, le 23/04/2015, dans Événements, Java, javascript
Devoxx FR 2015

Devoxx France a passé la vitesse supérieure cette année avec une édition à l’immense Palais des Congrés et avec plus de 2000 développeurs présents !

Et la famille Devoxx s’agrandit avec l’addition de Devoxx Maroc aura lieu en novembre 2015 à Casablanca dans le second plus grand complexe de Cinéma d’Afrique.

Bref, cette conférence devient de plus en plus incontournable et continue d’aborder des sujets variées comme l’agilité, l’architecture, la sécurité, devops ou le web.


La robotique y a été également représentée avec notamment deux keynotes.

L’une à l’ouverture par Rodolphe Gelin qui présentait les différentes visions d’Aldebaran dans le domaine de l’aide à la personne. Ils imaginent des robots capables de fournir des informations et de rappeler à des personnes isolées de prendre leurs médicaments et repas et aussi de les encourager à maintenir un lien avec leur proches. Ils analysent le quotidien de la personne et donnent l’alerte en cas de changement. Le tout grâce à un gros travail dans le domaine de la reconnaissance d’image et l’intelligence artificielle.

L’autre par Pierre-Yves Oudeyer. Au sein de son laboratoire de recherche, les robots apprennent comme des enfants grâce à des algorithmes qui leur permettent d’explorer leur environnement. Son laboratoire de recherche travaille sur une plateforme de robotique Open Source baptisé le projet Poppy.
L’idée est de pouvoir facilement fabriquer son robot soi-même grâce à l’impression 3D et à l’utilisation de composants facilement disponibles tels que des Arduinos ou Raspberry Pi. À la surprise de Pierre-Yves, cette solution est beaucoup utilisée dans le domaine de l’éducation où elle permet de mettre les enfants au contact des robots à moindre coût.


Stephan TualUne autre keynote intéressante fut celle sur Ethereum où Stephan Tual nous explique le principe de cette technologie. Fondé sur les principes cryptographique de Bitcoin, Ethereum permet de concevoir des applications s’exécutant sur un réseau pair à pair. Il y a trois types d’intérêts  :  la plate-forme permet aux développeurs de se décharger de l’hébergement et de la mise à l’échelle, le pair à pair donne une plus forte résilience à l’application et il limite les situations de monopole des plates-formes centralisées (par exemple avec Facebook).


Concernant les technologies Web, Jean-Christophe Sirot (@jcsirot) nous a présenté “Web Crypto API”, des API cryptographiques JavaScript.
Les applications Web sont en effet de plus en plus complexes et certaines d’entre elles ont besoin de chiffrement pour rivaliser avec les applications natives. Des exemples sont le chiffrement d’email côté client avant envoi, ou le chiffrement de fichier avant le stockage dans DropBox ou d’autres outils de partage de fichiers.

Web crypto API

Grâce à des nouveaux types nécessaires pour la cryptographie (pas sure de comprendre si c’est natif ou fourni par l’API de JC, je mettrais plutôt ) JavaScript a été étendu avec des types de données (tableaux d’entier non signé : UInt8Array, UInt16Array et UInt32Array) et de nouvelles API.  Il est maintenant possible de générer des nombres pseudo-aléatoires robustes via `window.crypto.getRandomValues` et d’appeler des fonctions de hachage (sha1, sha256, etc) ou des fonctions de chiffrement symétriques (AES) ou asymétriques (RSA) via `window.crypto.subtle`. Bref, cette API est encore jeune (et les algorithmes de hachage/chiffrement ne sont pas encore tous supportés partout). Elle ne règle pas encore tous les problèmes mais elle a le mérite de permettre d’améliorer la sécurité des applications Javascript à moindre coût. C’est donc une très bonne nouvelle pour les développeurs Web.


Service Workers

Une seconde conférence sur les API Web fut celle d’Hubert Sablonnière sur les Service Workers.
Les Service Workers sont une nouvelle API du W3C. Cette API est une nouvelle façon de gérer le mode offline. La première tentative du W3C fut celle du Cache Manifest qui souffre malheureusement de nombreuses limitations et qui est difficile  à mettre en place. Avec les Service Workers, il est possible de déclarer un Worker (fichier JavaScript exécutant une tâche de fond) qui permet d’intercepter toutes les requêtes HTTP.

Service Workers en détail

Cette API s’appuie sur la nouvelle API fetch, qui remplace l’objet XmlHttpRequest et simplifie énormément les appels HTTP en JavaScript. Avec les Services Workers, à chaque requête, on peut préciser le comportement à déclencher comme par exemple renvoyer la page telle qu’on l’a précédemment stockée en cache,  toujours chercher la page sur le serveur ou encore renvoyer un contenu spécifique. Ainsi par exemple, il serait possible lorsque l’utilisateur consulte une nouvelle page non-cachée et s’il n’y a plus de connexion, d’indiquer à l’utilisateur que cette page n’est pas disponible mais de proposer une liste des pages précédemment consultées et cachées. Un exemple que vous pouvez tester est l’application Web https://nextspeaker.io/ où les données sont récupérées à la première connexion et qui permet ensuite une utilisation en mode hors-connexion. Hubert est convaincu qu’avec ces nouvelles API, le Web entame une nouvelle révolution qui mettra à mal les applications mobiles natives puisque l’un des avantages de celle-ci fut justement, le fonctionnement en mode hors ligne.


Du côté des conférences Agile, celle de Dimitri Baeli (@dbaeli) et Benjamin Degerbaix (@benbaix) de lesfurets.com sur “Livrer chaque jour ce qui est prêt” était très intéressante. Ils expliquent comment ils ont transformé leurs livraisons mensuelles en livraison quotidienne. A travers une adaptation de Git Flow et grãce à l’utilisation d’un outil développé par leurs soins (Git octopus), ils déploient automatiquement et en continu l’ensemble de leurs branches de fonctionnalités sur les environnements de recette. Un travail conséquent a été initié sur les 200 tests Selenium afin de passer leur exécution de 6 heures à 1 heures via Selenium Grid à 10 minutes en les lançant en parallèle via de nombreuses instances Docker et surtout, en RamFS.
Selenium Grid en RamFS
Plus d’information sont disponibles sur https://github.com/lesfurets/selenium-lxc. Enfin, afin de détecter les régressions de style CSS d’une livraison sur l’autre, un autre outil a été développé : il s’agit de Zeno Pixel. Bref, un retour d’expérience très intéressant avec de nombreuses “astuces” à expérimenter sur nos projets.


Parmi les autres conférences qui ont éveillé mon attention, il y a celle sur OptaPlanner par Geoffroy De Smet et Frédéric Hornai (RedHat Luxembourg).
Ce logiciel Open source en Java (http://www.optaplanner.org/) est un solveur, un peu à la manière de celui de Microsoft Excel. A travers différents exemples, on nous présente comment cet outil permet de s’approcher d’une solution optimale pour plusieurs problèmes NP-complet tels que celui du voyageur du commerce ou alors comment optimiser le déploiement d’applications sur des instances de plusieurs fournisseurs de Cloud ayant des coûts / ressources différents. Ce dernier exemple est d’ailleurs un cas concret où un service de Cloud Computing a pu économiser 17 % de dépenses. Cet outil est intégrable dans vos projets Java.


Qu’attendez-vous de votre manager agile ?

Publié par Laetitia Thernier, le 22/04/2015, dans Agile, Événements, Valtech

A question difficile, pas de réponse, ou mille réponses différentes.

Comme chacun a sa propre idée de ce qu’est un « manager agile », Valtech_ vous a offert la possibilité de vous exprimer sur son stand au Scrum Day.

Voici le résultat :wall_manager_agile_2_small

Et voilà notre proposition après catégorisation (post-it rose) :

Manager_Agile

Merci à tous pour votre participation et n’hésitez pas à diffuser ce billet à tous vos managers !

L’équipe Valtech_.


NCrafts, parce que la culture crafts est importante

Publié par Radwane Hassen, le 20/04/2015, dans Valtech

sponsor-platinium-600x187

Nous sommes heureux chez Valtech de soutenir pour la deuxième année consécutive NCrafts et de promouvoir une culture qui nous est chère, la culture craft.

Le software craftsmanship rappelle l’importance du savoir-faire du développeur, dont l’excellence technique et l’amélioration continue sont les clés.
Parce qu’un logiciel qui fonctionne n’est pas suffisant et pour que nous puissions livrer de la valeur continuellement, il faut non seulement la maîtrise du workflow de développement en automatisant tout ce qui est possible de l’être (build, packaging, test…) mais aussi une maîtrise de la qualité du code.

Cette culture craft, pousse les développeurs à ne pas être de simples exécutants mais à être maître de leur art pour que la qualité du produit fasse la différence.

Manifesto

Pendant deux jours de conférence le 21 et 22 mai, venez à la rencontre de speakers internationaux de grande qualité et venez partager avec vos pairs.

Valtech accueillera le 20 mai une journée de pré-conférence où vous pourrez choisir entre 4 workshops :

– “Crafting code workshop” par Sandro Mancuso
– “Event Storming workshop” par Alberto Brandolini & Mathias Verraes
– “Getting Started by Configuration Management” par Paul Stack
– “Introduction to functional programming (using C# and F#)” par Scott Wlaschin


DevOps ok? Voici DevEE!

Publié par Paul-Emmanuel Faidherbe, le 30/03/2015, dans IoT, Valtech

Ces dernières années ont largement été marquées par la volonté d’améliorer la collaboration entre les équipes de développement et d’exploitation afin d’assouplir les process en entreprise.

Mais alors que vous pensiez pouvoir reprendre une activité normale et continuer sur cette lancée, voici qu’un nouveau courant pointe son nez, porté par le secteur en plein essor de l’Internet des objets : j’ai nommé le “DevEE”, pour “Developers” et “Electronics Engineers”!

Lire la suite »



Utilisations des API cachées d’Android

Publié par David Gonzalez, le 2/02/2015, dans Android, Java, Mobile, Tutoriel

En tant que développeur d’application mobiles Android, vous êtes vous déjà demandé comment certaines applications pouvaient accéder à des fonctionnalités qui ne sont pas offertes par le SDK Android? Et même pourquoi certaines applications requièrent d’avoir le téléphone “rooté” pour fonctionner?

Cet article, destiné avant tout aux développeurs Android, va tenter de vous donner quelques éléments de réponses à travers l’utilisation de fonctionnalités cachées, sans rooter (débloquer) son téléphone.

Lire la suite »


Un Domain Specific Language à la rescousse

Publié par Louis Foucart, le 20/01/2015, dans Valtech

Un DSL pour sauver le State Chart XML

Nous allons présenter dans cet article ce que peut nous apporter l’approche “Domain Specific Modeling” grâce à une étude de cas tirée d’une expérience réelle dans l’industrie automobile. Voici en un clin d’oeil le problème à résoudre :

clindoeil

Figure 1. Problème et solution en un clin d’oeil

Nous allons voir comment passer d’un mode de travail d’édition de XML dans un éditeur commun et d’étapes de tests et validations multiples à un mode de travail plus direct et spécifique grâce à un environnement dédié pour un Domain Specific Language.
Un Domain Specific Language est un langage spécifique pour un domaine d’application (métier ou technique). Nous allons définir un Domain Specific Language (DSL) grâce au “Language Workbench” de Jetbrains : Meta Programming System (MPS). Un “Language Workbench” est un environnement de développement de DSL. Nous n’insisterons pas sur le comment (ce n’est pas un tutoriel) car cet outil est très bien documenté sur internet, mais plus sur ce que l’on peut facilement obtenir avec. Nous présenterons ainsi ces capacités d’édition qui nous aideront déjà à sortir de notre problématique. Pour cela, nous allons prendre comme cible, le standard XML de définition de machines à états : le SCXML. Cet article est la suite pratique de Le Choc des Titans : Coder vs Modéliser écrit comme introduction au Domain Specific Modeling (DSM).

  1. Il était une fois… (les machines à états et le marécage du SCXML)
  2. L’Oracle (comment s’en sortir grâce à la recherche du sens)
  3. Le Chevalier du Guet (les difficultés qui font peur à tout le monde)
  4. Les passes d’armes (notre éditeur et ses capacités)
  5. L’épée et le bouclier magique (la réutilisation pour aller plus loin tout de suite)
  6. L’Auberge et la quête (cela ne fait que commencer)

Lire la suite »