Devfest 2020

Notes sur les conférences du DEVFEST (février 2020)

TP : Tests de propriétés : Ecrire moins de tests, trouver plus de bugs (10h)

  • Julien DEBON -> TechLead chez DecathlonTech twitter : @sir4ur0n & Sir4ur0n sur Github.
  • Thomas Haessle -> Cutii twitter : @oteku

SPEECH : Commençons par une petite histoire : “Aklass vient d’être promu chef de la tribu des Trolls. Son prédécesseur, Gnonpom est mort prématurément après deux jours de règne, d’une flèche elfe perdue : cette fois c’est décidé, le concours de chasse à l’elfe est lancé ! A l’issu de chaque bataille, les trolls veulent comparer le nombre et les attributs des elfes massacrés. Mais le chef veut s’assurer que chaque troll comprend comment marchent les nombres : par exemple aucun troll ne devrait avoir de compte négatif (parce qu’un troll ne sauve JAMAIS d’elfe).

Le Troll Aklass a besoin de votre aide !”

Ce workshop vise à sensibiliser les développeurs ou tout curieux de Software Craftsmanship aux tests de propriétés. Après une brève introduction à ce que sont les tests de propriétés, les participants seront amenés à les mettre en œuvre et découvrir que tester les propriétés des “objets” permet de produire un code plus fiable tout en écrivant moins de tests. Le workshop sera proposé, au choix de chaque participant, en Java ou Javascript afin d’être accessible au plus grand nombre, ainsi qu’en Haskell et ReasonML pour ceux voulant s’essayer à des langages ML. Une connaissance d’un de ces langages et une première expérience en tests unitaires est nécessaire pour profiter pleinement de l’atelier.

Test unitaire : le test est figé + L’input est figé + 1 seule exécution

Test de propriété : s’exécute pleins de fois + Random input + On connait pas la valeur de retour

Librairies de tests :

  • Php-QuickTest
  • FeCheck
  • QuickCheck
  • qcheck-alcotest
  • qcheck-rely
  • qcheck + Nom langage
  • Fastcheck (JS)
  • Scalacheck
  • Hypothesis (PY)
  • JUnit-QuickTest

Le but était de faire les exercices sur https://github.com/trollaklass.

Il y avait 5 langages possibles : ReasonML, Haskell, JS, Java, Rust.

:point_right: Si vous voulez refaire les exos allez sur le dépôt & tout sera expliqué dans le README. Avec Adriel et Fayal on l’a fait en Js.

Notes prises pendant les travaux pratiques (+ liens pour comprendre certaines notions) :

function add(x, y) {return x + y};
const add = (x, y) => x + y;
const addCurr => x => y => x + y;

Ces 3 lignes de code représente 3 manière différentes d’écrire une fonction, de lui donner des paramètres, et de lui dire quoi retourner.

-> add(1, 2);
-> addCurr(1)(2);
-> const add2Curr = addCurr(2)

=> Pas d’accolades = retour direct.

Qu’est ce qu’une fonction pipe en js :

Ecriture purifiée :
J’ai pas compris, je veux bien des indications sur ce que c’est.

Du fonctionnel en Js :
https://buzut.net/programmation-fonctionnelle-en-javascript/

Immutabilité :


3 petits points en JS :

Map en Js :


Tuple en Js :



.property sert à faire x fois le test.

Premier test qu’on devait faire: Tuple avec tableau : Un troll arbitraire à déjà tuer un nombre arbitraire d’elfes.

Scoping ?


Garbage collection :
https://javascript.info/garbage-collection

CONFERENCE : Help save the planet, one web page at a time (15mins)

SPEECH : The web has an ecological impact. We know it, that is a fact. As a concerned citizen and a web developer, I have been trying to reduce the web’s impact for a year.

But what impact exactly? When it is time to estimate the impact, we are less confident.

Focusing on the Netflix login page, I will estimate the CO2 cost of this particular page following the requests through user devices, network and datacenters.

The audience will learn how to reduce their ecological impact as a web user and a web actor, and how to imagine the web of tomorrow.

Livre : Ecoconception web les 115 bonnes actions

Association : https://theshiftproject.org/

Le conférencier @BatbyRomain (twitter) batbyR (github) a parlé de la page netflix sur laquelle on sélectionne notre profil. Certes cette page n’est pas très demandante en énergie, mais étant donné que Netflix a des millions d’utilisateurs qui chargent cette page parfois plusieures fois par semaine. A terme, ça pollue. Il a donc créé une extension qui permet de se souvenir de l’utilisateur quand on se connecte.

Extension : Remember me on netflix

CONFERENCE : AutoML : 40h que je fais du machine learning sans que j’en susse rien ! (14h)

Orateur : Laurent Picard

Twitter & Github : @PicardParis

46 ans. Travaille chez Google, fan de Tolkien, est arrivé chez Google après 2016, bosse du côté de google Translate

SPEECH :
« Il y a plus de quarante ans que je dis de la prose sans que j’en susse rien, et je vous suis le plus obligé du monde de m’avoir appris cela. » — Monsieur Jourdain

40 ans, c’est le temps qui a été nécessaire aux experts pour parvenir à ce stade de l’apprentissage machine : surpassant les algorithmes traditionnels, des modèles de réseaux neuronaux peuvent maintenant comprendre texte, image, audio et vidéo. De 4 à 40 heures, c’est le temps désormais suffisant à tout développeur pour utiliser un tel modèle, voire en créer un nouveau et résoudre un problème métier unique.

« Serait-il alors possible de générer des modèles sur mesure, sans aucune expertise, et sans même le savoir ? » — Moi (développeur gentilhomme)

Dans cette session, nous verrons ce que permettent des modèles pré-entraînés (API de machine learning), comment aller au-delà en générant un modèle personnalisé (nouvelles techniques AutoML), et nous participerons à une démo live tous ensemble. Ne mettez pas vos smartphones en mode avion !

Notes sur la conférence :

  • On a besoin d’exemples de la vie réelle.
  • Le machine learning (ML) possible grâce à la science, le big data, et le cloud.
  • Google utilise ML de plus en plus, notamment sur Android, les apps, Gmail, Maps, Photos, Search, Speech, Translation & Youtube.
  • 3 façons d’utiliser ML aujourd’hui :
    > expert (dans le ML)
    > développeur (avec modèle pré-entraîné, comme Firebase)
    > utilisateur (par exemple les utilisateurs du Google Home.
  • google analyse le web depuis 20 ans pour améliorer le ML.

  • Pleins d’API & de librairies sur le ML.

  • “Si on arrive à comprendre ce qu’il y a dans nos données, on peut les analyser.”

  • Booken :
    Reconnaît les visages, les émotions, les lieux réels sur terre, reconnaît du texte pour savoir de quel livre il vient, ainsi que qu’est ce qu’une phrase, qu’est ce qu’un symbole. Fonctionne également sur écriture manuscrite.
    Peut reconnaitre si un article est positif ou négatif sur quelque chose.
    -> Mail très négatif, très urgent à traiter.

  • Retranscrire une voix en texte : Machine Learning.

-> Les modèles sont robustes au bruit.

Le machine learning fonctionne maintenant en temps réel (Alexa …).

Moteur TTS : moteur de synthèse vocal.

Deepmind :

  • Filiale de google
  • Basée à Londres
  • Arrive à produire de la voix qui ressemble comme 2 gouttes d’eau à une voix humaine.
  • Ont développé wavenet -> le ML le plus avancé

Google Home : voix wavenet.

Google Search : Marche avec la voix.

Wavenet arrive à comprendre l’anglais, même avec un accent pourri.

Cloud autoML : https://cloud.google.com/automl/?hl=fr



Google Cloud Platform : Permet d’analyser les images.
> Matrice de confusion.

Serverless : https://serverless.com/ & https://serverless-stack.com/chapters/fr/what-is-serverless.html

TensorFlow : OpenSource > Construire des réseaux neuronaux sur nos pc.

Transfer learning : https://meritis.fr/ia/methodes-de-transfer-learning/

Lien des slides : bit.ly/slides-mimagic

CONFERENCE : Storybook pour votre design system, un conte de fées ? (15h)

Oratrices : Fleur Ettwiller (twitter : @fleurettwiller) UX Designer

Michèle Legait (twitter : @mlegait github: @mlegait) Développeuse Front-end.

SPEECH : Nous allons vous raconter une histoire merveilleuse où développeurs et designers collaborent au quotidien dans un même environnement appelé Design system.

Ils y conçoivent des composants réutilisables et modulables à l’infini, pour créer et tester rapidement les interfaces de demain. Mais aussi capitaliser sur des acquis solides, basés sur des guidelines UX/UI intégrés.

Et si ce n’était pas qu’un conte de fées? Et si Storybook était un moyen de réaliser cet idéal?

Pour le savoir, explorons ensemble les possibilités de cet outil pour monter un design system.

Elles font parties de l’association http://flupa.eu/.

Constat : besoin d’hétérogénéité des applis d’une boîte.

Style guide (éléments graphiques + guidelines)
‹ + › Composant librairies & sandbox
= Design System + guidelines globales.

Qu’est ce que le Design System ?

IMG_Schema|469x500

ORGANISATION :

Equipe dédiée au Design System :

  • C’est rapide.

  • Moins intégré par l’équipe.

Equipe transverse :

  • Couvre plus de besoins
  • Plus de gens sensibilisés

Bénéfices UX / Produit d’un Design System :

  • Cohérence d’ensemble
  • Efficacité
  • Référentiel commun
  • Identité de marque
  • Valeur d’entreprise

Bénéfices techniques d’un Design System :

  • Gain de temps
  • Qualité d’ensemble
  • Maintenabilité

=> Possible pour startup

1 appli / 1 techno = ok

plusieurs applis / 1 techno = c’est utile

Plusieurs applis / plusieurs techns = GOOOOO !!

5 exemples :

  • Saleforce
  • MorningStorm
  • Shopify
  • Cosmos
  • Invision (il y a un documentaire vraiment bien sur celui la)
  • Atomize
  • Carbon Design System (mis en place par IBM)

STORYBOOK :

-> Storybook est un environnement de développement pour les composantes de l’UI. Il vous permet de parcourir une bibliothèque de composants, de visualiser les différents états de chaque composant, et de développer et tester les composants de manière interactive.

Le front end moderne est un assemblage de composants.

Les composants introduisent beaucoup de galères.

Storybook propose un catalogue de composants dans une sandbox.

Fonctionne avec Vue, react, Angular …………

Storybook vie à côté de votre application.

Possède plus de 20 addons.

Pas de possibilité de faire des guidelines donc, go MDX.

Storybook ne peut créer qu’une instance à la fois. MAIS peut avoir une instance par techno.

Oui pour storybook parce que :

Côté DEV :

  • Outil répond à presque tout les besoins.
  • Font parti de l’environnement habituel des dev.
  • Forte communauté.

Côté Organisation :

  • Outil centralisé
  • Facilite les collaborations.
  • Outil adaptable

Storybook en résumé :

  • Gratuit
  • Permet de cadrer les workflows
  • Génération auto de doc technique
  • MAIS nécessite des collaborateurs qui maîtrisent le dev.

J’ai trouvé ⅔ liens cool sur le front pendant mes recherches, je les mets la :

http://pixelastic.github.io/octo-webf-guidelines/

CONFERENCE : Comment se faire hacker bien comme il faut ! (16h)

(Notes pas incroyable, j’ai pas tout compris, c’était technique, sorry)

Orateur : Julien Topçu (Bosse à la Société Générale en tant que Techical Leader.

Fais parti de l’association : https://owasp.org/

SPEECH : Et encore une fuite de numéros de cartes de crédit sur internet! https://www.infoq.com/news/2018/11/british-airways-data-breach

C’est révoltant n’est-ce pas ? Mais attends, qu’est-ce qu’on fait nous pour s’assurer que notre appli n’est pas une passoire?

Dans cette live-coding-hacking session, venez découvrir les erreurs les plus communes en sécurité, que la grande majorité d’entre nous font sans même le savoir!

Après cela, vous ne verrez plus votre application de la même manière…

5 J'aimes

Ce n’est pas aussi complet que le journal de Laurine… À choisir, regardez plutôt le sien ^^

J’ai suivi un « codelab » sur des tests de propriétés, et un peu de fonctionnel.
Ensuite, on a vu une conférence qui parlait de la responsabilité écologique d’un développeur.
L’après-midi, j’ai écouté une conférence de ce que l’on pouvait faire dans le web natif.
J’ai rejoint Lydia et Del pour une conférence sur l’IA dans les robots.
Pour finir, on suivi la conférence « Comment bien se faire hacker ? » par Julien.

Les tests de propriétés

On a découvert le principe du « property based testing » avec le troll Aklass.
Le dépôt git qui contient toutes les bonnes infos https://github.com/trollaklass.
On a découvert de jolies syntaxes en javascript, qui se rapprochent du fonctionnel.
On a découvert les différentes bibliothèques à la « fast check » pour faire du PBT.
J’ai bien aimé le principe « les tests unitaires sont biaisés par le développeurs ».
Les tests de propriétés sont –je trouve– plus élégant, et on ne s’embête plus à savoir quel cas on teste.

Sauver la planète une page web à la fois

On a parlé de ce que peut faire un dev pour réduire l’impact de son site sur la planète.
On nous a parlé du concept de « Sobriété numérique ».
Favoriser les pages statiques, faire attention à la gestion des expirations dans les en-têtes, etc.
Je trouve ce concept un peu étrange dans la mesure où c’est ce que l’on devrait tous faire par défaut.

On nous a présenté un exemple concret de la page de choix de compte de netflix.
Il a mesuré, à la louche, l’émission de CO2eq dû à cette page.
En fait, il est moindre si on ne considère pas les 140 millions d’utilisatrices de Netflix.
Il est énorme, et elle n’ajoute rien et on pourrait la retirer en associant un device à un compte.

web natif chépuquoi

C’était un rapide tour des différentes APIs qui sont développés par le projet FUGU.
On parle de comment, en passant par le web, on peut avoir la possibilité de faire x ou y nativement.
Sans passer par une application externe pour avoir certains droits spécifiques.

  • L’accès aux SMS de confirmation
  • Reconnaissance faciale (s’il y a un visage ou non)
  • Lecture native des QR code.
  • Lecture/écriture sur le système de fichier
  • Tout un tas d’autres trucs.

Le « speaker » défendait aussi l’aspect sécurité/vie privé car le navigateur demande les droits, contrairement à une app installée.
Je suis un peu sceptique, et assez prudent sur ce que l’on nous vend dans le web.

l’intelligence artificiel dans les robots

Elle a présenté concrètement, comment et à quel prix avait créé un chat robot.
Quelles technologies, de quel projet elle s’est inspiré, logiciel matériel, etc.

Elle a présenté un peu comment se passait l’IoT dans les entreprises (et les usines).
Je suis assez choqué que personne ne soit dérangé par le fait de toujours passer par les API de Google, Amazon, Watson, etc.
Personne ne se dit qu’il serait plus safe de faire le machine learning & cie sur une machine locale, avec du code opensource qui reste à la maison.
À priori, je pense que ça revient moins cher parce que tu n’as pas a payé le CPU et la bande passante à distance.
Tes données t’appartiennent un peu plus, tu as plus de transparence sur ce qui est fait.
Tu n’as pas une architecture réseau bien complexe à prévoir pour communiquer avec les différentes API.

Ça génère peut-être d’autres problématiques, et ce n’était pas le but de la conf, mais je suis surpris.
Je me trouve beaucoup trop en décalage avec tout ce genre de problématique…

Comment se faire hacker bien comme il faut ?

  • 'OR '1'='1' LIMIT 1 -- Une injection SQL typique.
    Un classique, mais la conf parlait de tout ce genre de chose, avec un bon dynamisme et humour.

Je renvoie vers ce lien : https://gitlab.com/crafts-records

2 J'aimes