diff --git a/.gitignore b/.gitignore
index e157ba7..276db58 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ node_modules/
.firebase/
.idea/
.vscode/
+yarn-error.log
diff --git a/content/schedule/_index.fr.md b/content/schedule/_index.fr.md
index 5fd1045..93b286a 100644
--- a/content/schedule/_index.fr.md
+++ b/content/schedule/_index.fr.md
@@ -11,5 +11,10 @@ draft: true
{{% hero %}}
+
+
+ ICal
+
+
{{% /hero %}}
diff --git a/content/schedule/_index.md b/content/schedule/_index.md
index 7c3347c..fd22076 100644
--- a/content/schedule/_index.md
+++ b/content/schedule/_index.md
@@ -10,5 +10,10 @@ draft: true
---
{{% hero %}}
+
+
+ ICal
+
+
{{% /hero %}}
diff --git a/content/sessions/le_troll_dans_ta_machine_____une_courte_introduction_a_la_pensee_de_jean_yves_girard.md b/content/sessions/le_troll_dans_ta_machine_____une_courte_introduction_a_la_pensee_de_jean_yves_girard.md
index f7853f2..5f2e330 100644
--- a/content/sessions/le_troll_dans_ta_machine_____une_courte_introduction_a_la_pensee_de_jean_yves_girard.md
+++ b/content/sessions/le_troll_dans_ta_machine_____une_courte_introduction_a_la_pensee_de_jean_yves_girard.md
@@ -29,4 +29,4 @@ Dans cette courte présentation, on s'attachera à comprendre pourquoi Girard es
----
-Dans le cas d'un créneau à 40min, on pourrait donner quelques pointeurs sur ses travaux plus récents, et expliciter en quoi ils sont porteurs de nouvelles avancées pour les prochaines décennies (réseaux de démonstrations, géométrique de l'intéraction, etc.).
+Dans le cas d'un créneau à 40min, on pourrait donner quelques pointeurs sur ses travaux plus récents, et expliciter en quoi ils sont porteurs de nouvelles avancées pour les prochaines décennies (réseaux de démonstrations, géométrique de l'intéraction, etc.).
\ No newline at end of file
diff --git a/data/schedule.yml b/data/schedule.yml
index a76e756..0affa44 100644
--- a/data/schedule.yml
+++ b/data/schedule.yml
@@ -136,7 +136,7 @@
- slot: slot-lt-2
talk: machine_learning_avec_des_allumettes_et_des_cotillons
- slot: slot-5
- talk: un_distributeur_automatique_d_argent_de_poche_pour_les_enfants
+ talk: a_kotlin_multiplatform_evolution
- slot: pause-5
talk: __pause
- slot: slot-6
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..356eea9
--- /dev/null
+++ b/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "site-devfest-2019",
+ "version": "1.0.0",
+ "repository": "https://gitlab.com/devfest-toulouse/site-devfest-2019",
+ "author": "Igor Laborie ",
+ "license": "Apache-2.0",
+ "scripts": {
+ "build:minify": "node tools/minify.js",
+ "build": "run-p build:*"
+ },
+ "devDependencies": {
+ "glob": "^7.1.4",
+ "html-minifier": "^4.0.0",
+ "npm-run-all": "^4.1.5",
+ "plop-logger": "^2.3.0",
+ "tslib": "^1.10.0"
+ }
+}
diff --git a/static/api/site.json b/static/api/site.json
index 13aa4e0..d58376a 100644
--- a/static/api/site.json
+++ b/static/api/site.json
@@ -2331,7 +2331,7 @@
},
{
"slot": "slot-5",
- "talk": "un_distributeur_automatique_d_argent_de_poche_pour_les_enfants"
+ "talk": "a_kotlin_multiplatform_evolution"
},
{
"slot": "pause-5",
diff --git a/static/schedule/schedule.ics b/static/schedule/schedule.ics
new file mode 100644
index 0000000..023eb41
--- /dev/null
+++ b/static/schedule/schedule.ics
@@ -0,0 +1,811 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PROID:-//Devfest/DevFest Toulouse 2019//FR
+X-WR-CALDESC:DevFest Toulouse 2019
+X-WR-CALNAME:DevFest Toulouse 2019
+X-WR-TIMEZONE:Europe/Paris
+BEGIN:VEVENT
+DESCRIPTION:Le numérique fait-il partie du problème ou de la solution quand
+ on parle de réchauffement climatique ?\n\n5 milliards de smartphones en ci
+ rculation en 2020\, ça représente quoi en consommation énergétique\, en gaz
+ à effet de serre\, en pollution chimique ?\n\nLe streaming illimité à 10 e
+ uros par mois c'est le pied mais aujourd'hui Netflix a à peu près l'emprein
+ te carbone du plus gros cimentier mondial\, qui va payer la facture environ
+ nementale ?\n\nTous les mails de votre vie (que vous ne lirez plus jamais)
+ disponibles sur Gmail\, très utile\, mais après 2020 on ne saura peut-être
+ plus produire industriellement les équipements nécessaires à leur stockage.
+ \n\nOn arrive dans "l'âge des limites"\, pour le numérique comme pour le re
+ ste. Quels sont les leviers pour basculer vers un numérique durable ?\n\nEt
+ si malgré tout on décidait de s'en foutre ? 2 degrés en plus\, c'est juste
+ un pull en moins non ? Non. Par contre c'est 30% en moins sur les rendemen
+ ts agricoles pour ... 30 % de population en plus en 2050. En 1970\, Dennis
+ Meadows modélisait sur les ordinateurs du MIT un crash du système planétair
+ e pour les décennies 2020-2030. Pour l'instant\, c'est cette trajectoire qu
+ e notre monde suit.
+DTSTART:20191003T100000
+DURATION:PT40M
+LOCATION:Grand amphi.
+SUMMARY:"Numérique et environnement" ou "On aurait pu sauver les abeilles\,
+ on a préféré sortir un nouvel iPhone"
+UID:zDbtrtvdLPG1okj07wyI
+URL:https://devfesttoulouse.fr/sessions/_numerique_et_environnement__ou__on
+ _aurait_pu_sauver_les_abeilles__on_a_prefere_sortir_un_nouvel_iphone_
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Nous savons tous développer une API mais avons-nous tous bien i
+ ntégré les problématiques d'environnements et de cycles logiciels multiples
+ ? L'opérabilité\, la gouvernance\, le versioning\, la traçabilité\, la séc
+ urité — et bien plus encore — de ces API web une fois en production ?\n\nDu
+ rant ce talk\, c'est plusieurs dizaines de points d'attentions rarement évo
+ qué que je vous propose d'aborder\, à la lumière de retours d'expériences p
+ rovenant de chez Uber\, Stripe\, Facebook\, ...
+DTSTART:20191003T110000
+DURATION:PT40M
+LOCATION:Grand amphi.
+SUMMARY:⛳️ Votre API web passe-t-elle le contrôle technique ?
+UID:Gxr3XZR1HEu14tbneJLb
+URL:https://devfesttoulouse.fr/sessions/_votre_api_web_passe_t_elle_le_cont
+ role_technique__
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Avec les annonces de l'arrivée de la réalité augmentée (ou RA)
+ dans Google Maps et Google Search sur Android lors de Google IO 2019\, nou
+ s constatons que la RA va prendre une place de plus en plus importante dans
+ notre quotidien. La sortie d'ARCore en mars 2018 sur Android a simplifié l
+ e développement d’application en RA sur Android.\n\nAu cours de cette sessi
+ on\, nous vous proposons de découvrir ARCore\, via l’utilisation dans un na
+ vigateur\, des applications natives ou des moteurs 3D comme Unity ainsi que
+ les CloudAnchors qui permettent la persistance et le partage de positions
+ d’objets dans les scènes de réalité augmentée\, y compris avec des utilisat
+ eurs d’iOS.\n\nAprès une initiations aux concepts liés à la RA (meshes\, 6
+ DoF\,...)\, nous présenterons les différentes fonctionnalités d’ARCore. Nou
+ s discuterons aussi des différentes approches d’utilisation\, de leurs limi
+ tations et avantages au travers d'une application de cartographie 3D en réa
+ lité augmentée.
+DTSTART:20191003T120000
+DURATION:PT40M
+LOCATION:Grand amphi.
+SUMMARY:A la découverte de la réalité augmentée avec ARCore
+UID:qXAvodXoMK3db8ZLcVwb
+URL:https://devfesttoulouse.fr/sessions/a_la_decouverte_de_la_realite_augme
+ ntee_avec_arcore
+TRANSP:TRANSPARENT
+CATEGORIES:native_mobile_apps
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Qui ne s’est jamais fait manipulé ? Évidemment\, on est tous al
+ lé à une soirée alors qu’on en avait pas envie\, on a tous acheté un truc s
+ ans en avoir besoin et on a tous été influencé par ses proches. \n\nL’idée
+ de cette présentation est de vous ouvrir les yeux sur les relations et les
+ influences entre les gens. Je vous exposerai les mécanismes de prise de déc
+ ision au travers de 3 techniques simples de manipulation.\n\nA la sortie de
+ ce talk\, vous devriez être moins influençable et maître de vos décisions
+ (voir même manipuler les autres).
+DTSTART:20191003T125000
+DURATION:PT15M
+LOCATION:Grand amphi.
+SUMMARY:3 techniques faciles de manipulation
+UID:zVUXQkHQtSiGJeIwVd05
+URL:https://devfesttoulouse.fr/sessions/3_techniques_faciles_de_manipulatio
+ n
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Le code barre est une invention qui a radicalement modifié nos
+ sociétés. Sans elle\, pas d'inventaire efficace\, de supermarchés ou de ven
+ te en ligne.\n\nMais comment coder les chiffres de façon fiable avec des pe
+ tites barres noires et blanches ? Quand les contraintes matérielles empêche
+ nt d'utiliser le binaire\, l'ingéniosité et un peu de chance ont permis de
+ créer ce produit\, maintenant présent partout.\n\n\nNous découvrirons les d
+ étails de ce codage\, et comment il pourrait même contenir davantage d'info
+ rmations.
+DTSTART:20191003T140500
+DURATION:PT15M
+LOCATION:Grand amphi.
+SUMMARY:10 est une puissance de 2
+UID:jABRUDzqext8Rx8CmA4j
+URL:https://devfesttoulouse.fr/sessions/10_est_une_puissance_de_2
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Vous aimez VS Code car il est simple\, intuitif et qu'il fait c
+ e que vous lui demandez. \nMais saviez-vous que vous pouviez coder à plus
+ ieurs dans VS Code? et même permettre à une personne tierce de jouer avec v
+ otre débugger depuis l'autre bout du monde? Saviez-vous que vous pouviez av
+ oir un client slack dans VS Code\, et même un chat audio? \nEt avez-vous e
+ xploré toutes les possibilités que VS Code offre quand vous utilisez github
+ ? \nNous verrons dans ce talk tout ce qui fait de VS Code l'éditeur de cod
+ e parfait pour faire du code collaboratif.
+DTSTART:20191003T143000
+DURATION:PT40M
+LOCATION:Grand amphi.
+SUMMARY:Allo Paris\, ici San Francisco. Et si on codait ensemble avec VS Co
+ de?
+UID:Cej88MtlRVZrJRK0FJ2p
+URL:https://devfesttoulouse.fr/sessions/allo_paris__ici_san_francisco__et_s
+ i_on_codait_ensemble_avec_vs_code_
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:When you start a brand new app or service\, you need to think a
+ bout how you will manage authentication and permissions. But if you are lik
+ e everyone else\, you genuinely do not want to actually think about this. I
+ f someone else could do that for you\, life would be great. And this has ac
+ tually happened\, you have the choice between several boilerplate projects
+ or authentication/authorization libraries. In fact\, you have a lot of opti
+ ons. Which one to choose? Let's have a closer look to them!\n\nAt the end o
+ f this talk\, you will have a good overview of the common existing solution
+ s and their benefits.
+DTSTART:20191003T153000
+DURATION:PT40M
+LOCATION:Grand amphi.
+SUMMARY:Authentication/Authorization Starters Battle
+UID:6E03tbU6L5w0IyjMi7yF
+URL:https://devfesttoulouse.fr/sessions/authentication_authorization_starte
+ rs_battle
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Dans un monde de saveurs complexes et sofistiquées\, la guerre
+ du toping fait rage chez les crèmes glacées du Web ! Face au champs de bata
+ il\, les pronostiques vont bon train pour savoir qui l’emportera entre le c
+ runchy Angulaire\, le fondant Reactifs et le décoratif Vue.\n\nDurant ce te
+ mps\, loin de ces vicissitudes\, la petite saveur basique vanille fait son
+ bonhomme de chemin. S’agirait-il du héro de la légende\, succeptible de ren
+ verser le destin de ce monde sans heurts ?\n\nSache\, voyageur\, qu’elle es
+ t déjà passée par nos contrées. Laisse moi te raconter comment elle nous a
+ permis de renverser notre vieux roi\, et tu saura enfin ce qui se prépare p
+ our ton royaume.
+DTSTART:20191003T163000
+DURATION:PT40M
+LOCATION:Grand amphi.
+SUMMARY:Brace yourself\, 🍦Vanilla is coming … back 🕶!
+UID:rJDTMZMYX57DCKYhW09c
+URL:https://devfesttoulouse.fr/sessions/brace_yourself__vanilla_is_coming__
+ back__
+TRANSP:TRANSPARENT
+CATEGORIES:web
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Programmer le noyau d'un système d'exploitation est un très bon
+ moyen pour en comprendre le fonctionnement et le scope de son travail (IO\
+ , gestion de la mémoire\, etc).\nCette présentation a pour but de présenter
+ et de développer les composants élémentaires d'un micro noyau UNIX.\n\nDan
+ s ce talk je présenterai:\n- L'émulateur QEMU\n- La réalisation d'un secteu
+ r de boot avec une micro console\n- Comment gérer les interruptions hardwar
+ e (clavier) et software\n- La gestion des appels systèmes\n- Un système mul
+ ti-process simple qui va permettre de découvrir le surcoût des changements
+ de contexte liés à la programmation concurrentielle
+DTSTART:20191003T173000
+DURATION:PT40M
+LOCATION:Grand amphi.
+SUMMARY:Comprendre le rôle du noyau d'un système d'exploitation en créant u
+ n from scratch
+UID:tOexEcqeKEztPbNmR4JT
+URL:https://devfesttoulouse.fr/sessions/comprendre_le_role_du_noyau_d_un_sy
+ steme_d_exploitation_en_creant_un_from_scratch
+TRANSP:TRANSPARENT
+CATEGORIES:cloud___infra
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Les microservices\, la scalabilité instantanée et les plates-fo
+ rmes à haute densité comme Kubernetes nécessitent des applications à faible
+ empreinte mémoire et démarrage rapide. Java n'était pas bien positionné ca
+ r il favorise les temps de traitement aux dépens du CPU et de la RAM.\n\nPl
+ us maintenant.\n\nEntre en scène Quarkus\, une stack Java orientée microser
+ vices qui supporte vos composants favoris (Hibernate\, Vert.x\, Camel\, RES
+ TEasy ...) sur GraalVM et HotSpot avec une faible empreinte mémoire et un d
+ émarrage rapide. Tout ce qu'il faut pour tirer pleinement parti des contain
+ ers.\n\nLa gestion de la donnée est souvent l'aspect le plus complexe : déc
+ ouvrons comment Quarkus gère la persistance avec Hibernate ORM. Venez explo
+ rer le live reload\, notre vision de la persistance avec Hibernate Panache\
+ , l'indexation full text avec Hibernate Search\, l'environnement de test\,
+ la compilation native GraalVM et bien plus. Quarkus se vit plus qu'il ne se
+ verbalise\, attendez-vous à une démo détaillée.
+DTSTART:20191003T100000
+DURATION:PT40M
+LOCATION:Grande salle
+SUMMARY:De Java à un exécutable natif : GraalVM et Quarkus changent la donn
+ e
+UID:Qy836EfpA0wC4M6jYcTk
+URL:https://devfesttoulouse.fr/sessions/de_java_a_un_executable_natif___gra
+ alvm_et_quarkus_changent_la_donne
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:DevOps is everywhere\, and every new or existing project is at
+ least considering to follow its principles. While implementing DevOps for s
+ ingle projects become more and more straightforward\, it's still a challeng
+ e to have a coherent DevOps approach at Enterprise level.\n\nLet's dig in w
+ hat it takes to achieve DevOps in large companies\, with Airbus as an examp
+ le.
+DTSTART:20191003T110000
+DURATION:PT40M
+LOCATION:Grande salle
+SUMMARY:DevOps at scale
+UID:aOHds477R7FiM3cnWAXp
+URL:https://devfesttoulouse.fr/sessions/devops_at_scale
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:How a developer can tell if the system is sick just by taking a
+ look at the input and the output? If you'd like to know that (plus you lik
+ e standup comedy)\, come an see! The treatment is safe \;-)\n\nOne approach
+ to get familiar with a system is a long and intense reading the manual (an
+ d to run an eye over the source code sometimes). Another approach is to tak
+ e a deep dive into the data model (often in the DB) and to surf the user in
+ terface. Both are natural ends of the system\, the legendary Input and Outp
+ ut. By examining these ends one can check if there's good digestion or if g
+ uts are rotten. Careful examination can confirm "common DDDosis"\, "maligna
+ nt stringosis"\, "regex diarrhoea" or "not-made-here syndrome".\nUnfortunat
+ ely\, sometimes developers get infected in their prenatal life (meaning: at
+ their university). Let me invite you to treatment. A laxative one. (That i
+ s: a sequel of "Passwords. Do you keep them safe?")
+DTSTART:20191003T120000
+DURATION:PT40M
+LOCATION:Grande salle
+SUMMARY:Four Diseases
+UID:PmoMEVHO3imfUIMXsPai
+URL:https://devfesttoulouse.fr/sessions/four_diseases
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Quel est le point commun entre un jeu de sudoku\, la planificat
+ ion d'une conférence et les déplacements d'un commercial ?\n\nQuand on souh
+ aite les traiter automatiquement\, tous ces problèmes peuvent être résolus
+ par un solveur de contraintes. Dans ce talk\, je vais essayer de vous faire
+ une introduction pratique à la programmation par contraintes\, en présenta
+ nt les concepts de base\, puis en les mettant en application avec plusieurs
+ exemples de problèmes connus de tout le monde (ou presque)\, pour finir pa
+ r un cas plus complexe sur lequel je travaille actuellement.
+DTSTART:20191003T143000
+DURATION:PT40M
+LOCATION:Grande salle
+SUMMARY:Introduction à la programmation par contraintes
+UID:iU4EzEThVDvpaHDsGjOO
+URL:https://devfesttoulouse.fr/sessions/introduction_a_la_programmation_par
+ _contraintes
+TRANSP:TRANSPARENT
+CATEGORIES:big_data___ml___ai
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:L’âgisme dans les fonctions IT\, et en particulier dans le Déve
+ loppement Soft\, est incontournable.\n\nLes « vieux » n’ont décidément pas
+ la cote\, le marché de l'emploi des softeux cinquantenaires en est la preuv
+ e !\nPourtant\, codage et sénioritude semblent loin d'être incompatibles.\n
+ \n- Alors quels préjugés peuvent en être la cause ?\n- L’avance rapide de l
+ a technologie numérique est-elle incompatible avec le ralentissement biolog
+ ique ?\n- Les cheveux gris sont-ils un Handicap pour la Sécurité de l’Info
+ ?\n- Le Cloud doit-il être « Arthrose-free » ?\n\nEt surtout\, comment se f
+ ait-il qu’à 47 ans je vienne d’intégrer l’équipe Devops & Tools de Continen
+ tal Digital Services et que personne ne m’ait encore rien dit ?
+DTSTART:20191003T125000
+DURATION:PT15M
+LOCATION:Grande salle
+SUMMARY:« 47 ans : ils n’ont toujours pas remarqué … »
+UID:pY6MCQBMfIYlIKfHdhL4
+URL:https://devfesttoulouse.fr/sessions/_47_ans___ils_nont_toujours_pas_rem
+ arque__
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Avec mon épouse nous avons commencer à donner de l'argent de po
+ che à nos enfants.\n\n![Calvin et l'argent de poche](https://i.pinimg.com/o
+ riginals/ad/47/94/ad47940ca35ce4bd5122a916abf9f589.png)\n\nPour qu'ils puis
+ sent faire comme les grands (et parce que c'est fun aussi :D) j'ai conçu un
+ DAAP (**D**istributeur **A**utomatique d'**A**rgent de **P**oche) qui leur
+ permet\, le jour de la distribution de l'argent de poche\, d'insérer leur
+ "carte bleue"\, saisir leur code et de voir la machine s'ébranler pour dis
+ tribuer les pièces.\n\nDans ce talk on parlera d'Arduino\, d'impression 3D\
+ , de carte à puce\, d'électronique et des problèmes que j'ai rencontré et c
+ omment j'ai pu les résoudre.
+DTSTART:20191003T140500
+DURATION:PT15M
+LOCATION:Grande salle
+SUMMARY:Un distributeur automatique d'argent de poche pour les enfants
+UID:ZmSIPnuidcxjKLVfEKM8
+URL:https://devfesttoulouse.fr/sessions/un_distributeur_automatique_d_argen
+ t_de_poche_pour_les_enfants
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:## Résumé\nEn Novembre 2017\, j'ai découvert "une backdoor" dan
+ s tout les téléphones de la marque Oneplus. A l'aide d'une simple ligne de
+ commande\, un attaquant ayant un accès physique au téléphone\, pouvait deve
+ nir root et ainsi obtenir un contrôle total du téléphone de la victime.\n\n
+ ## Détails\nDans ce talk\, j'expliquerai le processus qui m'a permit de fai
+ re cette découverte:\n1. Extraction du build\n2. Récupération des applicati
+ ons dites "systèmes"\n3. Détection de la vulnérabilité dans l'application A
+ ndroid "EngineeringMode"\n4. Exploitation de la vulnérabilité\n\n## Sujet a
+ bordés\nLors de la détection et l'analyse de cette faille nous aborderons l
+ a philosophie du **hacking**\, comment faire du **reverse engineering** sur
+ des applications **Android** et une **librairie native**. Nous analyserons
+ du **Java** ainsi que du **C** \n\n## Categorie\nNative mobile apps\n\n##
+ Format\nUne conférence de 40 min
+DTSTART:20191003T153000
+DURATION:PT40M
+LOCATION:Grande salle
+SUMMARY:L'histoire de la découverte d'une backdoor signé Oneplus
+UID:Kwery1cbJrx3ZFj6x1JU
+URL:https://devfesttoulouse.fr/sessions/l_histoire_de_la_decouverte_d_une_b
+ ackdoor_signe_oneplus
+TRANSP:TRANSPARENT
+CATEGORIES:native_mobile_apps
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:En 2019 le monde de l’informatique n’a que l’agilité à la bouch
+ e. Ca groome à tous les coins de rue\, ça s’excite en daily\, ça colle des
+ post-it et ça empile les serious game en rétro. Bien sûr ça gère la transfo
+ rmation numérique (désolé\, même au second degré je ne peux pas employer “d
+ igitale”) et au final plus personne ne comprend rien. \n\nDes chefs de proj
+ et subitement propulsés ScrumMaster qui ne savent pas ce qu’ils doivent fai
+ re. Des PO qui découvrent la priorisation. Des développeurs qui doivent com
+ poser avec des specs floues et changeantes sans vision globale du projet. P
+ our compléter le tableau\, la subite apparition de coachs agile à peine sor
+ ti de l’école qui n’ont jamais vu un projet de leur vie et qui viennent exp
+ liquer des concepts qu’ils ne maîtrisent qu’à moitié.\n\nEn 2019 le monde d
+ e l’informatique rêve secrètement de cycles en V\, de stabilité\, de spécif
+ ications générales et de dossier d’architecture.\n\nEn 2019 le monde de l’i
+ nformatique est au bord du burn-out agile.\n\n## Plan du talk \n\n- Petit
+ historique : l’évolution des pratiques sur les 20 dernières années \n- Pour
+ quoi ce bordel agile ? \n- Finalement l’agilité c’est quoi ? \n- Est-ce qu’
+ il faut revenir au cycle en V ?
+DTSTART:20191003T163000
+DURATION:PT40M
+LOCATION:Grande salle
+SUMMARY:Le burn-out agile
+UID:KAH9Lyx0b2TKNSQVZNw2
+URL:https://devfesttoulouse.fr/sessions/le_burn_out_agile
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Nos systèmes sont designés de manière optimiste\, de la gestion
+ technique des erreurs à la modélisation de nos interfaces. \nQue ce soit
+ les codes d'erreurs\, les exceptions ou les modélisations plus avancées\, e
+ lles servent pour arrêter un traitement et _potentiellement_ afficher un me
+ ssage d'information à un utilisateur.\n\nMais avec les architectures micros
+ ervices\, la distribution des traitements ou une simple volonté de résilien
+ ce\, la gestion des erreurs est devenue un enjeu important de tous les syst
+ èmes afin qu’ils restent accessibles de tous\, tout le temps tout en mainte
+ nant le système dans un état cohérent.\n\nQue fait-on lorsqu’une erreur int
+ ervient ? Peut-on compenser voire gérer l’erreur depuis le système pour l’u
+ tilisateur ?\n\nLa réponse a ces questions se trouvent autant dans la défin
+ ition du produit que dans le choix technique.\nUn outil bien conçu est un o
+ util intelligent qui peut faire les bons choix au bon moment pour l'utilisa
+ teur. Et si on apprenait ensemble à concevoir nos erreurs ?
+DTSTART:20191003T173000
+DURATION:PT40M
+LOCATION:Grande salle
+SUMMARY:Le design de l'erreur
+UID:pAMZmFT2wrfqPr9IdeXv
+URL:https://devfesttoulouse.fr/sessions/le_design_de_l_erreur
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Sans nécessiter de formation musicale pointue\, tout développeu
+ r peut créer des morceaux qui sonnent bien et faire du "live coding" pour i
+ mproviser en direct.\n\nAprès un rapide tour d'horizon des environnements d
+ e codage musical comme Sonic-Pi en Ruby ou FoxDot en Python\, on codera/com
+ posera en live un morceau de musique électro avec comme seul outil un navig
+ ateur web\, les API WebAudio et WebMIDI et la librairie Tone.js.\n\nQuelque
+ s samples bien choisis\, une pincée de séquences harmonieuses\, une bonne d
+ ose d'aléatoire encadré\, et hop\, tout le monde se mettra à danser ! Et pu
+ isque la musique c'est aussi des maths\, on parlera de musique générative a
+ vec des chaînes de Markov et des L-Systems.\n\nDavid Guetta n'a qu'à bien s
+ e tenir !
+DTSTART:20191003T100000
+DURATION:PT40M
+LOCATION:Salle du haut
+SUMMARY:Live coding musical : vous savez coder ? Devenez compositeur avec W
+ ebAudio et WebMIDI !
+UID:WwHpapkCgEg5IMW5vTId
+URL:https://devfesttoulouse.fr/sessions/live_coding_musical___vous_savez_co
+ der___devenez_compositeur_avec_webaudio_et_webmidi__
+TRANSP:TRANSPARENT
+CATEGORIES:web
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:If the new React Context API and Suspense killed Redux (they di
+ dn't)\, surely Hooks kill the need for a form library\, right? Well\, not e
+ xactly. Managing form state is more than just holding your current values i
+ n state\; it's about sync and async validition errors\, and much more! But
+ that doesn't mean that Hooks are irrelevant to the situation. Hooks make bu
+ ilding forms in React easier than ever before.
+DTSTART:20191003T110000
+DURATION:PT40M
+LOCATION:Salle du haut
+SUMMARY:Modern Forms in React
+UID:McfMVcKDdZv68NSo2JIJ
+URL:https://devfesttoulouse.fr/sessions/modern_forms_in_react
+TRANSP:TRANSPARENT
+CATEGORIES:web
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Depuis les années 70 tous les constructeurs autos intégrent des
+ calculateurs électroniques.\nLes moteurs des voitures modernes sont des sy
+ stèmes informatiques complexes qui s'appuient sur des dizaines de capteurs.
+ .. et du code. \nComment ça fonctionne ? A quoi ressemble ce code et que fa
+ it-il ?\nQu'est-ce qu'il se passe lorsqu'on fait une "reprog" ? \nQu'est-ce
+ que signifie le voyant moteur allumé ? Comment débugger tout ça ?\nSoulevo
+ ns le capot (électronique)\, analysons le matériel mis en oeuvre mais surto
+ ut le logiciel grâce aux sources des calculateurs "Megasquirt" et allons ex
+ plorer la face cachée numérique de nos voitures.
+DTSTART:20191003T120000
+DURATION:PT40M
+LOCATION:Salle du haut
+SUMMARY:Mon p*** de voyant moteur est encore allumé ! Comment debugger mon
+ moteur ? Plongeon dans les entrailles des calculateurs moteur
+UID:fW4yvmVxjXb57vQJhIXu
+URL:https://devfesttoulouse.fr/sessions/mon_p____de_voyant_moteur_est_encor
+ e_allume___comment_debugger_mon_moteur___plongeon_dans_les_entrailles_des_c
+ alculateurs_moteur
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Comment faire quand on doit faire le suivi de toute l'infrastru
+ cture du plus grand fournisseur de cloud Européen ? Comment choisir un out
+ il quand les plus populaires ne tient pas la marée à cette échèle ? Commen
+ t construire une plateforme Metrics pour unifier\, concilier et remplacer d
+ es années de legacy fragmenté et des solutions partielles ?\n\nDans ce talk
+ nous racontons notre expérience sur la construction et la maintenance d'OV
+ H Metrics\, la plateforme utilisée pour monitorer toute l'infrastructure OV
+ H. Nous avions besoin d'aller à des endroits ou la plupart de solutions de
+ monitoring ne sont jamais allées\, opérer à l'échelle du plus grand fournis
+ seur Européen de cloud et hosting : 27 data centers\, plus de 300k serveurs
+ (physiques !) et des centaines de produits pour accomplir notre mission av
+ ec nos 1\,3 millions de clients.\n\nVenez pour entendre cette histoire de s
+ éries temporelles\, de solutions open-sources poussées à l'extreme\, de clu
+ sters HBase opérés en limite de capacité\, et de comment une petite équipe
+ s'est appuyé sur une poignée de solutions open-source et une bonne dose d
+ e code maison pour construire une des solutions de monitoring les plus perf
+ ormantes au monde.
+DTSTART:20191003T143000
+DURATION:PT40M
+LOCATION:Salle du haut
+SUMMARY:Monitoring OVH: 300k serveurs\, 27 DCs une plateforme de métriques
+UID:xwAvvIJJfDdBD7N4oGa5
+URL:https://devfesttoulouse.fr/sessions/monitoring_ovh__300k_serveurs__27_d
+ cs_une_plateforme_de_metriques
+TRANSP:TRANSPARENT
+CATEGORIES:big_data___ml___ai
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Brainfuck est probablement le plus connu des langages de progra
+ mmation ésotériques. Ses 8 instructions en font un langage Turing-complet a
+ vec lequel il est théoriquement possible d’écrire n’importe quel programme.
+ \n\nEt en pratique ? Après une explication du langage (avec 8 instructions
+ c’est rapide !) on verra comment j’ai utilisé Brainfuck pour les qualificat
+ ions au concours d’informatique Prologin\, sur un problème de parcours de g
+ raphes !
+DTSTART:20191003T125000
+DURATION:PT15M
+LOCATION:Salle du haut
+SUMMARY:Applications de Brainfuck\, langage minimaliste mais Turing-complet
+UID:oiZTE4THbAJeaNVlLc03
+URL:https://devfesttoulouse.fr/sessions/applications_de_brainfuck__langage_
+ minimaliste_mais_turing_complet
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Ces dernières années\, les "fabriques de dev" et autres formati
+ ons courtes explosent. C'est un fait\, tout dev a été ou sera amené à trava
+ iller avec l'un de ces jeunes développeurs.euses. Mais qui sont-ils ? Pourq
+ uoi une reconversion dans ce genre de d'organisation ? Qu'ont-ils appris lo
+ rs de leurs formation express ? C'est fiable ce genre de dev ? Comment puis
+ -je les intégrer au mieux dans ma structure ?\n\nAutant de questions que vo
+ us vous êtes sans doute déjà posées. Pendant ces 15 minutes\, je vous prése
+ nterai mon retour d'expérience en tant que développeuse provenant de l'une
+ de ces écoles de dev et maintenant développeuse Javascript depuis 2 ans au
+ sein d'une startup Toulousaine.
+DTSTART:20191003T140500
+DURATION:PT15M
+LOCATION:Salle du haut
+SUMMARY:Développeurs en reconversion\, développeurs quand même !
+UID:adcMAUSbsAK27dQJA4Iw
+URL:https://devfesttoulouse.fr/sessions/developpeurs_en_reconversion__devel
+ oppeurs_quand_meme__
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:De nombreux services en ligne existent pour gérer en toute sécu
+ rité des appareils IoT à grande échelle : "Azure IoT" de Microsoft et "AWS
+ IoT" d'Amazon sont parmi les plus connus.\n\nGoogle propose également sa so
+ lution : "Cloud IoT" basée sur la plate-forme Google Cloud (GCP).\nDans ce
+ talk\, nous partirons d'un microcontrôleur neuf ultra connu et abordable\,
+ et notre but sera tout d'abord de découvrir comment écrire du code pour ce
+ composant nous permettant de récupérer des informations sur notre environne
+ ment.\nEnsuite\, nous ferons en sorte que ce composant envoie ses données v
+ ers un service Cloud\, pour enfin découvrir ce que permettent ces solutions
+ en ligne dédiées à l'IoT.\n\nPour l'exemple\, et parce qu'il faut bien cho
+ isir une solution\, nous utiliserons Google Cloud IoT Core\, les concepts r
+ estant similaires sur les autres plate-formes.
+DTSTART:20191003T153000
+DURATION:PT40M
+LOCATION:Salle du haut
+SUMMARY:Premiers pas avec un microcontrôleur et Google Cloud IoT Core
+UID:R9O1S7M9oRMmwd0cNBaz
+URL:https://devfesttoulouse.fr/sessions/premiers_pas_avec_un_microcontroleu
+ r_et_google_cloud_iot_core
+TRANSP:TRANSPARENT
+CATEGORIES:iot
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Un chatbot créé par Microsoft qui dérive avec des propos antisé
+ mites\, Amazon qui scanne des CVs et finit par ne recruter que des hommes b
+ lancs\, des algorithmes de reconnaissance faciale qui ont du mal avec les p
+ ersonnes de couleur noire\, ... Que d'exemples où l'IA a intégré nos propre
+ s biais sociétaux. Il est urgent que nous\, développeurs\, prenions nos res
+ ponsabilités et mesurons les enjeux éthiques de l'IA pour éviter que les st
+ éréotypes\, les inégalités et les préjugés se retrouvent au cœur de nos fut
+ urs systèmes.\n\nCette présentation propose des root cause analysis sur des
+ exemples concrets de ces biais et présente des alternatives qui auraient p
+ ermis d'éviter ces biais en "production" autant d'un point de vue humain qu
+ e technique.\n\nNous verrons notamment que l’éthique peut directement être
+ abordée au niveau des données et de leur préparation à l’apprentissage. Nou
+ s nous concentrerons principalement sur l’impact des statistiques des donné
+ es d’entraînement et les transformations à appliquer en pré-processing (mét
+ riques de fairness\, améliorer la fairness sur des données annotées)\, et n
+ ous montrerons comment des benchmarks permettent d'appréhender l’impact des
+ méthodes de fairness sur la précision des modèles entraînés.\n\nLa confian
+ ce et l’équité passe avant tout par une compréhension de la prise de décisi
+ on par l’utilisateur. Par conséquent\, nous présenterons diverses méthodes
+ pour expliquer la prise de décision d’un modèle boîte noire (principalement
+ des algorithmes de deep learning) et mettons en garde contre une mauvaise
+ interprétation de ces explications.
+DTSTART:20191003T163000
+DURATION:PT40M
+LOCATION:Salle du haut
+SUMMARY:Quand les ratés des IAs nous renvoient à nos propres biais sociétau
+ x
+UID:ZsAGxn6UZi1hfzz2bwR7
+URL:https://devfesttoulouse.fr/sessions/quand_les_rates_des_ias_nous_renvoi
+ ent_a_nos_propres_biais_societaux
+TRANSP:TRANSPARENT
+CATEGORIES:big_data___ml___ai
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:_« Make it work\, make it right\, make it fast »_ - Kent Beck\n
+ \nNous connaissons tous cette citation. Pourtant nous sommes dès fois trop
+ souvent restés bloqué à l’étape 1 par manque de temps ou de priorisation.\n
+ \nL’accueil d’un nouveau développeur·euse dans une équipe est un des meille
+ urs moments pour vérifier qu’une base de code est « saine et scalable ».\n\
+ nNous vous proposons dans ce talk un retour d’expérience sur quelques année
+ s de consulting sur des projets Angular au travers de cas concrets :\n- que
+ lles sont les mauvaises pratiques à éviter ?\n- quels sont les choix orient
+ és et assumés d’Angular pour vous éviter tout ça ?\n- quelque soit la taill
+ e de votre équipe\, l’expérience de vos collègues\, quels sont les princip
+ es d’architecture à adopter pour améliorer tout ça ?
+DTSTART:20191003T173000
+DURATION:PT40M
+LOCATION:Salle du haut
+SUMMARY:Rockin’ in the Angular World
+UID:niiUNFAFhYnPBiOrcDVf
+URL:https://devfesttoulouse.fr/sessions/rockin_in_the_angular_world
+TRANSP:TRANSPARENT
+CATEGORIES:web
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:A lot of things have been said about WebAssembly inside of the\
+ nbrowser\; after all\, that's why it was originally created. But a new\ncas
+ e is emerging as well\, and that's WebAssembly on the server. More\nspecifi
+ cally\, we're seeing a rise of support for WebAssembly in\nserverless appli
+ cation platforms\, combining two brand-new technologies\ntogether. We're al
+ so seeing a lot of growth of the Rust programming\nlanguage\, and its close
+ alignment with WebAssembly. In this talk\,\nSteve will talk about Rust\, W
+ ebAssembly\, serverless technologies\, and\nhow it all fits together.
+DTSTART:20191003T100000
+DURATION:PT40M
+LOCATION:Petite salle
+SUMMARY:Rust\, WebAssembly\, and the future of Serverless
+UID:2S9XtGGq3ouHnkivEDKC
+URL:https://devfesttoulouse.fr/sessions/rust__webassembly__and_the_future_o
+ f_serverless
+TRANSP:TRANSPARENT
+CATEGORIES:cloud___infra
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:The singe most important feature of Rust is memory safety. Writ
+ ing code with performance of C++\, at a typical development cost\, and with
+ guaranteed absence of certain classes of memory safety related vulnerabili
+ ties is something that was not possible before. \n\nHowever\, all popular m
+ anaged languages with garbage collection take memory safety for granted\, s
+ o this aspect of Rust doesn't bring anything new to the table\, if you alre
+ ady use Java or Go. Nevertheless\, Rust can be an interesting choice as a h
+ igh-level language\, and this talks explains way. \n\nThe focus of the tal
+ k is fearless concurrency. Data races are a pervasive and unsolved problem
+ in languages like Java and Rust's guaranteed thread safety is a liberating
+ experience for application development. We also touch on some other benefit
+ s of the language for high-level tasks:\n\n* predictable performance due to
+ absence of garbage collection\n* control over the memory layout of objec
+ ts\, which gives you extra performance if you need it\n* module (crate) sy
+ stem that\, at the language level\, prevents dependency hell\n* additional
+ correctness guarantees\, like the absence of iterator validation or strict
+ control of error conditions
+DTSTART:20191003T110000
+DURATION:PT40M
+LOCATION:Petite salle
+SUMMARY:Rust as a High-Level Langage
+UID:PjQDGsFIQoo1By4Ogv3q
+URL:https://devfesttoulouse.fr/sessions/rust_as_a_high_level_langage
+TRANSP:TRANSPARENT
+CATEGORIES:languages
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:It's a common idea: Dynamic typing gives you freedom to do what
+ ever you want\, but then you suffer mistakes and runtime errors. Static typ
+ ing limits your freedom\, but it leads to fewer bugs\, even if it's harder
+ to actually write code.\n\nThis isn't entirely false. Yes\, it can be quite
+ hard to write a Rust or Haskell program that compiles\, enough that it's a
+ running gag in their communities. "But once you get it to compile\, it's p
+ robably correct!"\, the joke goes. On the other hand\, when writing Ruby or
+ Javascript\, you're free to call functions with all sorts of things\, and
+ then runtime errors can easily slip into production. That said\, it's not a
+ s simple as a sliding scale between "freedom" and "safety". Neither of thes
+ e terms is one-dimensional -- a language feature that restricts your freedo
+ m in one way can actually free you in different ways.\n\nI'd like to demons
+ trate some interesting language features in Rust that make it easier to wri
+ te code and to express concepts compared to dynamic languages. Features tha
+ t don't just protect you from shooting your foot\, but give you power that'
+ s only available within the rules and "limitations" of a statically typed l
+ anguage. Even if you're not familiar with Rust\, I hope to focus the exampl
+ es on the features themselves rather than on the specifics of the language\
+ , so come by and let's talk about being (type-safely) free.
+DTSTART:20191003T120000
+DURATION:PT40M
+LOCATION:Petite salle
+SUMMARY:The Freedom of Static Typing
+UID:RhWn82dKmICiQulwcVJF
+URL:https://devfesttoulouse.fr/sessions/the_freedom_of_static_typing
+TRANSP:TRANSPARENT
+CATEGORIES:languages
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Il y a 20 ans\, personne de **sobre** n’aurait utilisé Javascri
+ pt pour autre chose que des étoiles filantes qui sortent de ta souris. Non\
+ , à l'époque\, on préférait les serveurs d'application en Java! \nAujourd’
+ hui\, non seulement on a des frameworks front\, mais il y a même des hipste
+ rs qui font du backend avec... Et depuis\, on fait des APIs. \n**Comment e
+ n est-on arrivé là?** \nC’est ça inspecteur. C’est ça la bonne question.\n
+ \nSi tu ne les as pas vécus\, viens découvrir l'arrivée du Web\, l'histoire
+ de Netscape\, la browser-war\, la naissance du serveur d'application\, les
+ débuts du web dynamique et la prise d'assaut du JS.\n\nSit back\, relax\,
+ and Enjoy!
+DTSTART:20191003T143000
+DURATION:PT40M
+LOCATION:Petite salle
+SUMMARY:The rise of the web
+UID:0MXH99V8NY9xyeurYCmA
+URL:https://devfesttoulouse.fr/sessions/the_rise_of_the_web
+TRANSP:TRANSPARENT
+CATEGORIES:web
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Jean-Yves Girard\, le génial inventeur des indispensables [mont
+ res à moutarde](http://girard.perso.math.cnrs.fr/moutarde.pdf) (1990)\, est
+ certes un joyeux trublion.\n\nMais avant d'en arriver à ce sommet indépass
+ able\, il a tout même publié deux-trois petites choses en chemin:\n\n- Rust
+ \, vous connaissez? L'idée première du système de typage de Rust est la log
+ ique dite "[linéaire](http://girard.perso.math.cnrs.fr/linear.pdf)"\, due à
+ Jean-Yves Girard (1987).\n- Haskell\, ça vous dit quelque chose? Les systè
+ mes de typage de Haskell mais aussi Scala (et d'une certaine manière Java)
+ sont basés sur le "[système F](https://en.wikipedia.org/wiki/System_F)" (ou
+ lambda-calcul de second ordre)\, dû à... Jean-Yves Girard (1972).\n- Idris
+ \, vous avez entendu parler? Le système de typage d'Idris est basé sur la t
+ héorie des types de Per Martin-Löf\, dont la première version a été prouvée
+ incorrecte par... Jean-Yves Girard\, qui depuis possède un [paradoxe](http
+ s://en.wikipedia.org/wiki/System_U#Girard's_paradox) à son nom. (Girard et
+ Martin-Löf sont par ailleurs de très bons potes et ont ferraillé sec contre
+ les logiciens classiques dans leur prime jeunesse.)\n\nTrès méconnu mais p
+ robalement l'un des penseurs les plus influents pour l'informatique de ce d
+ ébut de XXIe siècle\, Girard est tout aussi sérieux que fantasque. Son styl
+ e toujours acéré et polémique s'appuie sur une vision très claire de ce que
+ devrait être la logique: vivante\, joyeuse\, fertile.\n\nDans cette courte
+ présentation\, on s'attachera à comprendre pourquoi Girard est aussi virul
+ ent dans son discours\, quels sont les objectifs de sa pensée\, et pourquoi
+ elle a déjà porté tant de fruits dans le monde de l'informatique. \n\n----
+ \n\nDans le cas d'un créneau à 40min\, on pourrait donner quelques pointeur
+ s sur ses travaux plus récents\, et expliciter en quoi ils sont porteurs de
+ nouvelles avancées pour les prochaines décennies (réseaux de démonstration
+ s\, géométrique de l'intéraction\, etc.).
+DTSTART:20191003T125000
+DURATION:PT15M
+LOCATION:Petite salle
+SUMMARY:Le troll dans ta machine --- Une courte introduction à la pensée de
+ Jean-Yves Girard
+UID:hoiS7Cs5sWwXb632pLh2
+URL:https://devfesttoulouse.fr/sessions/le_troll_dans_ta_machine_____une_co
+ urte_introduction_a_la_pensee_de_jean_yves_girard
+TRANSP:TRANSPARENT
+CATEGORIES:wtf
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Dans ce talk je vous montrerai comment expliquer simplement le
+ fonctionnement de l'apprentissage par renforcement. Pour cela pas besoin d'
+ ordinateur : quelques allumettes\, des sacs de cotillons et un peu de pédag
+ ogie sont suffisant pour mettre en évidence les mécanismes intrinsèques de
+ cette technique et pour aborder les enjeux et les limites des algorithmes d
+ '"intelligence artificielle" basés sur l'apprentissage.
+DTSTART:20191003T140500
+DURATION:PT15M
+LOCATION:Petite salle
+SUMMARY:Machine learning avec des allumettes et des cotillons
+UID:cnRUAtQNZybQsQa03lAx
+URL:https://devfesttoulouse.fr/sessions/machine_learning_avec_des_allumette
+ s_et_des_cotillons
+TRANSP:TRANSPARENT
+CATEGORIES:big_data___ml___ai
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Have you heard of the code-sharing feature in Kotlin\, accompan
+ ied with "Write once\, run everywhere" slogan? Among its users not only lib
+ raries and frameworks authors\; there are some projects which have already
+ adopted multiplatform for production. Their applications\, written in Kotli
+ n for *both* iOS and Android\, are published in stores. \nWith this talk\,
+ you'll get a brief overview of the evolution of multiplatform technology in
+ Kotlin\, concerning the tasks it's evolved to solve. How it was and how it
+ is expected to be\; what has changed and which tasks can be already solved
+ with it. What are the facilities right now and which real projects already
+ use multiplatform?
+DTSTART:20191003T153000
+DURATION:PT40M
+LOCATION:Petite salle
+SUMMARY:A Kotlin multiplatform evolution
+UID:a_kotlin_multiplatform_evolution
+URL:https://devfesttoulouse.fr/sessions/a_kotlin_multiplatform_evolution
+TRANSP:TRANSPARENT
+CATEGORIES:languages
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:This talk will give an overview of the WebGPU API that will pro
+ vide modern features such as “GPU compute” on the Web as well as lower over
+ head access to GPU hardware and better\, more predictable performance. This
+ will allow for much more graphically intensive games on the Web and boost
+ performance of frameworks like Tensorflow.js up to 10x.
+DTSTART:20191003T163000
+DURATION:PT40M
+LOCATION:Petite salle
+SUMMARY:WebGPU: Next-generation 3D Graphics on the Web
+UID:5qTyscBWtXLRb04TXEdB
+URL:https://devfesttoulouse.fr/sessions/webgpu__next_generation_3d_graphics
+ _on_the_web
+TRANSP:TRANSPARENT
+CATEGORIES:web
+END:VEVENT
+BEGIN:VEVENT
+DESCRIPTION:Les enfants sont eux-mêmes les bâtisseurs actifs de leurs propr
+ es structures intellectuelles et l'informatique y joue un rôle déterminant\
+ , disait Piaget\, un célèbre biologiste\, psychologue et logicien. Son coll
+ aborateur\, Seymour Papert\, inventera le langage Logo\, langage qui fait q
+ u'aujourd’hui je suis un développeur épanoui.\nQu'en est-il aujourd'hui ? C
+ omment donner le goût du code à nos enfants et surtout pourquoi est-ce impo
+ rtant ?\nAvec Saskia\, Loïs et leur père nous voyagerons à travers le temps
+ \, en partant de la tortue sur ce bon vieux M05 en passant par Scratch\, le
+ Logo hipster de nos jour\, jusqu’à Groovy et Python. \n
+DTSTART:20191003T173000
+DURATION:PT40M
+LOCATION:Petite salle
+SUMMARY:Le jaillissement de l'esprit
+UID:le_jaillissement_de_l_esprit
+URL:https://devfesttoulouse.fr/sessions/le_jaillissement_de_l_esprit
+TRANSP:TRANSPARENT
+CATEGORIES:method___tools
+END:VEVENT
+END:VCALENDAR
\ No newline at end of file
diff --git a/themes/devfest-theme-hugo b/themes/devfest-theme-hugo
index cadaf90..641f66d 160000
--- a/themes/devfest-theme-hugo
+++ b/themes/devfest-theme-hugo
@@ -1 +1 @@
-Subproject commit cadaf90b438cdcc53be5c20dd58132ad284f39b5
+Subproject commit 641f66d2731adacbda7c7b42c53da79a4ceae9ac
diff --git a/tools/minify.js b/tools/minify.js
new file mode 100644
index 0000000..7201299
--- /dev/null
+++ b/tools/minify.js
@@ -0,0 +1,20 @@
+const {readFileSync, writeFileSync} = require('fs');
+const {sync: glob} = require('glob');
+const {minify} = require('html-minifier');
+const {Logger} = require('plop-logger');
+const {colorEmojiConfig} = require('plop-logger/lib/extra/colorEmojiConfig');
+
+Logger.config = colorEmojiConfig;
+const logger = Logger.getLogger('minifier');
+
+glob(`public/**/*.html`)
+ .forEach(file => {
+ const html = readFileSync(file, 'utf8');
+ const minified = minify(html, {});
+ const gain = html.length - minified.length;
+ if (gain > 0) {
+ const percent = (gain / html.length) * 100;
+ logger.info(file, () => ['gain', percent.toFixed(2), '%'].join(" "));
+ writeFileSync(file, minified, {flag: 'w'});
+ }
+ });
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..20ef5e2
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,508 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+camel-case@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+ integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
+chalk@^2.4.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+clean-css@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
+ integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==
+ dependencies:
+ source-map "~0.6.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+commander@^2.19.0, commander@~2.20.0:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+ integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+define-properties@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.4.3:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-keys "^1.0.12"
+
+es-to-primitive@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+function-bind@^1.0.2, function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+glob@^7.1.4:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+graceful-fs@^4.1.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
+ integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+hosted-git-info@^2.1.4:
+ version "2.8.4"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546"
+ integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==
+
+html-minifier@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56"
+ integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==
+ dependencies:
+ camel-case "^3.0.0"
+ clean-css "^4.2.1"
+ commander "^2.19.0"
+ he "^1.2.0"
+ param-case "^2.1.1"
+ relateurl "^0.2.7"
+ uglify-js "^3.5.1"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+lower-case@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
+ integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
+
+memorystream@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
+ integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+no-case@^2.2.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
+ integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
+ dependencies:
+ lower-case "^1.1.1"
+
+normalize-package-data@^2.3.2:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+npm-run-all@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
+ integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ chalk "^2.4.1"
+ cross-spawn "^6.0.5"
+ memorystream "^0.3.1"
+ minimatch "^3.0.4"
+ pidtree "^0.3.0"
+ read-pkg "^3.0.0"
+ shell-quote "^1.6.1"
+ string.prototype.padend "^3.0.0"
+
+object-keys@^1.0.12:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+param-case@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
+ integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
+ dependencies:
+ no-case "^2.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+pidtree@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b"
+ integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+plop-logger@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/plop-logger/-/plop-logger-2.4.0.tgz#b6032529842f1bf0394fc5a6791516e00314a2a8"
+ integrity sha512-fl/VXih1xs3/O718lH9wo+P8hTmFRynh+Y3yPsyYHo2ub2AhuwvqcQkS8dBusK7HnK1uJW6riqONd8GHITivkg==
+ dependencies:
+ ansi-colors "^4.1.1"
+ tslib "^1.10.0"
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+relateurl@^0.2.7:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+ integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
+
+resolve@^1.10.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
+ integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
+ dependencies:
+ path-parse "^1.0.6"
+
+"semver@2 || 3 || 4 || 5", semver@^5.5.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shell-quote@^1.6.1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.1.tgz#3161d969886fb14f9140c65245a5dd19b6f0b06b"
+ integrity sha512-2kUqeAGnMAu6YrTPX4E3LfxacH9gKljzVjlkUeSqY0soGwK4KLl7TURXCem712tkhBCeeaFP9QK4dKn88s3Icg==
+
+source-map@~0.6.0, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+spdx-correct@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+ integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+
+string.prototype.padend@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
+ integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.4.3"
+ function-bind "^1.0.2"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+tslib@^1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+ integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+
+uglify-js@^3.5.1:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
+ integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
+ dependencies:
+ commander "~2.20.0"
+ source-map "~0.6.1"
+
+upper-case@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+ integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=