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=