Igor Laborie 5 years ago
parent fda039cd80
commit 089d417094
  1. 1
      package.json
  2. 4
      test-hugo/content/blog/_index.md
  3. 56
      test-hugo/content/blog/cfp.md
  4. 0
      test-hugo/content/blog/cfp/pauline.jpg
  5. 0
      test-hugo/content/blog/cfp/speakers.jpg
  6. 0
      test-hugo/content/blog/cfp/sylvain.jpg
  7. 0
      test-hugo/content/blog/cfp/tugdual.jpg
  8. 87
      test-hugo/content/blog/cr-cfp.md
  9. 0
      test-hugo/content/blog/cr-cfp/cover.jpg
  10. 0
      test-hugo/content/blog/cr-cfp/graph-theme.png
  11. 0
      test-hugo/content/blog/cr-cfp/nombre-proposition.png
  12. 23
      test-hugo/content/blog/hello-2019.md
  13. 0
      test-hugo/content/blog/hello-2019/baudis.jpg
  14. 0
      test-hugo/content/blog/hello-2019/launch2018.jpg
  15. 18
      test-hugo/content/speakers/alessio_coltellacci.md
  16. 23
      test-hugo/content/speakers/alexandre_delattre.md
  17. 15
      test-hugo/content/speakers/anastasia_lieva.md
  18. 24
      test-hugo/content/speakers/ane_diaz_de_tuesta.md
  19. 18
      test-hugo/content/speakers/arnaud_bos.md
  20. 18
      test-hugo/content/speakers/benoit_el_amrani.md
  21. 18
      test-hugo/content/speakers/benoit_prioux.md
  22. 21
      test-hugo/content/speakers/celine_louvet.md
  23. 24
      test-hugo/content/speakers/comet_nicolas.md
  24. 18
      test-hugo/content/speakers/david_gageot.md
  25. 18
      test-hugo/content/speakers/david_pilato.md
  26. 18
      test-hugo/content/speakers/emmanuel_demey.md
  27. 15
      test-hugo/content/speakers/estelle_landry.md
  28. 14
      test-hugo/content/speakers/fabien_tregan.md
  29. 19
      test-hugo/content/speakers/francois_teychene.md
  30. 18
      test-hugo/content/speakers/frederic_cabestre.md
  31. 21
      test-hugo/content/speakers/giulia_bianchi.md
  32. 15
      test-hugo/content/speakers/guillaume_andrieu.md
  33. 18
      test-hugo/content/speakers/guillaume_laforge.md
  34. 19
      test-hugo/content/speakers/guillaume_membre.md
  35. 18
      test-hugo/content/speakers/horacio_gonzalez.md
  36. 18
      test-hugo/content/speakers/hubert_sablonniere.md
  37. 18
      test-hugo/content/speakers/jean-francois_garreau.md
  38. 18
      test-hugo/content/speakers/jimenez_raul.md
  39. 18
      test-hugo/content/speakers/juliane_blier.md
  40. 24
      test-hugo/content/speakers/julien_topcu.md
  41. 18
      test-hugo/content/speakers/laurent_victorino.md
  42. 18
      test-hugo/content/speakers/laurent_wroblewski.md
  43. 18
      test-hugo/content/speakers/mathieu_passenaud.md
  44. 21
      test-hugo/content/speakers/miro_miro_cupak.md
  45. 15
      test-hugo/content/speakers/nicolas_decoster.md
  46. 18
      test-hugo/content/speakers/olivier_flebus.md
  47. 22
      test-hugo/content/speakers/olivier_leplus.md
  48. 18
      test-hugo/content/speakers/philippe_charriere.md
  49. 15
      test-hugo/content/speakers/piotr_przybyl.md
  50. 18
      test-hugo/content/speakers/quentin_adam.md
  51. 18
      test-hugo/content/speakers/robert_firek.md
  52. 19
      test-hugo/content/speakers/sebastien_guilloux.md
  53. 18
      test-hugo/content/speakers/sylvain_wallez.md
  54. 18
      test-hugo/content/speakers/tiffany_souterre.md
  55. 22
      test-hugo/content/speakers/tugdual_grall.md
  56. 18
      test-hugo/content/speakers/victor_kropp.md
  57. BIN
      test-hugo/static/images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-1.jpg
  58. BIN
      test-hugo/static/images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-2.jpg
  59. BIN
      test-hugo/static/images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-3.jpg
  60. 15
      test-hugo/themes/devfest-theme-hugo/assets/style/main.scss
  61. 57
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_blog.scss
  62. 65
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_blogs.scss
  63. 10
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_code_of_conduct.scss
  64. 2
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_faq.scss
  65. 25
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_home.scss
  66. 3
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_session.scss
  67. 3
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_sessions.scss
  68. 60
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_speaker.scss
  69. 11
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_speakers.scss
  70. 2
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_team.scss
  71. 5
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_base.scss
  72. 8
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_footer.scss
  73. 2
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_header.scss
  74. 4
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_hero.scss
  75. 2
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_jumbo.scss
  76. 8
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_main.scss
  77. 2
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_partners.scss
  78. 34
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_socials.scss
  79. 4
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_speakers.scss
  80. 24
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_table_of_contents.scss
  81. 7
      test-hugo/themes/devfest-theme-hugo/assets/style/partials/_tickets.scss
  82. 2
      test-hugo/themes/devfest-theme-hugo/layouts/_default/baseof.html
  83. 28
      test-hugo/themes/devfest-theme-hugo/layouts/blog/list.html
  84. 23
      test-hugo/themes/devfest-theme-hugo/layouts/blog/single.html
  85. 2
      test-hugo/themes/devfest-theme-hugo/layouts/partials/speaker.html
  86. 48
      test-hugo/themes/devfest-theme-hugo/layouts/speakers/single.html
  87. 32
      tools/extract-data.js
  88. 29
      tools/generate-speakers.js

@ -6,6 +6,7 @@
"license": "MIT",
"scripts": {
"extract-data": "node tools/extract-data.js",
"speakers": "node tools/generate-speakers.js",
"publish": "echo 'TODO: firebase deploy'",
"publish:prod": "echo 'TODO: firebase deploy -P devfest-prod'"
},

@ -1 +1,3 @@
# Blogs
---
title: Blog
---

@ -0,0 +1,56 @@
---
title: Appel à orateurs
brief: Ouverture du Call for Papers
image: speakers.jpg
color: #fff
date: 2018-04-03T12:47:57+01:00
draft: true
---
Le DevFest Toulouse aura lieu, pour sa troisième édition, **le 08 Novembre 2018 au Centre des Congrès Pierre Baudis de Toulouse** et réunira 600 développeur·se·s, personnes travaillant dans les métiers techniques de l’informatique et étudiant·e·s.
En attendant, le jour J, le [CFP](https://devfest-toulouse.cfp.io/) (Call For Papers / Appel à Papiers) du DevFest Toulouse est désormais ouvert ! Cette année, vous pouvez soumettre du 1er avril (et non ce n’était pas un poisson ^^) **jusqu’au 1er Juillet 2018**. Nous délibérerons ensuite pendant le mois de Juillet.
![](sylvain.jpg)
## Les formats
Nouveauté cette année, vous vous proposons deux types de talks :
- le format **lightning talk**/quickie, d’une durée de **15 minutes**, comme l’an dernier
- le format **conférence** qui passe de 45 à **40 minutes** SANS QUESTION!
Pour ce qui est des questions, pas de panique, nous avons essayé de penser à tout. Nous demanderons aux speakers d’être dans le stand “speaker booth” la demi-heure suivant leur talk afin de répondre aux éventuelles questions.
L’avantage de ce format plus court est de se focaliser sur le contenu de la conférence et de donner le temps aux personnes d’aller poser leurs questions tranquillement après.
![](pauline.jpg)
## Les catégories/types de talks
Afin de faciliter la soumission des talks, nous avons diminué le nombre de catégories de l’an dernier, ce qui donne cette petite liste :
- **Native mobile apps** : Android,iPhones, React Native et autres développements mobiles
- **Web** : Les dernières technos web (PWA, polymer, services workers ...)...
- **Methods & Tools** : Ici on parle de craftsmanship, de DevOps, d’intégration et de déploiement continue, d’IaC (Infrastructure as Code) ...
- **Big Data / ML / AI** : Small et Big Data, Machine Learning et Intelligence Artificielle
- **UX** : Ergonomie et expérience utilisateur
- **IoT** : Objets connectés
- **Cloud** : GCP, AWS, Azure, Kubernetes ...
- **Languages** : Une conf sur un langage en particulier ? A propos de Rust, Golang, Swift … vous pourrez choisir cette catégorie
- **WTF et autres** : Une idée de talk mais qui n'entre pas dans les précédentes catégories ? Pas de soucis, vous pouvez également soumettre votre talk.
Vous pouvez soumettre un talk en Français ou en Anglais.
![](speakers.jpg)
## Vous m’avez convaincu·e, je soumets !
Comme dit ci-dessus, les soumissions sont ouvertes **jusqu’au 1er Juillet 2018**. L’année dernière nous avons reçu plus de 150 soumissions ! N’attendez pas le dernier moment, soumettez un talk dès à présent !
<div layout horizontal center-justified>
<a href="https://devfest-toulouse.cfp.io/#/dashboard" rel="noopener noreferrer">
<paper-button primary>Je soumets !</paper-button>
</a>
</div>
Vous avez des questions ? Vous pouvez écrire un message à l’équipe à [contact@devfesttoulouse.fr](contact@devfesttoulouse.fr
) ou bien sur notre compte Twitter [@DevFestToulouse](https://devfesttoulouse.fr).

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

@ -0,0 +1,87 @@
---
title: Retrouvez la liste complète des talks !
brief: Compte rendu CFP
image: cover.jpg
color: #fff
date: 2018-08-02T12:47:57+01:00
draft: true
---
Après plusieurs heures de délibération, de nombreux post it et moult crackers et pizza, nous avons enfin réussi à nous mettre d’accord sur l’ensemble des talks de l’édition 2018 du DevFest Toulouse !
💪
Le travail fut fastidieux, vous avez été nombreux à nous proposer des talks de très bonne qualité. 302 talks soumis soit 146 talks et 65 speakers de plus qu’en 2017 !
Merci à tous ! Merci de nous avoir titillé les neurones, d’avoir excité notre curiosité et de nous avoir permis de débattre de longs moments.
Nous espérons que la sélection sera à la hauteur de vos attentes.
Avant tout, nous souhaitons remercier les 221 speakers qui ont proposé des sujets jusqu’au dernier moment.
Nous voulons aussi remercier les quelques uns qui n’ont pas pu proposer leur sujet à temps mais qui ont quand même tenu à essayer ;-)
Et maintenant quelques chiffres dont nous sommes fiers :
![](nombre-proposition.png)
Sur les 302 talks proposés nous avons été obligé d’en retenir seulement 41 ! (Quand on vous dit que cela n’a pas été facile !)
L’année dernière il y avait 156 talks proposés, presque le double cette année. On est super fiers et un peu fatigués.
Et encore une fois : la qualité était au rendez-vous.
Sur 41 talks vous aurez :
9 quickies
32 talks au format conférence dont 6 en anglais
31 speakeurs (dont 8 super speakeuses)
Les propositions de sujets ont été assez variées avec une nette domination pour les sujets Web et Méthodes.
![](graph-theme.png)
La liste complète des speakers est disponible sur le site : https://devfesttoulouse.fr/speakers/
Bon, on ne va pas vous mentir, il est possible que cette liste évolue légèrement selon les disponibilités et les contretemps de chacun(e). Nous la mettons à jour dès que possible donc n’hésitez pas à y jeter un coup d’oeil de temps en temps ou vous inscrire à la newsletter pour rester informés (par ici : https://devfesttoulouse.fr/).
Nous vous en informerons aussi sur notre compte Twitter @DevFestToulouse .
Pour les sujets, allez, on est sympa, on vous dit tout :
* Ceinture noire Karate en tests d’API REST
* Premiers pas avec Capacitor... dans le monde réel
* Votre mission ? Découvrir Haskell et le mettre en prod
* Développer une application web avec Rust
* La programmation fonctionnelle sans céder à la mode
* Architecture Decision Records: Réconciliez vous avec votre documentation
* Machine Learning in the browser
* Détectez et trackez les Zergs qui se cachent dans vos dépendances !
* La tête dans les nuages avec un Raspberry Pi
* Agile, Craftsmanship, DevOps and other monsters - how to fight with them.
* De la domotique faite-maison avec Android Things et le Google Assistant
* Google Container Tools : développer efficacement dans un monde de conteneurs
* \#RetourAuxSources : 🍪 Les cookies HTTP
* Des APIs de Machine Learning sur étagère, à l'entrainement distribué dans le cloud
* Tests BDD: faites rédiger vos tests End-to-End par les fonctionnels
* Et si on parlait accessibilité du web ?
* Tensorflow, is there really no spoon ?
* Comment perdre sa surchage featurale ?
* Angular Elements
* Comment t'organiser quand tu es b****lique de naissance (et depuis des décennies), que tu as plusieurs jobs (ou projets), sans exploser en vol ... Et bosser à plusieurs ... Et y arriver
* Au pays des Gophers (à partir de 3 ans)
* Découvrir par l’exemple: Microservices et Event Sourcing avec Kafka et Kubernetes
* Testcontainers pour de vrais tests d'intégration d'Elasticsearch
* Systemd, de /dev/null à root
* Burger Quiz s'invite au DevFest avec un Sel ou Poivre "Code, Data ou les deux"
* Introduction à Arrow - Typeclass is the new interface
* Comprendre le théorème de CAP avec Apache Kafka
* Remake de jeux rétro avec Vue.js
* Exploring reactive programming in Java
* The Big Web Quizz
* Getting started with development for the Google Assistant
* Pourquoi et comment crafter la Data-Science sur mesure.
* Multiplatfom projects with Kotlin
* GCP pour les Data Scientists
* CONTEXTVS, STVLTE! (Context, stupid!)
* S'aider du Data-Oriented Design pour écrire des applications performantes
Concernant le programme, il faudra que vous patientez encore un peu. Mais vous avez vos billets ? c’est le plus important ! Et vous savez quoi ? Nous allons mettre en vente les derniers billets à partir du 1er Août !
Vous le savez chaque année on essaie d’innover, et une des nouveautés cette année, est que nous aurons des Sketchnotes !
Pour ceux qui découvrent, ce sont des prises de note visuelles. On ne vous en dit pas plus, juste que d’habitude, elles sont deux. L’une d’elles, (Amélie) nous a informé qu’elle ne pourra être présente car elle a une superbe opportunité (on lui souhaite une belle réussite!). Anne assurera seule et nous avons hâte de vous la présenter.
Pour finir, merci à toutes et à tous.
C’est grâce à vous que le DevFest Toulouse existe et grâce à vous qu’il prend chaque année un peu plus d’ampleur.
🤗

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

@ -1,22 +1,26 @@
---
title: "Hello 2019"
date: 2018-12-16T12:47:57+01:00
title: Hello 2019
brief: Lancement du DevFest Toulouse 2018
image: launch2018.jpg
color: #fff
date: 2018-03-27T12:47:57+01:00
draft: true
---
## Tada :tada:
Aujourd’hui, nous avons le plaisir de vous annoncer que la 4e édition se déroulera :
**Le jeudi XX novembre
au Centre des Congrès Pierre Baudis.**
**Le jeudi XX novembre,au Centre des Congrès Pierre Baudis.**
Situé en plein coeur de Toulouse, dans le quartier de Compans Cafarelli, accessible en transport en commun et en voiture, nous aurons l’occasion d’accueillir **plus de conférences**, **plus de partenaires** et surtout **plus de participants**.
![](images/posts/2018-03-27-lancement-devfest-toulouse-2018/baudis.jpg)
![baudis](./baudis.jpg)
Et… roulement de tambour, petite **nouveauté 2019**, il y aura un thème :
**LE FROMAGE**
**LE FROMAGE :cheese:**
Ce thème sera décliné sur l’ensemble de la journée avec des **goodies**, une **décoration au top** et si vous voulez vous déguiser en Camenbert ou en Roquefort,
@ -27,7 +31,6 @@ Nous invitons également nos partenaires à jouer le jeu ;-).
## La suite des réjouissances
- Ouverture du CFP : **début Avril**
- Ouverture de la billetterie (environ 700 places disponibles) : **en Avril**.
## En attendant, vous pouvez voir ou revivre le **DevFest** !
@ -42,12 +45,12 @@ Nous invitons également nos partenaires à jouer le jeu ;-).
- et pas mal de nuits courtes, de midis et de week-end bien chargés pour
les XX bénévoles.
<!-- ![](images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-1.jpg) -->
<!-- ![](/images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-1.jpg) -->
## Vous en voulez encore ?
- [Retrouvez toutes les conférences de l’édition 2018](TODO)
- [Revivez l’édition 2018 en photos](TODO)
- Retrouvez toutes les conférences de l’édition 2018
- Revivez l’édition 2018 en photos
- [Le programme et toutes les infos : sur le site Edition 2018](https://2018.devfesttoulouse.fr/)
<!-- ![](images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-3.jpg) -->

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

@ -0,0 +1,18 @@
---
id: alessio_coltellacci
name: Alessio Coltellacci
company: Clever Cloud
companyLogo: /images/speakers/company/clever_cloud.jpg
country: 'Toulouse, France'
photo: /images/speakers/alessio_coltellacci.jpg
socials:
- icon: twitter
link: 'https://twitter.com/lightplay8'
name: '@lightplay8'
- icon: github
link: 'https://github.com/NotBad4U'
name: NotBad4U
---
Développeur système chez Clever Cloud, je développe des applications low level en Rust, C, C++. Le reste du temps je m'amuse avec les features low level du kernel: ebpf, XDP socket, Intel SGX ... et Infographiste 3d sur mon free time depuis +7ans.

@ -0,0 +1,23 @@
---
id: alexandre_delattre
name: Alexandre Delattre
company: MonkeyPatch
companyLogo: /images/speakers/company/monkeypatch.jpg
country: 'Toulouse, France'
photo: /images/speakers/alexandre_delattre.jpg
socials:
- icon: twitter
link: 'https://twitter.com/alexandre_del31'
name: '@alexandre_del31'
---
Ingénieur logiciel Fullstack à MonkeyPatch
32 ans et fort de 7 ans d'expérience dans le développement logiciel, mon parcours, auprès de startups et de grands groupes m'a permis de m'approprier une large gamme de technos fullstack:
- Mobile : Android (Kotlin), iOS (Swift), Ionic
- Backend : Java, Scala, NodeJS
- Web : Typescript / Angular 1 & 2
Je suis passioné par la mobilité, la qualité et l'innovation logicielle, l'UX et l'entrepreunariat digital.

@ -0,0 +1,15 @@
---
id: anastasia_lieva
name: Anastasia Lieva
company: Comwatt
companyLogo: /images/speakers/company/comwatt.jpg
country: Solar System
photo: /images/speakers/anastasia_lieva.jpg
socials:
- icon: twitter
link: 'https://twitter.com/lievAnastazia'
name: '@lievAnastazia'
---
Fuzzy Humanist, Data Science Witch, The Lambda Wisperer

@ -0,0 +1,24 @@
---
id: ane_diaz_de_tuesta
name: Ane DIAZ DE TUESTA
company: Lectra
companyLogo: /images/speakers/company/lectra.jpg
country: 'Bordeaux, France'
photo: /images/speakers/ane_diaz_de_tuesta.jpg
socials:
- icon: twitter
link: 'https://twitter.com/ane_naiz'
name: '@ane_naiz'
- icon: github
link: 'https://github.com/anediaz'
name: anediaz
- icon: linkedin
link: >-
https://www.linkedin.com/in/ane-diaz-de-tuesta-37785252,
http://anediaz.com/
name: LinkedIn
---
Je suis une personne dynamique, curieuse et sociable. Je travaille en tant que développeuse depuis 2012, après avoir obtenu mon diplôme d’ingénieur espagnol et ensuite le français.
Actuellement je travaille chez Lectra comme développeuse FrontEnd et je suis Scrum Master. Je suis passionnée par mon travail qui me rend heureuse.

@ -0,0 +1,18 @@
---
id: arnaud_bos
name: Arnaud BOS
company: MonkeyPatch
companyLogo: /images/speakers/company/monkeypatch.jpg
country: 'Toulouse, France'
photo: /images/speakers/arnaud_bos.jpg
socials:
- icon: twitter
link: 'https://twitter.com/arnaud_bos'
name: '@arnaud_bos'
- icon: github
link: 'https://github.com/arnaudbos'
name: arnaudbos
---
Amateur de hamacs et de '(parenthèses). Du développement mobile au back-end, je suis revenu à mes premiers amours, les systèmes distribués, au fil des projets. Avec ma casquette de data engineer sur la tête, je me concentre sur le développement de (micro?)services et me passionne pour langages de programmation et les architectures distribuées.

@ -0,0 +1,18 @@
---
id: benoit_el_amrani
name: Benoit El Amrani
company: Informatique Banque Populaire
companyLogo: /images/speakers/company/i-bp.png
country: 'Toulouse, France'
photo: /images/speakers/benoit_el_amrani.jpg
socials:
- icon: twitter
link: 'https://twitter.com/bentah31'
name: '@bentah31'
- icon: github
link: 'https://github.com/belamrani'
name: belamrani
---
Passionné par le monde du web, je suis en veille constante pour trouver des nouvelles idées permettant d'améliorer à la fois le quotidien des développeurs et les applications sur lesquelles je travaille.

@ -0,0 +1,18 @@
---
id: benoit_prioux
name: Benoit PRIOUX
company: Lectra
companyLogo: /images/speakers/company/lectra.jpg
country: 'Bordeaux, France'
photo: /images/speakers/benoit_prioux.png
socials:
- icon: twitter
link: 'https://twitter.com/binout'
name: '@binout'
- icon: github
link: 'https://github.com/binout'
name: binout
---
Je suis Technical Leader au centre R&D de Lectra, éditeur de logiciel dans le monde de la mode, à Bordeaux. Je suis un développeur Java depuis 2005, et membre du bureau du Bordeaux JUG. Impliqué dans le projet open-source Asciidoctor, je suis aussi passionné par tout ce qui finit en DD : TDD, BDD, DDD, ...

@ -0,0 +1,21 @@
---
id: celine_louvet
name: Céline LOUVET
company: Fairvioo
companyLogo: /images/speakers/company/fairvioo.jpg
country: Île-de-France
photo: /images/speakers/celine_louvet.jpg
socials:
- icon: twitter
link: 'https://twitter.com/celine_louvet'
name: '@celine_louvet'
- icon: github
link: 'https://github.com/celinelouvet'
name: celinelouvet
- icon: linkedin
link: 'https://www.linkedin.com/in/celinelouvet/'
name: LinkedIn
---
CTO & cofondatrice de Fairvioo et développeuse au quotidien

@ -0,0 +1,24 @@
---
id: comet_nicolas
name: Nicolas Comet
company: Lectra
companyLogo: /images/speakers/company/lectra.jpg
country: 'Bordeaux, France'
photo: /images/speakers/comet_nicolas.jpg
socials:
- icon: twitter
link: 'https://twitter.com/NicolasComet'
name: '@NicolasComet'
- icon: github
link: 'https://github.com/ncomet'
name: ncomet
- icon: linkedin
link: 'https://www.linkedin.com/in/nicolascomet/'
name: LinkedIn
---
Développeur passionné, Speaker, grand curieux, j'aime apprendre en permanence. Je ne m'attache pas à une technologie en particulier, même si je gravite plus souvent du côté Java / JavaEE. J'aime les principes fondateurs du TDD. Je porte également un grand intérêt pour la synergie entre DDD et documentation vivante ou "Living Documentation".
Je suis actuellement ingénieur d'études R&D chez Lectra, numéro un mondial des solutions dédiées à l'industrie textile (logiciels & machines).

@ -0,0 +1,18 @@
---
id: david_gageot
name: David Gageot
company: Google
companyLogo: /images/speakers/company/google.svg
country: 'Paris, France'
photo: /images/speakers/david_gageot.jpg
socials:
- icon: twitter
link: 'https://twitter.com/dgageot'
name: '@dgageot'
- icon: github
link: 'https://github.com/dgageot'
name: dgageot
---
David est Developer Advocate chez Google Cloud. Il travaille sur les Containers Tools. Auparavant, il a participé à l'ouverture du bureau de R&D de Docker, à Paris.

@ -0,0 +1,18 @@
---
id: david_pilato
name: David Pilato
company: elastic
companyLogo: /images/speakers/company/elastic.jpg
country: France
photo: /images/speakers/david_pilato.jpg
socials:
- icon: twitter
link: 'https://twitter.com/dadoonet'
name: '@dadoonet'
- icon: github
link: 'https://github.com/dadoonet'
name: dadoonet
---
Depuis 2013, David Pilato est développeur et évangéliste chez elastic.co, après avoir passé les deux années précédentes à promouvoir le projet open-source Elasticsearch. Il en anime la communauté française.

@ -0,0 +1,18 @@
---
id: emmanuel_demey
name: Emmanuel DEMEY
company: Zenika
companyLogo: /images/speakers/company/zenika.jpg
country: 'Lille, France'
photo: /images/speakers/emmanuel_demey.jpg
socials:
- icon: twitter
link: 'https://twitter.com/EmmanuelDemey'
name: '@EmmanuelDemey'
- icon: github
link: 'https://github.com/Gillespie59'
name: Gillespie59
---
Directeur technique chez Zenika Lille et Google Developer Expert, je suis spécialisé dans AngularJS / Angular / TypeScript et l'Accessibilité Web. Speaker à ses heures perdues. Aime également les bières (et oui quand on vient de Lille c'est normal...), le Jazz et la Domotique. Plusieurs expériences en tant que conférencier, notamment depuis septembre 2015 autour du sujet Angular2. - ESLint au Jug Summer Camp et ChtiJS - Angular 2 : ChtiJUG, LyonJS, GDG Paris, GDG Nantes, Meetup AngularJS Grenoble, Devoxx, RivieraDev, Bdx.io, DevFest Nantes, Codeurs en Seine

@ -0,0 +1,15 @@
---
id: estelle_landry
name: Estelle Landry
company: Elium
companyLogo: /images/speakers/company/elium.jpg
country: 'Montpellier, France'
photo: /images/speakers/estelle_landry.jpg
socials:
- icon: twitter
link: 'https://twitter.com/estelandry'
name: '@estelandry'
---
Product Owner and UX Designer apprentice at @elium_tech , Former Project Manager , Proud to be member of @DuchessFR, @Flupa and @sunnytech_mtp

@ -0,0 +1,14 @@
---
id: fabien_tregan
name: Fabien Tregan
company: Freelance
country: 'Toulouse, France'
photo: /images/speakers/fabien_tregan.jpg
socials:
- icon: twitter
link: 'https://twitter.com/ftregan'
name: '@ftregan'
---
Essaie de faire des logiciels depuis vingt ou trente ans. Au début en se concentrant surtout sur le code, aujourd'hui en essayant de débusquer les problèmes là où ils se trouvent. Heureusement, des fois c'est dans le code.

@ -0,0 +1,19 @@
---
id: francois_teychene
name: Francois Teychene
company: Saagie
companyLogo: /images/speakers/company/saagie.jpg
country: 'Montpellier, France'
photo: /images/speakers/francois_teychene.jpg
socials:
- icon: twitter
link: 'https://twitter.com/fteychene'
name: '@fteychene'
- icon: github
link: 'https://github.com/fteychene'
name: fteychene
---
Cloud Developper @ Saagie , meetup addict & organiser @ Montpellier et Organisateur SunnyTech.
Développeur couteau suisse pouvant intervenir du Javascript à la table de routage. Mes passions actuelles sont le Rust, le DevOps et le Scala en plus de vouloir mettre des conteneurs partout.

@ -0,0 +1,18 @@
---
id: frederic_cabestre
name: Frédéric Cabestre
company: Easy Mile
companyLogo: /images/speakers/company/easy_mile.jpg
country: 'Toulouse, France'
photo: /images/speakers/frederic_cabestre.png
socials:
- icon: twitter
link: 'https://twitter.com/fcabestre'
name: '@fcabestre'
- icon: github
link: 'https://github.com/fcabestre'
name: fcabestre
---
Développeur, tendance «software craftman». Depuis longtemps attiré par les langages et leur mise en œuvre. Grand amateur de programmation fonctionnelle, même quand ce n'était pas encore cool. Curieux des systèmes, surtout s'ils sont distribués.

@ -0,0 +1,21 @@
---
id: giulia_bianchi
name: Giulia Bianchi
company: Xebia
companyLogo: /images/speakers/company/xebia.jpg
country: 'Paris, France'
photo: /images/speakers/giulia_bianchi.jpg
socials:
- icon: twitter
link: 'https://twitter.com/Giuliabianchl'
name: '@Giuliabianchl'
- icon: github
link: 'https://github.com/giulbia'
name: giulbia
---
Giulia est Data Scientist de plus de 4 ans d’expérience, elle est consultante à Xebia depuis deux ans et demi.
Elle travaille actuellement sur des volumes de données importants en mettant en place des algorithmes de Machine Learning, avec un objectif concret d’industrialisation.
En 2018 elle a organisé la première édition du [DataXDay](https://dataxday.fr/).
Elle suit les nouvelles tendances du monde de la Data en participant aux différents Meetups et en suivant des blogs. Elle contribue activement à cet écosystème en donnant des [talks](https://www.youtube.com/watch?v=N-LXrheCIKM) et en écrivant sur le [blog Xebia](https://blog.xebia.fr/author/gbianchi/).

@ -0,0 +1,15 @@
---
id: guillaume_andrieu
name: Guillaume ANDRIEU
company: MonkeyPatch
companyLogo: /images/speakers/company/monkeypatch.jpg
country: 'Toulouse, France'
photo: /images/speakers/guillaume_andrieu.jpg
socials:
- icon: twitter
link: 'https://twitter.com/glmxndr'
name: '@glmxndr'
---
FP enthusiast

@ -0,0 +1,18 @@
---
id: guillaume_laforge
name: Guillaume Laforge
company: Google
companyLogo: /images/speakers/company/google.jpg
country: 'Paris, France'
photo: /images/speakers/guillaume_laforge.jpeg
socials:
- icon: twitter
link: 'https://twitter.com/glaforge'
name: '@glaforge'
- icon: github
link: 'https://github.com/glaforge'
name: glaforge
---
Le jour, Guillaume Laforge est Developer Advocate chez Google, sur les solutions cloud, et de nuit, il reprends sa casquette de contributeur au projet Apache Groovy. Guillaume est également un des membres du podcast Les Cast Codeurs

@ -0,0 +1,19 @@
---
id: guillaume_membre
name: Guillaume Membré
company: Zenika
companyLogo: /images/speakers/company/zenika.jpg
country: 'Nantes, France'
photo: /images/speakers/guillaume_membre.jpg
socials:
- icon: twitter
link: 'https://twitter.com/GuillaumeMembre'
name: '@GuillaumeMembre'
- icon: github
link: 'https://github.com/gmembre-zenika'
name: gmembre-zenika
---
Geek à toute heure, je travaille principalement autour des technologies Java/JavaEE mais aussi sur des problématiques de déploiement continu, de qualimétrie. Désormais, je partage son expérience pour faciliter la mise en place de démarche devops chez différents acteurs. J'adore bidouiller des RaspberryPi ou Arduino pour créer des choses inutiles donc indispensables.
Lorsque le temps le permet, je décris mes aventures sur mon [site web](https://www.geekeries.fun).

@ -0,0 +1,18 @@
---
id: horacio_gonzalez
name: Horacio Gonzalez
company: OVH
companyLogo: /images/speakers/company/ovh.jpg
country: 'Brittany, France'
photo: /images/speakers/horacio_gonzalez.jpg
socials:
- icon: twitter
link: 'https://twitter.com/LostInBrittany'
name: '@LostInBrittany'
- icon: github
link: 'https://github.com/LostInBrittany'
name: LostInBrittany
---
Malgré ce que son accent espagnol bien prononcé peut suggérer, Horacio est arrivé en France il y a une quinzaine d'années déjà. Passionné d'informatique, dans laquelle il est tombé depuis tout petit, il a découvert Java en 1997 et depuis il n'a pas arrêté de bosser autour. Après quelques années comme tech leader de la partie frontend de @warp10io chez Cityzen Data, Horacio a rejoint OVH en janvier 2018 en tant que Developer Advocate. Il est aussi leader et cofondateur du FinistDevs et du GDG Finistère, le GDG francophone le plus proche de la Silicon Valley. Passionné par le développement web et tout ce qui gravite autour des composants web, Horacio est Google Developer Expert (GDE) en Web Technologies et Polymer.

@ -0,0 +1,18 @@
---
id: hubert_sablonniere
name: Hubert Sablonnière
company: Clever Cloud
companyLogo: /images/speakers/company/clever_cloud.png
country: 'Lille, France'
photo: /images/speakers/hubert_sablonniere.jpg
socials:
- icon: twitter
link: 'https://twitter.com/hsablonniere'
name: '@hsablonniere'
- icon: github
link: 'https://github.com/hsablonniere'
name: hsablonniere
---
Hubert est passionné par le Web. Il est toujours à la recherche de nouvelles idées et autres bidouilles pour améliorer l'expérience des utilisateurs et des développeurs.

@ -0,0 +1,18 @@
---
id: jean-francois_garreau
name: Jean-francois Garreau
company: Sfeir
companyLogo: /images/speakers/company/sfeir.jpg
country: 'Nantes, France'
photo: /images/speakers/jean-francois_garreau.jpg
socials:
- icon: twitter
link: 'https://twitter.com/jefBinomed'
name: '@jefBinomed'
- icon: github
link: 'https://github.com/jefBinomed'
name: jefBinomed
---
En dehors du travail, je suis co-fondateur du GDG Nantes, organisateur du DevFest Nantes, co-créateur des Nantes Wit et organisateur de Devoxx4Kids

@ -0,0 +1,18 @@
---
id: jimenez_raul
name: Raúl Jiménez
company: Google Developer Expert
companyLogo: /images/speakers/company/gde.jpg
country: 'Barcelona, Spain'
photo: /images/speakers/raul_jimenez.png
socials:
- icon: twitter
link: 'https://twitter.com/elecash'
name: '@elecash'
- icon: github
link: 'https://github.com/elecash'
name: elecash
---
Raul is a software engineer passionate about JS frameworks, web technologies and cross-platform development. Since 2012 he's focused in Angular, HTML5 video and his open source project Videogular. Raul works as CEO of Byte Default, an Angular consultancy company for companies around the world helping them to build high-performance web apps. In his spare time he's usually involved in local meetups, writing blog posts, speaking at conferences and contributing to open source projects. He lives in Barcelona and is happy by default :)

@ -0,0 +1,18 @@
---
id: juliane_blier
name: Juliane Blier
company: SchoolMouv
companyLogo: /images/speakers/company/schoolmouv.jpg
country: 'Toulouse, France'
photo: /images/speakers/juliane_blier.jpg
socials:
- icon: twitter
link: 'https://twitter.com/tactless7'
name: '@tactless7'
- icon: github
link: 'https://github.com/Tactless7'
name: Tactless7
---
Développeuse Web, Amoureuse de Vuejs, Node et PHP, Curieuse de nouvelles découvertes

@ -0,0 +1,24 @@
---
id: julien_topcu
name: Julien Topçu
company: Société Générale & OWASP fundation
companyLogo: /images/speakers/company/societe_generale.png
country: 'Île-de-France, France'
photo: /images/speakers/julien_topcu.jpeg
socials:
- icon: twitter
link: 'https://twitter.com/JulienTopcu'
name: '@JulienTopcu'
- icon: linkedin
link: >-
https://www.linkedin.com/in/julien-top%C3%A7u/,
https://beyondxscratch.wordpress.com/
name: LinkedIn
---
Senior Lead Developer à la Société Générale, je suis un fervent défenseur du Software Craftsmanship.
J'évangélise activement autour de DDD/Hexagonal Architecture, l'XP et le Kanban #NoEstimates au sein de cours et de [meetups](https://www.youtube.com/watch?v=P0_M00X4Xlw/) ainsi qu'à travers d'articles de [blog](https://beyondxscratch.wordpress.com/).
Membre de la fondation OWASP, je m'efforce de transmettre à la communauté une philosophie DevSecOps que je pense être l'avenir du métier de développeur. J'ai participé à la mise en place de pipeline de Continuous Security à l'échelles d'entreprises.

@ -0,0 +1,18 @@
---
id: laurent_victorino
name: Laurent Victorino
company: Monkey Moon
companyLogo: /images/speakers/company/monkey_moon.png
country: 'Lyon, France'
photo: /images/speakers/laurent_victorino.jpg
socials:
- icon: twitter
link: 'https://twitter.com/on_code'
name: '@on_code'
- icon: github
link: 'https://github.com/lvictorino'
name: lvictorino
---
Pas très bon en jeux vidéo Laurent préfère les créer pour se donner une bonne raison de ne pas y jouer. Programmeur moyen mais sympa, Laurent est à la tête de Monkey Moon, un studio de jeux vidéo basé à Lyon qui développe actuellement Night Call, un jeu qui se passe à Paris, parce que Laurent aime les paradoxes. Speaker internationalement reconnu pour sa keynote « 400 vannes sur le Java en moins de 20 minutes », Laurent aime les conférences IT et Web pour les rencontres, les échanges, et la nourriture gratuite. Laurent a vraiment du mal à parler de lui à la troisième personne.

@ -0,0 +1,18 @@
---
id: laurent_wroblewski
name: Laurent Wroblewski
company: Davidson Consulting
companyLogo: /images/speakers/company/davidson_consulting.jpg
country: 'Toulouse, France'
photo: /images/speakers/laurent_wroblewski.jpg
socials:
- icon: twitter
link: 'https://twitter.com/@LaurentWrob'
name: '@LaurentWrob'
- icon: github
link: 'https://github.com/LWroblewski'
name: LWroblewski
---
Laurent Wroblewski, ingénieur développement full stack depuis maintenant près de 9 ans, passionné par les technologies web/mobile. Récent expatrié lillois, qui revient à domicile à la recherche de bières convenables et de bon échanges techniques (l'un n'excluant pas l'autre ;)). J'aime partager autour du JS et de ses principales stars du moment, comme Angular et React, et du riche écosystème qui gravite autour. Mais le mobile n'est pas en reste non plus, que ce soient le natif (Kotlin4ever), les solutions hybrides ou les PWAs.

@ -0,0 +1,18 @@
---
id: mathieu_passenaud
name: Mathieu Passenaud
company: please-open.it
companyLogo: /images/speakers/company/please-open.png
country: 'Toulouse, France'
photo: /images/speakers/mathieu_passenaud.png
socials:
- icon: twitter
link: 'https://twitter.com/mathieupassenau'
name: '@mathieupassenau'
- icon: github
link: 'https://github.com/mathieupassenaud'
name: mathieupassenaud
---
DevOps (Teevity, Berger Levrault, OVH, Connit, Ubleam) depuis 8 ans maintenant sur Toulouse. Issu du milieu de l'embarqué (calculateurs ferroviaires/militaires), je me suis retrouvé parachuté dans l'univers du cloud pendant quelques années jusqu'à revenir au croisement de ces deux mondes : l'IOT. Touche à tout, j'aime beaucoup prototyper et répondre à la question 'est-ce que c'est possible ?'

@ -0,0 +1,21 @@
---
id: miro_miro_cupak
name: Miro Cupak
company: DNAstack
companyLogo: /images/speakers/company/dnastack.jpg
country: 'Toronto, Ontario'
photo: /images/speakers/miro_miro_cupak.jpg
socials:
- icon: twitter
link: 'https://twitter.com/mirocupak'
name: '@mirocupak'
- icon: github
link: 'https://github.com/mcupak'
name: mcupak
- icon: linkedin
link: 'https://mirocupak.com, https://www.linkedin.com/in/mirocupak'
name: LinkedIn
---
Miro is a VP of Engineering at DNAstack, where he builds a leading genomics cloud platform. He is a Java enthusiast with expertise in distributed systems and middleware, passionate about genetics and making meaningful software. Miro is the creator of the largest search and discovery engine of human genetic data, and the author of a book on parallelization of genomic queries. In his spare time, he blogs and contributes to several open-source projects.

@ -0,0 +1,15 @@
---
id: nicolas_decoster
name: Nicolas Decoster
company: Magellium
companyLogo: /images/speakers/company/magellium.jpg
country: 'Toulouse, France'
photo: /images/speakers/nicolas_decoster.jpg
socials:
- icon: twitter
link: 'https://twitter.com/nnodot'
name: '@nnodot'
---
Informaticien curieux depuis 35 ans, de métier depuis 20 ans (principalement dans le spatial). Non spécialiste touche à tout : du développement logiciel à l'étude scientifique, du développement d'algorithmes de traitement à la mise en œuvre de systèmes, de la programmation en C++ ou Python à l'utilisation des technos Web, de la petite appli en ligne de commande aux IHM ou aux systèmes distribués. Ingénieur chez Magellium et co-fondateur et animateur à la Compagnie du Code.

@ -0,0 +1,18 @@
---
id: olivier_flebus
name: Olivier Flebus
company: Continental Digital Services France
companyLogo: /images/speakers/company/continental_digital_services_france.jpg
country: 'Toulouse, France'
photo: /images/speakers/olivier_flebus.jpg
socials:
- icon: twitter
link: 'https://twitter.com/olivierflebus'
name: '@olivierflebus'
- icon: linkedin
link: 'https://www.linkedin.com/in/olivierflebus'
name: LinkedIn
---
Enterprise Architect, #Agile enthusiast. Leading #BigData @Continental Digital Services France. Building a #Cloud platform for #ConnectedCars.

@ -0,0 +1,22 @@
---
id: olivier_leplus
name: Olivier Leplus
company: Botfuel
companyLogo: /images/speakers/company/botfuel.jpg
country: 'Paris, France'
photo: /images/speakers/olivier_leplus.jpg
socials:
- icon: twitter
link: 'https://twitter.com/olivierleplus'
name: '@olivierleplus'
- icon: github
link: 'https://github.com/tagazok'
name: tagazok
- icon: linkedin
link: 'https://www.linkedin.com/in/olivierleplus/, https://tagazok.github.io/'
name: LinkedIn
---
My day to day my mission is to help developers create successful and quality apps.
As a passionate web developer, I am always discovering and playing with new web technologies !

@ -0,0 +1,18 @@
---
id: philippe_charriere
name: Philippe Charrière
company: CleverCloud
companyLogo: /images/speakers/company/clevercloud.jpg
country: 'Lyon, France'
photo: /images/speakers/philippe_charriere.jpg
socials:
- icon: twitter
link: 'https://twitter.com/k33g_org'
name: '@k33g_org'
- icon: github
link: 'https://github.com/k33g'
name: k33g
---
currently: 🇪🇺 TAM @GitLab 🦊 + deploying apps as CSO @clever_cloud 💡☁ + core committer @golo_lang + raising 🤖 @BotsGarden, previously: SE @github

@ -0,0 +1,15 @@
---
id: piotr_przybyl
name: Piotr Przybyl
company: Remote Freelance Software Gardener
companyLogo: ''
country: 'Wroclaw, Poland'
photo: /images/speakers/piotr_przybyl.jpg
socials:
- icon: twitter
link: 'https://twitter.com/piotrprz'
name: '@piotrprz'
---
Notorious engineer at work and after hours, tracing meanders of the art of software engineering. Software Gardener, mostly working in web-oriented Java gardens. Fan of agility, seen mostly as choosing the right tools and approaches. Lead developer, trainer and conference speaker.

@ -0,0 +1,18 @@
---
id: quentin_adam
name: Quentin Adam
company: Clever Cloud
companyLogo: /images/speakers/company/clever_cloud.png
country: 'Nantes, France'
photo: /images/speakers/quentin_adam.jpg
socials:
- icon: twitter
link: 'https://twitter.com/waxzce'
name: '@waxzce'
- icon: github
link: 'https://github.com/waxzce'
name: waxzce
---
Quentin is the CEO of Clever Cloud : a Platform as a Service company allowing you to run java, scala, ruby, node.js, php, python or go applications, with auto scaling and auto healing features. This position allow him to study lots of applications, code, practice, and extract some talks and advises. Regular speaker at various tech conference, he’s focused to help developers to deliver quickly and happily good applications.

@ -0,0 +1,18 @@
---
id: robert_firek
name: Robert Firek
company: Codurance
companyLogo: /images/speakers/company/codurance.jpg
country: 'London, Royaume-Uni'
photo: /images/speakers/robert_firek.jpg
socials:
- icon: twitter
link: 'https://twitter.com/RobertFirek'
name: '@RobertFirek'
- icon: github
link: 'https://github.com/robertfirek'
name: robertfirek
---
Robert Firek is a software craftsman who has tasted many different flavours of programming. His broad range of experiences has helped to deliver quality software in many companies and organisations. He strives to create software according to the rule "Simplicity is the final achievement". He is trying to unite worlds of the software development and the infrastructure delivery by promoting the DevOps culture.

@ -0,0 +1,19 @@
---
id: sebastien_guilloux
name: Sébastien Guilloux
company: Elastic
companyLogo: /images/speakers/company/elastic.jpg
country: 'Toulouse, France'
photo: /images/speakers/sebastien_guilloux.jpg
socials:
- icon: twitter
link: 'https://twitter.com/_sebgl'
name: '@_sebgl'
- icon: github
link: 'https://github.com/sebgl'
name: sebgl
---
Cloud Engineer chez Elastic. J'ai un petit faible pour les systèmes distribués, pour le fun et les challenges qu'ils nous apportent ! Auparavant j'ai travaillé chez OVH, en tant que développeur sur plusieurs services (Kafka, Kubernetes, Serverless Functions).
Ah, j'ai une légère tendance à faire des jeux de mots, aussi :)

@ -0,0 +1,18 @@
---
id: sylvain_wallez
name: Sylvain Wallez
company: Elastic
companyLogo: /images/speakers/company/elastic.png
country: 'Toulouse, France'
photo: /images/speakers/sylvain_wallez.png
socials:
- icon: twitter
link: 'https://twitter.com/bluxte'
name: '@bluxte'
- icon: github
link: 'https://github.com/swallez'
name: swallez
---
Architecte et développeur passionné, tech lead dans l'équipe Cloud chez Elastic. A travaillé comme architecte, CTO et leader technique dans plusieurs startups. Expert technique multi-compétences : systèmes scalables, NoSQL, moteurs de recherche, mais aussi front-end, devops et Iot. Bref, full-stack. Membre de la fondation Apache.

@ -0,0 +1,18 @@
---
id: tiffany_souterre
name: Tiffany Souterre
company: JEMS Datafactory
companyLogo: /images/speakers/company/jems_datafactory.jpg
country: 'Paris, France'
photo: /images/speakers/tiffany_souterre.jpg
socials:
- icon: twitter
link: 'https://twitter.com/tiffanysouterre'
name: '@tiffanysouterre'
- icon: github
link: 'https://github.com/Amagash'
name: Amagash
---
I love science and I love data! After finishing a Ph.D. in genetic engineering, I continued my quest for discovering new patterns through data science and machine learning. I currently work as a Big Data engineer and I play with machine learning algorithms on my free time. Someday, I wish to leverage data exploration to improve people's life.

@ -0,0 +1,22 @@
---
id: tugdual_grall
name: Tugdual Grall
company: MapR
companyLogo: /images/speakers/company/mapr.MapR
country: It depends!
photo: /images/speakers/tugdual_grall.jpg
socials:
- icon: twitter
link: 'https://twitter.com/tgrall'
name: '@tgrall'
- icon: github
link: 'https://github.com/tgrall'
name: tgrall
---
Tugdual Grall Bio: Tugdual Grall, est Chief Technical Evangelist EMEA chez MapR. Il travaille avec les clients et les communautés de développeurs européennes, pour faciliter l’adoption de MapR, Hadoop et NoSQL.
Avant de travailler chez MapR, “Tug”, était Technical Evangelist chez MongoDB et Couchbase. Tug a travaillé comme CTO chez eXo Platform, et comme Product Manager et Développeur sur la platform Java/JavaEE d’Oracle.
Tugdual est également co-fondateur du Nantes JUG (Java Users Group) qui réunit tous les mois depuis 2008 les développeurs et architectes de la région nantaise.

@ -0,0 +1,18 @@
---
id: victor_kropp
name: Victor Kropp
company: JetBrains
companyLogo: /images/speakers/company/jetbrains.jpg
country: 'München, Deutschland'
photo: /images/speakers/victor_kropp.jpg
socials:
- icon: twitter
link: 'https://twitter.com/kropp'
name: '@kropp'
- icon: github
link: 'https://github.com/kropp'
name: kropp
---
Victor Kropp is a Software Engineer at JetBrains, where he has contributed to many projects including ReSharper, dotCover, Hub and Toolbox App. His interests include modern programming languages, practices and tools, and cross-platform development. In his free time, he runs marathons and long distance triathlons or travels with his family.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

@ -20,10 +20,10 @@
--color-gold: #b7935b;
--color-error: firebrick;
--space-1: .125rem;
--space-2: .25rem;
--space-3: .5rem;
--space-4: 1rem;
--container-margin: 10vw;
--toolbar-height: 3rem;
@ -32,8 +32,6 @@
Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
/*--font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;*/
--extruded: 1px 0 0 var(--darken-3);
/* Tags */
/*from https://github.com/d3/d3-scale-chromatic#schemePastel2*/
--tag1: #b3e2cd;
@ -53,18 +51,18 @@
--animation: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
--extruded: 1px 0 0 var(--darken-3);
--box-shadow-1: 0 0 2px 0 rgba(0, 0, 0, 0.07), 0 2px 2px 0 rgba(0, 0, 0, 0.15);
--box-shadow-2: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12);
}
/* base */
@import "partials/base";
@import "partials/header";
@import "partials/main";
@import "partials/footer";
@import "partials/buttons";
@import "partials/socials";
@import "partials/jumbo";
@import "partials/hero";
@import "partials/table_of_contents";
@ -73,7 +71,12 @@
@import "partials/partners";
@import "pages/home";
@import "pages/sessions";
@import "pages/session";
@import "pages/speakers";
@import "pages/speaker";
@import "pages/blogs";
@import "pages/blog";
@import "pages/team";
@import "pages/faq";
@import "pages/code_of_conduct";

@ -0,0 +1,57 @@
.page.blog {
.hero {
.img {
padding: var(--container-margin);
background-repeat: no-repeat;
background-size: cover;
background-position: center center;
text-shadow: 1px 0 0 var(--lighten-3);
}
h1 {
color: var(--primary);
padding-left: 0;
padding-right: 0;
small {
display: block;
}
}
hr {
opacity: .25;
}
}
.content {
padding-left: 0;
padding-right: 0;
margin: 2rem var(--container-margin);
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
color: var(--primary);
}
p {
margin-left: var(--space-4);
text-align: justify;
&::first-letter {
margin-left: var(--space-4);
}
}
ul {
margin-left: 2rem;
li {
line-height: 1.25;
}
}
}
}

@ -0,0 +1,65 @@
.section.blog {
main > section {
padding-left: 0;
padding-right: 0;
margin: 2rem var(--container-margin);
}
.blogs {
display: grid;
grid-gap: var(--space-4);
a {
text-decoration: none;
padding: var(--space-4);
border-radius: var(--space-3);
min-height: 25vw;
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: auto 1fr;
grid-gap: var(--space-4);
color: inherit;
border: thin solid var(--darken-1);
box-shadow: var(--space-1) var(--space-1) var(--space-2) var(--darken-2);
transition: box-shadow var(--animation);
.img {
display: inline-block;
background-position: center center;
background-size: cover;
--size: 6rem;
height: var(--size);
width: var(--size);
border-radius: var(--space-2);
}
.info {
justify-content: center;
.reading {
align-self: flex-end;
&::after {
content: ' min.';
}
}
.date {
align-self: flex-start;
}
}
p {
grid-column: 1 / -1;
}
&:hover, &:focus {
box-shadow: var(--space-2) var(--space-2) var(--space-2) var(--darken-3);
}
}
}
}

@ -1,12 +1,14 @@
.page.code-of-conduct .content {
margin: 2rem 4rem;
margin: 2rem var(--container-margin);
padding-left: 0;
padding-right: 0;
p {
margin-left: 1rem;
line-height: 1.25;
margin-left: var(--space-4);
text-align: justify;
&::first-letter {
margin-left: 1rem;
margin-left: var(--space-4);
}
}

@ -5,6 +5,6 @@
}
h3, h4, h5, h6, ul, ol, p {
margin-left: 30vw;
margin-left: calc(var(--container-margin) - 2rem);
}
}

@ -1,4 +1,14 @@
.home {
section > h2 {
margin-bottom: 1.5rem;
padding: 0;
font-size: 2rem;
line-height: 1.875rem;
font-weight: 300;
}
section.info > div {
display: flex;
@ -32,9 +42,18 @@
}
section.speakers {
// Keep only 4 first speakers
ul li:nth-child(n+5) {
display: none;
ul {
list-style: none;
display: flex;
justify-content: space-around;
align-items: flex-start;
flex-wrap: wrap;
// Keep only 4 first speakers
li:nth-child(n+5) {
display: none;
}
}
}

@ -0,0 +1,60 @@
.page.speakers {
.hero {
header, .description {
padding: var(--space-4) var(--container-margin);
}
header {
display: flex;
align-items: center;
.speaker-img {
--size: 6rem;
height: var(--size);
min-width: var(--size);
border-radius: 100%;
background-size: cover;
box-shadow: 0 0 var(--space-3) var(--darken-3);
margin-right: var(--space-4);
}
h1 {
margin: 0;
padding: 0;
}
ul.socials {
display: flex;
list-style: none;
padding: 0;
margin: 0;
li {
padding-right: var(--space-4);
}
}
}
}
section.speaker {
padding: var(--space-4) var(--container-margin);
header {
display: flex;
align-items: center;
justify-content: space-between;
}
.speaker-company {
margin: var(--space-3) 0;
display: flex;
align-items: center;
img {
height: 4rem;
margin-right: var(--space-4);
}
}
}
}

@ -1,6 +1,7 @@
.section.speakers {
ul.speakers {
list-style: none;
padding: 0;
margin: 0;
display: grid;
@ -8,14 +9,17 @@
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
li a.speaker {
padding: 1rem;
padding: var(--space-4);
border: thin solid var(--darken-1);
box-shadow: var(--space-1) var(--space-1) var(--space-2) var(--darken-2);
transition: box-shadow var(--animation);
border-radius: var(--space-2);
display: flex;
flex-direction: row;
height: 100%;
.speaker-img {
margin-right: 1rem;
margin-right: var(--space-4);
}
.speaker-company {
@ -28,9 +32,8 @@
}
}
&:hover, &:focus {
box-shadow: var(--box-shadow-2);
box-shadow: var(--space-2) var(--space-2) var(--space-2) var(--darken-3);
}
}
}

@ -13,7 +13,7 @@
--size: 6rem;
box-shadow: 0 0 0 var(--space-2) var(--darken-2);
height: var(--size);
width: var(--size);
min-width: var(--size);
border-radius: 100%;
background-size: cover;

@ -21,6 +21,7 @@ body {
margin: var(--toolbar-height) 0 0;
display: flex;
flex-direction: column;
min-height: calc(100vh - var(--toolbar-height));
}
h1, h2, h3, h4, h5, h6 {
@ -28,6 +29,10 @@ h1, h2, h3, h4, h5, h6 {
font-weight: normal;
}
p {
line-height: 1.25;
}
.content {
a, a:visited {

@ -1,7 +1,7 @@
body > footer {
background-color: var(--darken-1);
color: var(--base-secondary-text);
padding: 1rem var(--container-margin);
padding: var(--space-4) var(--container-margin);
font-weight: 200;
a {
@ -22,6 +22,11 @@ body > footer {
display: flex;
justify-content: space-between;
font-weight: 300;
flex-wrap: wrap;
header {
margin-right: var(--space-2);
}
& > div {
display: flex;
@ -57,6 +62,7 @@ body > footer {
.footer-content {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
section {
header {

@ -1,4 +1,6 @@
body > header {
// FIXME responsive
position: fixed;
top: 0;
z-index: 100;

@ -1,11 +1,11 @@
.hero {
h1 {
padding: 2rem;
padding: 2rem var(--container-margin);
}
.description {
padding: 2rem;
padding: 2rem var(--container-margin);
background: var(--color-hero);
border-top: thin solid var(--darken-1);
border-bottom: thin solid var(--darken-1);

@ -7,7 +7,7 @@
align-items: center;
.inner {
padding: 1rem;
padding: var(--space-4);
color: var(--primary-txt);
background: var(--darken-2);
border-radius: var(--space-3);

@ -1,4 +1,5 @@
body > main {
flex-grow: 1;
& > section {
padding: 2rem;
@ -8,12 +9,5 @@ body > main {
color: var(--primary-txt);
}
& > h2 {
margin-bottom: 1.5rem;
padding: 0;
font-size: 2rem;
line-height: 1.875rem;
font-weight: 300;
}
}
}

@ -1,7 +1,7 @@
.partners-group {
h3 {
text-align: center;
margin: 1rem 0;
margin: var(--space-4) 0;
}
ul {

@ -1,33 +1,49 @@
a[class*='social-'] {
height: 1rem;
width: 1rem;
display: inline-block;
display: inline-flex;
margin: var(--space-1);
background-size: contain;
background-position: center center;
background-repeat: no-repeat;
align-items: center;
color: inherit;
text-decoration: none;
&::before {
display: inline-block;
content: '';
--size: 1rem;
height: var(--size);
width: var(--size);
background-repeat: no-repeat;
margin-right: var(--space-1);
}
&:focus, &:hover {
text-decoration: underline;
}
}
.social-facebook {
.social-facebook::before {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 264 512"><path fill="rgb(59,89,152)" d="M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229"></path></svg>');
}
.social-twitter {
.social-twitter::before {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" ><path fill="rgb(64,153,255)" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg>');
}
.social-linkedin {
.social-linkedin::before {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" ><path fill="rgb(0,119,181)" d="M100.3 448H7.4V148.9h92.9V448zM53.8 108.1C24.1 108.1 0 83.5 0 53.8S24.1 0 53.8 0s53.8 24.1 53.8 53.8-24.1 54.3-53.8 54.3zM448 448h-92.7V302.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V448h-92.8V148.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V448h-.1z"></path></svg>');
}
.social-youtube {
.social-youtube::before {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" ><path fill="rgb(205,32,31)" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg>');
}
.social-github {
.social-github::before {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512" ><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>');
}
.social-website {
.social-website::before {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" ><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg>');
}

@ -1,8 +1,4 @@
.speakers ul {
list-style: none;
display: flex;
justify-content: space-around;
align-items: flex-start;
li .speaker {
display: flex;

@ -1,16 +1,20 @@
#TableOfContents ul li {
#TableOfContents ul {
padding-left: 0;
list-style: none;
font-size: 1rem;
margin: var(--space-1) 0;
padding: var(--space-1) 0;
a {
color: var(--primary);
text-decoration: none;
li {
font-size: 1rem;
margin: var(--space-1) 0;
padding: var(--space-1) 0;
&:focus, &:hover {
text-decoration: underline;
a {
color: var(--primary);
text-decoration: none;
&:focus, &:hover {
text-decoration: underline;
}
}
}
}
}

@ -3,9 +3,8 @@
list-style: none;
display: grid;
grid-auto-columns: 1fr;
grid-gap: 1rem;
grid-auto-flow: column;
grid-gap: var(--space-4);
grid-auto-flow: column; // FIXME responsive
li .ticket {
padding: 2rem var(--space-3);
@ -40,7 +39,7 @@
}
.btn {
margin: 1rem;
margin: var(--space-4);
}
}
}

@ -2,7 +2,7 @@
<html lang="{{ $.Site.LanguageCode | default " en" }}">
{{ partial "head.html" . }}
<body class="{{ .Kind }} {{ anchorize .URL }}">
<body class="{{ .Kind }} {{ anchorize .URL }} {{ .Section }}">
{{ block "header" . }}
{{ partial "header.html" . }}

@ -0,0 +1,28 @@
{{ define "main" }}
<div class="hero">
<h1>{{ $.Page.Params.Title }}</h1>
<div class="description">
{{ .Content }}
</div>
</div>
<section class="blogs">
{{ range .Pages }}
<article>
<a class="blog" href="{{ .URL }}">
<div class="img" style="background-image: url({{ path.Join .URL .Params.image }});"></div>
<div class="info">
<h2>{{ .Title }}</h2>
<span>{{ .Params.brief }}</span>
<div class="date">{{ dateFormat "2 Jan 2016" .Date }}</div>
<div class="reading">{{ .ReadingTime }}</div>
</div>
<p>{{ .Summary }} ...</p>
</a>
</article>
{{ end }}
</section>
{{ end }}

@ -0,0 +1,23 @@
{{ define "main" }}
<div class="hero" >
<div class="img" style="color: {{ .Params.color | default "#fff" }};background-image: url({{ .Params.image }})"></div>
<div class="description">
<h1>
<span>{{ .Title }}</span>
<small>{{ .Params.brief }}</small>
</h1>
<hr>
{{ .TableOfContents }}
</div>
</div>
<section class="content">
{{ .Content }}
</section>
{{ end }}

@ -2,7 +2,7 @@
<div class="speaker-img" style="background-image: url({{ .photo }});"></div>
<div class="info">
<figure class="speaker-company">
<img src="{{ .companyLogo }}" alt="{{ .company }}">
<img src="{{ .companyLogo }}">
<figcaption>{{ .company }}</figcaption>
</figure>
<strong class="speaker-name">{{ .name }}</strong>

@ -0,0 +1,48 @@
{{ define "main" }}
<div class="hero">
<header>
<div class="speaker-img" style="background-image: url({{ .Page.Params.photo }});"></div>
<div>
<h1>{{ .Page.Params.name }}</h1>
<ul class="socials">
{{ range .Page.Params.socials }}
<li>
<a class="social-{{ .icon }}" href="{{ .link }}" target="_blank">{{ .name }}</a>
</li>
{{ end }}
</ul>
</div>
</header>
<div class="description">
<ul>
{{ range sort (where .Site.Data.sessions "speakers" "intersect" (slice .Page.Params.id)) "id" "desc" }}
<li><a href="/sessions/{{ .id }}">
{{ .title }}
</a></li>
{{ end }}
</ul>
</div>
</div>
<section class="speaker">
<header>
<figure class="speaker-company">
<img src="{{ .Page.Params.companyLogo }}" alt="{{ .Page.Params.company }}">
<figcaption>{{ .Page.Params.company }}</figcaption>
</figure>
<h2>{{ .Page.Params.country }}</h2>
</header>
<div class="bio">
{{ .Content }}
</div>
</section>
{{ end }}

@ -2,25 +2,25 @@ const yaml = require('js-yaml');
const fs = require('fs');
const path = require('path');
const wtf = () => {
throw Error('WTF!')
const writeOption = {
flag: 'w'
};
const writeTo = (list, dest) => {
const dump = yaml.safeDump(list);
const writeToYml = (list, dest) => {
const data = yaml.safeDump(list);
console.log('Write to', dest);
fs.writeFileSync(dest, dump, {
flag: 'w'
});
fs.writeFileSync(dest, data, writeOption);
};
const firebaseData = require('../test-hugo/data/firebase-data.json');
const identity= obj => obj;
const identity = obj => obj;
const idValue = obj =>
Object.entries(obj)
.map(([key, elt]) => ({ ...elt,
id: key
}));
.map(([key, elt]) => ({
...elt,
id: key
}));
const dataExtractor = {
sessions: idValue,
@ -28,11 +28,11 @@ const dataExtractor = {
partners: identity,
team: identity,
tickets: identity,
}
};
Object.entries(dataExtractor)
.forEach(([key, value]) => {
const dest = path.join(__dirname, `../test-hugo/data/${key}.yml`);
const data = value(firebaseData[key]);
writeTo(data, dest);
});
const dest = path.join(__dirname, `../test-hugo/data/${key}.yml`);
const data = value(firebaseData[key]);
writeToYml(data, dest);
});

@ -0,0 +1,29 @@
const yaml = require('js-yaml');
const fs = require('fs');
const path = require('path');
const writeOption = {
flag: 'w'
};
const firebaseData = require('../test-hugo/data/firebase-data.json');
const generateSpeakerData = (id, speaker) => {
const {name, bio, company, companyLogo, country, photo, socials} = speaker;
const frontMatter = {id, name, company, companyLogo, country, photo, socials};
return `---
${yaml.safeDump(frontMatter, {skipInvalid: true})}
---
${bio}
`;
};
Object.entries(firebaseData.speakers)
.map(([id, speaker]) => ([id, generateSpeakerData(id, speaker)]))
.forEach(([id, data]) => {
const dest = path.join(__dirname, `../test-hugo/content/speakers/${id}.md`);
console.log('Write to', dest);
fs.writeFileSync(dest, data, writeOption);
});
Loading…
Cancel
Save