PageSourceSearch

https://nantesjug.org/scripts/data/events.js

js nantesjug.org collected 2026-10-06 00:31:24 UTC 320,794 bytes, 4,639 lines download raw bytes

1/*jshint unused: false */
2// Structure:
3// {
4//     id: "",
5//     title: "",
6//     date: new Date(yyyy, mm, dd), //month begin at 0
7//     time: "",
8//     register: "",
9//     place: "",
10//     subjects: [ 
11//         {
12//             title: "",
13//             time: "",
14//             length: "",
15//             type: "",
16//             intro: "",
17//             abstract: "", 
18//             speakers: [""],
19//             docs: [{ name: "", url: "", type: "" },
20//             ]
21//         },
22//     ],
23//     docs: [{ name: "", url: "", type: "" }
24// },
25var njEvents = [
26    {
27        id: '2026_10_13',
28        title: `TechLeads : questionnez ! // De l'autocomplete à l'Autopilot`,
29        date: new Date(2026, 9, 13), //month begin at 0
30        time: '19h00',
31        register: "https://www.meetup.com/nantes-java-user-group/events/316779777/",
32        place: "qlik",
33        subjects: [
34            {
35                title: `TechLeads : arrêtez de répondre. Commencez à questionner !`,
36                time: '19h00',
37                length: '20 min',
38                type: 'quickie',
39                abstract: `
40                    <p>On attend du Techlead qu’il sache. On vient le voir pour chaque décision : relecture de code, décision d'architecture, arbitrage produit, debug complexe, médiation d'équipe… Et plus il est compétent, plus il est sollicité !</p>
41                    <p>Le paradoxe ? Sa valeur crée sa surcharge. Et si le rôle du TechLead n’était pas d’avoir les meilleures réponses… mais de poser les meilleures questions ?</p>
42                    <p>Le questionnement puissant est une compétence centrale en coaching mais quasiment absente de la culture technique.</p>
43                    <p>Alors permettez-moi de vous offrir cet angle nouveau qui pourrait vous permettre de :
44                    <ul>
45                        <li>réduire la charge cognitive du TechLead,</li>
46                        <li>faire émerger des solutions plus solides,</li>
47                        <li>responsabiliser sans imposer,</li>
48                        <li>et d'éviter les dépendances invisibles</li>
49                    </ul></p>
50                    <p>Un sujet pour celles et ceux qui veulent faire grandir leur impact sans s’épuiser.</p>
51                `,
52                speakers: ['fanny_klauk']
53            },
54            {
55                title: `De l'autocomplete à l'Autopilot : Comment l'IA a transformé ma vie de développeur`,
56                time: '19h30',
57                length: '45 min',
58                type: 'talk',
59                abstract: `
60                    <p>En 2021, Copilot m'aidait à terminer des lignes de code.<br/>
61                        En 2024, je discutais avec lui.<br/>
62                        En 2025, le <b>Context Engineering</b> a marqué un tournant décisif.</p>
63                    <p>Aujourd'hui, en 2026, je ne me contente plus de parler à l'IA — je lui <b>délègue</b>.</p>
64                    <p>GitHub Copilot, Copilot CLI, les Skills, les workflows agentiques, les nouveaux modèles… Je suis passé de la simple assistance à la délégation de pans entiers de mon travail, de la création de projets à l'ouverture et la revue de pull requests, le tout en langage naturel.</p>
65                    <p>Et je ne suis pas le seul : chez GitHub, nos propres équipes produits utilisent ces mêmes capacités pour livrer plus rapidement et repenser la manière dont les logiciels sont conçus.</p>
66                    <p>Ce changement dépasse le cadre des seuls développeurs. Product Managers, SREs, ingénieurs DevOps — ils deviennent tous des bâtisseurs. Il ne s'agit plus seulement d'écrire du code, mais d'exprimer une intention.</p>
67                    <p>Dans cette présentation, je vous montrerai ce qui a fondamentalement changé entre 2025 et 2026, et comment cette évolution m'a transformé : d'un développeur doté d'un excellent assistant à un véritable "<b>builder</b>" capable de piloter de nombreux projets et taches en parallèle.</p>
68                `,
69                speakers: ['tugdual_grall']
70            },
71        ]
72    },
73    {
74        id: '2026_09_29',
75        title: `Quand Javelit rencontre ADK // Ne dessinez plus vos architectures : codez-les !`,
76        date: new Date(2026, 8, 29), //month begin at 0
77        time: '19h00',
78        register: "https://www.meetup.com/nantes-java-user-group/events/316512366/",
79        place: "onepoint",
80        subjects: [
81            {
82                title: `Quand Javelit rencontre ADK ☕`,
83                time: '19h00',
84                length: '30 min',
85                type: 'quickie',
86                abstract: `
87                    <p>Créer un agent IA est devenu accessible grâce à des frameworks comme <b>ADK</b> (Agent Development Kit) ou cagent (Docker). Le véritable défi réside souvent dans son intégration dans une application "user friendly", surtout si le développement frontend n'est pas votre “tasse de thé”.</p>
88                    <p>C’est là que <b>Javelit</b> intervient. Cette librairie, basée sur Streamlit (https://streamlit.io/), permet de construire des interfaces utilisateurs en Java ☕.</p>
89                    <p>Dans ce “Tools in actions”, je vous montrerai comment ce binôme ADK / Javelit permet de créer des applications agentiques fonctionnelles et graphiquement très sympa (enfin vu de la part d’un Javaiste 😁).</p>
90                `,
91                speakers: ['jean_philippe_baconnais']
92            },
93            {
94                title: `Ne dessinez plus vos architectures : codez-les !`,
95                time: '19h30',
96                length: '55 min',
97                type: 'talk',
98                abstract: `
99                <p>Nous connaissons tous ce scénario : une architecture née sur un tableau blanc, figée dans un schéma statique puis lentement oubliée. Le code continue d'évoluer, mais la carte ne correspond plus au territoire. Ce fossé crée une dette de documentation que nous finissons par accepter comme une fatalité.</p>
100                <p></p>
101                <p>Pourtant, le Diagram-as-Code change la donne. En traitant les diagrammes comme du code source, nous gagnons la puissance du versionning (Git), l'analyse des changements (Diffs) et l'automatisation (CI/CD). Mieux encore, l'augmentation des outil de code par l'IA nous permet désormais de générer et maintenir ces modèles très aisément.</p>
102                <p></p>
103                <p>Dans cette session de Live Coding, nous dépasserons la théorie. Nous partirons d'un besoin métier brut (un ADR en Markdown) pour construire, itération après itération, une cartographie vivante avec LikeC4.</p>
104                <p>Nous verrons comment réconcilier la vision (le Pourquoi) et l'implémentation (le Comment) dans un modèle unique, navigable et interactif, intégré au cycle de vie du logiciel.</p>
105                <p></p>
106                <p>Fini les gribouillis obsolètes : compilons la documentation.</p>
107                `,
108                speakers: ['alexis_scolan']
109            },
110        ]
111    },
112    {
113        id: '2026_06_11',
114        title: `L'IA, copilote au quotidien // Spring Boot 4`,
115        date: new Date(2026, 5, 11), //month begin at 0
116        time: '19h00',
117        register: "https://www.meetup.com/nantes-java-user-group/events/314852645/",
118        place: "eklo",
119        subjects: [
120            {
121                title: 'Verre d\'accueil 🍸',
122                time: '19h00',
123                length: '30 min',
124                type: 'hello',
125                abstract: "<p>Pour cette dernière de la saison, nous vous proposons de commencer cette soirée de façon conviviale avec un verre de bienvenue.</p>",
126            },
127            {
128                title: `L'IA, copilote au quotidien`,
129                time: '19h30',
130                length: '30 min',
131                type: 'quickie',
132                abstract: `
133                    <p>Retour d'expérience sur l'utilisation de l'IA au quotidien, dans le cadre des projets professionnels et personnels</p>
134                `,
135                speakers: ['axel_toubiou']
136            },
137            {
138                title: `Spring Boot : Chapitre 4`,
139                time: '20h00',
140                length: '55 min',
141                type: 'talk',
142                abstract: `
143                    <p>Spring Boot 4 est disponible. Même si la baseline reste toujours à Java 17, c’est l’occasion idéale de profiter des nouveautés du langage et du framework. Stéphane commencera par mettre à jour une application existante vers Spring Boot 4.</p>
144                    <p>En chemin, nous verrons comment éviter à l’avenir les NullPointerExceptions en production grâce aux null checks ajoutés dans les projets Spring avec JSpecify.<br/> 
145                       Nous en profiterons aussi pour revoir l’organisation des dépendances : Spring Boot propose désormais des modules plus fins qui offrent davantage de souplesse. <br/>
146                       L’intégration de Jackson 3.0 simplifie la configuration et apporte des réglages plus modernes. <br/>
147                       Enfin, nous découvrirons comment utiliser un RestClient dans de
147s scénarios asynchrones, sans avoir recours aux types réactifs.</p>
148                `,
149                speakers: ['stephane_nicoll']
150            },
151            {
152                title: 'Planche apéro et Cocktail 🧀 🍷',
153                time: '21h',
154                length: '3h',
155                type: 'cocktail',
156                abstract: "<p>Pour finir la soirée en beauté, venez échanger avec nous autour d'un verre et de savoureuses planches apéro 😋</p>",
157            }
158        ]
159    },
160    {
161        id: '2026_05_5',
162        title: `La transactionnalité expliquée // Docker - Compose & Dragon`,
163        date: new Date(2026, 4, 5), //month begin at 0
164        time: '19h00',
165        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/314379188/",
166        place: "qlik",
167        subjects: [
168            {
169                title: `La transactionnalité expliquée`,
170                time: '19h00',
171                length: '30 min',
172                type: 'quickie',
173                abstract: `
174                    <p>Les transactions sont un mécanisme structurant dans de nombreuses applications. Elles permettent en effet de garantir l'intégrité des données en permettant de traiter plusieurs opérations de manière atomique.</p>
175                    <p>Mais comment les transactions fonctionnent-elles sous le capot ?</p>
176                    <p>En nous appuyant sur l'exemple de Postgres, nous explorerons comment les mécanismes du WAL (Write-Ahead Logging) et MVCC (multi-version concurrency control) permettent de garantir cette atomicité, pour le cas unitaire, mais également lors de crash de la base.</p>
177                `,
178                speakers: ['benjamin_cavy']
179            },
180            {
181                title: `Compose & Dragons`,
182                time: '19h30',
183                length: '55 min',
184                type: 'talk',
185                abstract: `
186                    <p>Cette session présente la création d’un univers de RPG avec des agents IA autonomes, chacun dans son propre conteneur Docker.</p>
187                    <p>En utilisant les outils Docker et le Model Context Protocol, chaque personnage — PNJ, monstre ou maître du jeu — interagit via une mémoire partagée et des protocoles d’agents. </p>
188                    <p>Les participants découvriront des architectures IA multi-conteneurs évolutives, l’orchestration d’agents et la communication entre agents.</p></p>
189                `,
190                speakers: ['philippe_charriere', 'guillaume_lours']
191            }
192
193        ]
194    },
195    {
196        id: '2026_04_29',
197        title: `Soirée Git & Développement décentralisé`,
198        date: new Date(2026, 3, 29), //month begin at 0
199        time: '19h00',
200        register: "https://www.meetup.com/nantes-java-user-group/events/314176315/",
201        place: "onepoint",
202        subjects: [
203            {
204                title: `Gitflow c'est bien, Gitbutler c'est mieux !`,
205                time: '19h00',
206                length: '30 min',
207                type: 'quickie',
208                abstract: `
209                    <p>Ah, GitFlow. Ce bon vieux workflow, pilier de nos stratégies de développement, mais aussi source de migraines collectives. Et si on vous disait qu’il y a du nouveau dans la façon de faire ?</p>
210                    <p>GitButler débarque, et il n’est pas là pour plier le linge mais pour révolutionner votre gestion de versions !</p>
211                    <p>Dans cette présentation à deux voix, un développeur et un manager s’associent pour vous raconter, avec humour et pragmatisme, pourquoi GitFlow a besoin d’un coup de jeune et comment GitButler change la donne. Moins de frictions, plus d’efficacité, et un workflow qui s’adapte enfin à vos vrais besoins.</p>
212                    <p>Au programme : un peu de théorie, et du live coding. On vous promet un moment instructif, qui vous donnera envie de repenser vos stratégies et d’enfiler, vous aussi, le costume de GitButler !</p>
213                    <p>PS : Si j'ai convaincu mon manager, pourquoi pas vous ?</p>
214                `,
215                speakers: ['yann_thomas_le_moigne', 'lilian_forget']
216            },
217            {
218                title: `Décentraliser le développement logiciel : Pourquoi ? Comment ?`,
219                time: '19h30',
220                length: '50 min',
221                type: 'talk',
222                abstract: `
223                    <p>Les technologies décentralisées ne manquent pas. Internet par exemple, conçu pendant la guerre froide et qui interconnecte au moyen de protocoles ouverts de multiples acteurs de manière complètement décentralisée dans un souci de résilience en cas de conflit de haute intensité ; ou Git, certainement l'outil plus utilisé dans le monde du développement logiciel pour la gestion de versions, a été développé pour gérer le développement du noyau Linux avec des centaines de contributeurs.</p>
224                    <p>Et pourtant les plate-formes propriétaires et centralisées sont devenues ultra-dominantes, que ce soit dans le monde du code source ouvert ou celui de l'entreprise, ce qui s'explique aisément pour des raisons de commodité (il est bien plus simple d'utiliser une plate-forme centralisée que de devoir configurer et gérer des outils décentralisés) et de coût (un outil centralisé évite des coûts d'infrastructure et de gestion). Mais la commodité a un revers, c'est la dépendance envers un prestataire qui a sa propre logique et se retrouve de facto contrôler des données et des processus potentiellement critiques.</p>
225                    <p>Cette session est un retour d'expérience sur quelques outils et processus mis en oeuvre dans notre équipe pour développer les projets dont elle est responsable de manière complètement décentralisée :
226                    <ul>
227                    <li>comment nous utilisons Radicle (https://radicle.xyz), une "forge" basée sur Git fonctionnant en pair-à-pair et complètement décentralisée, pour remplacer (en partie) GitHub ;</li>
228                    <li>
228comment nous développons des outils sur notre infrastructure de blockchain (Cardano) pour tracer les dépendances entre projets, les montées de version, et l'accès à des infrastructures mutualismes ;</li>
229                    <li>l'impact d'un mode de fonctionnement fortement décentralisé sur le fonctionnement de l'équipe et ses pratiques de développements, telles que le pair-programming, la revue de code, l'intégration continue ;</li>
230                    <li>les possibilités de financement participatif décentralisées offertes par des outils comme https://drips.network.</li>
231                    </ul>
232                    </p>
233                    <p>Il s'agira d'une présentation avec des morceaux de live coding. L'objectif de cette session est de partager mon expérience et ma prise de conscience de l'importance d'adopter des processus de développements plus résilient, autonomes, et potentiellement frugaux dans l'espoir que les participants aient envie d'expérimenter ces outils et pratiques dans leur propre environnement.</p>
234                `,
235                speakers: ['arnaud_bailly']
236            }
237        ]
238    },
239    {
240        id: '2026_03_17',
241        title: `La transactionalité expliquée // JooQ une alternative à JPA`,
242        date: new Date(2026, 2, 17), //month begin at 0
243        time: '19h00',
244        register: "https://www.meetup.com/fr-fr/nantes-java-user-group/events/313630199/",
245        place: "kleegroup",
246        subjects: [
247            {
248                title: `La transactionalité expliquée`,
249                time: '19h00',
250                length: '30 min',
251                type: 'quickie',
252                abstract: `
253                    <p>Les transactions sont un mécanisme structurant dans de nombreuses applications. Elles permettent en effet de garantir l'intégrité des données en permettant de traiter plusieurs opérations de manière atomique.</p>
254                    <p>Mais comment les transactions fonctionnent-elles sous le capot ?</p>
255                    <p>En nous appuyant sur l'exemple de Postgres, nous explorerons comment les mécanismes du WAL (Write-Ahead Logging) et MVCC (multi-version concurrency control) permettent de garantir cette atomicité, pour le cas unitaire, mais également lors de crash de la base.</p>
256                `,
257                speakers: ['benjamin_cavy']
258            },
259            {
260                title: `JooQ une alternative à JPA`,
261                time: '19h30',
262                length: '55 min',
263                type: 'talk',
264                abstract: `
265                    <p>Si vous pensez que l'on va parler d'un nouveau meuble d'une marque scandinave, vous vous êtes trompé d'endroit.</p>
266                    <p>Nous allons voir comment écrire du SQL type-safe en Java sans y laisser notre santé mentale. L'objectif ? Des requêtes aussi robustes qu'un serveur en prod, et aussi majestueuses qu'un petit poney à paillettes galopant dans une prairie de Clean Code. Fini le jeu des devinettes à base de concaténation de chaînes avec votre base de données !</p>
267                `,
268                speakers: ['thibault_duperron']
269            }
270
271        ]
272    },
273    {
274        id: '2026_02_10',
275        title: `Un mot de passe ? Non merci // Devenez un expert du debug en JS`,
276        date: new Date(2026, 1, 10), //month begin at 0
277        time: '19h00',
278        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/313064896/",
279        place: "younup",
280        subjects: [
281            {
282            title: `Un mot de passe ? Non merci !`,
283            time: '19h00',
284            length: '30 min',
285            type: 'quickie',
286            abstract: `
287            <p>Les mots de passe, on en a tous marre. Entre les règles tordues, les resets toutes les deux semaines, et les tentatives de phishing, c’est plus de la sécu, c’est du sport.</p>
288            <p>Heureusement, les passkeys arrivent avec une promesse simple : plus de galère, plus de mot de passe. Basées sur WebAuthn (soutenues par Google, Apple, et Microsoft), elles pourraient bien changer notre manière d’authentifier les utilisateurs.</p>
289            <p>Dans ce quickie, on voit ensemble :</p>
290            <ul>
291                <li>Ce qu’est une passkey, concrètement</li>
292                <li>Pourquoi c’est plus sécurisé et plus simple</li>
293                <li>Un retour d'expérience sur l'intégration dans une application réelle</li>
294                <li>Une rapide démo du fonctionnement des passkeys</li>
295            </ul>
296            `,
297            speakers: ['quentin_aubert']
298            },
299            {
300            title: `Devenez un expert du debug en JS`,
301            time: '19h30',
302            length: '55 min',
303            type: 'talk',
304            abstract: `
305            <p>Vous parsemez votre code de console.log en espérant un miracle ?</p>
306            <p>Et si, au lieu de subir JavaScript, vous appreniez enfin à l'écouter ?</p>
307            <p>JavaScript n’est pas un moteur silencieux : à travers la console, la pile d’appels et les outils de profilage, il nous envoie constamment des signaux. Le tout est de savoir les décoder.</p>
308            <p>Dans cette session, nous allons briser le quatrième mur : le code de cette présentation devient notre propre laboratoire. Nous utiliserons les Chrome DevTools comme un véritable outil de précision.</p>
309            <p>Observer l'invisible : Maîtriser les différents types de breakpoints et les Live Expressions pour suivre l'état de vos données sans polluer votre code.</p>
310            <p>Oubliez les slides statiques. Ici, on travaille "à cœur ouvert" et on découvre ensemble comment devenir un expert du debug.</p>
311            <p>Préparez-vous à tendre l'oreille !</p>
312            `,
313            speakers: ['romain_guinand']
314            }
315
316        ]
317    },
318    {
319        id: '2026_01_29',
320        title: `Sécuriser la CI // Pseudonymisation à l'échelle`,
321        date: new Date(2026, 0, 29), //month begin at 0
322        time: '19h00',
323        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/312865339/",
324        place: "qlik",
325        subjects: [
326            {
327                title: `Sécuriser vos Pipelines GitHub Actions : Meilleures Pratiques et Stratégies`,
328                time: '19h00',
329                length: '30 min',
330                type: 'talk',
331                abstract: `
332                <p>Dans un monde où les attaques de la chaîne d'approvisionnement logicielle sont de plus en plus fréquentes, sécuriser vos pipelines CI/CD est devenu une priorité absolue. Cette présentation se concentrera sur les meilleures pratiques et les stratégies avancées pour sécuriser vos pipelines GitHub Actions. Nous explorerons les vulnérabilités courantes, les menaces potentielles et les solutions concrètes pour les atténuer.</p>
333                `,
334                speakers: ['adrien_pessu']
335            },
336            {
337                title: `Pseudonymisation à l'échelle`,
338                time: '19h30',
339                length: '55 min',
340                type: 'talk',
341                abstract:
342                `
343                <p>Face à une pression réglementaire croissante sur la protection des données personnelles (RGPD, IA Act, DORA), l'équipe LINO partage son retour d’expérience sur la mise en œuvre d’un projet de pseudonymisation à l’échelle réalisé pour la Branche Grand Public et Numérique (BGPN) de La Poste, et couvrant 70 applications métiers.</p>
344                <p>Ce témoignage met en lumière les choix structurants, depuis la sélection de l’outil LINO jusqu'à la mise en œuvre progressive du projet. Il revient également sur les difficultés rencontrées : trouver un équilibre entre protection et utilité des données, pallier la perte de la connaissance applicative et garantir la cohérence inter-applicative. Enfin, il présente les leviers activés pour répondre efficacement à ces enjeux.</p>
345                <p>Cette présentation est animée le créateur de la solution LINO et le porteur de l'offre de service associée, qui ont participé à la conception et la mise en œuvre de ce projet qui a duré deux ans et qui a notamment contribué à l’obtention du label « Numérique Responsable » pour la BGPN.</p>
346                `,
347                speakers: ['yann_le_saint', 'adrien_aury']
348            }
349        ]
350    },
351    {
352        id: '2025_12_11',
353        title: `Soirée Lambda, Spring & Cursor AI`,
354        date: new Date(2025, 11, 11), //month begin at 0
355        time: '19h00',
356        register: "https://www.meetup.com/fr-fr/aws-nantes/events/311871294/",
357        place: "sqli",
358        subjects: [
359            {
360                title: `De l'idée à la réalité avec AWS Lambda et Spring : un REX projet Spring Boot natif`,
361                time: '19h00',
362                length: '45 min',
363                type: 'talk',
364                abstract: `
365                <p>Dernièrement, nous avons eu l'opportunité de réaliser un projet en Spring Boot native avec GraalVM dès sa mise en release. Le but étant de faire tourner le backend de notre projet en FaaS sur des lambdas AWS. Ce projet a été un succès client mais techniquement c'est une autre histoire.</p>
366                <p>Nous vous proposons une rétrospective technique de ce projet avec les principales problématiques que nous avons rencontrées, comme la reflection et les ressources de build, et la façon dont nous y avons répondu. Car cela peut aussi vous arriver si cette techno vous intéresse.</p>
367                `,
368                speakers: ['valentin_dubuisson']
369            },
370            {
371                title: `Cursor ou comment mixer Code & IA pour être plus productif !`,
372                time: '19h45',
373                length: '45 min',
374                type: 'talk',
375                abstract:
376                `
377                <p>Cursor AI s'est imposé comme compagnon de code avec un workflow de développement simple et intégré.</p>
378                <p>Au delà de nous aider à créer un projet depuis zéro en respectant les bonnes pratiques, ce nouvel IDE sait répondre à beaucoup de choses...</p>
379                <p>Disponible avec différents modèles, je montrerai quelques exemples de génération de code pertinente tout en partageant les bonnes pratiques autour de Cursor : Context Engineering, AGENTS.md, Plan Mode, Manipulation du navigateur, Serveur MCP.</p>
380                <p>Vous souhaitez générer des apps sans coder mais vous ne savez pas par où commencer ? Vous avez essayé et vous n'êtes pas convaincu ?</p>
381                <p>Venez assister à ce talk pour apprendre comment bien générer du code en utilisant l'IA !</p>
382                `,
383                speakers: ['julien_landure']
384            }
385        ]
386    },
387    {
388        id: '2025_11_26',
389        title: `Quand l'IA fait le tri de manière industrialisée // Construit un chatbot infusé à l'IA avec LangChain4j`,
390        date: new Date(2025, 10, 26), //month begin at 0
391        time: '19h00',
392        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/311965158/",
393        place: "onepoint",
394        subjects: [
395            {
396                title: `Quand l'IA fait le tri de manière industrialisée`,
397                time: '19h00',
398                length: '45 min',
399                type: 'talk',
400                abstract: `
401                <p>L’IA fait le tri dans vos mails, dans vos agendas et aussi dans vos … colis et lettres. Avec plus de 50 millions d’objets triés par jour et des contraintes de temps de détections inférieures à 500ms, La Poste a réussi à industrialiser l’IA afin de réduire le tri manuel de 20% à 5%.</p>
402                <p> Pour réussir, La Poste en partenariat avec Thales, a développé une plateforme dédiée à la gestion des données et des modèles d'IA. Cette plateforme assure l’évolutivité, l’orchestration, et la performance des modèles de computer vision, déployés en Egde dans les centres de tri et en Datacenter. </p>
403                <p> Avec plus de 30 modèles d’IA, les défis comme reconnaitre une adresse destinataire sur un pli noir ou s’assurer que l’IA ne mélange pas les informations destinataire/expéditeur ont conduit l’équipe à créer des pipelines d'entrainement, d'évaluation et de déploiement des modèles. </p>
404                <p> Après 5 ans d'IA en production, ce talk sera l'occasion de partager les solutions mises en place pour répondre aux contraintes de performance, de résilience ou encore d'approvisionnement de GPU sur des infrastructures IAAS et PAAS.</p>
405                `,
406                speakers: ['guillaume_leblondel', 'nicolas_payneau']
407            },
408            {
409                title: `Construit un chatbot infusé à l'IA avec LangChain4j`,
410                time: '19h30',
411                length: '45 min',
412                type: 'talk',
413                abstract:
414                `
415                <p><i>(Présentation en 🇫🇷)</i></p>
416                <p>
417                Add intelligent conversational AI in your Java application! 
418                </p>
419                <p>
420                This presentation demonstrates how to build a production-ready chatbot from scratch using LangChain4j, 
421                progressing from basic chat functionality to a sophisticated AI assistant with memory, content moderation, 
422                document retrieval (RAG), and business integration.
423                </p>
424                `,
425                speakers: ['antonio_goncalves']
426            }
427        ]
428    },
429    {
430        id: '2025_10_09',
431        title: `DIY : ma base de connaissance en bash // Le chaos engineering expliqué à mon neveu de 10 ans`,
432        date: new Date(2025, 9, 9), //month begin at 0
433        time: '19h00',
434        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/311275374/",
435        place: "sfeir",
436        subjects: [
437
438            {
439                title: `DIY : Ma base de connaissance en bash`,
440                time: '19h00',
441                length: '15 min',
442                type: 'quickie',
443                abstract:
444                    `
445                <p>Après avoir testé beaucoup d'outils pour gérer ma base de connaissances, sans réellement trouver mon bonheur, j'ai fini par créer mon propre outil en bash.</p>
446                <p>Venez découvrir le résultat final ainsi que l'envers du décor.</p>
447                `
448                ,
449                speakers: ['manuel_boillod']
450            },
451
452            {
453                title: `Le chaos engineering expliqué à mon neveu de 10 ans`,
454                time: '19h30',
455                length: '45 min',
456                type: 'talk',
457                abstract:
458                    `
459                <p>L'ingénierie du chaos expliquée de façon ludique et humoristique en mode vulgarisation technique, à l'aide de lego, de jenga et d'une application codée à la main par un non developpeur</p>
460                `,
461                speakers: ['michael_dangleterre']
462            }
463        ]
464    },
465    {
466        id: '2025_09_18',
467        title: `🦦 Comprendre l'Usine Logicielle // 📝 Event Sourcing avec Kotlin & Spring`,
468        date: new Date(2025, 8, 18), //month begin at 0
469        time: '19h00',
470        register: "https://www.meetup.com/nantes-java-user-group/events/310831073/",
471        place: "zenika",
472        subjects: [
473
474            {
475                title: `🦦 Une loutre pour comprendre l'Usine Logicielle`,
476                time: '19h00',
477                length: '15 min',
478                type: 'quickie',
479                abstract:
480                    `
481                <p>Suivez la visite de l'usine de loutres en bois 'WoOtter'.</p>
482                <p>Au fil d'une métaphore d'usine de produits mignons manufacturés, découvrez ou clarifiez votre vision de l'usine logicielle.</p>
483                <p>Un outil pour comprendre ou expliquer ce qu'est une usine logicielle à (presque) n'importe qui.</p>
484                `
485                ,
486                speakers: ['vincent_thiebault']
487            },
488
489            {
490                title: `📝  Si la facture électronique m'était comptée`,
491                time: '19h30',
492                length: '1h',
493                type: 'talk',
494                abstract:
495                    `
496                <p>La légende dit que de nombreuses factures ne seraient pas tracées. Afin de collecter plus précisément les taxes du royaume, l'argentier du roi va imposer au peuple la facturation électronique. Suivez nous dans les méandres et les pièges de la mise en place d'une architecture événementielle vouée à tracer les états de la facture, de son émission à son règlement... </p>
497                <p>Comment mettre à profit un langage intuitif, <b>Kotlin</b>, en adoptant le paradigme réactif de <b>Spring Webflux</b>, combiné à la puissance de <b>Kafka</b> pour implémenter un système événementiel basé sur les concepts d'<b>Event Sourcing</b> et <b>State Pattern</b> qui garantira l'historisation des factures électroniques et la résilience à travers les âges.</p>
498                `
499                ,
500                speakers: ['jeremy_lejeune', 'gregory_bevan', 'jerome_landreau']
501            }
502        ]
503    },
504
505    {
506        id: '2025_06_17',
507        title: `🍸 // Enter the Daggerverse ! // Suivez le lapin blanc et plongez dans la JVM // 🧀 🍷`,
508        date: new Date(2025, 5, 17), //month begin at 0
509        time: '19h00',
510        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/307959282",
511        place: "adresse_gare_sud",
512        subjects: [
513            {
514                title: 'Verre d\'accueil 🍸',
515                time: '19h00',
516                length: '30 min',
517                type: 'hello',
518                abstract: "<p>C'est bientôt l'été ! Nous vous invitons donc à débuter cette dernière soirée de façon conviviale avec un verre de bienvenue.</p>",
519            },
520            {
521                title: `Enter the Daggerverse !`,
522                time: '19h30',
523                length: '30 min',
524                type: 'quickie',
525                abstract: `
526                    <p>Si je vous dis Dagger ? Cela ne vous parle peut-être pas. Si je vous dis... Docker ? Là, ça vous parle !</p>
527                    <p>Dagger, c'est le moteur de CI/CD développé par Solomon Hykes, le papa de Docker. Un OVNI dans l'univers des moteurs de CI/CD, à la fois une alternative et un complément à Jenkins, Circle, GitHub Actions. Mais quid du Daggerverse ?</p>
528                    <p>Laissez-nous vous embarquer dans ce nouvel univers, laissez nous vous faire tomber dans... le Daggerverse of madness !!</p>
529                    <p>Dans ce talk, vous :
530                        <ul>
531                            <li>prendrez en main Dagger avec le langage de votre choix : Typescript, Go ou Python (et qui sait, Java ?)</li>
532                            <li>découvrirez comment publier votre propre module Dagger dans... le Daggerverse !</li>
533                        </ul>
534                    </p>
535                    <p>Vous découvrirez même comment en évitant le push and pray, vous augmentez votre productivité, votre satisfaction et réduisez votre impact énergétique.</p>
536                    <p>Et vous serez à tout jamais séduit par Dagger et son univers à part entière.</p>
537                    `,
538                speakers: ['emeric_martineau', 'julien_haumont']
539            },
540            {
541                title: `Comme Alice, osez suivre le lapin blanc et plongez dans la JVM pour comprendre son fonctionnement`,
542                time: '20h00',
543                length: '1h',
544                type: 'talk',
545                abstract: `
546                    <p>Tout commence avec une mise à jour de Java 17 vers Java 21.0.1 qui fait planter un de nos benchmarks. Notre unique symptôme: une variable locale non null envoie une NullPointerException.</p>
547                    <p>Ensemble, on va remonter dans le temps pour refaire l'analyse de ce bug. Lors de ce voyage, on va plonger dans la JVM, comprendre son fonctionnement et creuser pour trouver la root-cause de ce bug corrigé en 21.0.3.</p>
548                    <p>A l'issu de cette présentation, vous comprendrez que c'était à votre portée. Sans le savoir, vous êtes déjà capable de compiler votre propre JDK pour diagnostiquer et corriger des bugs. Qui sait, vous deviendrez peut-être contributeur Java ?</p>
549                    `,
550                speakers: ['antoine_dessaigne']
551            },
552            {
553                title: 'Planche apéro et Cocktail 🧀 🍷',
554                time: '21h',
555                length: '3h',
556                type: 'cocktail',
557                abstract: "<p>Et pour clôturer la soirée en beauté, restez discuter avec nous autour d'un verre et de délicieuses planches apéro 😋</p>",
558            }
559        ]
560    },
561    {
562        id: '2025_05_15',
563        title: `Signals : "Nouvelle" Norme des Frameworks Web // C'est pas le réseau, ça ping Marty !`,
564        date: new Date(2025, 4, 15), //month begin at 0
565        time: '19h00',
566        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/307462842",
567        place: "kleegroup",
568        subjects: [
569            {
570                title: `Signals : "Nouvelle" Norme des Frameworks Web`,
571                time: '19h00',
572                length: '30 min',
573                type: 'quickie',
574                abstract: `
575                    <p>Venez découvrir "Signals", concept clé du développement Web de demain, qui date pourtant de... 2010.</p>
576                    <p>Dans cette courte conférence à destination des développeurs Frontend, vous apprendrez que l'écosystème Web a bien mûri en 10, notamment en ce qui concerne la gestion de l'état de vos applications.</p>
577                    <p>Que vous soyez développeurs Angular, React, Vue, Svelte, ou tout simplement VanillaJS, vous êtes concerné par ce changement !</p>
578                    <p>L'objectif de Signals est de fournir une interface unique et commune à l'ensemble des frameworks Web, afin de gérer leurs variables réactives, tout en restant simple et performant.</p>
579                    <p>Cette présentation s'appuiera sur des portions de code, afin de démontrer l'intérêt de cette nouvelle notion et comment l'implémenter dans nos usages.</p>
580                    <p>"À l'aube d'une grande aventure", embarquerez-vous à bord de ce talk, à la recherche de l'expérience de développement idéale ?"</p>
581                    `,
582                speakers: ['damien_chazoule']
583            },
584            {
585                title: `C'est pas le réseau, ça ping Marty !`,
586                time: '19h30',
587                length: '45 min',
588                type: 'talk',
589                abstract: `
590                    <p>Vous ne comprenez pas pourquoi votre application est injoignable alors que ça ping ?</p>
591                    <p>Durant cette session, nous aborderons les fondamentaux du réseau, tels que la connectivité, le routage et le filtrage.</p>
592                    <p>Nous parlerons également des métriques de référence, comme la latence, la bande passante et les pertes de paquets.</p>
593                    <p>Enfin, nous reviendrons sur les problèmes réseaux fréquemment rencontrés par les développeurs.</p>
594                    `,
595                speakers: ['cynthia_treger', 'david_santiago']
596            }
597        ]
598    },
599    {
600        id: '2025_04_29',
601        title: `Cats' Tail ou Comment créer son propre Jeu de Rôle avec l'Agentic AI`,
602        date: new Date(2025, 3, 29), //month begin at 0
603        time: '19h00',
604        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/306768959",
605        place: "qlik",
606        subjects: [
607            {
608                title: `Cats' Tail ou Comment créer son propre Jeu de Rôle avec l'Agentic AI`,
609                time: '19h00',
610                length: '1h30',
611                type: 'talk',
612                abstract: `
613                    <p>Vous êtes un Développeur ou une Développeuse, fan de Jeu de Rôle et aimez les chats ? Alors venez découvrir Cats' Tail, <b>un Jeu de Rôle transformant des concepts complexes d'IA en une expérience de jeu immersive et évolutive</b> !</p>
614                    <p></p>
615                    <p>Durant ce talk, vous découvrirez <b>comment mettre en oeuvre les techniques d'Agentic AI</b> afin de créer un Maître du Jeu (MJ) orchestrant plusieurs agents, chacuns spécialisé dans une tâche particulière.</p>
616                    <p></p>
617                    <p>En Bonus : Enrichir l'expérience en persistant les échanges entre joueurs et MJ dans une base de données afin de renforcer l'immersion des joueurs et joueuses :)</p>
618                    `,
619                speakers: ['arnaud_jean', 'tiffany_souterre']
620            }
621        ]
622    },
623    {
624        id: '2025_03_12',
625        title: "REX: Oxygen, le Design System de Doctolib // Mountain Quest: Du Camp de Base au Sommet - Une Aventure Product & Tech",
626        date: new Date(2025, 2, 12), //month begin at 0
627        time: '19h00',
628        register: "https://www.meetup.com/nantes-java-user-group/events/306401890",
629        place: "doctolib",
630        subjects: [
631            {
632                title: "REX: Oxygen, le Design System de Doctolib",
633                time: '19h00',
634                length: '0h30',
635                type: 'quickie',
636                abstract: `
637                    <p>Chez Doctolib, on développe nos produits avec un Design System; c a d que nos designers et nos développeurs ont un langage commun pour imaginer et faire évoluer nos produits.</p>
638                    <p>Mais en fait, c'est quoi un Design System ? Et pourquoi chez Docto, il y a une équipe dédiée ?</p>
639                    <p>Une Intro et Rex de nos usages. Facile d'accès même pour les devs backs ;)</p>
640                `,
641                speakers: ['julien_tanay']
642            },
643            {
644                title: "Mountain Quest: Du Camp de Base au Sommet - Une Aventure Product & Tech",
645                time: '19h30',
646                length: '0h45',
647                type: 'talk',
648                abstract: `
649                    <p>Embarquez pour une expédition chez Doctolib, où le Product Manager (votre cartographe) et l'Engineering Manager (votre guide de montagne) unissent leurs forces pour mener l'équipe vers de nouveaux sommets. Découvrez comment nous avons construit des équipes autonomes qui allient vision stratégique et expertise tactique.</p>
650                    <p>Dans cette aventure, nous vous dévoilerons comment notre équipe :
651                    <ul>
652                    <li>Trace des voies ambitieuses tout en maîtrisant un terrain legacy technique</li>
653                    <li>Équipe ses membres avec les bons outils et le mindset nécessaire à la réussite</li>
654                    <li>Gravis les défis techniques avec agilité</li>
655                    <li>Cultive l'exploration et  la prise de risque maîtrisée</li>
656                    <li>Transforme les obstacles techniques en tremplins</li>
657                    </ul>
658                    </p>
659                    <p>À travers l'expérience de notre équipe plateforme, nous partagerons des stratég
659ies éprouvées qui permettent aux équipes d'atteindre leurs sommets tout en gardant leur esprit d'innovation. De la gestion des clients internes aux exigences réglementaires, nous révélerons comment maintenir un esprit startup dans un environnement  complexe.</p>
660                    `,
661                speakers: ['julien_bideau', 'celine_forestier']
662            }
663        ]
664    },
665    {
666        id: '2025_02_25',
667        title: "Vous saurez tout sur les type systems // Développer pour le mode hors-ligne avec le web natif",
668        date: new Date(2025, 1, 25), //month begin at 0
669        time: '19h00',
670        register: "https://www.meetup.com/nantes-java-user-group/events/306045925",
671        place: "qlik",
672        subjects: [
673            {
674                title: "Vous saurez tout sur les type systems",
675                time: '19h00',
676                length: '0h45',
677                type: 'talk',
678                abstract: `
679                    <p>Vous avez déjà entendu que JavaScript était un langage au typage dynamique mais faible ? Que la grande force de Rust réside dans son typage statique et fort ? On vous a déjà parlé du concept de duck typing en Python ? Ou encore l’inférence de type qui a bouleversé Java en version 10 avec le mot-clé var ?</p>
680                    <p></p>
681                    <p>Ces termes peuvent paraître complexes, mais pas de panique, c'est normal. Chaque langage a son propre type system et il existe de nombreux termes pour le décrire. Comprendre ces termes nous permet de mieux comprendre le fonctionnement du langage et sa philosophie.</p>
682                    <p>Ce talk démystifiera les termes les plus importants pour que vous ne soyez plus dérouté·e·s quand vous entendrez « trop bien ! un langage à typage manifeste, fort et statique ! »</p>
683                `,
684                speakers: ['pierre_gradot']
685            },
686            {
687                title: "Développer pour le mode hors-ligne avec le web natif",
688                time: '20h00',
689                length: '0h45',
690                type: 'talk',
691                abstract: `
692                    <p>On a beau vivre au 21e siècle, Internet partout tout le temps, en vrai ça n'existe pas.</p>
693                    <p>Et d'ailleurs est-ce bien souhaitable ?</p>
694                    <p>En revanche, ce qu'on veut c'est avoir accès à notre travail, nos fichiers même si on est au milieu de nulle part. Ou plutôt dans le métro :D</p>
695                    <p>Les API des navigateurs évoluent en permanence et nous fournissent tout ce dont on a besoin pour faire des applications autonomes où nos données sont accessibles tout le temps.</p>
696                    <p>Dans ce talk je vous montre l'architecture que j'utilise dans les applications que je met en prod.</p>
697                    <p>Et comment on peut gérer la synchronisation avec un serveur distant.</p>`,
698                speakers: ['aleth_gueguen']
699            }
700        ]
701    },
702    {
703        id: '2025_01_21',
704        title: "Une identité pour les fédérer toutes // Conventions de l'architecture hexagonale",
705        date: new Date(2025, 0, 21), //month begin at 0
706        time: '19h00',
707        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/305474896",
708        place: "wescale",
709        subjects: [
710            {
711                title: "Une identité pour les fédérer toutes !",
712                time: '19h00',
713                length: '0h30',
714                type: 'quickie',
715                abstract: `
716                    <p>Dans un monde numérique où nos identités sont sollicitées à chaque clic, une question se pose : faut-il vraiment créer un compte à chaque fois que l’on accède à une nouvelle application ?</p>
717                    <p>De FranceConnect aux boutons "Se connecter avec…" que vous croisez partout, ces solutions simplifient nos vies numériques. Mais avez-vous déjà réfléchi à ce qui se passe en coulisses ? Pourquoi pouvez-vous naviguer entre les outils de votre entreprise sans vous réauthentifier ? Et surtout, comment tout cela reste-t-il sécurisé ?</p>
718                    <p>Dans ce talk, je vous propose de découvrir les principes de l’identité fédérée et du Single Sign-On (SSO), ces outils qui rendent votre navigation plus fluide. Nous parlerons des base
718s qui rendent ce système universel et fiable, tout en évoquant brièvement les protocoles qui le soutiennent, comme SAML et OIDC, pour satisfaire votre curiosité technique, sans jamais vous noyer dans les détails.</p>
719                    <p>Que vous soyez un utilisateur intrigué ou un développeur souhaitant explorer ces concepts, vous découvrirez un univers où simplicité et sécurité s’entrelacent pour créer des expériences numériques à la fois puissantes et élégantes.</p>
720                `,
721                speakers: ['sebastien_ferrer']
722            },
723            {
724                title: "Quand les conventions hexagonales ne suffisent plus, ArchUnit à la rescousse",
725                time: '19h45',
726                length: '0h45',
727                type: 'talk',
728                abstract: `
729                    <p>En architecture logicielle, on utilise de nombreuses conventions de design.</p>
730                    <p>Certaines peuvent être renforcées au niveau de l'outil de build ou du langage.</p>
731                    <p>Mais je remarque que le plupart restent de fragiles conventions.</p>
732                    <p>Cependant les développeurs sont faillibles et ces conventions sont bien vite enfreintes consciemment ou non.</p>
733                    <p>J'ai remarqué que le drift de design est souvent détecté trop tard. La dette technique s'est alors installé.</p>
734                    <p>J'apprécie l’architecture hexagonale, dont les interprétations et implémentations varient. Ce qui la rend d'autant plus sensible au drift.</p>
735                    <p>Pour éviter ça, j'ai pris l'habitude de renforcer les conventions de design de mes app hexagonales par des tests d'architecture.</p>
736                    <p>Je vous montre un exemple en Java avec ArchUnit.</p>
737                `,
738                speakers: ['antoine_salesse']
739            }
740        ]
741    },
742    {
743        id: '2024_12_17',
744        title: "🍸 // Crash investigation : au coeur d'une application de ecommerce // Démystifier la création d'opérateurs Kubernetes en Java avec Quarkus // 🧀 🍷",
745        date: new Date(2024, 11, 17), //month begin at 0
746        time: '19h00',
747        register: "https://www.meetup.com/nantes-java-user-group/events/304559809",
748        place: "adresse_gare_sud",
749        subjects: [
750            {
751                title: 'Verre d\'accueil 🍸',
752                time: '19h00',
753                length: '30 min',
754                type: 'hello',
755                abstract: "<p>
755La fin de l'année approche, nous vous invitons donc à débuter cette dernière soirée de façon conviviale avec un verre de bienvenue.</p>",
756            },
757            {
758                title: "Crash investigation : debug en prod d'une application de ecommerce",
759                time: '19h30',
760                length: '0h30',
761                type: 'quickie',
762                abstract: `
763                    <p>Dans cette présentation, je vous invite à me rejoindre <b>dans la peau d’un enquêteur</b>, explorant les subtilités de l’investigation dans une application de distribution de billets de trains.</p>
764                    <p>Le contexte : l'application est basée sur des microservices en <b>Java</b>, bâtie avec <b>Spring Boot</b> et orchestrée par <b>Kubernetes</b>. En apparence, tout semble fonctionner, mais un problème récurrent vient troubler le tableau. De manière sporadique et imprévisible, <b>certains services plantent dès leur démarrage</b>. Pourquoi ? Comment ? Les indices initiaux sont ténus, et rien ne semble expliquer ces défaillances aléatoires.</p>
765                    <p>À travers une exploration minutieuse des couches de l’application, des mécanismes de Spring Boot, Tomcat, Jackson et des rouages de Kubernetes, nous partirons ensemble <b>en quête de l’origine de ces pannes mystérieuses</b>. Ensemble, découvrons qui est le coupable dans cette intrigue logicielle.</p>
766                `,
767                speakers: ['francois_kha']
768            },
769            {
770                title: "Démystifier la création d'opérateurs Kubernetes en Java avec Quarkus",
771                time: '20h00',
772                length: '0h45',
773                type: 'talk',
774                abstract: `
775                    <p>Les <strong>opérateurs Kubernetes</strong> sont devenus un outil essentiel pour simplifier le déploiement et la gestion d'applications complexes. Avec le <strong>Java Operator SDK</strong> et <strong>Quarkus</strong>, développer des opérateurs en Java devient accessible et efficace, même pour les environnements les plus complexes. Ces opérateurs permettent d'automatiser la gestion des <strong>API legacy</strong> et des <strong>sources de données externes</strong> au cluster Kubernetes, tout en restant dans un écosystème familier pour les développeurs Java.</p>
776                    <p>Dans cette présentation pratique, nous allons démystifier le processus de création d'un opérateur Kubernetes en utilisant le Java Operator SDK et Quarkus. Vous découvrirez comment définir des <strong>Custom Resource Definitions (CRDs)</strong> pour modéliser les concepts clés de vos applications, puis comment utiliser Quarkus pour créer des <strong>contrôleurs légers et performants</strong>, capables de surveiller et d'agir sur des ressources du cluster ou des services externes.</p>
777                    <p>Et ce ne sera pas seulement théorique ! Nous allons <strong>coder en direct</strong> pour vous montrer à quel point il est simple de créer un opérateur en Java avec Quarkus. Rejoignez-nous pour une session interactive où nous vous guiderons dans le développement d'un opérateur Kubernetes robuste.</p>
778                `,
779                speakers: ['horacio_gonzalez']
780            },
781            {
782                title: 'Planche apéro et Cocktail 🧀 🍷',
783                time: '21h',
784                length: '3h',
785                type: 'cocktail',
786                abstract: "<p>Et pour clôturer la soirée en beauté, restez discuter avec nous autour d'un verre et de délicieuses planches apéro 😋</p>",
787            },
788        ]
789    },
790    {
791        id: '2024_11_19',
792        title: "Paketo Buildpacks // Sous le capot d'une application JVM",
793        date: new Date(2024, 10, 19), //month begin at 0
794        time: '19h00',
795        register: "https://www.meetup.com/nantes-java-user-group/events/304303223",
796        place: "qlik",
797        subjects: [
798            {
799                title: "Paketo Buildpacks : la meilleure façon de construire des images OCI?",
800                time: '19h00',
801                length: '0h45',
802                type: 'talk',
803                abstract: "<p>Les Buildpacks existent depuis plus de 10 ans ! <br/>" +
804                    "D'abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS (Platform as a Service). <br/>" +
805                    "Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation).  <br/>" +
806                    "Sont-ils une bonne alternative au Dockerfile ?  <br/>" +
807                    "Que sont les buildpacks Paketo ?  <br/>" +
808                    "Quelles communautés les soutiennent et comment ?",
809                speakers: ['anthony_dahanne']
810            },
811            {
812                title: "Sous le capot d'une application JVM - JDK Flight Recorder / JDK Mission Control",
813                time: '19h45',
814                length: '0h45',
815                type: 'talk',
816                abstract: "<p>Java Flight Recorder (JFR) et Java Mission Control (JMC) sont deux outils qui peuvent être utilisés pour diagnostiquer en détail le comportement d'une application, lorsque le monitoring de plus haut niveau, avec des logs, des métriques ou un APM 
816n'est pas suffisant.</p>" +
817                    "<p>JFR est un moyen basé sur les événements pour observer ce qui se passe à l'intérieur d'une JVM. JMC est l'interface utilisateur associée qui nous aide à parcourir les événements JFR. Avec JFR et JMC, nous pouvons avoir des aperçus sur les threads, le comportement de la mémoire, les opérations d'I/O, la configuration du GC, et bien plus encore, en fonction de la configuration de l'enregistrement.</p>" +
818                    "<p>Au travers d'une démo et en utilisant une application exemple, nous examinerons le type d'informations que nous pouvons obtenir en utilisant ces outils, et utiliserons cela pour améliorer la performance globale de notre application.</p>",
819                speakers: ['guillaume_darmont']
820            }
821        ]
822    },
823    {
824        id: '2024_10_29',
825        title: "Retour d'XP sur Accelerate // Comment ingérer 100 Mrd. d'événements",
826        date: new Date(2024, 9, 29), //month begin at 0
827        time: '19h00',
828        register: "https://www.meetup.com/nantes-java-user-group/events/304012594",
829        place: "sii",
830        subjects: [
831            {
832                title: "Accelerate, retour d'XP Decathlon",
833                time: '19h00',
834                length: '0h20',
835                type: 'quickie',
836                abstract: "<p>Au cours de ce quickie après un rappel sur ce qu'est Accelerate, je présenterai comment nous nous en sommes inspiré chez Decathlon et les enseignements que nous en avons tiré</p>",
837                speakers: ['jean-philippe_le-goff']
838            },
839            {
840                title: "Comment ingérer 100 Mrd. d'événements depuis des millions d'appareils par mois ?",
841                time: '19h30',
842                length: '0h45',
843                type: 'talk',
844                abstract: "<p>Lors de cette présentation, vous allez découvrir comment une petite équipe de dév a réussi à monter une infrastructure dans AWS qui répond à des besoins de scalabilité forte, tout en étant robuste et avec des coûts maîtrisés.</p>" +
845                    "<p>Nous allons parcourir la pipeline depuis l’ingestion, en passant par l’agrégation pour finir par la restitution de la donnée.</p>" +
846                    "<p>Nous aborderons beaucoup de services AWS : Lambda, ECS, ELB, Athena, Kinesis & Firehose, et bien d’autres… Nous verrons également comment le tout est déployé.</p>" +
847                    "<p>Enfin, nous aurons un aperçu de comment maîtriser la scalabilité, la sécurité et les coûts au fil du temps.</p>",
848                speakers: ['valentin_maerten']
849            }
850        ]
851    },
852    {
853        id: '2024_10_02',
854        title: "La recherche à l'ère de l'IA // Elasticsearch Query Language: ES|QL",
855        date: new Date(2024, 9, 2), //month begin at 0
856        time: '19h00',
857        register: "https://www.meetup.com/nantes-java-user-group/events/303451947",
858        place: "zenika",
859        subjects: [
860            {
861                title: "La recherche à l'ère de l'IA",
862                time: '19h00',
863                length: '0h45',
864                type: 'talk',
865                abstract: "<p>La recherche ne se contente plus de l'approche maintenant traditionnelle basée sur la fréquence des termes (TF/IDF ou BM25) mais plus sur la tendance actuelle du machine learning où les nouveaux modèles ont ouvert une nouvelle dimension pour la recherche.</p>" +
866                    "<p>Cette conférence donne un aperçu de :" +
867                    "<ul>" +
868                    "<li>La recherche 'Classique' et ses limitations</li>" +
869                    "<li>Qu'est qu'un modèle de machine learning et comment vous pouvez l'utiliser</li>" +
870                    "<li>Comment utiliser la recherche vectorielle ou la recherche hybride dans Elasticsearch</li>" +
871                    "<li>Comment ChatGPT d'OpenAI ou les 'large language models' (LLMs) similaires viennent jouer naturellement avec Elastic</li>" +
872                    "</ul></p>" +
873                    "<p>La démo principale montre comment générer des embeddings à partir de musiques puis comment trouver la musique qui s'approche le plus d'une musique que nous fredonnons 🎵 🎸 🎻.</p>",
874                speakers: ['david_pilato']
875            },
876            {
877                title: "Elasticsearch Query Language: ES|QL",
878                time: '20h00',
879                length: '0h45',
880                type: 'talk',
881                abstract: "<p>Dans cette session sans slides, nous découvrirons par la pratique ce qu'apporte le nouveau language `ES|QL` pour aller fouiller dans nos données indexées dans Elasticsearch et ce, de façon interactive et visuelle.</p>" +
882                    "<p>`ES|QL` et surtout le nouveau moteur derrière l'API `_query` apportent à la fois une syntaxe simplifiée permettant d'affiner vos résultats, étape par étape et ajouter de nouvelles fonctionnalités comme par exemple l'enrichissement de données et la transformation à la volée, directement dans votre requête, mais également des performances inégalées.</p>",
883                speakers: ['david_pilato']
884            }
885        ]
886    },
887    {
888        id: '2024_06_12',
889        title: "Soirée de fin d'année : JUnit 5 // Spring Boot",
890        date: new Date(2024, 5, 12), //month begin at 0
891        time: '19h00',
892        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/301290651",
893        place: "adresse_gare_sud",
894        subjects: [
895            {
896                title: 'Verre d\'accueil 🍸',
897                time: '19h00',
898                length: '0h30',
899                type: 'hello',
900                abstract: "<p>C'est la dernière de la saison, alors nous vous proposons de commencer cette dernière soirée de la meilleure des manières avec un petit verre d'accueil</p>"
901            },
902            {
903                title: "Rendre ses tests aussi clean que son code de prod grâce à JUnit 5 & cie",
904                time: '19h30',
905                length: '0h45',
906                type: 'talk',
907                abstract: "<p>Après avoir développé une nouvelle fonctionnalité, on passe souvent par une phase de refactoring pour essayer de trouver une meilleure implémentation. Mais peut-être qu’on oublie parfois d’améliorer les tests ?</p>" +
908                    "<p>Une fois écrits, les tests serviront non seulement à détecter de potentiels bugs, mais aussi à documenter un comportement et à apporter de la confiance à l’équipe lors des développements suivants. Pour remplir ces fonctions cruciales, une suite de test doit être lisible, compréhensible, facile à enrichir, et exécutable rapidement.</p>" +
909                    "<p>Voyons comment tirer parti d’outils tels que JUnit 5, AssertJ ou Spring Test pour atteindre ces objectifs !</p>",
910                speakers: ['juliette_de_rancourt']
911            },
912            {
913                title: "Rechargez vos applications web avec Spring Boot",
914                time: '20h20',
915                length: '0h45',
916                type: 'talk',
917                abstract: "<p>Si vous faites vivres des applications web, les mettre à jour à la dernière version de Spring n'est pas juste une question de maintenance: c'est aussi le bon moment pour appuyer sur &quote;F5&quote; et recharger votre stack web. Vous pouvez faciliter la vie des développeurs et apporter de la valeur à vos utilisateurs. Avec Spring Boot 3.2, l'équipe Spring vous aide à faire évoluer vos applications selon vos besoins:</p><ul>" +
918                    "<li>Améliorer l'efficacité en production avec les Virtual Threads</li>" +
919                    "<li>Utiliser une API moderne de client HTTP (sans Reactive!) avec RestClient</li>" +
920                    "<li>S'aider des métriques et des traces pour résoudre les incidents en production</li>" +
921                    "<li>Mieux gérer les certificats TLS avec les bundles</li>" +
922                    "<li>Connecter l'application à d'autres systèmes grâce à Docker compose et Testcontainers</li>" +
923                    "<li>Améliorer les temps de démarrage avec CDS ou bien Checkpoint Restore</li>",
924                speakers: ['stephane_nicoll']
925            },
926            {
927                title: 'Petits fours et Cocktail 🍣 🍷',
928                time: '21h20',
929                length: '3h',
930                type: 'summer',
931                abstract: "<p>Et pour bien finir, restez discuter avec nous autour d'un verre et des petits fours 😋</p>",
932            }
933        ]
934    },
935    {
936        id: '2024_05_28',
937        title: "Pizzas et agrégations, ou comment MongoDB a sauvé mon restaurant // Comment j'ai remplacé mon extincteur par un manuel des castors juniors",
938        date: new Date(2024, 4, 28), //month begin at 0
939        time: '19h00',
940        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/300973582",
941        place: "onepoint",
942        subjects: [
943            {
944                title: "Pizzas et agrégations, ou comment MongoDB a sauvé mon restaurant",
945                time: '19h00',
946                length: '0h30',
947                type: 'quickie',
948                abstract: "<p>MongoDB offre un grande flexibilité sur le format des données, mais comment les manipuler lorsqu’on doit modifier des milliers de documents ?</p>" +
949                    "<p>Les agrégations offre une solution simple : faire une pipeline pour éditer les documents, les enrichir ou en récupérer des informations pour générer des métriques globales.</p>" +
950                    "<p>Venez découvrir les agrégations MongoDB à travers l'exemple d'une pizzeria, qui doit modifier l'intégralité de sa base de données suite à un choix culinaire discutable...</p>" +
951                    "</p>",
952                speakers: ['alexis_voisin']
953            },
954            {
955                title: "Comment j'ai remplacé mon extincteur par un manuel des castors juniors",
956                time: '19h45',
957                length: '1h00',
958                type: 'talk',
959                abstract: "<p>Vous en avez marre d'intervenir tout le temps en mode pompier sur vos projets ? Vous ne touchez plus à rien dans le code dans la crainte de tout voir exploser ? Vous aimeriez remettre de la sérénité dans vos refactos de code ?</p>" +
960                    "</p>Prenez vos places pour un entrainement spécial au Software Craftsmanship aux côtés de Riri, Fifi et Loulou qui fera de vous un vrai adepte du scoutisme.</p>" +
961                    "</p>Nous parcourrons et illustrerons, au travers d’exemples concrets, un guide de bonnes pratiques (Clean Code, SOLID, proposition de démarches) vous permettant dans un premier temps d'identifier vos éventuels refactos et par la suite de les suivre et de les traiter.</p>" +
962                    "</p>Installez-vous confortablement et venez récupérer votre médaille de parfait petit scout. 🎖️</p>" +
963                    "</p>",
964                speakers: ['ambre_person', 'gwenael_bec']
965            }
966        ]
967    },
968    {
969        id: '2024_04_03',
970        title: "Github actions // Fusion",
971        date: new Date(2024, 3, 3), //month begin at 0
972        time: '19h00',
973        register: "https://www.meetup.com/fr-FR/nantes-java-user-group/events/299812280/",
974        place: "lepalace",
975        subjects: [
976            {
977                title: "Passe à l'Actions avec GITHUB !",
978                time: '19h00',
979                length: '0h30',
980                type: 'quickie',
981                abstract: "<p>De nos jours, l'automatisation est omniprésente dans nos processus de développement principalement pour les phases de tests, de build et de déploiements.</p>" +
982                    "<p>Au-delà de cette simple automatisation, la plateforme GitHub Actions vous offre la possibilité d'aller encore plus loin en créant vos propres actions personnalisées.</p>" +
983                    "<p>Que l’on soit technique ou fonctionnel, on trouve des avantages concrets dans l'intégration de GitHub Actions dans le processus de développement en automatisant de tâches simples et fastidieuses.</p>" +
984                    "<p>Ce talk permet de découvrir les GitHub Actions personnalisées, en découvrant les étapes de création d'une Github Action en mettant l'accent sur la simplicité et l'efficacité.</p>",
985                speakers: ['aymeric_laleau']
986            },
987            {
988                title: "Bienvenu dans l'ère de Fusion",
989                time: '19h45',
990                length: '1h00',
991                type: 'talk',
992                abstract: "<p>
992Découvrez ce qu'est Yupiik OSS et pourquoi il a été créé comme un framework OSS complet pour simplifier le processus de développement de bout en bout.</p>" +
993                    "<p>Nous commencerons par discuter de l'écosystème IT et Cloud / Java dans lequel nous évoluons aujourd'hui et de ses défis.</p>" +
994                    "<p>Une brève deuxième partie comparera également les modèles Java courants à des solutions plus récentes dans d'autres langages pour voir si nous partons d'un héritage ou si nous sommes juste en avance par rapport à eux.</p>" +
995                    "<p>Enfin, la dernière partie portera sur la façon dont l'écosystème Fusion prend en compte cet état, d'un simple programme CLI à une API ou une application web déployée dans un cluster Kubernetes, mais nous veillerons également à prendre en compte les aspects de sécurité, de déploiement et de documentation (vivante).</p>",
996                speakers: ['romain_manni-bucau', 'francois_papon']
997            }
998        ]
999    },
1000    {
1001        id: '2024_03_12',
1002        title: "Product Owner vs Product Manager // JobRunr",
1003        date: new Date(2024, 2, 12), //month begin at 0
1004        time: '19h00',
1005        register: 'https://www.meetup.com/nantes-java-user-group/events/299386567/',
1006        place: 'sqli',
1007        subjects: [
1008            {
1009                title: "J'suis Product Owner et moi J'suis Product Manager ! Sommes-nous si différents ?",
1010                time: '19h00',
1011                length: '0h15',
1012                type: 'quickie',
1013                abstract: "<p>Lors d’entretiens techniques/fonctionnels que je fais passer à des candidats, je me suis rendu compte que la définition du rôle de Product Manager et Product Owner était parfois confuse et interprétée de différentes manières.</p>" +
1014                    "<p>Afin que vous puissiez alimenter votre réflexion, on évoquera les principales fonctions du Product Owner et du Product Manager. On se fera un avis sur leur complémentarité ou différence et surtout on abordera également quelques clichés qui selon moi ne sont pas fondés.</p>",
1015                speakers: ['julien_boeuf']
1016            },
1017            {
1018                title: "Global Inventory at Scale: How Decathlon manages Stock Worldwide using JobRunr [EN]",
1019                time: '19h30',
1020                length: '1h00',
1021                type: 'talk',
1022                abstract: "<p>In the competitive world of retail, managing stock for 1700 Decathlon stores across 5 continents presented a formidable challenge: maintaining accurate, real-time inventory across diverse time zones. How do you ensure that a football or a snorkeling mask is available when a customer needs it, irrespective of the store's location?</p>" +
1023                    "<p>Join us as we narrate Decathlon's journey through this complex landscape. This talk will dive into our innovative approach - a blend of RFID technology, robotics, custom coding, and the power of JobRunr - an open-source distributed job scheduler. We'll share our journey of exploring various tools and technologies, highlighting how JobRunr emerged as our top choice for its efficiency and scalability. We'll explain how our integration of open-source software, automated systems, and robotics has not only improved inventory accuracy but also enhanced the global shopping experience at our stores. Additionally, we'll show you how JobRunr works and demonstrate its capabilities through a live coding session.</p>" +
1024                    "<p>After this session you will know all about the challenges we faced, the solutions we devised, and how these insights can be practically applied in your own business scenario.</p>" +
1025                    "<p><u>Conférence en anglais</u></p>",
1026                speakers: ['ronald_dehuysser', 'francois-xavier_verryser']
1027            }
1028        ]
1029    },
1030    {
1031        id: '2024_02_15',
1032        title: "Generative AI par la pratique : cas concrets d'utilisation d'un LLM en Java",
1033        date: new Date(2024, 1, 15), //month begin at 0
1034        time: '19h00',
1035        register: 'https://www.meetup.com/nantes-java-user-group/events/298858263/',
1036        place: 'eartsup',
1037        subjects: [
1038            {
1039                title: "Generative AI par la pratique : cas concrets d'utilisation d'un LLM en Java",
1040                time: '19h00',
1041                length: '1h30',
1042                type: 'eartsup',
1043                abstract: "<p>Le NantesJug, Generative AI Nantes, GDG Nantes et GDG Nantes Cloud s'associent pour vous organiser un meetup inédit à Nantes !<br/>
1043" +
1044                    " Venez assister à la conférence de Guillaume Laforge, Developer Advocate chez Google Cloud.<br/>" +
1045                    " RDV le jeudi 15 février à 19h dans les locaux d'e-artsup Nantes, 18 Rue Flandres - Dunkerque 40, 44000 Nantes<br/>" +
1046                    " Generative IA par la pratique : cas concrets d'utilisation d'un LLM en Java, avec l'API PaLM, Gemini et LangChain4J<br/>" +
1047                    " Les Large Language Models (LLM) sont une nouvelle technologie puissante qui peut être utilisée pour une variété de tâches, notamment la génération de texte, la traduction de texte et la rédaction de différents types de contenu créatif. Cependant, les LLMs peuvent être difficiles à utiliser, en particulier pour les développeurs qui ne sont pas expérimentés en Python, la “lingua franca” de l'IA.<br/>" +
1048                    " Alors, qu'en est-il des développeurs Java ? Comment pouvons-nous tirer parti de l'IA générative ?<br/>" +
1049                    " Cette présentation vous montrera comment utiliser les LLMs en Java sans avoir besoin de Python. Nous utiliserons l'API PaLM et Gemini, fournie par les services Google Cloud Vertex AI, pour effectuer une variété de tâches, telles que la recherche dans de la documentation, la génération d'histoires pour enfants, la synthèse du contenu, l'extraction de mots-clés ou d'entités, et plus encore.<br/>" +
1050                    " Et nous plongerons dans les possibilités offertes par le framework LangChain4J pour les développeurs Java !<br/>" +
1051                    " Qui est Guillaume Laforge ? Developer Advocate chez Google Cloud, où il se focalise sur les architectures orientées événement, l'orchestration d'API, et l'intelligence artificielle générative.<br/>" +
1052                    " Dans le monde Java, Guillaume est sans doute plus connu pour avoir c
1052o-fondé le langage de programmation Apache Groovy, et pour être un des membres fondateurs du podcast tech Les Cast Codeurs.</p>",
1053                speakers: ['guillaume_laforge']
1054            }
1055        ]
1056    },
1057    {
1058        id: '2024_01_23',
1059        title: "JCon Europe 2023 // Memory layout & Performance en Java",
1060        date: new Date(2024, 0, 23), //month begin at 0
1061        time: '19h00',
1062        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/298360020/',
1063        place: 'qlik',
1064        subjects: [
1065            {
1066                title: "Retour sur le JCon Europe 2023",
1067                time: '19h00',
1068                length: '20 min',
1069                type: 'quickie',
1070                abstract: "<p>Description des thèmes principaux abordés lors du Jcon Europe de juin 2023</p>",
1071                speakers: ['jean_francois_albenque']
1072            },
1073            {
1074                title: "Memory layout & Performance en Java",
1075                time: '19h30',
1076                length: '60 min',
1077                type: 'talk',
1078                abstract: "<p>En quoi l'agencement des objets mémoire joue t'il sur nos perfs ? Quels leviers/outils avons-nous ? C'est le but de ce talk</p>",
1079                speakers: ['jerome_moliere']
1080            }
1081        ]
1082    }, {
1083        id: '2023_12_07',
1084        title: "🍸 Soirée de fin d'année 🍸 Podman et Hello Quarkus 3",
1085        date: new Date(2023, 11, 7), //month begin at 0
1086        time: '19h00',
1087        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/297121443',
1088        place: 'les_brasses',
1089        subjects: [
1090            {
1091                title: 'Verre d\'accueil 🍸',
1092                time: '19h00',
1093                length: '30 min',
1094                type: 'hello',
1095                abstract: "<p>C'est bientôt la fin de l'année, alors nous vous proposons de commencer cette dernière soirée de la meilleure des manières avec un petit verre d'accueil</p>",
1096            }, {
1097                title: "Podman Desktop: Open Source GUI pour conteneurs et Kubernetes",
1098                time: '19h30',
1099                length: '30 min',
1100                type: 'quickie',
1101                abstract: "Les conteneurs sont omniprésents dans le monde actuel du développement logiciel, mais pour les développeurs, cela peut être intimidant, en particulier avec les divergences entre les environnements locaux et de production. <br/>" +
1102                    "Dans ce talk, nous vous présenterons Podman Desktop qui comble cet écart. Il s'agit d'une interface graphique (GUI) entièrement open-source qui simplifie les workflows de conteneurs et est compatible avec Podman, Lima, Docker, et bien plus encore. Plateforme idéale pour interagir avec les conteneurs, Podman Desktop fournit également une interface utilisateur pour travailler avec vos environnements Kubernetes. Vous pouvez aussi configurer vos clusters locaux (avec MiniKube et KinD). <br>" +
1103                    "Dans la démo nous verrons comment Podman Desktop permet de faciliter la transition des conteneurs vers les environnements Kubernetes. Vous apprendrez comment Podman Desktop peut être le tremplin qui dynamise vos processus de développement de conteneurs !<br>",
1104                speakers: ['stevan_le_meur']
1105            }, {
1106                title: "Hello Quarkus 3!",
1107                time: '20h00',
1108                length: '60 min',
1109                type: 'talk',
1110                abstract: "Quarkus est une stack pour écrire des applications Java pour le Cloud. En réduisant l’emprunte mémoire et le temps de démarrage, les applications Quarkus permettent en autre d’augmenter la densité de déploiement, le développement d'application serverless en Java, un meilleur comportement dans Kubernetes…<br>" +
1111                    "La première release publique de Quarkus a été faite en Mars 2019. Nous voilà 4 ans plus tard avec Quarkus 3.x. Entre temps, Quarkus a grandi, son écosystème s’est enrichi. Mais, Quarkus est resté fidèle à ses principes.<br>" +
1112                    "Cette présentation rappelle les points fondamentaux de Quarkus (build-time principle, reactive core, container-first...) et explique leur évolution au cours de ces 4 dernières années ainsi que les nouveautés de Quarkus 3.x tels que la nouvelle dev ui, l’intégration d’Hibernate 6, le passage à Jakarta et à Flow, le support des threads virtuels (project loom), les différentes améliorations de l’expérience pour les développeurs, le support des architectures ARM…<br>",
1113                speakers: ['clement_escoffier']
1114            },
1115            {
1116                title: 'Petits fours et Cocktail 🍣 🍷',
1117                time: '21h',
1118                length: '3h',
1119                type: 'winter',
1120                abstract: "<p>Et pour bien finir, restez discuter avec nous autour d'un verre et des petits fours 😋</p>",
1121            },
1122        ]
1123    }, {
1124        id: '2023_11_09',
1125        title: "Azerty, Qwerty, peut-on faire mieux ? // Retourner le cerveau de sa Gameboy",
1126        date: new Date(2023, 10, 9), //month begin at 0
1127        time: '19h00',
1128        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/296909012',
1129        place: 'zenika',
1130        subjects: [
1131            {
1132                title: "Azerty, Qwerty, peut-on faire mieux ?",
1133                time: '19h00',
1134                length: '20 min',
1135                type: 'quickie',
1136                abstract: `<p>Qwerty, Bépo, dvorak, colemak, workman... autant de dispositions de touches sur les claviers plus ou moins optimisées. Je vous présenterais celle que j'utilise depuis plus d'un an et quels bénéfices j'en ai tiré et les points durs. #mechkeyboard #diy</p>`,
1137                speakers: ['guillaume_membre'],
1138            },
1139            {
1140                title: "Retourner le cerveau de sa Gameboy et les attraper (vraiment) tous 💪",
1141                time: '19h30',
1142                length: '60 min',
1143                type: 'talk',
1144                abstract: `<p>Vous avez 10 ans. Vous êtes assis sous un arbre dans votre jardin, et vous jouez à la Gameboy Pocket. La vie est douce. Soudain, votre meilleur ami débarque de nulle part, sa cartouche de Pokémon Bleu dans la main, et vous crie quelque chose ! Il le jure sur la tête de son chien : il a réussi à attraper Mew. Selon vous, il y a deux explications possibles : votre ami s'est acheté un Action Replay et a triché comme un malpropre, ou il vous joue du pipeau. Et si je vous disais qu'il existait une 3ème explication : votre ami est un génie de l'assembleur. C'est ce que je vous propose de découvrir dans un talk qui sent bon les années 90 et le reverse engineering.</p>`,
1145                speakers: ['audren_burlot']
1146            },
1147        ]
1148    },
1149    {
1150        id: '2023_10_10',
1151        title: "Zookeeper vs KRaft // Kotlin",
1152        date: new Date(2023, 9, 10), //month begin at 0
1153        time: '19h00',
1154        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/296486844/',
1155        place: 'seyos',
1156        subjects: [
1157            {
1158                title: "Zookeeper vs KRaft: une histoire de consensus dans Kafka",
1159                time: '19h00',
1160                length: '20 min',
1161                type: 'quickie',
1162                abstract: `<p>En octobre 2022, Confluent annonçait la dépréciation de Zookeeper dans Kafka et l’avènement de KRaft.</p>
1163                             <p>En Mai 2023, au Kafka Summit, Jay Krups (CEO de Confluent), confirmait que KRaft allait devenir la configuration par défaut.</p>
1164                             <p>Les questions qu'on peut se poser :</p>
1165                             <p>- Quel problème résout Zookeeper dans Kafka ? Et donc, pourquoi changer ?</p>
1166                             <p>- Qu'apporte KRaft ?</p>
1167                             <p>- Quel impact pour les utilisateurs et sur l’écosystème en général ?</p>`,
1168                speakers: ['valentin_lefort'],
1169            },
1170            {
1171                title: "En production pour la vie avec un backend en Kotlin",
1172                time: '19h30',
1173                length: '45 min',
1174                type: 'talk',
1175                abstract: `<p>Dans cette présentation, nous verrons concrètement comment Kotlin permet de produire du code gracieux, maintenable et évolutif.<br/> La présentation abordera également quelques concepts de programmation fonctionnelle, de programmation asynchrone avec les coroutines et même un peu de testabilité.<br/>Le tout agrémenté d'exemples de la vraie vie (via un projet open-source basé sur Spring Boot)</p>`,
1176                speakers: ['benoit_orihuela']
1177            },
1178        ]
1179    },
1180    {
1181        id: '2023_09_19',
1182        title: "Soirée : Apache Pulsar, et introduction aux outils de Securité (SAST)",
1183        date: new Date(2023, 8, 19), //month begin at 0
1184        time: '19h00',
1185        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/295921312/',
1186        place: 'sfeir',
1187        subjects: [
1188            {
1189                title: "Introduction aux outils de tests de sécurité d'application statique (SAST)",
1190                time: '19h00',
1191                length: '20 min',
1192                type: 'quickie',
1193                abstract: `<p>Le plus tôt vous testez votre application, moins les bugs de sécurité vous coûtera. Alors autant tester directement votre code. Mais avant d'installer le premier outil venue, regardons ensemble ce qu'est exactement un Static Application Security Testing (SAST). Y-a-t'il plusieurs type de SAST? Comment savoir si l'outil est pertinent ?</p>
1194                            <p>Nous allons répondre à ces questions pour vous permettre d'envoyer du code en production plus sereinement.</p>
1195                             `,
1196                speakers: ['adrien_pessu'],
1197            },
1198            {
1199                title: "Apache Pulsar : enfin une alternative à Kafka!",
1200                time: '19h30',
1201                length: '60 min',
1202                type: 'talk',
1203                abstract: `<p>Aujourd'hui, quand on pense à créer des applications event-driven et temps réel, les mots qui viennent spontanément sont : RabbitMQ, ActiveMQ ou encore Kafka. Ce sont les s
1203olutions qui dominent ce paysage. Mais pour créer des applications événementielles exigeantes, il y a une alternative qui monte : Apache Pulsar.</p>
1204                            <p>Après un bref rappel des concepts du messaging, vous découvrirez les caractéristiques-clé de Pulsar. Vous apprendrez notamment :
1205                            <ul>
1206                            <li>- comment Pulsar permet de dépasser certaines limites qu'on peut rencontrer avec d'autres brokers</li>
1207                            <li>- comment il permet de scaler rapidement et sans prise de tête</li>
1208                            <li>- comment il garantit une excellente durabilité des messages</li>
1209                            <li>- en quoi il est pertinent en tant que plateforme de streaming et de messagerie unifiée</li>
1210                            <li>- comment l'intégrer à votre existant compatible avec Kafka ou RabbitMQ</li>
1211                            <li>- un aperçu de la communauté open-source autour de Pulsar</li>
1212                            </ul></p>`,
1213                speakers: ['julien_jakubowski']
1214            },
1215        ]
1216    },
1217    {
1218        id: '2023_06_22',
1219        title: "API explosives 🧨 // Déployer du Java en serverless c'est possible.",
1220        date: new Date(2023, 5, 22), //month begin at 0
1221        time: '19h00',
1222        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/293967666',
1223        place: 'adresse_gare_sud',
1224        subjects: [
1225            {
1226                title: 'Développeurs, faites exploser vos APIs 🧨 ',
1227                time: '19h00',
1228                length: '15 min',
1229                type: 'quickie',
1230                abstract: '<p>La “pyramide des tests” est une notion dont tout le monde a déjà entendu au moins une fois. Entre tests unitaires, tests d’intégration ou encore tests de charge, ils sont souvent négligés, par manque de budget, de temps (ou les deux) ou bien par manque de conviction (ou les 3 ?).</p>' +
1231                    "<p>Après vous avoir expliqué notre façon de voir les tests de charge, nous vous montrerons comment nous, développeurs, avons pu concevoir, analyser, exécuter et interpréter des tirs de charge et avec quels outils.</p>",
1232                speakers: ['sylvain_nael', 'jean_philippe_baconnais'],
1233            },
1234            {
1235                title: "Déployer du Java en serverless c'est possible.",
1236                time: '19h30',
1237                length: '60 min',
1238                type: 'talk',
1239                abstract: `<p>Les architectures modernes font la part belle micro-services et aux fonctionnalités sans gestion de serveur. Très (trop ?) souvent, les exemples que l'on peut voir utilisent des langages interprétés alors que Java reste toujours un langage fort plébiscité en entreprise. Peut-on donc faire du serverless avec Java ?</p>
1240                    <p>Dans cette session, je vous présenterai les intérêts des solutions serverless ainsi que les différentes options dont on dispose sur AWS pour y faire tourner une application Java. Enfin, nous regarderons les challenges spécifiques à la plateforme et comment on peut les contourner grâce à certaines nouveautés du langage comme l'API CRaC.
1241                    Après cette présentation, vous devriez savoir si vous pouvez faire tourner votre service de trading de licorne avec Spring et ceci sans avoir à gérer de serveur !</p>`,
1242                speakers: ['damien_metzler']
1243            },
1244        ]
1245    },
1246    {
1247        id: '2023_05_09',
1248        title: "Hands-on Threads virtuels du JDK 19",
1249        date: new Date(2023, 4, 9), //month begin at 0
1250        time: '19h00',
1251        register: 'https://www.meetup.com/nantes-java-user-group/events/293108986/',
1252        place: 'lepalace',
1253        subjects: [
1254            {
1255                title: 'Introduction: les Threads virtuels',
1256                time: '19h00',
1257                length: '30 min',
1258                type: 'talk',
1259                abstract: '<p>Introduction à Loom et aux threads virtuels... puis hands-on/kata</p>',
1260                speakers: ['jerome_moliere'],
1261            },
1262            {
1263                title: 'Hands-on Threads virtuels du JDK 19',
1264                time: '19h30',
1265                length: '90 min',
1266                type: 'hands-on',
1267                abstract:
1268                    "<p>Hands-on pour découvrir par la pratique les threads virtuels sous forme de koans (tests unitaires) autour des nouveautés apportées par cette API</p><p>Venez avec votre machine et le JDK 19 installé, ou partagez les exercices avec votre voisin/voisine.</p>",
1269                speakers: ['jerome_moliere']
1270            },
1271        ]
1272    },
1273    {
1274        id: '2023_04_12',
1275        title: "Web3 // Mob programming",
1276        date: new Date(2023, 3, 12), //month begin at 0
1277        time: '19h00',
1278        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/292533766/',
1279        place: 'lepalace',
1280        subjects: [
1281            {
1282                title: 'Web3 ? Demystifions les blockchains et les applications décentralisées !',
1283                time: '19h00',
1284                length: '40 min',
1285                type: 'talk',
1286                abstract: '<p>Les termes Blockchain, proof-of-stake, smart contract, dApp, token, NFT, DAO ou Web3 vous laissent perplexes, vous donnent le vertige ou voire même vous énervent ? Venez découvrir les concepts et les composants structurants qui se cachent derrière tout ça !</p>',
1287                speakers: ['raphael_semeteys'],
1288            },
1289            {
1290                title: 'Mob programming, la véritable approche du développement en équipe',
1291                time: '19h45',
1292                length: '55 min',
1293                type: 'talk',
1294                abstract:
1295                    "<p>Shérif, le manager, est en colère. Il vient de surprendre toute l’équipe de développement autour d’une même machine. Rendez-vous compte ! Après des comparaisons douteuses avec la DDE, il les a bien sermonnés et leur a ordonné de retourner à leur poste de travail immédiatement, un peu de sérieux ! Avec Shérif, la bamboche, c’est terminé !</p>" +
1296                    "<p>Malheureusement, des Shérif, il en existe encore beaucoup dans les open-spaces de nos DSI. Partager un ordinateur entre plusieurs développeurs, mais pourquoi donc ?</p>" +
1297                    "<p>Le MOB programming est une pratique s’appuyant sur le Lean et sur Extreme Programming qui consiste à réaliser une tâche, qu’elle soit technique ou non, à plusieurs. Les groomings, planifications et autres réunions de conception, ne serait-ce pas déjà des MOBs ?</p>" +
1298                    "<p>De mythe à réalité, nous vous proposons de faire un retour d’expérience du MOB programming dans une équipe produit chez Ouest-France. Nous vous offrirons deux points de vue, celui du lead, présent depuis le début du projet (5 ans) et celui d’un développeur qui a rejoint l’équipe début 2021.</p>",
1299                speakers: ['maxime_odye', 'mathieu_pousse']
1300            },
1301        ]
1302    },
1303    {
1304        id: '2023_04_06',
1305        title: "Dev'Party - Clash of Code",
1306        date: new Date(2023, 3, 6), //month begin at 0
1307        time: '19h00',
1308        register: 'https://www.billetweb.fr/devparty-nantes',
1309        place: 'eartsup',
1310        subjects: [
1311            {
1312                title: 'Retour de la Dev\'Party avec Codingame et les communautés tech nantaise ! ',
1313                time: '19h00',
1314                length: '30 min',
1315                type: 'talk',
1316                abstract: 'Venez participer à ce tournoi de programmation DevParty !<br/><br/>Sous forme d\'un tournoi "Clash of Code" fourni par la plateforme Codingame, vous affronterez les autres participants tout au long de la soirée sur différentes épreuves de code :<br/>
1316<br/>    Fastest : Vous devez terminer le défi aussi vite que possible.<br/>    Shortest : Vous devez écrire le code le plus concis. Prenez votre temps pour parvenir à la solution la plus courte !<br/>    Reverse : Vous devez deviner ce qu\'il y a à faire en observant le jeu de tests fourni.<br/><br/>Chaque épreuve durera entre 5 et 15 min, et vous devrez passer le maximum de tests pour avoir le meilleur score possible et ainsi améliorer votre classement général.<br/><br/>Vous pourrez utiliser le langage de programmation de votre choix : js, java, go, python, et bien d\'autres<br/><br/>Co-organisé avec les communautés tech nantaises, cette soirée sera agrémentée par un buffet, des boissons et bien sûr des lots à gagner.<br/><br/>Il s\'agit d\'un tournoi individuel, où tous les joueurs seront regroupés par arène de 10 joueurs max, et les meilleurs repartiront avec des lots.<br/><br/>N\'oubliez pas votre laptop pour participer !<br/>',
1317                speakers: [],
1318            },
1319        ]
1320    },
1321    {
1322        id: '2023_03_16',
1323        title: "Robotisez les tests de vos microservices + De Java vers Kotlin : codez deux fois plus vite !",
1324        date: new Date(2023, 2, 16), //month begin at 0
1325        time: '19h00',
1326        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/291639279/',
1327        place: 'nickel',
1328        subjects: [
1329            {
1330                title: 'Robotisez les tests de vos microservices',
1331                time: '19h00',
1332                length: '45 min',
1333                type: 'talk',
1334                abstract: "<p>Pour assurer la fiabilité et le bon fonctionnement de nos microservices chez Nickel, nous écrivons des tests automatisés avec RobotFramework, un outil python et open source.</p><p>Sa syntaxe user-friendly permet de comprendre rapidement l’objet d’un test dès la lecture de son code. Il offre également un gain de temps à nos développeurs pour construire leur jeu de données.</p><p>Nous écrirons ensemble le test d’une API REST pour découvrir RobotFramework, ses concepts, sa syntaxe et ses rapports de tests en sortie.</p><p>Enfin, nous vous présenterons les choix et les outils que nous avons retenus pour obtenir des tests stables et maintenables au quotidien..</p>",
1335                speakers: ['remi_picard', 'mohamed_ali_bouine']
1336            }, {
1337                title: "De Java vers Kotlin : codez deux fois plus vite !",
1338                time: '19h45',
1339                length: '45 min',
1340                type: 'talk',
1341                abstract: "<p>Vous aimez Java, mais pas son aspect verbeux ?</p><p>Vous aimez les try catch mais pas les NullPointerException ?</p><p>Vous en avez assez d'écrire des equals et des hashcode ?</p><p>Qu'à cela ne tienne, un langage peut vous venir en aide : Scala !</p><p>... Ah, non attendez, c'est pas la bonne fiche...</p><br/><p>Donc ! Vous connaissez sans doute Scala et tous les avantages qu'il offre par rapport à Java, mais connaissez-vous Kotlin ? Ce qu'il apporte par rapport à Scala ? Et surtout, pourquoi vous devriez sérieusement considérer un projet avec si vous souhaitez vous simplifier la vie ?</p><br/><p>Je vous propose de vous faire découvrir ce langage au travers de cette présentation, autour de ses avantages et des outils qu'il propose afin d'avoir un projet fiable et simple à maintenir !</p>",
1342                speakers: ['yann_huriez']
1343            }
1344        ]
1345    },
1346    {
1347        id: '2023_02_02',
1348        title: "Advanced TypeScript Patterns + Urbaniser un SI pour 10 ans",
1349        date: new Date(2023, 1, 2), //month begin at 0
1350        time: '19h00',
1351        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/291067375',
1352        place: 'talend',
1353        subjects: [
1354            {
1355                title: 'Advanced TypeScript Patterns',
1356                time: '19h00',
1357                length: '30 min',
1358                type: 'quickie',
1359                abstract: "<p>Durant ce talk nous verrons ensemble comment les nouveautés introduite depuis TypeScript 4 (Template Literals Types, Recursive Conditional Types etc) peuvent nous aider à rendre notre c
1359ode plus robuste et expressif.</p>",
1360                speakers: ['gregory_houllier']
1361            }, {
1362                title: "Urbaniser un SI pour 10 ans",
1363                time: '19h30',
1364                length: '90 min',
1365                type: 'talk',
1366                abstract: "<p>Un SI, ça doit évoluer en permanence, et si possible, pas en faisant une refonte totale tous les 3 ans. Alors je vous propose de parler de microservices, de Domain-driven design, de déclaratif, de réactif, de chorégraphie et de plein d'autres beaux concepts d'urbanisation qui servent justement à ça : rendre votre SI évolutif, pour que votre prochaine urbanisation dure au moins 10 ans.</p>",
1367                speakers: ['christophe_quintard']
1368            }
1369        ]
1370    },
1371    {
1372        id: '2023_01_24',
1373        title: "Tooling monorepo polyglot + Architecture Microservices et cohérence des données",
1374        date: new Date(2023, 0, 24), //month begin at 0
1375        time: '19h00',
1376        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/290766700',
1377        place: 'eartsup',
1378        subjects: [
1379            {
1380                title: 'Du tooling JS dans mon monorepo polyglot',
1381                time: '19h00',
1382                length: '30 min',
1383                type: 'quickie',
1384                abstract: "<p>Nous découvrirons comment les nouveaux outils JS (nx / turborepo) peuvent améliorer votre expérience et productivité sur un large monorepo.<br>Puis comment en bénéficier sur d'autres languages.</p>",
1385                speakers: ['nicolas_morel']
1386            }, {
1387                title: "Architecture Microservices et cohérence des données : on fait comment pour de vrai ?",
1388                time: '19h30',
1389                length: '90 min',
1390                type: 'talk',
1391                abstract: "<p>Les architectures microservices ont le vent en poupe. Elles présentent de nombreux avantages pour mettre en place les bonnes pratiques DevOps et faire travailler en parallèle des équipes pluridisciplinaires autonomes. Evoluer du monolithe vers les microservices n’est pas un long fleuve tranquille… Les challenges ne manquent pas. L’un d’entre eux, et non des moindres, est la cohérence des données. Un des principes de base est que chaque service possède sa propre base de données. Quand une transaction métier invoque plusieurs services, on ne peut donc plus compter sur les bonnes vieilles transactions ACID des serveurs SQL.</p><br>"
1392                    + "<p>Quant aux transactions distribuées XA/2PC, oubliez les, elles sont jetées au pilori des mauvaises pratiques depuis bien longtemps ! Une fois ce constat établi, on fait quoi concrètement ? Comment peut-on répondre à cette problématique ? Dans cette présentation, nous verrons comment procéder avec deux approches : les SAGA et les LRA (Long Running Action). Un exemple concret basé sur MicroProfile et le framework Eeventuate Tram vous permettra de les appréhender et de choisir la bonne option pour votre projet Microservices</p><br>",
1393                speakers: ['jean_francois_james']
1394            }
1395        ]
1396    },
1397    {
1398        id: '2022_12_13',
1399        title: "🍸 Soirée de fin d'année 🍸 spéciale Java 19 avec José Paumard et Rémi Forax",
1400        date: new Date(2022, 11, 13), //month begin at 0
1401        time: '19h00',
1402        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/289829724',
1403        place: 'madeleine_icilundi',
1404        subjects: [
1405            {
1406                title: 'Verre d\'accueil 🍸',
1407                time: '19h00',
1408                length: '30 min',
1409                type: 'hello',
1410                abstract: "<p>C'est bientôt la fin de l'année, alors nous vous proposons de commencer cette dernière soirée de la meilleure des manières avec un petit verre d'accueil offert par Decathlon</p>",
1411            }, {
1412                title: "Java 19 et au-delà : programmation orientée données et programmation asynchrone",
1413                time: '19h30',
1414                length: '90 min',
1415                type: 'talk',
1416                abstract: "Nous allons parler des deux sujets brûlants actuellement en développement en Java : la Programmation Orientée Données (Data Oriented Programming en anglais) et la programmation asynchrone.\n<br>" +
1417                    "En programmation centrée sur les données, les données sont au premier plan et le code qui les traite au second. En programmation objet, ce qui est au premier plan, ce sont les API et les implémentations. Nous allons donc expliquer ces concepts, l'intérêt de les introduire en Java, et les nouveaux patterns de code que cela apporte. Nous verrons ce que le projet Amber a déjà livré dans le JDK 19 pour implémenter ces concepts, en version finale et en pré-version et ce qui est prévu pour les versions suivantes.\n<br>" +
1418                    "Le JDK 19 contient en plus deux pré-versions livrés par le projet Loom. Tout d'abord les threads virtuels, plus légers que les threads classiques que l'on a depuis 25 ans. Ils peuvent être créés en plus grand nombre et peuvent être bloqués quasiment sans perte de performance. Ensuite, la programmation concurrente structurée introduit la notion de scope et propose un nouveau modèle de programmation asynchrone. Nous couvrirons ces deux sujets et verront comment cela va révolutionner l'écriture de code asynchrone.<br>",
1419                speakers: ['jose_paumard', 'remi_forax']
1420            },
1421            {
1422                title: 'Petits fours et Cocktail 🍣 🍷',
1423                time: '21h',
1424                length: '3h',
1425                type: 'winter',
1426                abstract: "<p>Et pour bien finir, restez discuter avec nous autour d'un verre et des petits fours offerts par Decathlon 😋</p>",
1427            },
1428        ]
1429    }, {
1430        id: '2022_11_15',
1431        title: "Les post-mortems && Java dans Kubernetes",
1432        date: new Date(2022, 10, 15), //month begin at 0
1433        time: '19h00',
1434        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/289447972/',
1435        place: 'zenika',
1436        subjects: [
1437            {
1438                title: "Les post-mortems ou comment sortir heureux d’un carnage",
1439                time: '19h00',
1440                length: '30 min',
1441                type: 'quickie',
1442                abstract: "Une fonctionnalité, un projet, une réunion, ça ne se passe pas toujours bien. Loin de là. C’est parfois même un carnage. 😱 Que fait-on dans ces cas-là ? Ça s’est terminé dans les larmes, le sang et la sueur mais qu’importe ! On met tout ça sous le tapis, c’est fini, on en parle plus. 🙈<br><br>Pour que cela recommence encore la prochaine fois ? Pour que tout le monde en souffre sans oser en parler ? Pas la peine !<br><br>Alors on prend notre courage à deux mains, et on organise un POST-MORTEM. Mais qu'est-ce que c'est ? À quoi cela sert-il ? Et comment le mettre en place ? 🤔<br><br></br></br>Vous découvrirez dans ce talk les différentes étapes d'un post-mortem réussi et comment l'animer au mieux pour que chacun et chacune puisse être heureux.se après un tel carnage, sans pour autant être psychopathe ! 😌",
1443                speakers: ['lise_quesnel']
1444            },
1445            {
1446                title: "Java dans Kubernetes pour ceux qui ne connaissent pas Kubernetes",
1447                time: '19h30',
1448                length: '90 min',
1449                type: 'talk',
1450                abstract: "Kubernetes, ca à l'air vraiment sympa, pour le scaling, la reproductibilité et tout et tout ... <br>Tout le monde en parle, et en plus c'est hype !<br> Alors, c'est le moment de passer dans le cloud et de migrer nos applications Java vers Kubernetes !<br>Oui mais ... enfin ... il y'a trop de fichiers YAML à maintenir et nous détestons le YAML ! Et en plus de maintenir l'application Java, il faut<ul><li>écrire et maintenir des Dockerfiles</li><li>écrire et maintenir plein de fichiers YAML</li><li>configurer et gérer la CI/CD pour le déploiement</li><li>etc.</li></ul>Et oui, pendant ce talk, nous allons souffrir 👿 ... mais je vais vous tenir par la main et vous guider. Et c'est promis, vous sortirez de ce talk en sachant migrer vos applications Java dans Kubernetes en seulement 5 lignes de XML 🤣 ... avec le projet JKube.",
1451                speakers: ['sun_tan']
1452            }
1453        ]
1454    }, {
1455        id: '2022_10_04',
1456        title: "Micronaut Test Resources",
1457        date: new Date(2022, 9, 4), //month begin at 0
1458        time: '19h00',
1459        register: 'https://www.meetup.com/fr-FR/nantes-java-user-group/events/288667403/',
1460        place: 'cantine',
1461        subjects: [
1462            {
1463                title: "REX Bit.dev : gadget ou indispensable ?",
1464                time: '19h00',
1465                length: '15 min',
1466                type: 'quickie',
1467                abstract: "C’est l’histoire d’une équipe qui part à la recherche d’un outil pour leur simplifier la vie et le quotidien pour leur développement front. Une solution s’offre à nous, Bit.dev, qui nous promet du Component-Driven-Development sans le moindre effort. Mais qu’en est-it ? " +
1468                    "<br><br>Je vous partagerais mon expérience, et celle de mes collègues. Pourquoi on a fait ce choix, comment on a pris en main et mis en place cet outil, son utilisation au quotidien et surtout ce qu’on en a tiré.",
1469                speakers: ['lucille_moise']
1470            },
1471            {
1472                title: "Micronaut Test Resources",
1473                time: '19h30',
1474                length: '90 min',
1475                type: 'talk',
1476                abstract: "Tester vos microservices sans peine avec Micronaut Test Resources Micronaut est un framework full-stack moderne, basé sur la JVM, permettant de construire des microservices ou applications serverless facilement." +
1477                    "<br/>De part son emphase sur la compilation ahead-of-time, il s'intègre particulièrement bien avec GraalVM, poussant les limites de ce qu'on peut faire avec le langage Java." +
1478                    "<br/>Cependant, le développement d'applications modernes est aussi synonyme de multiples intégrations qui sont parfois difficiles à configurer. Par exemple, votre application peut avoir besoin d'une base de données, d'un serveur Kafka, d'un broker MQTT ou autre. Micronaut Test Resources permet de grandement simplifier le développement de telles applications: sans aucune configuration, il est capable de démarrer des conteneurs de test pendant le développement ou les tests, réduisant considérablement l'effort nécessaire pour obtenir une excellente productivité développeur." +
1479                    "<br/>Dans cette session, nous montrerons les bases d'une application Micronaut et comment il s'intègre, en partculier, avec les outils de builds et Testcontainers." +
1480                    "<br/>Micronaut Test Resources est aussi un framework extensible, rendant relativement simple l'ajout de vos propres ressources de test: il est par exemple possible d'exposer un conteneur Docker avec quelques lignes de configuration. En dernier recours, il est toujours possible d'implémenter vos propres ressources de test." +
1481                    "<br/>Enfin, il est intéressant de savoir que Micronaut Test Resources est conçu de façon à ce que les ressources de test puissent être partagées entre différents projets, même s'ils utilisent des outils de build différent ! Cerise sur le gâteau, nous montrerons comment les images natives peuvent bénéficier de ce mécanisme.",
1482                speakers: ['cedric_champeau']
1483            }
1484        ]
1485    },
1486    {
1487        id: '2022_09_22',
1488        title: "Copilot // GraalVM",
1489        date: new Date(2022, 8, 22), //month begin at 0
1490        time: '19h00',
1491        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/288327013/',
1492        place: 'sii',
1493        subjects: [
1494            {
1495                title: "Copilot : L’intelligence artificielle au service des développeurs",
1496                time: '19h00',
1497                length: '30 min',
1498                type: 'quickie',
1499                abstract: "Amis développeurs, vous avez besoin :" +
1500                    "<ul>" +
1501                    "<li>d’écrire des tests pour vos applications Web/JavaScript ?</li>" +
1502                    "<li>de compléter une classe Java d’accès aux données ?</li>" +
1503                    "<li>d’ajouter des nouveaux services à votre déploiement containerisé ?</li>" +
1504                    "</ul>" +
1505                    "Tapez votre code, commentez votre besoin, et laissez Copilot vous assister et augmenter votre productivité! GitHub Copilot est un outil qui s’appuie sur l’intelligence artificielle pour vous aider à coder avec des « suggestions/autocompletions » très riches.<br>" +
1506                    "Mais attention: Copilot, l’essayer c’est adopter!",
1507                speakers: ['tugdual_grall']
1508            },
1509            {
1510                title: "A la découverte de GraalVM",
1511                time: '19h30',
1512                length: '60 min',
1513                type: 'talk',
1514                abstract:
1515                    "<p>Débit élevés, temps de démarrage supersonique , utilisation rationnelle des resources Mémoire et CPU, Prise en charge native de plusieurs langages de programmation, Compilation en binaire exécutable des programmes Java, réduction des côuts d\'infrastru
1515cture dans le cloud public/privé, sont peut être des choses dont vous avez entendu parlé au sujet de Oracle GraalVM, Il y’a beaucoup de buzz autour de la nouvelle coqueluche de l’écosystème Java, mais qu’est ce que c’est exactement?</p>" +
1516                    "<p>Nous vous proposons de faire connaissance avec GraalVM;</p>" +
1517                    "<p>Que vous soyez développeur ou opérationnel, Gestionnaire d’application, d'infrastructure ou DSI , si vous évoluez dans un environment où foisonnent les technologies Java, NodeJS, Javascript, Python, Ruby, R ou même C et C++... Rejoignez cette web diffusion interactive en direct pour en savoir plus sur:</p>" +
1518                    "<p></p>" +
1519                    "<p>Le fonctionnement de GraalVM ainsi que les bénéfices que vous pourrez en tirer	</p>" +
1520                    "<p>Mettre les mains dans le cambouis et aller à la conquête de GraalVM	</p>" +
1521                    "<p>Découvrir les cas d\'usage innovant de GraalVM en entreprise et ainsi que des retours d\'expérience enrichissant</p>",
1522                speakers: ['elvadas_nono']
1523            }
1524        ]
1525    },
1526    {
1527        id: '2022_06_16',
1528        title: "🍹 Cocktail // APM avec Glowroot // Spring Boot // Petits fours 🍣 🍷",
1529        date: new Date(2022, 5, 16), //month begin at 0
1530        time: '19h00',
1531        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/285807648/',
1532        place: 'adresse_gare_sud',
1533        subjects: [
1534            {
1535                title: 'Verre d\'accueil 🍸',
1536                time: '19h00',
1537                length: '30 min',
1538                type: 'hello',
1539                abstract: "<p>C'est bientôt l'été, alors nous vous proposons de commencer cette dernière soirée de la meilleure des manières avec un petit verre d'accueil</p>"
1540            },
1541            {
1542                title: "Glowroot : un APM à portée des devs",
1543                time: '19h30',
1544                length: '30 min',
1545                type: 'talk',
1546                abstract: "Une présentation rapide des APM (Application Performance Management), et en particulier de Glowroot, un APM Open Source, gratuit et très simple à mettre en oeuvre pour commencer à monitorer ses applications au plus tôt",
1547                speakers: ['pierre_clainchard']
1548            },
1549            {
1550                title: 'AOT and Native with Spring Boot 3.0',
1551                time: '20h00',
1552                length: '1h',
1553                type: 'talk',
1554                abstract: '<p>Après une phase d\'expérimentation avec le projet Spring Native, l\'équipe Spring contribue le support Ahead of Time (AOT) à Spring.</p>' +
1555                    '<p>Cette nouvelle fonctionnalité va permettre un support des applications natives avec GraalVM mais aussi améliorer l\'efficacité des applications JVM classiques.</p>' +
1556                    '<p>Pendant cette présentation, Brian va détailler l\'état de l\'art du support AOT dans Spring Framework 6.0 et Spring Boot 3.0:</p>' +
1557                    '- l\'architecture du moteur AOT</br>' +
1558                    '- comment cette nouvelle infrastructure peut-être utilisée par des librairies</br>' +
1559                    '- l\'expérience développeur</br>',
1560                speakers: ['brian_clozel']
1561            },
1562            {
1563                title: 'Petits fours et Cocktail 🍣 🍷',
1564                time: '21h00',
1565                length: '3h',
1566                type: 'summer',
1567                abstract: "<p>Et pour bien finir, restez discuter avec nous autour d'un verre et des petits fours 😋</p>"
1568            },
1569        ]
1570    },
1571    {
1572        id: '2022_05_24',
1573        title: "Reactive spring // Une application métier durable en hexagone et en Spring Boot",
1574        date: new Date(2022, 4, 24), //month begin at 0
1575        time: '19h00',
1576        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/285805082/',
1577        place: 'onepoint',
1578        subjects: [
1579            {
1580                title: "Concevoir une application réactive avec Spring ",
1581                time: '19h00',
1582                length: '60 min',
1583                type: 'talk',
1584                abstract: "Présentation des concepts de la programmation réactive avec Spring boot.\n" +
1585                    "<br>Au programme :\n<ul>" +
1586                    "<li>Présentation de Spring Webflux</li>\n" +
1587                    "<li>Présentation de Reactor</li>\n" +
1588                    "<li>Démo avec des Usecases Synchrones/Asynchrones</li>" +
1589                    "</ul>",
1590                speakers: ['julien_bideau']
1591            },
1592            {
1593                title: "Une application métier durable en hexagone et en Spring Boot",
1594                time: '20h00',
1595                length: '60 min',
1596                type: 'talk',
1597                abstract:
1598                    "Nos logiciels suivent les évolutions des besoins de leurs utilisateurs. " +
1599                    "<br>Fonctionnalités après fonctionnalités, on finit toujours par avoir ce défi de ranger ce code spaghettis, de refaire l'architecture logicielle pour séparer des responsabilités et modulariser le code. " +
1600                    "<br>Nous verrons avec l'architecture hexagonale et la modularité de Spring Boot, une des meilleures solutions que je connaisse.",
1601                speakers: ['nicolas_fedou']
1602            }
1603        ]
1604    },
1605    {
1606        id: '2022_04_19',
1607        title: "🤯 Préparation mentale // Biais cognitifs dans le dev 🧠",
1608        date: new Date(2022, 3, 19), //month begin at 0
1609        time: '19h00',
1610        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/284797567',
1611        place: 'lepalace',
1612        subjects: [
1613            {
1614                title: "Préparation mentale",
1615                time: '19h00',
1616                length: '25 min',
1617                type: 'quickie',
1618                abstract:
1619                    "<p>Introduire les principes de base de la préparation mentale dans le monde de l'entreprise, et transmettre le bon équilibre entre le désir de réussir et le plaisir d'apprendre.</p>",
1620                speakers: ['julien_deville']
1621            }, {
1622                title: "Notre cerveau est \"null\"! Quelques biais cognitifs appliqués au métier de dev...",
1623                time: '19h30',
1624                length: '50 min',
1625                type: 'talk',
1626                abstract:
1627                    "<p>Pourquoi est-ce que nos chiffrages sont si souvent à côté de la plaque? </br>" +
1628                    "Pourquoi le besoin métier est-il à ce point systématiquement mal cerné? </br>" +
1629                    "Est-ce vraiment pertinent d'écrire des tests avant de coder?  </br>" +
1630                    "Autant de questions dont la réponse peut se trouver dans l'étude de nos biais cognitifs!</p>" +
1631                    "<p>J'aurais d'ailleurs pu pompeusement titrer ce talk: Que nous apprennent les neurosciences au sujet de la vie des projets. </br>" +
1632                    "Mais on ne parlera pas ici de neurosciences, juste de quelques bases de psychologie sociale ou cognitive adaptée au monde du développement logiciel. En prime, et en toute gratuité, vous repartirez avec des armes, des outils concrets pour mieux combattre des travers que nous avons tous !</p>",
1633                speakers: ['sylvain_coudert']
1634            }
1635        ]
1636    },
1637    {
1638        id: '2022_04_08',
1639        title: "La Nuit des Meetups",
1640        date: new Date(2022, 3, 8), //month begin at 0
1641        time: '19h15',
1642        register: 'https://www.lacantine.co/agenda/event/08-04-2022-lanuitdesmeetups/',
1643        place: 'cantine',
1644        subjects: [
1645            {
1646                title: "Programme sur le site de l'évènement",
1647                time: '18h00',
1648                length: '4h',
1649                type: 'talk',
1650                abstract:
1651                    "<p>Le Nantes JUG est heureux de participer à la Nuit des Meetups avec pleins de talks au programme !!</p>" +
1652                    "<p>👉 Les <a href=\"https://www.lacantine.co/agenda/event/08-04-2022-lanuitdesmeetups/\" target=\"_blank\">inscriptions se font sur la page de l'évènement</a>.</p>" +
1653                    "<p>Vous connaissez la Nuit des Chercheur·euse·s 🧬ou bien encore celle des Musées 🏛? Vous voulez vous abreuver de contenus techniques dans une ambiance sympathique ?</p>" +
1654                    "<p>Nous vous proposons de découvrir un nouvel évènement à destination des communautés tech : la première Nuit des meetups de Nantes !</p>" +
1655                    "<p>Lors de cette soirée (tardive), nous inviterons les organisateurs de meetups tech à proposer de courtes conférences, expertes ou vulgarisées, à destination de toutes et tous.</p>" +
1656                    "<p>Seront présent·e·s : Software Crafters, Cocoaheads Nantes, GDG Nantes Android, Blockchain et société, Nantes Numerique Responsable, Craft Your product, Agile Nantes, Human Talks, GDG Nantes, Nantes Devops, Nantes JUG, NoCode…</p>" +
1657                    "<p>Ce sera également l’occasion de mixer les contenus, d’assister à des conférences que vous n’avez peut être pas l’habitude de voir et de proposer aux entreprises qui s
1657ouhaitent accueillir les meetups à l’année de se présenter de manière conviviale.</p>" +
1658                    "<p><i>[<a href=\"https://www.lacantine.co/agenda/event/08-04-2022-lanuitdesmeetups/\" target=\"_blank\">Programme en cours de création</a>]<i></p>" +
1659                    "<p>Vous pouvez vous pré-inscrire dès maintenant, l’ensemble du programme sera disponible en mars.</p>",
1660                speakers: []
1661            }
1662        ]
1663    },
1664    {
1665        id: '2022_03_29',
1666        title: "Katas d'architecture // Checklist pour concevoir une application dans le cloud",
1667        date: new Date(2022, 2, 29), //month begin at 0
1668        time: '19h00',
1669        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/284488055/',
1670        place: 'eartsup',
1671        subjects: [
1672            {
1673                title: "Améliorer les compétences et les infrastructures avec les katas d'architecture",
1674                time: '19h00',
1675                length: '20 min',
1676                type: 'quickie',
1677                abstract:
1678                    "<p></p>",
1679                speakers: ['alexandre_touret']
1680            }, {
1681                title: "Checklist pour concevoir une application dans le cloud : 10 conseils à l'attention des concepteurs et architectes",
1682                time: '19h30',
1683                length: '45 min',
1684                type: 'talk',
1685                abstract:
1686                    "<p>Kubernetes et les technologies cloud sont aujourd'hui les standards pour déployer des applications de toutes sortes dans le cloud: api, batchs, microservices et même des monolithes!" +
1687                    "Au delà de la hype - et des trolls, ils apportent des solutions à beaucoup de problèmes mais aussi une grande complexité.</p>" +
1688                    "<p>Il peut donc être très difficile pour les développeurs et concepteurs d'identifier les contraintes de telles architectures. </p>" +
1689                    "<p>Dans cette présentation, vous (re)découvrirez dix astuces et conseils que j'ai pu mettre en pratique et qui m'ont aidé dans mes derniers projets.</p>" +
1690                    "<p>Ces derniers traiteront :" +
1691                    "<ul>" +
1692                    "<li>de la pertinence du cloud dans vos projets et organisations</li>" +
1693                    "<li>du choix des solutions technologiques</li>" +
1694                    "<li>des contraintes de conception liées à K8S</li>" +
1695                    "<li>du développement</li>" +
1696                    "<li>de la gestion des livraisons au travers de la CI</li>" +
1697                    "<li>de l’observabilité </li>" +
1698                    "<li>et plus encore !</li>" +
1699                    "</ul>" +
1700                    "</p>",
1701                speakers: ['alexandre_touret']
1702            }
1703        ]
1704    },
1705    {
1706        id: '2022_02_22',
1707        title: "Soirée Quickies : écrire un livre, développer sans JDK et immutabilité",
1708        date: new Date(2022, 1, 22), //month begin at 0
1709        time: '19h15',
1710        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/283354801',
1711        place: 'eartsup',
1712        subjects: [
1713            {
1714                title: "Ivre et au chômage, elle décide d'écrire un livre sur le Scala en plein Covid",
1715                time: '19h15',
1716                length: '20 min',
1717                type: 'quickie',
1718                abstract:
1719                    "<p>REX sur l'écriture d'un premier livre : comment s'est arrivé ? Pourquoi j'ai accepté ? Par quelles étapes de dépression suis-je passée ?<br>" +
1720                    "Je vais parler des relations avec l'équipe éditoriale, des délais, des étapes de la réalisation d'un livre du jour 1 avec les premières lignes jusqu'à la livraison.<br>" +
1721                    "Je ne m'arrête pas là, on va parler de marketing, publicité, impression, sortie officielle du livre et pourquoi je ne referai plus ça.</p>",
1722                speakers: ['agnes_maury']
1723            }, {
1724                title: "Qui a dit qu’il fallait avoir un JDK sur son poste pour développer une application Java ? Prenez votre IDE Cloud GitPod et le tour est joué 💪",
1725                time: '19h40',
1726                length: '20 min',
1727                type: 'quickie',
1728                abstract:
1729                    "<p>Quand on arrive sur des projets, la configuration de votre poste est une étape obligatoire : avoir la bonne version du JDK, de Maven ou de librairies. Le tout avec quelques Mo / Go qui s’accumulent sur votre disque dur.</p>" +
1730                    "<p>Avec l’arrivée des IDE Cloud tels que GitPod, la configuration nécessaire sur un projet est mutualisée sur le cloud et cette étape qui pouvait devenir une réelle galère n’est plus qu’un lointain souvenir !</br>" +
1731                    "Après vous avoir présenté en quelques mots GitPod, je vous ferai une démonstration de ce qui est possible pour un dev Java.</p>",
1732                speakers: ['jean_philippe_baconnais']
1733            }, {
1734                title: "L'immutabilité en Java quand on a la flemme",
1735                time: '20h00',
1736                length: '20 min',
1737                type: 'quickie',
1738                abstract:
1739                    "<p>L'immutabilité c'est cool ! L'immutabilité c'est tendance ! Mais l'immutabilité, c'est quoi au fait ?</br>" +
1740                    "En principe, c'est garantir qu'une structure de donnée ne puisse être modifiée et donc muter. Dans la plupart des langages fonctionnelles comme Haskell, c'est même la norme. Mais en Java ... c'est pas vraiment ça. Il y a peut-être les records qui sont apparus en preview sur la JDK14, c'est vrai, mais ça reste très limité et peu flexible.</br>" +
1741                    "Heureusement, il est possible de s'arranger à rendre Java immutable au prix de pas mal d'effort. Mais quand on a la flemme ? ... Comment faire ? ...</p>",
1742                speakers: ['laurent_delemotte']
1743            }
1744        ]
1745    },
1746    {
1747        id: '2022_02_09',
1748        title: "OpenApi Generator / Fuites de données",
1749        date: new Date(2022, 1, 9), //month begin at 0
1750        time: '19h00',
1751        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/283502336/',
1752        place: 'eartsup',
1753        subjects: [
1754            {
1755                title: "Approche \"contract-first\" avec OpenApi Generator",
1756                time: '19h00',
1757                length: '35 min',
1758                type: 'talk',
1759                abstract:
1760                    "<p>L'API c'est la UI du développeur backend. Trop souvent on se contente d'une documentation générée à la fin. Pourquoi ne pas la placer au premier plan ?</p>" +
1761                    "<p><b>⚠⚠⚠ La présentation d'un pass sanitaire (ou vaccinal) est obligatoire. ⚠⚠⚠</b></p>",
1762                speakers: ['thibault_duperron']
1763            }, {
1764                title: "10 leçons sur les 10 plus grosses fuites de données",
1765                time: '19h40',
1766                length: '35 min',
1767                type: 'talk',
1768                abstract:
1769                    "<p>Sony, Über, Yahoo, Adult Friends finder, ces noms vous disent quelque chose ?</br>" +
1770                    "Vous utilisez peut-être les services de ses entreprises.</br>" +
1771                    "Elles ont aussi un point commun, elles ont subi une fuite de leurs données utilisateurs.</br>" +
1772                    "Comment les hackers s’y sont pris ? et surtout Quelles leçons peut-on en tirer pour le développement de nos applications ?</br></p>" +
1773                    "<p><b>⚠⚠⚠ La présentation d'un pass sanitaire (ou vaccinal) est obligatoire. ⚠⚠⚠</b></p>",
1774                speakers: ['adrien_pessu']
1775            }
1776        ]
1777    },
1778    {
1779        id: '2021_12_01',
1780        title: "Spot d'AWS : penser son archi pour laisser tomber les serveurs",
1781        date: new Date(2021, 11, 1), //month begin at 0
1782        time: '19h00',
1783        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/282094863',
1784        place: 'eartsup',
1785        subjects: [
1786            {
1787                title: "Spot d'AWS : penser son archi pour laisser tomber les serveurs",
1788                time: '19h00',
1789                length: '90 min',
1790                type: 'talk',
1791                abstract:
1792                    "<p>Introduction aux instances spot AWS pour faire des économies et améliorer la résilience de ses applications.</p>" +
1793                    "<p>Depuis plusieurs années, AWS propose d'utiliser des machines SPOT, des VMs bradées mais qui peuvent vous être retirées à tout moment. Découvrez comment Sparklane a pensé son architecture résiliante et son outillage DevOps pour profiter au maximum de ce type de machine et ainsi rédu
1793ire considérablement ses coûts de hosting.</p>" +
1794                    "<p><b>⚠⚠⚠ La présentation d'un pass sanitaire est obligatoire. ⚠⚠⚠</b></p>",
1795                speakers: ['thomas_brosillon', 'thomas_rossignol']
1796            }
1797        ]
1798    },
1799    {
1800        id: '2021_09_16',
1801        title: "Décollage de microservices Micronaut en Java dans les nuages",
1802        date: new Date(2021, 8, 16), //month begin at 0
1803        time: '18h00',
1804        register: 'https://gdg.community.dev/events/details/google-gdg-cloud-nantes-presents-decollage-de-microservices-micronaut-en-java-dans-les-nuages/',
1805        place: 'online',
1806        subjects: [
1807            {
1808                title: "Décollage de microservices Micronaut en Java dans les nuages",
1809                time: '18h15',
1810                length: '60 min',
1811                type: 'talk',
1812                abstract:
1813                    "<p>Au lieu de passer trop de temps sur de l'infra, prenez avantage des solutions serverless. Focalisez vous sur votre code Micronaut, et déployer le rapidement sous forme de fonction, d'application, ou dans un conteneur, sur Google cloud Platform.</p>" +
1814                    "<p>Dans cette session, vous découvrirez les choix offerts par Google Cloud pour déployer des applications Micronaut. Avec Micronaut Launch, c'est d'autant plus facile pour démarrer un nouveau projet à partir d'un template, et après quelques modifications, d'être capable de déployer en production dans la minute qui suit.</p>" +
1815                    "<p>Grâce à ses performances, sa faible consommation mémoire, la possibilité de créer des images natives, Micronaut démarre au quart de tour, et est particulièrement bien adapté pour le cloud et les solutions serverless.</p>" +
1816                    '<p>Cette session "Java & Google Cloud" est co-organisée avec le <a href="https://gdg.community.dev/gdg-cloud-nantes/">GDG Cloud Nantes</a>.</p>',
1817                speakers: ['guillaume_laforge']
1818            }
1819        ]
1820    },
1821    {
1822        id: '2020_12_16',
1823        title: "Comment votre application peut être une bonne citoyenne du Cloud (Virtuel)",
1824        date: new Date(2020, 11, 16), //month begin at 0
1825        time: '18h45',
1826        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/275018773',
1827        place: 'online',
1828        subjects: [
1829            {
1830                title: "Comment votre application peut être une bonne citoyenne du Cloud",
1831                time: '19h00',
1832                length: '60 min',
1833                type: 'talk',
1834                abstract: "<p>Venez découvrir dans cette session 100% live coding et interactive comment Java revient en force dans le monde du Cloud.</p>"
1835                    + "<p>On verra comment des nouvelles stacks Java peuvent s'intégrer et tirer profit des nouvelles contraintes imposées par le monde merveilleux du cloud</p>",
1836                speakers: ['sebastien_blanc']
1837            }
1838        ]
1839    }, {
1840        id: '2020_10_26',
1841        title: "Des petites voitures sur AWS et du scripting en Java avec jbang",
1842        date: new Date(2020, 9, 26), //month begin at 0
1843        time: '19h00',
1844        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/274020038/',
1845        place: 'lepalace',
1846        subjects: [
1847            {
1848                title: "Comment j'ai fini par déployer à 2h du matin une application sur AWS pour piloter des voitures électriques avec un vélo d'appartement.",
1849                time: '19h15h',
1850                length: '30 min',
1851                type: 'quickie',
1852                abstract: "<p>- J'ai une super idée, mais je vais avoir besoin d'aide, parce que moi et le code...<br>" +
1853                    "ha ?<br>" +
1854                    "- Je voudrais faire tourner des voitures électriques sur un circuit en faisant pédaler des gens pendant 24h<br>" +
1855                    "...<br>" +
1856                    "- Tu vois comment faire ?<br>" +
1857                    "- Alors... c'est pas dur... Il suffit de deux Arduino, d'un Raspberry, quelques capteurs et c'est parti...</p>" +
1858                    "<p>Et voilà à peu près comment en 2 minutes j’ai été convaincu de suivre un hurluberlu dans un projet franchement rigolo mêlant de nombreuses technos.</p>" +
1859                    "<p>Et cerise sur le gâteau, les aléas techniques m’ont conduit jusqu’à déployer la solution sur AW
1859S depuis une salle des fêtes en rase campagne un jour de tempête avec pour seule connexion mon téléphone…</p>",
1860                speakers: ['nicolas_giraud']
1861            },
1862            {
1863                title: "Scripting en Java avec jbang",
1864                time: '20h00',
1865                length: '30 min',
1866                type: 'quickie',
1867                abstract: "<p>Si vous aussi vous maîtrisez Java mais pas le bash, et si vous aussi vous aimez le support d'un IDE pour faire un script, alors venez découvrir le pouvoir de jbang et du scripting en Java.</p><hr><p>⚠️⚠️⚠️<i>En raison des contraintes sanitaires, nous ne serons pas en mesure d'organiser l'apéritif de fin de soirée.<br/>"
1868                    + "Venez avec vos masques, qui sont obligatoires tout au long de la soirée.</i>⚠️⚠️⚠️</p>",
1869                speakers: ['gautier_de_saint_martin_lacaze']
1870            }
1871        ]
1872    }, {
1873        id: '2020_09_29',
1874        title: "Chaos Engineering avec Spring / Data science avec les projets Apache",
1875        date: new Date(2020, 8, 29), //month begin at 0
1876        time: '19h00',
1877        register: 'https://www.meetup.com/Nantes-Java-User-Group/events/273424912/',
1878        place: 'eartsup',
1879        subjects: [
1880            {
1881                title: "Comment pratiquer le Chaos engineering avec Spring Boot",
1882                time: '19h15h',
1883                length: '30 min',
1884                type: 'quickie',
1885                abstract: "<p>On parle souvent de chaos engineering mais dans la pratique ça donne quoi ? En tant que développeur, j'ai l'impression que cette discipline est réservée au OPS. </p>"
1886                    + "<p>Sur un projet Java avec Spring Boot, puis je faire du chaos engineering ? </p><p>Dans ce quickie, on vous donne la solution avec 'Chaos Monkey for Spring Boot'.</p>"
1887                ,
1888                speakers: ['julien_mourgues']
1889            },
1890            {
1891                title: "Drilling Zeppelin: data science dans la galaxie apache",
1892                time: '20h00',
1893                length: '30/40 min',
1894                type: 'quickie',
1895                abstract: "<p>Il existe de nombreux projets de la fondation apache liés à la data science: Zeppelin, Drill, Spark, Flink, etc.</p>" +
1896                    "<p>Dans ce talk, nous verrons comment utiliser ensemble ces projets pour faire de la data science sur son PC ou sur un serveur simplement en branchant les projets apache les uns aux autres.</p>"
1897                    + "<p>&nbsp;</p><p>&nbsp;</p><hr><p>⚠️⚠️⚠️<i>En raison des contraintes sanitaires, nous ne serons pas en mesure d'organiser l'apéritif de fin de soirée.<br/>"
1898                    + "Venez avec vos masques, qui sont obligatoires tout au long de la soirée.</i>⚠️⚠️⚠️</p>",
1899                speakers: ['julien_tanguy']
1900            }
1901
1902        ]
1903    }, {
1904        id: '2020_03_12',
1905        title: "Accessibilité // Architecture Hexagonale Level 2",
1906        date: new Date(2020, 2, 12), //month begin at 0
1907        time: '19h00',
1908        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/269153499/',
1909        place: 'hep-campus',
1910        subjects: [
1911            {
1912                title: "Envie de faire de l'accessibilité ? Enjeux et mise en place",
1913                time: '19h00',
1914                length: '30 min',
1915                type: 'quickie',
1916                abstract: "<p>L'accessibilité des sites web est un enjeu de société. Pourquoi est-il si difficile de la mettre en pratique ?</p>",
1917                speakers: ['david_caillaud']
1918            },
1919            {
1920                title: "Architecture Hexagonale Level 2 : Comment bien écrire ses tests",
1921                time: '19h45',
1922                length: '1h',
1923                type: 'talk',
1924                abstract: "<p>De plus en plus d’équipes adoptent l’architecture hexagonale comme structure de prédilection pour leurs applications métiers, mais peu d’entre elles savent réellement bien les tester. Et malheureusement lorsque l’on se plante sur ce point, la maintenance de notre architecture hexa devient un véritable calvaire !</p> " +
1925                    "<p>Lors de ce talk, nous allons aborder les 5 niveaux de tests préconisés pour les microservices adaptés à l'architecture héxagonale. Et en prime comment avoir une documentation drivée par les tests. Venez découvrir à côté de quoi vous êtes peut-être passés dans le développement de vos tests !</p>" +
1926                    "<p>Ceci est une live coding session en Java/Kotlin SpringBoot.</p>",
1927                speakers: ['julien_topcu', 'jordan_nourry']
1928            }
1929        ]
1930    }, {
1931        id: '2020_02_13',
1932        title: "Motivation et Scaling Java Application",
1933        date: new Date(2020, 1, 13), //month begin at 0
1934        time: '19h00',
1935        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/268263166/',
1936        place: 'sii',
1937        subjects: [
1938            {
1939                title: "Comment fonctionne la motivation ?",
1940                time: '19h00',
1941                length: '30 min',
1942                type: 'talk',
1943                abstract: "<p>On recherche un développeur motivé“. Vous avez déjà certainement vu cette offre d’embauche.</p>" +
1944                    "<p>Qu’est-ce qu’être motivé et est-ce un état permanent comme l’évoque cette phrase ?</p>" +
1945                    "<p>On verra les mécanismes de la motivation et comment faire pour motiver quelqu’un.</p>",
1946                speakers: ['guillaume_blondeau']
1947            },
1948            {
1949                title: "Scaling Java Application : Vers l’infini et au delà",
1950                time: '19h45',
1951                length: '1h',
1952                type: 'talk',
1953                abstract: "<p>Un moteur de calcul de prix en Java et scalable jusqu’à l’infini c’est possible ! Mais à notre grande surprise le chemin était pavé d’embuches.</p>" +
1954                    "<p>Dans cette présentation, je partage les différentes étapes, les problèmes rencontrés, les solutions ainsi que les outils qui nous ont permit d’atteindre cet objectif. On y parle JVM, Docker, AWS, Off-heap, Caching, Postgresql, Concurrence et autres réjouissances qui sortent un peu de notre quotidien de développeur.</p>",
1955                speakers: ['julien_roy']
1956            }
1957        ]
1958    }, {
1959        id: '2020_01_20',
1960        title: "Tendances marché // Redis : du Clé/Valeur au Multimodèle",
1961        date: new Date(2020, 0, 20), //month begin at 0
1962        time: '19h00',
1963        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/267743136/',
1964        place: 'talend',
1965        subjects: [
1966            {
1967                title: "Baromètre des salaires et des tendances marché sur l’environnement Java / JVM",
1968                time: '19h00',
1969                length: '15 min',
1970                type: 'quickie',
1971                abstract: "<p>Je viens vous restituer une partie de l'analyse réalisée dans le cadre du baromètre des salaires.</p>" +
1972                    "<p>Cette étude est basée sur les + 1300 candidats rencontrés l'année dernière et + 200 entreprises accompagnées.</p>",
1973                speakers: ['benjamin_casseron']
1974            },
1975            {
1976                title: "Redis : du Clé/Valeur au Multimodèle",
1977                time: '19h30',
1978                length: '1h',
1979                type: 'talk',
1980                abstract: "<p>Vous connaissez surement Redis l'une des bases de données NoSQL les plus populaires chez les développeurs. D'ailleurs Vous l'utilisez peut être déjà, mais sûrement de façon simple: en clé/valeur sous forme de cache. Mais Redis est bien plus que cela !</p>" +
1981                    "<p>Durant cette présentation vous découvrirez, avec des démonstrations, les structures de données telles que les Hash, Set, Sorted Set, Geospatial, Pub/Sub et Streams, qui nativement vous offrent de nombreuses options pour enrichir simplement vos applications.</p>" +
1982                    "<p>Vous verrez également que Redis avec son système d'extensions (les Modules Redis) permet maintenant de gérer plusieurs modèles de données (Structures, Commandes) :" +
1983                    "<ul><li>JSON</li>" +
1984                    "<li>Time Series</li>" +
1985                    "<li>Search</li>" +
1986                    "<li>Graph</li>" +
1987                    "<li>Bloom Filter</li></ul></p>" +
1988                    "<p>En résumé une base de donnée polyglotte parfaite pour vos micro-services !</p>",
1989                speakers: ['tugdual_grall'],
1990                docs: [
1991                    { name: 'La vidéo du talk', url: 'https://youtu.be/OqkFDtgMAYk', type: 'youtube' },
1992                ]
1993
1994            }
1995        ]
1996    },
1997    {
1998        id: '2019_12_03',
1999        title: "Retour d'experience Kubernetes  - Soirée de fin d'année!",
2000        date: new Date(2019, 11, 3), //month begin at 0
2001        time: '19h00',
2002        register: 'https://www.meetup.com/Nantes-Java-User-Group/events/266458249/',
2003        place: 'resto_grand_t',
2004        subjects: [
2005            {
2006                title: "Meet & Greet",
2007                time: '19h00',
2008                length: '30 min',
2009                type: 'buffet',
2010                abstract: "<p>Verre de bienvenue offert par les sponsors du JUG</p>",
2011                speakers: []
2012            },
2013            {
2014                title: "Kubernetes: Retour d'Experience par VPTech",
2015                time: '19h30',
2016                length: '1h',
2017                type: 'talk',
2018                abstract: "<b><br/>En collaboration avec le Meetup 'CNCF Nantes'<br/><br/></b><p>Durant cette presentation Thomas, Ludovic et Pierre Antoine de VPTech ferons un retour d’expérience de l'utilisation de Kubernetes au sein de l’organisation Vptech.</p><p>Du développement à la mise en production, quels sont les outils et procédures mis en place afin d’augmenter la fiabilité et le time to market des développements.</p><p>2 points de vue vous seront présentés, celui des <b>SRE</b> et celui des <b>développeurs</b>.</p>",
2019                speakers: ['ludovic_paquet', 'pierre_antoine_ollivier', 'thomas_piart'],
2020                docs: [
2021                    { name: 'Les slides du talk', url: 'https://drive.google.com/file/d/1iPTGrXIUdADeguKFEyGly-_UET2X0Czj', type: 'pdf' },
2022                ]
2023            },
2024            {
2025                title: "Meet & Greet",
2026                time: '20h30',
2027                length: '2h',
2028                type: 'buffet',
2029                abstract: "<p>Buffet offert par les sponsors du JUG</p>",
2030                speakers: []
2031            }
2032        ]
2033    },
2034    {
2035        id: '2019_11_17',
2036        title: "GitOps & Infra as code avec Pulumi // AWS : 10 trucs que j’aurais aimé connaître",
2037        date: new Date(2019, 10, 7), //month begin at 0
2038        time: '19h00',
2039        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/265679860/',
2040        place: 'eartsup',
2041        subjects: [
2042            {
2043                title: 'GitOps & Infra as code avec Pulumi',
2044                time: '19h00',
2045                length: '45 min',
2046                type: 'talk',
2047                abstract: "<p>Arrivée avec Kubernetes, nous verons comment la pratique <b>GitOps</b>
2047 peut se décliner pour déployer nos infrastructures et applications sur <b>AWS</b>.</br>" +
2048                    "Ce quickie sera l'occasion de découvrir l'outil d'infra as code qui fait le buzz en ce moment, <b>Pulumi</b>.</br>" +
2049                    "Alors venez dire bye-bye à vos anciennes pratiques 👋</p>",
2050                speakers: ['manuel_boillod']
2051            },
2052            {
2053                title: 'AWS : les 10 trucs que j’aurais aimé connaître avant de commencer',
2054                time: '19h40',
2055                length: '1h',
2056                type: 'talk',
2057                abstract: "<p>Tout le monde veut se lancer sur le cloud avec AWS. Après tout, suivre les tutos ce n’est pas si compliqué. Mais après quelques jours, les ennuis commencent : instances qui rament, montées de version des services imposées, facture salée… :’( Je vous partagerais 10 points qui m'ont fait passer de 😱 ou 😩 en passant par 😰 vers 🍾.</p>" +
2058                    "<p>Quel instances choisir parmis les 170 modèles? Pourquoi les accès disques sont bridés ? ... Autant de questions auxquelles j'apporterais des éléments de réponses.</p>",
2059                speakers: ['guillaume_membre']
2060            }
2061        ]
2062    }, {
2063        id: '2019_10_15',
2064        title: "Apache Pulsar // ⛳️ Votre API passe-t-elle le contrôle technique ?",
2065        date: new Date(2019, 9, 15), //month begin at 0
2066        time: '19h00',
2067        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/265336817/',
2068        place: 'eartsup',
2069        subjects: [
2070            {
2071                title: 'Introduction à Apache Pulsar',
2072                time: '19h00',
2073                length: '30 min',
2074                type: 'quickie',
2075                abstract: "<p>\"Apache Pulsar, encore un système de messages pub/sub\", me direz-vous ? C'est pas faux... </p>" +
2076                    "<p>Néanmoins, regardons de plus près... Pulsar est devenu un Top Level Project de la fondation Apache au mois de septembre 2018 et il se targue de vouloir unifier les modèles de messages traditionnels et le streaming, tout en fournissant un système extrêmement performant. " +
2077                    "Alors partons à la découverte de ce nouveau pulsar pour voir de quoi il retourne !</p>",
2078                speakers: ['bruno_bonnin']
2079            },
2080            {
2081                title: '⛳️ Votre API passe-t-elle le contrôle technique ?',
2082                time: '19h40',
2083                length: '1h',
2084                type: 'talk',
2085                abstract: "<p>Nous savons tous développer une API mais avons-nous bien intégré toutes les problématiques?</p>" +
2086                    "<p>Son aspect organisationnel et humain, sa gouvernance, ses contraintes business et d'opérabilité (SLA, SLO, SLI), son release management, ses méthodes de requêtage, sa sécurité (ses performances, sa mise à l'échelle), ses différents types de test, sa documentation, son versioning (compatibilité, changelog), son monitoring — et bien plus encore — de cette API une fois en production ?</p>" +
2087                    "<p>Durant ce talk, c'est plus de 70 points d'attentions rarement évoqué que je vous propose d'aborder, à la lumière de retours d'expériences provenant de tech-leader comme Uber, Stripe, Facebook et Google mais aussi d'entreprise française de la petite startup à la PME.</p>",
2088                speakers: ['francois_guillaume_ribreau']
2089            }
2090        ]
2091    }, {
2092        id: '2019_09_24',
2093        title: "Les nouveautés Eclipse IDE // Écrire des tests ? C’est illogique.",
2094        date: new Date(2019, 8, 24), //month begin at 0
2095        time: '19h00',
2096        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/264731630/',
2097        place: 'talend',
2098        subjects: [
2099            {
2100                title: 'Les nouveautés Eclipse IDE',
2101                time: '19h00',
2102                length: '30 min',
2103                type: 'quickie',
2104                abstract: "<p>Vous êtes développeur Java et vous utilisez Eclipse IDE, mais connaissez vous réellement ses dernières nouveautés ?</p>" +
2105                    "<p>Au travers de cette présentation, je vous propose de découvrir les fonctionnalités de l'IDE Eclipse introduite dans les dernières release.</p>" +
2106                    "<p>Cette présentation s'adresse aussi bien aux novices qu'aux chevronnées ayant envie d'apprendre à mieux connaître leur outil de développement quotidien.</p>",
2107                speakers: ['gautier_de_saint_martin_lacaze']
2108            },
2109            {
2110                title: 'Écrire des tests ? C’est illogique.',
2111                time: '19h40',
2112                length: '1h',
2113                type: 'talk',
2114                abstract: '<p>Écrire des tests c\'est bien, rédiger des spécifications c\'est mieux.</p>' +
2115                    '<p>C\'est la promesse de Spock, un framework de spécification dont l\'objectif est d\'organiser nos tests afin de les rendre facile à lire, rapide à comprendre et simple à maintenir.</p>',
2116                speakers: ['adrien_bonnin']
2117            }
2118        ]
2119    }, {
2120        id: '2019_06_25',
2121        title: "Soirée Quickies + 🍸",
2122        date: new Date(2019, 5, 25), //month begin at 0
2123        time: '19h00',
2124        register: 'http://meetu.ps/e/GNbSS/4xjVv/f',
2125        place: 'adresse_gare_sud',
2126        subjects: [
2127            {
2128                title: 'Verre d’accueil 🍸',
2129                time: '19h00',
2130                length: '15 min',
2131                type: 'hello',
2132                abstract: "<p>Quoi de mieux pour commencer cette dernière soirée avant l'été que de commencer par un petit verre d'accueil 😎</p>"
2133            },
2134            {
2135                title: 'Faire un chatbot en Java avec Spring Boot ',
2136                time: '19h15',
2137                length: '25 min',
2138                type: 'quickie',
2139                abstract: '<p>Retour sur la hype des chatbots qui ne s\'estompe pas, avec tous les jours de nouveaux bots et de nouveaux acteurs.' +
2140                    '<ul style="margin:0"><li>Pourquoi un tel engouement sur les chatbots ?</li>' +
2141                    '<li>Pourquoi le faire en Java ?</li>' +
2142                    '<li>Revue des différents NLP (Natural language processing)</li>' +
2143                    '<li>Quels sont les pièges à éviter ?</li></ul></p>' +
2144                    '<p>Autant de questions à répondre sur ce tour d\'horizon !</p>',
2145                speakers: ['julien_bideau', 'nicolas_payneau']
2146            }, {
2147                title: 'REX : entamer une migration Kotlin dans une DSI Java',
2148                time: '19h40',
2149                length: '25 min',
2150                type: 'quickie',
2151                abstract: '<p>Au sein de la DSI de Pôle emploi, les infrastructures black end sont depuis une dizaine d’années faites en Java et le choix des langages n’est pas (encore) déterminé par les équipes de développement.</p>' +
2152                    '<p>Kotlin utilisant la JVM, il est désormais possible d’intégrer du Kotlin dans des projets java. Dans ce REX je vous présenterai la manière dont nous avons pu entamer l\'intégration du Kotlin dans nos composants black end Java, les problématiques rencontrées, mais aussi les opportunités qui s\'ouvrent à nous pour la suite.</p>',
2153                speakers: ['jean_philippe_baconnais'],
2154                docs: [
2155                    { name: 'Slides', url: 'https://docs.google.com/presentation/d/1X7nhim9r0tU90c5UF5U-G6fwKW5hkcNQdV6N3xF-5Jg', type: 'drive' },
2156                ]
2157            }, {
2158                title: 'CORS, XSS, CSRF, SQL injection #BackToTheBasics',
2159                time: '20h05',
2160                length: '25 min',
2161                type: 'quickie',
2162                abstract: '<p>Pas besoin d\'être RSSI ou DevOpsSec pour se soucier de sécurité. Que l\'on soit développeur back ou front, la sécurité est l\'affaire de tous.</p>' +
2163                    '<p>Pourtant, on la confie souvent aveuglement à nos frameworks. Mais alors comment vérifier la sécurité de nos données et de nos utilisateurs.</p>' +
2164                    '<p>A travers quelques démos, nous allons voir les failles les plus basiques et pourtant les plus répandus : CORS, XSS, CSRF et SQL injection</p>',
2165                speakers: ['adrien_pessu']
2166            },
2167            {
2168                title: 'Chaos Engineering',
2169                time: '20h30',
2170                length: '25 min',
2171                type: 'quickie',
2172                abstract: '<p>Le Chaos Engineering est une discipline émergente dans le secteur de l’IT. Elle est expérimenté depuis plusieurs année chez des acteurs majeurs comme Netflix. Elle a été introduite pour apporter des solutions à l’accroissement de la complexité ds systèmes d’information et des organisations. J’espère vous apporter quelques éclairage sur cette discipline en pleine croissance et vous convaincre de vous y intéresser et de commencer à intégrer des pratiques liées à cette discipline dans votre cycle de développement logiciel.</p>',
2173                speakers: ['thomas_nansot'],
2174                docs: [
2175                    { name: 'Slides', url: 'https://fr.slideshare.net/ThomasNansot/meet-up-chaos-engineering', type: 'slideshare' },
2176                ]
2177            },
2178            {
2179                title: 'Cocktail dinatoire 🥳 + 🍻 + 🍣',
2180                time: '21h00',
2181                length: '3h',
2182                type: 'cocktail',
2183                abstract: "<p>Discussions et partages autour d'un ou plusieurs verres, jusqu'au bout de la nuit... <
2183/p>"
2184            }
2185        ]
2186    }, {
2187        id: '2019_05_20',
2188        title: " Java 12 // Quarkus 😛",
2189        date: new Date(2019, 4, 20), //month begin at 0
2190        time: '19h00',
2191        register: 'http://meetu.ps/e/GKJHP/4xjVv/f',
2192        place: 'eartsup',
2193        subjects: [
2194            {
2195                title: 'Java 12, quoi de neuf ?',
2196                time: '19h00',
2197                length: '30 min',
2198                type: 'quickie',
2199                abstract: '<p>Java sort maintenant une nouvelle version tous les 6 mois. En mars dernier est donc sortie la version 12. Après un rapide récapitulatif des nouveautés depuis la version 10 voyons ce que cette version apporte à l\'environnement java et ce qui nous attend pour la suite.</p>',
2200                speakers: ['patrice_de_saint_steban']
2201            }, {
2202                title: 'Quarkus',
2203                time: '19h30',
2204                length: '1h30',
2205                type: 'talk',
2206                abstract: "<p>De Java au natif: venez découvrir GraalVM et Quarkus</p>" +
2207                    "<p>Microservices, montée en charge rapide et Kubernetes demandent des applications ayant un temps de démarrage rapide et une petite empreinte memoire; c'est pourquoi Java est peu utilisé dans ce contexte.</p>" +
2208                    "<p>Cela va changer!</p>" +
2209                    "<p>Venez découvrir Quarkus, la stack Java orientée microservices qui utilise vos librairies préférées (Hibernate, vert.x, Camel, RESTEasy, Netty…), et se déploie sur GraalVM et Hotspot. </p>" +
2210                    "<p>Durant cette session vous découvrirez GraalVM, et Quarkus et comment les deux réunis se concentrent sur la vitesse et la mémoire et ce avec un bonne expérience développeur." +
2211                    "<p>La prochaine 'Java Revolution' est en cours, rejoignez nous!",
2212                speakers: ['tugdual_grall']
2213            }
2214        ]
2215    }, {
2216        id: '2019_04_25',
2217        title: "Les furets : Vault // dOOv",
2218        date: new Date(2019, 3, 25), //month begin at 0
2219        time: '19h00',
2220        register: 'http://meetu.ps/e/GBQk4/wWq2C/f',
2221        place: 'eartsup',
2222        subjects: [
2223            {
2224                title: 'Déploiement de vos secrets applicatifs : Hashicorp Vault et la livraison en continue',
2225                time: '19h00',
2226                length: '45 min',
2227                type: 'talk',
2228                abstract: '<p>La gestion des secrets applicatifs, tels que les identifiants de connexion aux bases de données, les phrases ' +
2229                    'secrètes ("passphrase"), les sels ("salt") et les clefs privées, est difficile. La disponibilité de ces éléments ' +
2230                    'est critique au bon fonctionnement d’une application, mais ils ont besoin d’être correctement protégés afin de ' +
2231                    'réduire la surface d’attaque du système.</p>' +
2232                    'La plupart des systèmes de gestion de secrets, comme Hashicorp Vault, sont utilisés comme une base de données ' +
2233                    'centralisée, mais cela devient un point de défaillance unique et nécessite un effort supplémentaire pour sécuriser ' +
2234                    'l’ensemble du système.</p>' +
2235                    '<p>Pourquoi ne pas déployer vos secrets, avec Hashicorp Vault, en même temps que votre application ? Grâce à votre ' +
2236                    'usine logicielle, il est possible de déployer une copie de vos secrets dans un Vault sécurisé par un "one time token", ' +
2237                    'accessible seulement par votre application.</p>' +
2238                    '<p>Dans cette présentation, nous allons présenter un pipeline de livraison continue permettant cette approche, montrer ' +
2239                    'les implications de la gestion de secrets dans votre infrastru
2239cture de build, et utiliser le "threat modeling" pour ' +
2240                    'vérifier la sécurité du Vault déployé.</p>',
2241                speakers: ['alexandre_dubreuil'],
2242                docs: [
2243                    { name: 'Slides', url: 'https://lesfurets.github.io/vault-continuous-secret-deployment/vault-continuous-secret-deployment-nantes-jug.html#/', type: 'html' },
2244                ]
2245            },
2246            {
2247                title: 'Comment créer son propre langage avec un fluent API et un lambda builder ?',
2248                time: '20h00',
2249                length: '1h',
2250                type: 'talk',
2251                abstract: '<p>Avec le framework dOOv, nous adoptons une nouvelle approche pour résoudre un problème récurrent dans nos applications : conjuger performance, lisibilité et typage fort.</p>' +
2252                    '<p>Depuis Java 8, les lambdas permettent de composer des fonctions avec d’excellentes performances à l’exécution. ' +
2253                    'dOOv fournit une fluent API qui permet d’écrire la logique d’une application avec un DSL « pur Java » et construit des lambdas pour l’exécution.</p>' +
2254                    '<p>Il devient possible de parcourir l’arbre de syntaxe du DSL lors de l’exécution et d’effectuer dynamiquement des réécritures.</p>' +
2255                    '<p>Pendant la session, nous présenterons le fonctionnement du framework, les problèmes rencontrés pour générer du langage naturel, ' +
2256                    'l’instrumentation du code écrit en DSL et la réécriture des arbres de syntaxe pour les afficher sous forme canonique.</p>',
2257                speakers: ['gilles_di_guglielmo', 'ozan_gunalp'],
2258                docs: [
2259                    { name: 'Slides', url: 'https://doov.io/conference/how_to_create_dsl_with_lambda_builders_nantes_jug.html#/', type: 'html' },
2260                ]
2261            }
2262        ]
2263    }, {
2264        id: '2019_03_12',
2265        title: "Développeurs VS agilité // Micronaut",
2266        date: new Date(2019, 2, 12), //month begin at 0
2267        time: '19h00',
2268        register: 'http://meetu.ps/e/Gs5N6/wWq2C/f',
2269        place: 'eartsup',
2270        subjects: [
2271            {
2272                title: 'Développeurs & agilité : la guerre est déclarée ?',
2273                time: '19h00',
2274                length: '1h',
2275                type: 'talk',
2276                abstract: '<p>Quand on parle d\'agilité aux développeurs, on constate différentes réactions. Il y a les enthousiastes, ceux qui s\'en fichent, et ceux qui s\'y opposent farouchement.</p>' +
2277                    '<p>En ce moment, on peut constater un accroissement des développeurs ne souhaitant plus entendre parler d\'agilité.</p>' +
2278                    '<p>Pourquoi une telle scission ? La guerre est-elle ouvertement déclarée ou a-t-on un espoir de réconciliation ?</p>',
2279                speakers: ['cecilia_bossard', 'jean_palies']
2280            },
2281            {
2282                title: 'Micronaut Framework, déballage et prise en main',
2283                time: '20h15',
2284                length: '45 min',
2285                type: 'talk',
2286                abstract: '<p>Non ce n\'est pas un nouveau téléphone, mais un nouveau framework web service compatible Java, Kotlin et Groovy mon préféré ! Il annonce une vitesse de démarrage maxi avec des empreintes threads et mémoire mini, grâce à de la programmation réactive et une injection de dépendance réécrite sans Reflection : un socle pour réconcilier les applications basées JVM avec le Cloud ! Venez découvrir cette stack "post-Spring" qui sait presque tout faire - même du Sql, et même tirer parti de modules Spring - avec une application exemple sur le thème de la Radio Fip (ma préférée aussi).</p>',
2287                speakers: ['dominique_jocal']
2288            }
2289        ]
2290    }, {
2291        id: '2019_02_27',
2292        title: "Quickies: Graal VM, Psycho, CNCF et VS Code ",
2293        date: new Date(2019, 1, 27), //month begin at 0
2294        time: '19h00',
2295        register: 'http://meetu.ps/e/GlQWC/13h0g/f',
2296        place: 'zenika',
2297        subjects: [
2298            {
2299                title: 'De la data science dans ma webapp avec GraalVM',
2300                time: '19h00',
2301                length: '20 min',
2302                type: 'quickie',
2303                abstract: "<p>Présentation du langage R (utilisé largement par les data scientists) et son intégration avec le monde Java via GraalVM ou comment intégrer des mondes qui se parlent peu.</p>",
2304                speakers: ['bruno_bonnin']
2305            },
2306            {
2307                title: '3 techniques faciles de manipulation',
2308                time: '19h30',
2309                length: '20 min',
2310                type: 'quickie',
2311                abstract: '<p>Qui ne s\’est jamais fait manipulé ? Évidemment, on est tous allé à une soirée alors qu\’on en avait pas envie, on a tous acheté un truc sans en avoir besoin et on a tous été influencé par ses proches.</p><p>L\’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écision au travers de 3 techniques simples de manipulation.</p><p>A la sortie de ce talk, vous devriez être moins influençable et maître de vos décisions (voir même manipuler les autres).</p>',
2312                speakers: ['marie_viley']
2313            },
2314            {
2315                title: 'La CNCF et son écosystème',
2316                time: '20h00',
2317                length: '20 min',
2318                type: 'quickie',
2319                abstract: '<p>Découverte de la Cloud Native Computing Foundation qui pilote la communauté des projets d\'orchestration des containers et micro-services</p>',
2320                speakers: ['julien_landure']
2321            },
2322            {
2323                title: 'Développer en Java dans VS Code',
2324                time: '20h30',
2325                length: '20 min',
2326                type: 'quickie',
2327                abstract: '<p>En quelques années VS Code (Visual Studio Code) est devenu l\'éditeur de code le plus populaire; tout particulièrement dans les communautés Javascript, Python, et autres langages dynamiques.<p><p>Mais savez vous qu\'il est également possible d\'utiliser VS Code pour développer en Java?<p><p>Venez découvrir durance ce tools in action, les fonctionnalités clés de tout éditeur Java, supportées par VS Code:<p><ul><li>Code Completion</li><li>Debugger</li><li>Refactoring</li><li>Test</li><li>Support de Maven & Graddle</li><li>Code Navigation et Outline</li><li>...</li></ul>',
2328                speakers: ['tugdual_grall']
2329            }
2330        ]
2331    }, {
2332        id: '2019_01_15',
2333        title: "Minecraft // Cessons les estimations",
2334        date: new Date(2019, 0, 15), //month begin at 0
2335        time: '19h00',
2336        register: 'http://meetu.ps/e/FTJwH/4xjVv/f',
2337        place: 'eartsup',
2338        subjects: [{
2339            title: 'Comment nous avons gagné notre argent de poche grâce à Minecraft',
2340            time: '19h00',
2341            length: '15 min',
2342            type: 'quickie',
2343            abstract: '<p>Description de notre parcours qui nous a mené de simples joueurs à administrateur d\'un serveur Minecraft comptant plusieurs milliers d\'utilisateurs nous faisant ainsi notre argent de poche</p>',
2344            speakers: ['corentin_grall', 'malo_grall']
2345        }, {
2346            title: "Cessons les estimations (One-man show)",
2347            length: '1h',
2348            time: '19h30',
2349            type: 'talk',
2350            abstract: "<p>Un one man show afin de susciter la réflexion par le rire, afin de vulgariser les valeurs fondamentales de l’agilité, au delà de l’application d’une quelconque méthode.</p>" +
2351                "<p>Cette conférence iconoclaste, non technique, s’adresse à toute personne ayant eu un premier contact avec un projet de développement logiciel (clients, donneurs d’ordre, développeurs, chefs de projet, product owner, scrum master…)</p>",
2352            speakers: ['frederic_leguedois']
2353        }
2354        ]
2355    }, {
2356        id: '2018_12_13',
2357        title: "Dev & UI // CQRS & EventSourcing",
2358        date: new Date(2018, 11, 13), //month begin at 0
2359        time: '19h00',
2360        register: 'http://meetu.ps/e/FTJtQ/4xjVv/f',
2361        place: 'eartsup',
2362        subjects: [{
2363            title: "Dev & UI : main dans la main avec le DesignOps",
2364            length: '45min',
2365            time: '19h00',
2366            type: 'talk',
2367            abstract: "<p>Il était une fois, dans une société nommée OUI.sncf, un développeur et une UI designer qui passaient leur temps à se chamailler. Le premier rêvait de spécifications responsives et de composants réutilisables par toutes les équipes. La seconde aspirait à ce que ses maquettes soient traitées avec respect et qu’une cohérence graphique soit enfin obtenue sur son site préféré. Ont-ils pu mettre leurs différents de côté pour aller au bout de leur ambition ? Vous le saurez en écoutant leur histoire...</p>",
2368            speakers: ['loic_maze', 'lydie_dareau']
2369        }, {
2370            title: "Implémentation de CQRS et EventSourcing avec le framework Axon ",
2371            length: '45min',
2372            time: '20h00',
2373            type: 'talk',
2374            abstract: "<p>Je m'intéresse depuis un moment à l'event sourcing, pour l'avoir utilisé sur deux applications, ce n'est pas si simple et on a tendance à laisser tomber le pattern en cours de route. Du coup, lorsque nous avons du mener la refonte d'une application interne à Oui.sncf basée sur l'event sourcing, nous avons utilisé le framework Axon qui a géré toute la plomberie pour nous.</p>" +
2375
2376                "<p>
2376Je pense que l'intérêt de ce framework est de gérer des problématiques complexes de concurrence, lock, etc, et de laisser le dev s'occuper de l'aspect métier.</p>" +
2377
2378                "<p>J'ai préparé une session de livecoding pour présenter rapidement les concepts eventsourcing et CQRS, et pour voir la mise en œuvre sur un usecase classique.</p>",
2379            speakers: ['sylvain_maillard']
2380        }
2381        ]
2382    }, {
2383        id: '2018_11_20',
2384        title: "MQTT, Mosquitto et Paho // Google Container Tools",
2385        date: new Date(2018, 10, 20), //month begin at 0
2386        time: '19h00',
2387        register: 'http://meetu.ps/e/FTJs9/4xjVv/f',
2388        place: 'eartsup',
2389        intro: "<div style=\"color: #0074be\">" +
2390            "<p>Cette soirée est co-organisée avec le meetup <a href=\"https://www.meetup.com/fr-FR/Docker-Nantes/\" target=\"_blank\">Docker Nantes</a>. Les inscriptions se font uniquement ici, sur le meetup du Nantes JUG.</p>" +
2391            "</div>",
2392        subjects: [{
2393            title: "Machine to machine : jouons un peu avec MQTT, Mosquitto et Paho",
2394            length: '30min',
2395            time: '19h00',
2396            type: 'quickie',
2397            abstract: "<p>MQTT est un protocole léger basé sur le pattern « Publish/Subscribe » qui s’est imposé pour les échanges M2M et donc l’IoT. Simple et facile à appréhender il peut être utilisé pour des cas d’usage très variés aussi bien avec un Raspberry Pi qu’un serveur Linux ou dans le cloud.</p>" +
2398                "<p>Ce quickie vous permettra de découvrir les principes de base du protocole MQTT, avec des démos utilisant le brocker « Mosquitto » et bien sûr un peu de code Java avec la librairie « Paho ».</p>",
2399            speakers: ['laurent_guerin']
2400        }, {
2401            title: "Google Container Tools : développer efficacement dans un monde de conteneurs",
2402            length: '1h',
2403            time: '19h30',
2404            type: 'talk',
2405            abstract: "<p>Kubernetes est devenu l'orchestrateur de choix pour déployer des applications. Mais qu'en est-il du quotidien des développeurs qui créent ces applications ? Plus on s'appuie sur la plateforme, plus il est compliqué de développer en dehors de la plateforme. Et développer à l'intérieur de conteneurs n'est pas réputé facile ni agréable.</p>" +
2406                "<p>Google est à l'origine de plusieurs projets Open-Source qui se focalisent sur l'expérience des développeurs dans un monde de conteneurs. Kaniko permet de construire une image Docker à partir d'un Dockerfile, dans un cluster Kubernetes, de manière sécurisée. Skaffold facilite le déploiement continu d'applications pour Kubernetes. Les images Distroless offrent des images de base légères, sécurisées et de qualité. Bazel permet meme de construire des images Docker sans Docker. Venez découvrir comment ces outils se combinent pour offrir un environment de développement agréable et performant dans le monde des conteneurs.</p>",
2407            speakers: ['david_gageot']
2408        }
2409        ]
2410    }, {
2411        id: '2018_10_09',
2412        title: "LinuxKit // Kafka",
2413        date: new Date(2018, 9, 9), //month begin at 0
2414        time: '19h00',
2415        register: 'http://meetu.ps/e/FT1P3/tBvy3/f',
2416        place: 'eartsup',
2417        subjects: [{
2418            title: "LinuxKit",
2419            length: '30min',
2420            time: '19h00',
2421            type: 'quickie',
2422            abstract: "<p>Cela fait des années que certaines distributions linux permettent de construire son linux “from scratch” mais cela restait une opération compliquée et périlleuse. LinuxKit propose la même chose mais avec une approche beaucoup plus moderne et outillée. Cela devient presque aussi facile que de monter un meuble ikea ! (avec une notice quand même)</p>" +
2423                "<p>Le projet LinuxKit, créé par Docker Inc., a été pensé pour créer un OS aussi minimaliste et maintenable que possible (sans compromis avec la sécurité) et y déployer des conteneurs.</p>" +
2424                "<p>Nous allons vous présenter la genèse et les concepts du projet, l’écosystème des outils complémentaires qui vous permettront de composer et construire votre distribution. Puis, nous créerons notre première distribution en live !</p>",
2425            speakers: ['eric_briand', 'pierre-yves_aillet']
2426        }, {
2427            title: "Au delà des brokers: un tour de l'environnement Kafka",
2428            length: '1h',
2429            time: '19h30',
2430            type: 'talk',
2431            abstract: "<p>Apache Kafka ne se résume pas aux brokers, il y a tout un écosystème open-source qui gravite autour. Je vous propose ainsi de découvrir les principaux composants comme Kafka Streams, KSQL, Kafka Connect, Rest proxy, Schema Registry, MirrorMaker, etc.</p><p>Venez avec vos questions, plus la session sera interactive, meilleure elle sera !</p>",
2432            speakers: ['florent_ramiere']
2433        }
2434        ]
2435    }, {
2436        id: '2018_09_25',
2437        title: "Java 9, 10 et + par Jean-Michel Doudoux",
2438        date: new Date(2018, 8, 25), //month begin at 0
2439        time: '19h30',
2440        register: 'http://meetu.ps/e/FNyYs/4xjVv/f',
2441        place: 'terrasses_de_l_erdre',
2442        intro: "<div style=\"color: #0074be\"><div class=\"row\">" +
2443            "<div class=\"col-md-8\">" +
2444            "<p>Si comme nous, vous avez commencé le java il y a plus de 10 ans, vos recherches web sur Java vous ont forcément amené sur les articles de Jean-Michel Doudoux.<p>" +
2445            "<p>🎂 C'est donc pour les 10 ans du JUG que nous l'accueillons avec plaisir, pour nous parler des derniers changements de Java.</p>" +
2446            "<p>Cette soirée exceptionnelle 🎊 sera suivi d'un cocktail dinatoire 🍸 🍣 au restaurant du parc des expositions, les Terrasses de l'Erdre.</p>" +
2447            "<p>🎁 Il y aura des places pour DevFest à gagner ainsi d'autres suprises... 🎁</p>" +
2448            "</div>" +
2449            "<div class=\"col-md-4 col-xs-6\"><img src=\"/images/site/10_ans.png\" width=\"100%\"></div>" +
2450            "</div></div>",
2451        subjects: [{
2452            title: "Java, le changement c'est maintenant (... enfin depuis un an déjà)",
2453            length: '1h30min',
2454            time: '19h30',
2455            type: 'talk',
2456            abstract: "<p>Ce n'est pas qu'un slogan politique mais bien la réalité pour Java depuis l'année écoulée.</p>" +
2457                "<p>A tel point que plusieurs caractéristiques historiques de Java sont partiellement remises en cause notamment la lenteur patente entre deux releases, l'embonpoint endémique du JRE/JDK, la gratuité, et même la sacro sainte rétro-compatibilité, ...</p>" +
2458                "<p>Faisons un tour de ces évolutions qui sont parfois de profonds changements avant de fêter le 10ème anniversaire du Nantes JUG. " +
2459                "Comment l'utiliser dans vos applications en offrant des possibilités de requêtes géospatiales.</p>",
2460            speakers: ['jmdoudoux']
2461        }
2462        ]
2463    }, {
2464        id: '2018_06_20',
2465        title: "S2 Geometry // Couchbase 101",
2466        date: new Date(2018, 5, 20), //month begin at 0
2467        time: '19h30',
2468        register: 'http://meetu.ps/e/FqHTW/wWq2C/f',
2469        place: 'eartsup',
2470        subjects: [{
2471            title: "Introduction a S2 Geometry",
2472            length: '30min',
2473            time: '19h30',
2474            type: 'quickie',
2475            intro: 'Une solution simple pour vos besoins "géospatiaux"',
2476            abstract: "<p>Durant ce quickie vous découvrirez la librairie S2 Geometry (http://s2geometry.io/) et " +
2477                "comment l'utiliser dans vos applications en offrant des possibilités de requêtes géospatiales.</p>",
2478            speakers: ['tugdual_grall']
2479        },
2480        {
2481            title: "Couchbase 101 [EN]",
2482            length: '45min',
2483            time: '20h15',
2484            type: 'talk',
2485            abstract: "<p>Today's mission-critical applications demand support for millions of interactions with " +
2486                "end-users. Traditional databases were built for thousands.</p>" +
2487                "<p>Couchbase Server is an open source, distributed, NoSQL document-oriented database. It " +
2488                "exposes a fast key-value store with managed cache for sub-millisecond data operations, " +
2489                "purpose-built indexers for fast queries and a powerful query engine for executing SQL-like queries.</p>" +
2490                "<p>In this talk, we develop a small microservice using a very productive combination: " +
2491                "Couchbase, Spring Boot and Spring Data. We also will deploy both your application and " +
2492                "database on Kubernetes, to show how you can build truly elastic microservices.</p>" +
2493                "<p><u>Conférence en anglais</u></p>",
2494            speakers: ['denis_rosa']
2495        }
2496        ]
2497    }, {
2498        id: '2018_05_23',
2499        title: "UX // Kotlin - Avancé",
2500        date: new Date(2018, 4, 23), //month begin at 0
2501        time: '19',
2502        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/250684407/',
2503        place: 'eartsup',
2504        subjects: [{
2505            title: "3 exemples pour comprendre l'intérêt de la phase UX research lors de la conception",
2506            length: '30min',
2507            time: '19h00',
2508            type: 'talk',
2509            abstract: "<p>À travers 3 exemples, nous verrons comment l'approche UX, et plus particulièrement la " +
2510                "phase de test, fait le plus grand bien à la conception d'un projet. Pour le meilleur ou pour le pire." +
2511                "Observer et interviewer l'être humain est indispensable pour savoir si l'expérience que vous " +
2512                "proposez est bien celle attendue par lui, pour comprendre les motivations qui l'anime et " +
2513                "mieux détecter les facteurs qui faciliteront l'appropriation d'un service ou d'un produit.</p>",
2514            speakers: ['nabil_thalmann']
2515        },
2516        {
2517            title: "Kotlin asynchrone : les coroutines",
2518            length: '1h',
2519            time: '19h45',
2520            type: 'talk',
2521            abstract: "<p>Les Coroutines sont la nouvelle fonctionalité du langage Kotlin pour sa version 1.1. En " +
2522                "l'essence, elles vous permettent d'écrire du code séquentiel mais asynchrone.</p>" +
2523                "<p>Dans ce talk, je présenterai le concept des coroutines et expliquerai comment Kotlin " +
2524                "implémente les coroutines pour être un outil sur lequel construire plutôt qu'un standard imposé à la communauté. " +
2525                "À travers un live-coding, nous explorerons les primitives bas niveau comme les principales " +
2526                "libraries haut niveau. Je montrerai comment ce formidable outil peut être utilisé aussi bien " +
2527                "en back-end sur un serveur que sur une application Android.</p>",
2528            speakers: ['salomon_brys']
2529        }
2530        ]
2531    }, {
2532        id: '2018_05_03',
2533        title: "Les joies de la négociation // TICK-Tac",
2534        date: new Date(2018, 4, 3), //month begin at 0
2535        time: '19',
2536        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/250168593/',
2537        place: 'eartsup',
2538        subjects: [{
2539            title: "Les joies de la négociation",
2540            length: '30min',
2541            time: '19h00',
2542            type: 'quickie',
2543            abstract: "<p>S’il est bien un aspect du métier de développeur qu’on aime pas toujours/trop, c’est de devoir négocier. " +
2544                "Souvent, la négociation se résume à un rapport de force. " +
2545                "Lors de l’entretien d’embauche ou l’entretien annuel, négocier son salaire est rarement une partie de plaisir, laissant parfois le sentiment de s’être fait (un peu ?) avoir." +
2546                "Même au sein d’une équipe, les négociations pour les choix techniques peuvent s’avérer... compliquées.</p>" +
2547                "<p>Ça n’est pas une fatalité :)</p>" +
2548                "<p>À partir d'un livre, « Comment réussir une négociation » (titre original : Getting to Yes), et de quelques retours d’expérience, découvrez quelques clés pour être mieux armés dans vos négociations.</p>",
2549            speakers: ['olivier_truong']
2550        },
2551        {
2552            title: "TICK-Tac, il est l'heure de collecter et exploiter vos données temporelles",
2553            length: '1h',
2554            time: '19h30',
2555            type: 'talk',
2556            abstract: "<p>Nos activités quotidiennes sont liées au temps. Pourquoi ne pas utiliser des base
2556s temporelles (time series databases) pour stocker et exploiter vos données ?</p>" +
2557                "<p>Au travers de la plateforme TICK (Telegraf, InfluxDB, Chronograf et Kapacitor) et Grafana et sur la base de l'exemple d'un monitoring de plateforme, nous verrons comment manipuler ces données temporelles.</p>",
2558            speakers: ['nicolas_steinmetz']
2559        }
2560        ]
2561    }, {
2562        id: '2018_04_26',
2563        title: "OpenFaas // Kotlin",
2564        date: new Date(2018, 3, 26), //month begin at 0
2565        time: '19',
2566        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/249153190/',
2567        place: 'creative',
2568        subjects: [{
2569            title: "OpenFaas, une solution simple et rapide à déployer pour faire du FaaS.",
2570            length: '30min',
2571            time: '19h00',
2572            type: 'talk',
2573            abstract: "<p>OpenFaaS est un projet d'Alexis Ellis, Docker Captain, basé sur Docker et sur les orchestrateurs Swarm ou Kubernetes. Cette solution facilite la mise en œuvre d'une architecture Serverless à base de fonctions.</p>" +
2574                "<p>A la différence de AWS Lambda ou d'autres services FaaS (Function as a Service) comme Google Cloud Functions, OpenFaas est une solution qui peut être déployée en On Premise, et ce très rapidement et simplement. L'autre différence est que tout peut devenir une fonction, y compris un binaire. " +
2575                "On comprend mieux pourquoi depuis sa présentation à la DockerCon 2017, ce projet fait fureur dans la communauté Docker.</p>" +
2576                "<p>Après une présentation succincte de ce qu'est le FaaS, nous explorerons la solution et l'ensemble de ses possibilités. Pour démontrer la puissance de ce framework, nous terminerons ce talk par une démonstration mettant en œuvre plusieurs fonctions.</p>",
2577            speakers: ['emmanuel_lebeaupin']
2578        },
2579        {
2580            title: "À la découverte de Kotlin",
2581            length: '45min',
2582            time: '19h35',
2583            type: 'talk',
2584            abstract: "<p>Kotlin est un langage de programmation qui s’adresse principalement aux utilisateurs Java. Supporté depuis l’année dernière par les plateformes Android, ce langage simple et moderne a fait une percée dans le monde du développement mobile. Interopérable avec Java, Kotlin est désormais doté d’une version JS et native qui élargit le champ de ses capacités.</p>" +
2585                "<p>Après un vernis historique sur les origines de ce langage, découvrons ensemble tout l’intérêt de Kotlin au travers de quelques points de syntaxe, concepts de base et outils. Nous terminerons ce talk par la présentation de deux exemples l’un sur Android et l’autre en Kotlin JS.</p>",
2586            speakers: ['yvelain_naude']
2587        }
2588        ],
2589        docs: [
2590            { name: 'flyer', url: 'https://goo.gl/V9kk4g', type: 'pdf' },
2591        ]
2592    },
2593    {
2594        id: '2018_04_10',
2595        title: "Open Tracing // Il n'y a pas que Angular, React ou VueJS",
2596        date: new Date(2018, 3, 10), //month begin at 0
2597        time: '19',
2598        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/249153080/',
2599        place: 'ynov',
2600        subjects: [{
2601            title: "Open Tracing, le SLF4J du traçage distribué",
2602            length: '30min',
2603            time: '19h00',
2604            type: 'talk',
2605            abstract: "<p>Un id de corrélation, cela n'a rien de nouveau, mais cela change la vie, surtout couplé avec un outil d'agrégation de logs. </p>" +
2606                "<p>Il est de plus en plus rare qu'une page web ne génère qu'une seule requête côté serveur. Et quand un bug survient, c'est la fin... " +
2607                "Parmi les X applications interrogées, pour trouver la source du bug, cela devient vite la galère... C'est une perte de temps, et une source de stress.</p>" +
2608                "<p>Open Tracing est une API disponible dans plusieurs langages, permettant de s'interfacer avec différents outils de traçage. " +
2609                "A l'image de Slf4J pour les logs, Open Tracing pemet donc de passer à une implémentation à une autre avec peu d'effort. " +
2610                "Vous utilisez à l'heure actuelle Zipkin, et vous voulez passer sur Jaeger, rien de plus simple. Quelques lignes à changer dans son code et c'est fait.</p>" +
2611                "<p>Je vous présenterais le principe de la corrélation d'id et les notions qui vont avec (trace, span, etc.), les outils existants, et pourquoi je crois en Open Tracing.</p>",
2612            speakers: ['florian_negre']
2613        },
2614        {
2615            title: "Il n'y a pas que Angular, React ou VueJS dans la vie",
2616            length: '45min',
2617            time: '19h35',
2618            type: 'talk',
2619            abstract: "<p>Nous connaissons tous les frameworks/librairies à la mode : de Angular 
2619à React, en passant par le tout dernier VueJS. Mais devons-nous nous limiter à ces trois solutions ? </p>" +
2620                "<p>Durant cette conférence, nous allons aborder plutôt les projets les moins connus, mais pas les moins intéressants, et qui pourraient être sources" +
2621                "d'idées pour les grands du Web. De Inferno à Marko, en passant par Preact, nous allons enfin pouvoir connaitre les avantages et inconvénients de ces solutions alternatives. </p>",
2622            speakers: ['emmanuel_demey']
2623        }
2624        ]
2625    },
2626    {
2627        id: '2018_03_22',
2628        title: "Micro-Interactions // Devenir une plateforme de services",
2629        date: new Date(2018, 2, 22), //month begin at 0
2630        time: '19',
2631        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/248653942/',
2632        place: 'insula',
2633        subjects: [{
2634            title: "Il n'y a pas de magie, tout est dans les détails !",
2635            length: '30min',
2636            time: '19h00',
2637            type: 'talk',
2638            abstract: "<p>Et s'il existait un monde où les petits détails d'une app ou d'un site web servent en même temps l'experience utilisateur et l'immersion dans un univers graphique ?</p><p>Un nouveau monde à la croisée de l'UX et de l'UI.</p>" +
2639                "<p>Plongée dans le monde des Micro-interactions...</p>" +
2640                "<p></p>" +
2641                "<p>Et s'il était possible d'améliorer l'experience utilisateur d'une app juste en travaillant les détails ?</p>" +
2642                "<p>S'il était possible d'apporter du réel dans une app virtuelle simplement ?</p>" +
2643                "<p>Ou comment récompenser physiquement l’utilisateur pour le guider dans son parcours ?</p>",
2644            speakers: ['thomas_buvignier']
2645        },
2646        {
2647            title: "ŌPUN : Devenir une plateforme de service",
2648            length: '45min',
2649            time: '19h35',
2650            type: 'talk',
2651            abstract: "<p>Lorsque ta direction te dit qu'il faut diversifier les activités et devenir une plateforme de services, un reset s'impose pour penser, from scratch, un nouveau pan du système d'information.</p>" +
2652                "<p>Durant l’année passée, nous avons pensé et mis en oeuvre un ensemble de méthodologies, pratiques, solutions techniques pour servir de nouveaux produits innovants bénéficiant d’un time-to-market compétitif et de coûts maîtrisés. Cette initiative prise dans une grosse entreprise de la région nous permet le droit à l’erreur, la possibilité de jeter au besoin tout en valorisant son legacy et en responsabilisant les développeurs.</p>" +
2653                "<p>Nous verrons donc ensemble les différentes étapes que nous avons suivi lors de cette “rupture”, les méthodologies employées, les façons de travailler, les patterns utilisés. Nous vous présenterons la suite d’outils que nous avons créé à l’occasion, lorsque les outils du marché ne convenaient pas à nos cas d’utilisation (la stack Netflix n’est pas faite pour tout le monde ;-).</p>" +
2654                "<p>Au programme, reverse-proxy, API gateway, ingestion de data, feature flipping, A/B testing, des démos qui plantent et bien plus encore.</p>",
2655            speakers: ['mathieu_ancelin', 'alexandre_delègue', 'francois_desmier']
2656        }
2657        ]
2658    },
2659    {
2660        id: '2018_02_27',
2661        title: "Cloud // Microservices",
2662        date: new Date(2018, 1, 27), //month begin at 0
2663        time: '19',
2664        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/247576881/',
2665        place: 'epitech',
2666        subjects: [{
2667            title: "Cloud : le couteau SaaS du développeur (et de la startup) !",
2668            length: '45min',
2669            time: '19h00',
2670            type: 'talk',
2671            abstract: "<p>Et si on pouvait développer une application sans coder! Ou pas…</p>" +
2672                "<p>Retour d'expérience sur le développement et la mise en production d’une application web s'appuyant sur +15 SaaS.<br/>" +
2673                "Ce partage nous permettra d’aborder les points suivants:<ul>" +
2674                "<li>
2674Tour d’horizon de l’offre *aaS,</li>" +
2675                "<li>Pourquoi du SaaS ?</li>" +
2676                "<li>Avantages et inconvénients,</li>" +
2677                "<li>La sécurité,</li>" +
2678                "<li>Les limites,</li>" +
2679                "<li>...</li>" +
2680                "</ul></p>",
2681            speakers: ['yann_danthu']
2682        },
2683        {
2684            title: "Comment maintenir de la cohérence dans votre architecture microservices",
2685            length: '45min',
2686            time: '19h45',
2687            type: 'talk',
2688            abstract: "<p>La tendance est au délaissement des architectures monolithiques au profit de micro-services bien découpés. Ainsi nous facilitons le passage à l'échelle, réduisons la taille de chaque projet et pouvons utiliser la pile techno adaptée à chaque module.</p>" +
2689                "<p>Cependant, en séparant ces briques, nous repoussons la complexité à la limite entre chaque module. La cohérence fournie par une base de code atomique et son système de types est perdue.</p>" +
2690                "<p>Dans cette session, je montrerai comment tenir compte explicitement des frontières entre modules permet de réduire le risque de données incohérentes. Je montrerai comment encoder les messages inter-modules, en déclarant explicitement pour chaque brique, la structure nécessaire et ce qui doit pouvoir évoluer sans impacter le module. La serialisation implicite a beau etre plus simple au début, l'explicite aide beaucoup.</p>" +
2691                "<p>Je donnerai des exemples en scala et javascript, tout en tirant des comparaisons avec mon expérience en développement web, où on a une expérience fournie de ce qui se passe quand les développeurs essayent d'ignorer les frontières entre coté serveur et coté client.</p>",
2692            speakers: ['clement_delafargue']
2693        }
2694        ]
2695    }, {
2696        id: '2018_01_31',
2697        title: "Progressive Web App // Recouvrer de la productivité avec Gradle",
2698        date: new Date(2018, 0, 31), //month begin at 0
2699        time: '19',
2700        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/246931283/',
2701        place: 'eartsup',
2702        subjects: [{
2703            title: "Native apps are doomed",
2704            length: '30min',
2705            time: '19h00',
2706            type: 'quickie',
2707            abstract: "<p>Les progressive web apps envahissent progressivement le marché comme Twitter avec Twitter Lite.<br/>" +
2708                "Y'a-t-il encore aujourd'hui à développer une application native, avec toutes les difficultés que celà entraîne ?</p>",
2709            speakers: ['mathias_bernardeau']
2710        },
2711        {
2712            title: "Recouvrer de la productivité avec Gradle",
2713            length: '1h',
2714            time: '19h30',
2715            type: 'talk',
2716            abstract: "<p>Vous entendez parler de Gradle, mais pour vous, ça n'est qu'un autre outil de build. Vous ne voyez pas l'intérêt. Pourtant, Gradle est différent. Il est conçu pour la productivité : réduire les temps de build, améliorer la modélisation des applications, résoudre les problèmes de gestion de dépendence...</p>" +
2717                "<p>Dans cette session, nous parlerons de Gradle 4 et des fonctionnalités uniques qu'il apporte : tâches incrémentales, builds composites, cache distribué, ... Nous montrerons aussi les build scans et comment ils permettent de gagner un temps précieux en donnant une perspective unique sur vos builds. Enfin, nous aborderons brievement l'arrivée de Gradle 5, qui innovera une fois de plus dans le domaine de la gestion de dépendances.</p>",
2718            speakers: ['cedric_champeau']
2719        }
2720        ]
2721    }, {
2722        id: '2017_12_14',
2723        title: "Soirée de Noël : Quickies & Cocktail",
2724        date: new Date(2017, 11, 14), //month begin at 0
2725        time: '19',
2726        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/245415172/',
2727        place: 'adresse_gare_sud',
2728        subjects: [{
2729            title: "Kotlin, la java qu'on aimerait avoir",
2730            length: '20min',
2731            time: '19h00',
2732            type: 'quickie',
2733            abstract: "<p>Je vais vous présenter le langage Kotlin, ses concepts principaux et sa syntaxe compacte par rapport à Java. Je vous montrerai en exemple une application Spring boot développée en Kotlin.</p>",
2734            speakers: ['adrien_pessu']
2735        },
2736        {
2737            title: 'Verdaccio un proxy npm à la rescousse',
2738            length: '20min',
2739            time: '19h20',
2740            type: 'quickie',
2741            abstract: "<p>La construction d'une application repose principalement sur le code source que nous autres développeurs (euses) avons développé, mais également sur toutes les dépendances (frameworks ou librairies) que nous allons ajouter au sein de cette même application.</p>" +
2742                "<p>Pour assurer la reproductibilité, la maintenabilité et l'évolution du processus de construction de notre application vis à vis des dépendances on s'appuie généralement sur un dépôt de dépendances accessible depuis Internet." +
2743                "L'écosystème JavaScript n'échappe pas à la règle et en quelques années npm est devenu un mastodonte régissant quasiment toutes les dépendances JavaScript.</p>" +
2744                "<p>
2744Lors de ce quickie nous verrons quels sont les avantages et les inconvénients de cette situation et comment nous pouvons utiliser l'outil Verdaccio comme proxy npm pour résoudre les problèmes du quotidien en entreprise.</p>",
2745            speakers: ['alvin_berthelot']
2746        },
2747        {
2748            title: 'Gamifier notre outillage traditionnel pour mettre en avant des concepts innovants.',
2749            length: '20min',
2750            time: '19h40',
2751            type: 'quickie',
2752            abstract: "<p>Comment nous avons construit un jeu afin de mettre en évidence différents concepts (scalibilité, résilience, …) et prouver le fonctionnement de composant techniques (Docker Swarm, SSE, …)" +
2753                "Le tout sur la base de technologies issues du développement d'application de gestion.</p>" +
2754                "<p>Il s’agit d’une présentation d’introduction qui présente le produit fini, et la démarche mais qui n’entre pas dans les détails techniques des différents composants du jeu.</p>",
2755            speakers: ['nicolas_giraud']
2756        },
2757        {
2758            title: 'Language Server Protocol : intégrer simplement un language dans un IDE',
2759            length: '20min',
2760            time: '20h00',
2761            type: 'quickie',
2762            abstract: "<p>Si je vous demandais de supporter un DSL dans plusieurs IDE, vous ne trouveriez pas ça compliqué ? Vive le mal de crâne! Et si je vous disais que j'avais un outil pour vous aider ? Faites place au Language Server Protocol! Cette spécification vise à simplifier l'intégration d'un language de programmation dans un IDE. Elle est totalement hallucinante. Le support de C# dans Eclipse, celui de java dans VSCode c'est grâce à elle. Alors si vous voulez simplement comprendre comment ça marche ou si vous voulez créer et intégrer votre propre serveur de language, venez voir cette présentation. Je vous montrerez comment jouer avec le LSP pour avoir de la complétion, documentation et validation sur un DSL maison.</p>",
2763            speakers: ['gautier_de_saint_martin_lacaze']
2764        }, {
2765            title: 'Cocktail 🍾 🍕 🍹',
2766            time: '20h30',
2767            type: 'cocktail',
2768            abstract: '<p>Quoi de mieux qu\'un cocktail offert par le Nantes JUG pour fêter la fin de l\'année.</p>' +
2769                '<p>Au programme : boissons, petits fours et discussions tech (ou pas).</p>'
2770        }
2771        ]
2772    }, {
2773        id: '2017_10_26',
2774        title: "Event Sourcing avec Apache Kafka // L'IoT dans la vraie vie",
2775        date: new Date(2017, 9, 26), //month begin at 0
2776        time: '19',
2777        register: 'https://www.meetup.com/fr-FR/preview/Nantes-Java-User-Group/events/243675823',
2778        place: 'eartsup',
2779        subjects: [{
2780            title: "L'IoT dans la vraie vie",
2781            length: '30min',
2782            time: '19h00',
2783            type: 'quickie',
2784            abstract: "<p>L'internet des objets, décrit par certains comme une nouvelle révolution de l'Internet, est un sujet au coeur d'une multitude d'actualités et de controverses, si bien qu'on a 
2784souvent du mal à faire le point sur son réel potentiel.</p>" +
2785                "<p>Oui mais les faits sont là : investissement des grands du numérique, accélération de startup, bassins d'emplois en France autour de l'IoT, réseau d'objets connectés, l'évolution est en marche, pour de vrai ! Alors, innovation surestimée ou réelle révolution ? </p>" +
2786                "<p>Ce Quickie a pour but de faire un bilan, sans compromis et en apportant une vision globale sur ce nouvel usage d'Internet, complété par un retour d'expérience à la Cité de l'objet connecté et illustré par l'exemple de la SNCF.</p>",
2787            speakers: ['benjamin_demonet']
2788        },
2789        {
2790            title: 'Event Sourcing avec Apache Kafka',
2791            length: '1h',
2792            time: '19h30',
2793            type: 'talk',
2794            abstract: "<p>Quand j'ai découvert Apache Kafka, j'ai rapidement été séduit par son élégance et sa simplicité. J'aimerais partager cette expérience avec vous.</p>" +
2795                "<p>Malgré son apparence initiale de bus de message, Kafka est un système de stockage de données extrêmement versatile. C'est un log persisté. Naturellement, j'ai fait le lien avec l'Event Sourcing, qui consiste à utiliser un log comme source de vérité d'une application, et ainsi ne jamais perdre une seule goutte de données. Alors je me suis dit : jusqu'où peut-on aller dans le développement d'une application de gestion avec Kafka pour seule base de données ? Qu'est-ce que ça donne ? Quels sont les défis à relever ? Est-ce vraiment différent d'une application centrée autour d'une base SQL ?" +
2796                "<p>Pour explorer ce terrain j'ai choisi d'implémenter une application très simple, le fameux TodoMVC, celui-là même qui sert de terrain de jeux aux frameworks front. Mon talk sera donc un retour sur cette expérience.</p>" +
2797                "<p>La présentation inclue une introduction à Kafka et au concept d'Event Sourcing, il n'y a donc aucun pré-requis.</p>",
2798            speakers: ['hugo_wood']
2799        }
2800        ]
2801    }, {
2802        id: '2017_09_18',
2803        title: "WebRTC // Et java 8 devient plus fonctionnel avec VAVR",
2804        date: new Date(2017, 8, 18), //month begin at 0
2805        time: '19',
2806        register: 'https://www.meetup.com/fr-FR/preview/Nantes-Java-User-Group/events/242950915',
2807        place: 'lucca',
2808        subjects: [{
2809            title: 'WebRTC : de la visioconférence dans les navigateurs sans plugins',
2810            length: '20min',
2811            time: '19h00',
2812            type: 'quickie',
2813            speakers: ['abdellatif_el_maknati']
2814        },
2815        {
2816            title: 'Et java 8 devient plus fonctionnel avec VAVR',
2817            length: '1h',
2818            time: '19h20',
2819            type: 'talk',
2820            abstract: "<p>Vavr est une librairie complètement dédiée au paradigme de programmation fonctionnelle. Elle a la particularité d'aller un peu plus loin que les notions de lambdas, pipelines ou composition de fonctions offertes par Java 8.</p>"
2821                // "<p>Durant cette session nous découvrirons les structures proposées par Vavr, comme les collections immuables, les values types tels que les Option, les Try, les Either…</p>"
2822                +
2823                "<p>Nous verrons comment cette librairie gère des aspects plus fonctionnels, à savoir la composition de fonction, le lifting, la memoization ou le currying.</p>" +
2824                "<p>Enfin nous terminerons avec la présentation de la syntaxe offerte pour le pattern Matching et le property checking.</p>",
2825            speakers: ['guillaume_lours']
2826        }
2827        ]
2828    }, {
2829        id: '2017_08_29',
2830        title: "Concours de l'été !!!",
2831        date: new Date(2017, 7, 29), //month begin at 0
2832        time: '19',
2833        subjects: [{
2834            title: 'Concours de l\'été !!!',
2835            length: 'Tout l\'été',
2836            abstract: '<p>Pour cet été on organise un concours sur twitter.</p>' +
2837                '<p>Comment participer ? C\'est simple. Tweetez à @nantesjug une photo de vos vacances avec votre t-shirt Nantes JUG. <a href="https://twitter.com/nantesjug/status/877198919335383042">Petit exemple de notre part.</a></p>' +
2838                '<p>Pour ceux qui n\'ont pas de compte twitter, vous pouvez nous envoyer un mail à l\'adresse [email protected].</p>' +
2839                '<p>Lots à gagner : </p><ul><li>3 licences Intellij IDEA</li><li>3 places pour le Devfest Nantes</li></ul>',
2840            speakers: []
2841        }]
2842    }, {
2843        id: '2017_06_19',
2844        title: "Akka, java 8 // serverless, et le doux parfum des vacances !",
2845        date: new Date(2017, 5, 19), //month begin at 0
2846        time: '19',
2847        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/240136198/',
2848        place: 'insula',
2849        subjects: [{
2850            title: 'Akka avec java 8 finalement c\'est cool !',
2851            length: '45min',
2852            time: '19h00',
2853            type: 'talk',
2854            abstract: '<p>Akka est une super boite à outils pour créer des applications ultra performantes et gérer facilement la concurrence.</p>' +
2855                '<p>Même si akka a toujours été présenté comme un framework pour les développeurs à la fois java et scala, il faut avouer que l\'api java était plutôt rebutante. L\'arrivée de java 8 a clairement changé la donne et il est enfin possible pour les développeurs java d\'utiliser akka tout en écrivant du jolie code.</p>' +
2856                '<p>Dans cette session, après une présentation du framework akka nous développerons une application akka 100% java. Au programme il y aura des acteurs, du rest et des streams !</p>',
2857            speakers: ['alexandre_delègue']
2858        }, {
2859            title: 'Serverless: just a buzzword?',
2860            length: '1h',
2861            time: '20h00',
2862            type: 'talk',
2863            abstract: '<p>Les conteneurs se généralisent depuis maintenant quelques temps. Et un nouveau concept est déjà en train de pointer le bout de son nez : le serverless. Qu’est-ce que c’est ? Est-ce un buzz ou une réelle évolution ? Est-ce que l’on doit déjà mettre à la poubelle les conteneurs ?</p>' +
2864                '<p>Au cours de cette présentation, nous présenterons les principes du serverless et nous ferons une mise en application avec AWS Lambda, Google Cloud Functions et le framework serverless. Nous essaierons d’apporter un éclairage sur l’intérêt de cette technologie à travers des exemples d’utilisation.</p>',
2865            speakers: ['julien_landure']
2866        }, {
2867            title: 'Cocktail 🍾 🍕 🍹',
2868            time: '21h00',
2869            type: 'cocktail',
2870            abstract: '<p>Quoi de mieux qu\'un petit cocktail pour fêter cette fin de saison.</p>' +
2871                '<p>Rendez-vous dans le patio, et au programme, boissons, petits fours et discussions tech (ou pas). On refait le monde !</p>'
2872        }]
2873    }, {
2874        id: '2017_05_15',
2875        title: "Anki Overdrive // CI, CD, pipelines, conteneurs",
2876        date: new Date(2017, 4, 15), //month begin at 0
2877        time: '19',
2878        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/239670797/',
2879        place: 'eartsup',
2880        subjects: [{
2881            title: 'CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?',
2882            length: '1h - 1h30',
2883            time: '19h00',
2884            type: 'talk',
2885            speakers: ['guillaume_membre'],
2886            abstract: '<p>Si vous croyez que Docker et les Pipelines ne servent qu\'aux chargements et transport de conteneurs, Jenkins, votre fidèle serviteur, vous montrera comment en tirer le meilleur parti.</p>'
2887        }, {
2888            title: 'Anki Overdrive : controllez vos voitures "circuit 24" à partir de votre code',
2889            length: '20min',
2890            time: '20h30',
2891            type: 'quickie',
2892            speakers: ['tugdual_grall'],
2893            abstract: '<p>Nous nous rappelons tous de notre premier circuit électrique, de notre premiers tours de piste dans un jeu vidéo, je vous propose dans cette présentation de passer à l\'étape suivante:  mélanger un jeux vidéo et un circuit de voiture, avec Anki Overdrive ( https://anki.com/en-us/overdrive )</p>' +
2894                '<p>Vous découvrirez en quelques minutes la mise en place d\'un circuit, le contrôle des voitures à partir de votre téléphone mobile, et l\'utilisation d\'intelligence artificielle pour plonger dans un nouveau style de jeux.</p>' +
2895                '<p>Puis vous découvrirez comment "hacker" les voitures pour capturer les données en temps réel, et même controller ces voitures à partir de votre code, donc à partir de n\'importe quel device connecté. (Mio, Leap, ...)</p>'
2896        }]
2897    }, {
2898        id: '2017_04_12',
2899        title: "Netflix // Devops",
2900        date: new Date(2017, 3, 12), //month begin at 0
2901        time: '19h00',
2902        register: 'https://www.meetup.com/Nantes-Java-User-Group/events/238418834/',
2903        place: 'eartsup',
2904        subjects: [{
2905            title: 'Netflix OSS ou comment  Homer est devenu un super héros',
2906            length: '45min',
2907            time: '19h00',
2908            type: 'talk',
2909            speakers: ['vickrame_ujoodha'],
2910            abstract: '<p>La stack Netflix OSS ou comment Homer Simpsons est devenu un super héros.</p>' +
2911                '<p>Homer Simpson éternelle looser dans la série, doit faire face une fois encore à l\' homme le plus cruel de SpringField, Mrs Burns.</p>' +
2912                '<p>Dans ce nouvel épisode, nous verrons comment Homer, confronté à des multiples questions auxquels il ne sais pas quoi répondre, a pu devenir un super héros,en utilisant la stack Netflix OSS, aux yeux de cet homme impitoyable. </p>' +
2913                '<p>Alors abonnez-vous pour voir cet épisode.</p>'
2914        }, {
2915            title: 'Au secours, mon chef m\'a demandé de passer au DevOps',
2916            length: '45min',
2917            time: '19h45',
2918            type: 'talk',
2919            speakers: ['antony_guilloteau'],
2920            abstract: '<p>"Continuous Delivery" et "DevOps" font partis des buzz word du moment dans l\'IT.</p>' +
2921                '<p>Si vous n\'êtes pas encore entrés dans ces démarches, ce n\'est qu\'une question de temps ! Préparez-vous à voir bientôt débarquer votre chef sur le bench avec le bouquin "Découvrir DevOps" sous le bras.</p>' +
2922                '<p>Mais pour les développeurs, ça change quoi le DevOps ? A travers cette conférence, je vais vous faire part des mes différents retours d\'expérience sur ces changements autour des pratiques, organisations et outillages.</p>'
2923        }]
2924    }, {
2925        id: '2017_03_01',
2926        title: "Gestion de conf // Angular 2",
2927        date: new Date(2017, 2, 1), //month begin at 0
2928        time: '19h00',
2929        register: 'https://www.meetup.com/Nantes-Java-User-Group/events/237897768/',
2930        place: 'hub_creatic',
2931        subjects: [{
2932            title: "Gestion de configuration avec Hespérides",
2933            length: '45min',
2934            time: '19h00',
2935            type: 'talk',
2936            speakers: ['emeric_martineau'],
2937            abstract: "<p>Le système d'information de Voyages-Sncf.com ce sont des centaines d'applications.<br>" +
2938                "Elles sont en Java, en PHP, en Python, en Ruby, en NodeJS... Autant de technologies qui ont leurs préférences au niveau du format de configuration (XML, YAML, INI...).<br>" +
2939                "Dans ce contexte, il faut un outil qui permet de gérer n'importe quel format de fichiers (excepté binaire) en étant totalement décorrélé de la technologie, le tout le plus simplement possible tout en proposant de gérer des environnements différents.<br>" +
2940                "Cet outil doit être accessible à tous pour faciliter la vie de tous les collaborateurs : des développeurs, aux testeurs en passant par le support, sans oublier la production.<br>" +
2941                "En plus il est OpenSource !</p>",
2942            docs: []
2943        }, {
2944            title: "Et si on refaisait le site du NantesJug en Angular 2 ?",
2945            length: '45min',
2946            time: '19h45',
2947            type: 'talk',
2948            speakers: ['anthonny_querouil'],
2949            abstract: "<p>
2949Le site du JUG de Nantes, <a href=\"http://http://www.nantesjug.org\">http://www.nantesjug.org</a> est une application Angular 1.0.8 qui date un peu, et comme tout bon jugger, j’aime mon JUG local et je me dis qu’une refonte serait la bienvenue.</p>" +
2950                "<p>Au cours de ce live-coding, nous partirons d’une application initiée avec angular-cli et nous créerons notre nouvelle version en utilisant TypeScript, un language typé de Microsoft, et la fameuse plateforme de développement on ne peut plus hype, Angular 2.</p>",
2951            docs: [
2952                { name: 'sources', url: 'https://github.com/anthonny/nantesjug-2017', type: 'github' }
2953            ]
2954        }]
2955    }, {
2956        id: '2017_02_21',
2957        title: "Soirée Kodo Kojo",
2958        date: new Date(2017, 1, 21), //month begin at 0
2959        time: '19h30',
2960        register: 'https://www.meetup.com/Nantes-Java-User-Group/events/237810951/',
2961        place: 'dojo',
2962        subjects: [{
2963            title: "Du Docker dans mon workflow de dev",
2964            length: '45min',
2965            time: '19h30',
2966            type: 'talk',
2967            speakers: ['jean_pascal_thiery', 'antoine_le_taxin'],
2968            abstract: "<p>Kodo Kojo est une solution Open source qui permet de fournir une usine logicielle en 3 clics qui inclut : la gestion de la sécurité, la configuration, le monitoring et la gestion des utilisateurs sur chacune des briques de l'usine.</p>" +
2969                "<p>Kodo Kojo s'appuie sur Mesos/Marathon/Docker pour lancer ses services ainsi que les briques qui constituent chaque usine logicielle. Nous proposons de vous présenter les solutions que nous avons mises en place pour tester et construire notre projet qui se compose d'une stack technique assez conséquente. Nous répondrons notamment aux questions suivantes :" +
2970                "<ul><li>Comment tester mon service de pilotage par API de Gitlab/Jenkins/Nexus ?</li>" +
2971                "<li>Comment tester l'UI sans avoir à installer Java, Maven, Meso, Marathon, Node, Npm,  HaProxy, ...</li>" +
2972                "<li>Comment automatiser tous ces tests ?</li>" +
2973                "<li>Comment partager nos livrables simplement ?</li></ul>" +
2974                "</p>",
2975            docs: []
2976        }],
2977        docs: [
2978            { name: 'slides', url: 'http://www.slideshare.net/KodoKojo/du-docker-dans-notre-workflow-de-dev-72453736', type: 'slideshare' },
2979        ]
2980    }, {
2981        id: '2017_02_01',
2982        title: "Soirée RxJava, Spring 5, Ratpack // Couchbase",
2983        date: new Date(2017, 1, 01), //month begin at 0
2984        time: '19',
2985        register: 'https://www.meetup.com/Nantes-Java-User-Group/events/237022612/',
2986        place: 'eartsup',
2987        subjects: [{
2988            title: "A practical RxJava example with Ratpack and Couchbase",
2989            length: '50min',
2990            time: '19h00',
2991            type: 'talk',
2992            speakers: ['laurent_doguin'],
2993            abstract: "<p>RxJava seems to be this awesome thing that every cool kids start using. But when you read about it, half of the time it’s hard to make anything out of it. Sure the isolated examples look nice but it’s always hard to put this in perspective with a real app.</p>" +
2994                "<p>In this talk I’ll go through an application made to store, index and search files. We’ll see the benefit brought by using RxJava , Ratpack and Couchbase together. Nothing too complicated or advanced, just something pragmatic.</p>" +
2995                "<p>This talk is for you if you want to discover RxJava through a pragmatic example. It’s a beginner talk.</p>",
2996            docs: []
2997        }, {
2998            title: "Applications web reactives avec Spring 5 et Reactor 3",
2999            length: '40min',
3000            time: '20h00',
3001            type: 'talk',
3002            speakers: ['simon_basle'],
3003            abstract: "<p>Dans cette présentation nous découvrirons Reactor 3, une librairie réactive alternative à RxJava mais proche de celle-ci. " +
3004                "Nous verrons comment Spring 5 va mettre l\'accent sur la programmation réactive avec Reactor comme base. Nous comparerons ensuite " +
3005                "Reactor avec RxJava 1 et RxJava 2, ce qui sera l\'occasion de se focaliser (comme la librairie) sur un contexte Java 8, la spécification " +
3006                "Reactive Streams et le concept de backpressure.</p>",
3007            docs: []
3008        }
3009
3010        ],
3011        docs: [
3012            { name: 'Affiche de la soirée', url: 'https://drive.google.com/open?id=0BzLO1XLmywLJS1A5cm1kOFBhakk', type: 'pdf' }
3013        ]
3014    }, {
3015        id: '2017_01_18',
3016        title: "I'm a CTO Bitch // Kanban from the startup warfare",
3017        date: new Date(2017, 0, 18), //month begin at 0
3018        time: '19',
3019        register: 'https://www.meetup.com/Nantes-Java-User-Group/events/236606281/',
3020        place: 'hub_creatic',
3021        subjects: [{
3022            title: "I'm a CTO Bitch",
3023            length: '0h40',
3024            time: '19h00',
3025            type: 'talk',
3026            speakers: ['youen_chene'],
3027            abstract: "<p>CTO, je suis un CTO, enfin! … Entre la course technologique, le juridique, la levée de fonds, le recrutement, le management, la gestion de la roadmap, les comités d’administration, les avant ventes et les 30 mn de code hebdomadaire, ce talk aidera les développeurs à mieux comprendre les CTOs et aux futurs CTOs à mieux appréhender ce nouveau role. </p>",
3028            docs: []
3029        },
3030        {
3031            title: "Kanban from the startup warfare",
3032            length: '0h30',
3033            time: '19h40',
3034            type: 'talk',
3035            speakers: ['youen_chene'],
3036            abstract: "<p>Nous verrons comment l'équipe produit de Saagie s'est organisé autour de l'approche Kanban pour répondre à ce système fortement contraint. Nous partagerons aussi les erreurs et les leçons apprises.</p>" +
3037                "<p>La présentation sera agrémentée d'un parallélisme avec un empire qui a eu une croissance de startup : l'empire mongol.</p>",
3038            docs: []
3039        }
3040        ],
3041        docs: [
3042            { name: 'slides', url: 'https://drive.google.com/open?id=0B4KTOFlyLP1xd1NtZzdTd0pDUTg', type: 'pdf' },
3043        ]
3044    },
3045    {
3046        id: '2016_10_14',
3047        title: "Soirée Quickies",
3048        date: new Date(2016, 11, 14), //month begin at 0
3049        time: '19',
3050        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/235607836/',
3051        place: 'insula',
3052        subjects: [{
3053            title: "Retour sur Devoxx Belgique 2016",
3054            length: '0h15',
3055            time: '19h00',
3056            type: 'quickie',
3057            speakers: ['yann_danthu'],
3058            abstract: "<p>" +
3059                "Devoxx.be c'est sur 5 jours dont 2 jours University et 3 jours de conférences.<br>" +
3060                "Je vous propose un petit retour sur mes 3 jours de conférence de Devoxx.be 2016, histoire de vous donnez envie d'aller y faire un tour ;)" +
3061                "</p>",
3062            docs: []
3063        }, {
3064            title: "Google Design Sprint : à quoi ça sert et pourquoi il faut essayer",
3065            length: '0h15',
3066            time: '19h15',
3067            type: 'quickie',
3068            speakers: ['matthieu_gioani'],
3069            abstract: "<p>" +
3070                "Le Google Design Sprint est une approche de prototypage d'un service ou d'un business en 5 jours qui permet d'avancer rapidement et de lever des hypothèses sur une idée.<br>" +
3071                "Venez découvrir ce qui fait le succès des Google Design Sprints !" +
3072                "</p>",
3073            docs: []
3074        }, {
3075            title: "DropWizard for the rest of us",
3076            length: '0h15',
3077            time: '19h30',
3078            type: 'quickie',
3079            speakers: ['adrien_pessu'],
3080            abstract: "<p>" +
3081                "Avec l'essor de l’architecture Microservice, DropWizard est un framework idéal pour développer des services REST.<br>" +
3082                "Je vous présenterai la simplicité de mise en place d'un microservice REST, ainsi que les possibilités du framework léger et robuste qu'est DropWizard." +
3083                "</p>",
3084            docs: [
3085                { name: 'slides', url: 'https://adrienpessu.github.io/prez/prez-DropWizard-quickie', type: 'html' },
3086                { name: 'projet', url: 'https://github.com/adrienpessu/dropwizard-demos-quickies', type: 'github' }
3087            ]
3088        }, {
3089            title: "2017: Java 9 et autres outils!",
3090            length: '0h15',
3091            time: '19h45',
3092            type: 'quickie',
3093            speakers: ['eric_bernardeau'],
3094            abstract: "<p>" +
3095                "En 2017, nous devrions avoir Java 9 qui va entraîner pas mal de changement dans nos outils.<br>" +
3096                "Ce quickie est l'occasion de présenter les modifications / roadmap de ces outils qui s
3096ortiront en 2017, comme par exemple spring 5." +
3097                "</p>",
3098            docs: []
3099        }, {
3100            title: "Webcomponents the state of the art",
3101            length: '0h15',
3102            time: '20h00',
3103            type: 'quickie',
3104            speakers: ['yvonnick_frin'],
3105            abstract: "<p>" +
3106                "Quoi les webcomponents !? Ce truc-là, on en entend parler depuis des années et chacun en a sa propre interprétation.<br>" +
3107                "Et puis, c’est pas vraiment réutilisable car il faut se traîner le framework associé à chaque fois !</p>" +
3108                "<p>La spécification W3C est passée en working draft, Chrome et Opéra la supporte déjà entièrement.<br>" +
3109                "Profitons-en pour faire un état de l’art sur ce concept de composant standard pour le Web ! " +
3110                "</p>",
3111            docs: []
3112        }, {
3113            title: "Keycloak, une solution simple pour sécuriser vos applications",
3114            length: '0h20',
3115            time: '20h15',
3116            type: 'quickie',
3117            speakers: ['cyril_vrillaud'],
3118            abstract: "<p>" +
3119                "Un quicky de 20mins sur Keycloak (http://www.keycloak.org) une solution de sécurisation des applications (front, API, fédération d’utilisateurs…), qui prendrait la forme d’une démo d'un POC illustrant un use case de Voyages-sncf.com." +
3120                "</p>",
3121            docs: []
3122        }],
3123        docs: [
3124        ]
3125    }, {
3126        id: '2016_11_30',
3127        title: "Démystifier ElasticSearch",
3128        date: new Date(2016, 10, 30), //month begin at 0
3129        time: '19',
3130        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/235607237',
3131        place: 'eartsup',
3132        subjects: [{
3133            title: 'Démystifier ElasticSearch',
3134            length: '1h30',
3135            time: '19h00',
3136            type: 'talk',
3137            speakers: ['maxime_odye'],
3138            abstract: "<p>ElasticSearch est une solution de moteur de recherche utilisée par beaucoup, comprise par peu. Surcouche de l'inévitable Apache Lucene, ElasticSearch en efface la complexité pour y ajouter des interfaces \"user-friendly\". ElasticSearch est une solution Out-of-the-box étonnante, s'adaptant à l'applicatif et aux besoins sans action de l'utilisateur. Force ou faiblesse ? " +
3139                "<br>Comprendre ce qu'il se passe sous le capot est essentiel pour réaliser des applications performantes et pertinentes. Analyse de texte, types de recherche et clusterisation. Autant d'outils qui méritent d'être appréhendés et compris. ElasticSearch est une brique importante de la stack ELK (ElasticSearch, Logstash, Kibana). Comprendre ce que l'on indexe dans notre moteur et comment nous l'interrogeons est nécessaire pour une restitution pertinente dans Kibana." +
3140                "</p>",
3141            docs: []
3142        }],
3143        docs: [
3144            { name: 'Affiche de la soirée', url: ' https://drive.google.com/uc?export=download&id=0B9mpGdJWcahkclNrMG5nRUxob0k', type: 'pdf' }
3145        ]
3146    }, {
3147        id: '2016_10_19',
3148        title: "Dev' Party 16",
3149        date: new Date(2016, 9, 19), //month begin at 0
3150        time: '19',
3151        register: 'http://www.meetup.com/fr-FR/GDG-Nantes/events/233996882/',
3152        place: 'epitech',
3153        subjects: [{
3154            title: 'Dev\' Party',
3155            length: '4h',
3156            time: '19h00',
3157            type: 'fun',
3158            abstract: '<p>Sous forme d\'un tournoi "Clash of Code" fourni par Codingame, vous coderez sur différentes épreuves : puzzle, rapidité, moins de ligne de code...' +
3159                '<br>Co-organisé avec le NantesJUG, cette soirée sera aggrémentée avec pizza, boissons et bien sûr des lots à gagner.' +
3160                ' <p>N\'oubliez pas votre laptop pour participer !</p>' +
3161                ' <p>INSCRIPTION sur le meetup du GDG > <a href="http://www.meetup.com/fr-FR/GDG-Nantes/events/233996882/" target="_blank">ICI</a></p>',
3162            docs: []
3163        }],
3164        docs: [
3165            //        {name: 'Affiche de la soirée', url: 'https://drive.google.com/file/d/0B1KMBvIq23BMb1haZFFjSHdFOXc/view', type:'pdf'}
3166        ]
3167    }, {
3168        id: '2016_09_28',
3169        title: "Soirée Sonar",
3170        date: new Date(2016, 8, 28), //month begin at 0
3171        time: '19',
3172        register: 'https://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/233885243/',
3173        place: 'eartsup',
3174        subjects: [{
3175            title: 'SonarLint et SonarQube pour détecter les bugs, code smells et vulnérabilités',
3176            length: '2h',
3177            time: '19h00',
3178            type: 'talk',
3179            speakers: ['freddy_mallet'],
3180            abstract: '<p>Durant cette présentation, Freddy montrera comment totalement intégrer SonarLint et SonarQube dans une chaine de développement' +
3181                ' pour détecter en continue les problèmes de fiabilité, maintenabilité et sécurité.' +
3182                ' La présentation s\'appuiera sur des exemples de code source Java, JavaScript, C# et C. </p>',
3183            docs: []
3184        }],
3185        docs: [
3186            //        {name: 'Affiche de la soirée', url: 'https://drive.google.com/file/d/0B1KMBvIq23BMb1haZFFjSHdFOXc/view', type:'pdf'}
3187        ]
3188    }, {
3189        id: '2016_06_23',
3190        title: "Meet & Greet",
3191        date: new Date(2016, 5, 23), //month begin at 0
3192        time: '19',
3193        register: 'http://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/231793731/',
3194        place: 'insula',
3195        subjects: [{
3196            title: 'Cocktail, petits fours et bla bla bla :-)',
3197            length: '4h',
3198            time: '19h00',
3199            type: 'cocktail',
3200            intro: 'Petite soirée pour discuter, échanger et vous souhaitez de bonnes vacances avant la rentrée. ' +
3201                'Ce sera l\'occasion de parler technique, cuisine, vacances ou foot autour d\'un (ou plusieurs) verre et petits fours.',
3202            speakers: [],
3203            abstract: '<p>Petite soirée pour discuter, échanger et vous souhaitez de bonnes vacances avant la rentrée.</p>' +
3204                '<p>Ce sera l\'occasion de parler technique, cuisine, vacances ou foot autour d\'un (ou plusieurs) verre et petits fours.<br>' +
3205                'Merci à nos sponsors qui ont permis l\'organisation de cette soirée gratuite.</p>',
3206            docs: []
3207        }],
3208        docs: [
3209            { name: 'Affiche de la soirée', url: 'https://drive.google.com/file/d/0B1KMBvIq23BMb1haZFFjSHdFOXc/view', type: 'pdf' }
3210        ]
3211    }, {
3212        id: '2016_06_14',
3213        title: "GraphQL, HTTP2 et Kill mutants !",
3214        date: new Date(2016, 5, 14), //month begin at 0
3215        time: '19',
3216        register: 'http://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/231323461/',
3217        place: 'eartsup',
3218        subjects: [{
3219            title: 'Fetch your data with GraphQL',
3220            length: '15min',
3221            time: '19h00',
3222            type: 'quickie',
3223            speakers: ['antoine_cellier'],
3224            abstract: '<p>GraphQL est une spécification proposée par Facebook permettant d’accéder à un schéma de données issue de sources tel que des bases de données ou des services tiers, de mettre en place un typage fort et de structurer des données. Au cours de ce talk, nous allons voir comment interroger et modifier des données grâce à l\'implémentation Javascript de GraphQL.</p>',
3225            docs: [
3226                //	            {name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=bCMPs9xXrZM', type: 'youtube'},
3227                //	            {name: 'Slides de la présentation', url: 'https://drive.google.com/file/d/0B0aGd3KiW4gVNElNTDczZ0NTYjg/view?usp=sharing', type: 'pdf'}
3228            ]
3229        }, {
3230            title: 'HTTP2 : ce qui va changer !',
3231            length: '20min',
3232            time: '19h30',
3233            type: 'quickie',
3234            speakers: ['julien_landure'],
3235            abstract: '<p>HTTP1 est omniprésent en 2016 et HTTP2 est pourtant "sorti" le 15 mai 2015. Qu\'est-ce qu\'on y gagne, nous développeurs ? Les principes d\'optimisation Web seront-ils toujours d\'actualités ? Venez découvrir HTTP2, le futur protocole du Web !</p>',
3236            docs: [
3237                //	            {name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=bCMPs9xXrZM', type: 'youtube'},
3238                //	            {name: 'Slides de la présentation', url: 'https://drive.google.com/file/d/0B0aGd3KiW4gVNElNTDczZ0NTYjg/view?usp=sharing', t
3238ype: 'pdf'}
3239            ]
3240        }, {
3241            title: 'Kill mutants, save your code!',
3242            length: '30min',
3243            time: '20h00',
3244            type: 'quickie',
3245            speakers: ['eric_briand'],
3246            abstract: '<p>Les mutants attaquent et ils en veulent à votre code ! Ils exploitent chaque faille de votre couverture de code et l’expose au grand jour ! Mais grâce à PIT, vous allez pouvoir y remedier très vite et contrecarrer cette invasion ! Vos tests unitaires seront challengés et évoluerons pour devenir plus pertinents. Les mutants n’auront qu’à bien se tenir !</p>' +
3247                '<p>Lors de cette session, nous parlerons des principes du mutation testing et montrerons son application directe avec PIT, framework de mutation testing Java. Nous utiliserons des tests unitaires plus ou moins pertinents pour etudier la manière dont les mutations mettent en évidence et ciblent les carences des tests.</p>',
3248            docs: [
3249                //	            {name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=bCMPs9xXrZM', type: 'youtube'},
3250                //	            {name: 'Slides de la présentation', url: 'https://drive.google.com/file/d/0B0aGd3KiW4gVNElNTDczZ0NTYjg/view?usp=sharing', type: 'pdf'}
3251            ]
3252        }],
3253        docs: [
3254            //	    {name: 'Affiche de la soirée', url: 'https://drive.google.com/file/d/0B9mpGdJWcahkcEFocG02MTQ4UFU/view?usp=sharing', type: 'pdf'}
3255        ]
3256    }, {
3257        id: '2016_05_10',
3258        title: "DDD, P&A, ES, CQRS, ETC",
3259        date: new Date(2016, 4, 10), //month begin at 0
3260        time: '19',
3261        register: 'http://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/230696969/',
3262        place: 'eartsup',
3263        subjects: [{
3264            title: 'DDD, P&A, ES, CQRS, ETC',
3265            length: '1h30',
3266            time: '19h00',
3267            type: 'talk',
3268            speakers: ['arnaud_bailly', 'cedric_pineau'],
3269            abstract: '<p>Parce que nous sommes tous des « fashion victims », parce que vous savez déjà que vous ne saurez pas résister aux sirènes des micro-services, parce vous peinez déjà à justifier l\'approche « full reactive » dont vous rêvez pour ce projet qui doit démarrer, nous vous proposons de prendre un peu de recul et de discuter, pour une fois, d\'architecture logicielle (et de moissonner au passage quelques nouvelles munitions pour votre prochaine « buzzword battle »).</p>' +
3270                '<p>Le « Domain-Driven Design » est un cadre conceptuel pour le développement de logiciels qui met l\'accent sur l\'expression directe des concepts du métier  sous forme de code, dans le but de diminuer la friction entre experts métiers et informaticiens.</p>' +
3271                '<p>L\'architecture « Ports And Adapters » est une démarche de structuration du code qui vise à isoler la logique métier des détails techniques de son implémentation.</p>' +
3272                '<p>« Event Sourcing » désigne un principe d\'architecture, décrit par Martin Fowler, qui met au centre du monde les événements transformant l\'état d\'un système. L\'état n\'est alors rien d\'autre que la suite des événements l\'ayant produit à partir d\'un état initial connu et précisément défini.</p>' +
3273                '<p>Le principe de « Command Query Responsibility Separation » ou CQRS est un prolongement naturel de l\'Event Sourcing où l\'on introduit une séparation complète des schémas de données en écriture et en lecture.</p>' +
3274                '<p>Cette présentation est un retour sur nos expériences dans la mise en œuvre de systèmes logiciels basés sur ces démarches de conception et d\'architecture. Nous voulons montrer quels sont les principes de ces architectures, quels en sont les avantages tant techniques que métiers dans des cas d\'utilisation concrets et comment les mettre en œuvre quels que soient les environnements techniques. </p>',
3275            docs: [
3276                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=bCMPs9xXrZM', type: 'youtube' },
3277                { name: 'Slides de la présentation', url: 'https://drive.google.com/file/d/0B0aGd3KiW4gVNElNTDczZ0NTYjg/view?usp=sharing', t
3277ype: 'pdf' }
3278            ]
3279        }],
3280        docs: [
3281            { name: 'Affiche de la soirée', url: 'https://drive.google.com/file/d/0B9mpGdJWcahkcEFocG02MTQ4UFU/view?usp=sharing', type: 'pdf' }
3282        ]
3283    }, {
3284        id: '2016_04_12',
3285        title: "Code in the cloud with Eclipse Che & Kill the REST with the Falcor",
3286        date: new Date(2016, 3, 12), //month begin at 0
3287        time: '19',
3288        register: 'http://www.meetup.com/fr-FR/Nantes-Java-User-Group/events/229939263/',
3289        place: 'hub_creatic',
3290        subjects: [{
3291            title: 'Code in the cloud with Eclipse Che: the Next-Gen Eclipse IDE',
3292            length: '45min',
3293            time: '19h00',
3294            type: 'talk',
3295            speakers: ['stevan_le_meur', 'florent_benoit'],
3296            abstract: "<p>Cette session présentera les nouveautés du projet Eclipse Che et la façon dont les workspaces ont été redéfinis afin d'être portables et facilement mis à la disposition des développeurs.</p>" +
3297                "<p>La première démo, montrera comment créer un workspace basé sur un ensemble de machines Docker, comment l’utiliser pour développer des applications Java ainsi que quelques fonctionnalités de l’IDE (debugger, refactoring, ...).</p>" +
3298                "<p>Nous vous montrerons également comment nous utilisons Che pour développer Che et vous ferons notre retour d\'expérience lorsqu\'il est intégré à des outils tels que JIRA, Jenkins et GitHub.</p>",
3299            docs: [
3300            ]
3301        }, {
3302            title: 'Kill all the REST with the Falcor',
3303            length: '45min',
3304            time: '19h45',
3305            type: 'talk',
3306            speakers: ['hugo_wood'],
3307            abstract: "<p>Tout comme Facebook, Netflix a présenté sa propre technologie qui pourrait sonner le glas des API REST, Falcor.<br>" +
3308                "Elle déclare avoir réduit la taille de son code serveur de 90% grâce à un unique end-point qui sert toutes les données. Deux entreprises de cette envergure qui implémentent ainsi des concepts très proches, cela mérite que l'on s'y intéresse.</p>" +
3309                "<p>Après vous avoir expliqué le pourquoi et le comment, je vous propose que l'on explore ce que l'on peut construire avec Falcor.<br>" +
3310                "Et si on développait une API pour développer des API ? (Leonardo Dicaprio ne fera pas d'apparition lors de cette conférence.)</p>",
3311            docs: [
3312            ]
3313        }],
3314        docs: [
3315            { name: 'Affiche de la soirée', url: 'https://drive.google.com/file/d/0B9mpGdJWcahkWkhfdi1oYkJrTWs/view?usp=sharing', type: 'pdf' }
3316        ]
3317    }, {
3318        id: '2016_03_17',
3319        title: "Soirée Sécurité des applications Java",
3320        date: new Date(2016, 2, 17), //month begin at 0
3321        time: '19',
3322        register: 'http://guestli.st/409116',
3323        place: 'eartsup',
3324        subjects: [{
3325            title: 'REX: Audit de sécurité d\'applications Java',
3326            length: '20min',
3327            time: '19h00',
3328            type: 'talk',
3329            speakers: ['marc_lebrun'],
3330            abstract: '<p>Retour d\'expérience, du point du vue du consultant, sur les audits de sécurité portant sur des applications Java:</p>' +
3331                '<ul>' +
3332                '<li>Types d\'applications rencontrées,</li>' +
3333                '<li>Méthodologie,</li>' +
3334                '<li>Exemples de failles.</li>' +
3335                '</ul>',
3336            docs: [
3337            ]
3338        }, {
3339            title: 'Secure Coding Live !',
3340            length: '1h',
3341            time: '19h30',
3342            type: 'talk',
3343            speakers: ['sebastien_gioria'],
3344            abstract: '<p>Lors de cette session nous prendrons une application de type shopping Card et appliquerons les bonnes pratiques de secure Coding Java dessus pour la rendre plus resistante aux différentes attaques Web. </p>',
3345            docs: [
3346            ]
3347        }],
3348        docs: [
3349            { name: 'Vidéo de la soirée', url: 'https://www.youtube.com/watch?v=grqesqXEAFo', type: 'youtube' }
3350        ]
3351    }, {
3352        id: '2016_03_02',
3353        title: "Vert.X",
3354        date: new Date(2016, 2, 2), //month begin at 0
3355        time: '19',
3356        register: 'http://guestli.st/404760',
3357        place: 'eartsup',
3358        subjects: [{
3359            title: "Vert.x - Sprechen vous reactive fanta'stico ?",
3360            length: '1h30 min',
3361            time: '19h',
3362            type: 'talk',
3363            speakers: ['clement_escoffier'],
3364            abstract: "<p>Vous devez bâtir une application qui passe à l’échelle, à base de micro-services ou plus classique, tolérante aux pannes, mais vous ne savez pas par ou commencer ? La seule chose dont vous avez besoin est un fichier jar et d’une machine virtuelle java.</p>" +
3365                "<p>Vert.x 3 est une librairie pour créer des systèmes réactifs s’exécutant sur une machine virtuelle Java. Vert.x 3 offre une nouvelle manière d’implémenter des applications concurrentes,scalables et tolérantes aux fautes. Avec vert.x 3 vous pouvez développer des applications « micro-services » distribuées en Java, mais aussi en JavaScript, Groovy, Ruby et Ceylon.  Vert.x 3 permet également d’intégrer des applications \"non-vert.x\" tel que node.js, .NET ou C.</p>" +
3366                "<p>Cette présentation introduit les concepts clés de Vert.x and comment vous pouvez utiliser Vert.x dans votre prochain projet. Cette session explique les systèmes réactifs, la programmation réactive (attention c’est pas la meme chose), comment le modèle de programmation asynchrone proposé par Vert.x vous permet de construire facilement des applications concurrentes et pourquoi c’est fait ainsi. Nous verrons également le passage a l’échelle, la tolérance aux pannes, les perfs, le monitoring et les composants clés de l’éco-système Vert.x…</p>",
3367            docs: [
3368                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=KeZAf0fIOGA', type: 'youtube' }
3369            ]
3370        }],
3371    }, {
3372        id: '2016_02_25',
3373        title: "Infrastructure automation & React",
3374        date: new Date(2016, 1, 25), //month begin at 0
3375        time: '19',
3376        register: 'http://guestli.st/404751',
3377        place: 'hub_creatic',
3378        subjects: [{
3379            title: "Why do you need to automate your infrastructure?",
3380            length: '40 min',
3381            time: '19h',
3382            type: 'quickie',
3383            speakers: ['guillaume_blondeau'],
3384            abstract: '<p>Dans cette présentation je ferai un retour d\'expérience sur la gestion d\'infrastructure.</p>' +
3385                '<p>Nous verrons comment nous sommes passés d\'une application hébergée sur Amazon Web Services (AWS) et gérée "à la main" à une solution complétement automatisée, du provisionnement au déploiement.</p>' +
3386                '<p>Ce sera l\'occasion de parler des problématiques, des solutions et de présenter <a href="http://www.ansible.com/" target="_blank">Ansible</a>, l\'outil d\'automatisation que nous avons utilisé.</p>',
3387            docs: [
3388            ]
3389        }, {
3390            title: "Let's React",
3391            length: '1h20',
3392            time: '19h40',
3393            type: 'talk',
3394            speakers: ['mathieu_ancelin'],
3395            abstract: '<p>React est une librairie JavaScript développée par Facebook pour créer facilement des interfaces graphiques. La particularité de React vient de son modèle de programmation orienté composant et de sa façon de décrire les vues de ces composants. Contrairement à d\'autres librairies, ici pas de templates et de pseudo code, React permet d\'utiliser la pleine expressivité de JavaScript et de bénéficier de tout l\'écosystème Javascript et de toutes les features du langage, notamment tous les goodies apportés par ES2015.</p>' +
3396                '<p>Durant cette session orientée live coding, nous verrons comment utiliser React pour créer des composants graphiques dans le cadre d\'applications web et d\'applications mobiles natives grâce à React Native.</p>',
3397            docs: [
3398            ]
3399        }],
3400        docs: [
3401            { name: 'Vidéo de la soirée', url: 'https://www.youtube.com/watch?v=QZOtyKtp5Vg', type: 'youtube' }
3402        ]
3403    }, {
3404        id: '2016_01_19',
3405        title: "Orchestrating a Continuous Delivery Pipeline with Jenkins and Docker",
3406        date: new Date(2016, 0, 19), //month begin at 0
3407        time: '19',
3408        register: 'http://guestli.st/401376',
3409        place: 'hub_creatic',
3410        subjects: [{
3411            title: "What\'s new in Java 9",
3412            length: '30 min',
3413            time: '19h',
3414            type: 'quickie',
3415            speakers: ['laurent_maillet'],
3416            abstract: "Java 8 est sorti depuis près de deux ans. " +
3417                "Alors qu\'Oracle avait avancé un rythme de release de version majeurs tous les deux ans, qu\'en est-il réellement ? " +
3418                "Java 9 s\'annonce-t-il aussi riche que l\'a pu être son prédécesseur ? Je vous propose un tour d'horizon de l\'avancée de Java 9 et de ces nouveautés.",
3419            docs: [
3420                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=XX2OLBdyJ1s', type: 'youtube' }
3421            ]
3422        }, {
3423            title: "Orchestrating a Continuous Delivery Pipeline with Jenkins and Docker",
3424            length: '1h',
3425            time: '19h30',
3426            type: 'talk',
3427            speakers: ['nicolas_deloof'],
3428            abstract: "<p>le \"Continuous Delivery\" est un sacré buzz word, et \"Docker\" encore plus, mais les blog que j'ai pu lire sur sujet ne proposent qu'un pipeline naif et minimaliste : compile, test, push docker image, et voilà.</p>" +
3429                "<p>En 2015 Jenkins adresse clairement plus que de l'Integration Continue, et avec le support récent du workflow plugin nous pouvons orchestrer avec un DSL des pipelines de grande complexité. L'integration avec Docker lui donne encore plus de puissance.</p>" +
3430                "<p>Pendant cette session, je vais construire un pipeline de CD from scratch pour montrer l'utilisation du workflow et sa flexibilité, ainsi que le support de Docker.</p>",
3431            docs: [
3432                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=o26DbcN11Hw', type: 'youtube' }
3433            ]
3434        }],
3435    }, {
3436        id: '2015_12_15',
3437        title: "Livrer chaque jour ce qui est prêt & Continuous Merge avec Git",
3438        date: new Date(2015, 11, 15), //month begin at 0
3439        time: '19',
3440        register: 'http://guestli.st/398028',
3441        place: 'eartsup',
3442        subjects: [{
3443            title: "Livrer chaque jour ce qui est prêt",
3444            length: '1h',
3445            time: '19h',
3446            type: 'talk',
3447            speakers: ['dimitri_baeli', 'geoffrey_berard'],
3448            abstract: "<p>C\'est une aventure très enrichissante de passer d\'une organisation de type \"éditeur logiciel\" (Cycle Plan/Dev/Recette/Prod) " +
3449                "avec une release par mois à une organisation non moins solide de type \"Continuous Delivery\" avec une mise en production par jour de " +
3450                "\"ce qui est prêt\". C\'est pourquoi nous vous proposons de découvrir les moyens techniques et organisationnels en pratique chez LesFurets.com " +
3451                "pour garantir la qualité tout en diminuant le \"Time To Market\" : déploiement par les devs, travail en feature branches avec un merge continu, " +
3452                "itérations avec le business, monitoring de prod pour tous, ...</p>" +
3453                "<p>Organisation du travail, principes directeurs et pistes à suivre.</p>",
3454            docs: [
3455            ]
3456        }, {
3457            title: "Continuous Merge avec Git",
3458            length: '1h',
3459            time: '20h',
3460            type: 'talk',
3461            speakers: ['dimitri_baeli', 'geoffrey_berard'],
3462            abstract: "<p>Partage du fonctionnement de l\'outillage Git chez LesFurets.com. Le \"merge continu\" étend notre intégration continue pour nous permettre" +
3463                " de gérer au quotidien plus d’une cinquantaine de branches de développement. Détection des conflits, intégration, qualité... " +
3464                "Venez découvrir comment nous livrons 5 à 20 branches de code en production chaque jour !</p>" +
3465                "<p>Présentation beaucoup plus détaillée de notre organisation du code en GIT (feature branching & merge continu)</p>",
3466            docs: [
3467            ]
3468        }],
3469        docs: [
3470            { name: 'Vidéo de la soirée', url: 'https://www.youtube.com/watch?v=V37UJ7_V22s', type: 'youtube' },
3471        ]
3472    }, {
3473        id: '2015_11_23',
3474        title: "REX docker puis Monoliths et Microservices",
3475        date: new Date(2015, 10, 23), //month begin at 0
3476        time: '19',
3477        register: 'http://guestli.st/350382',
3478        place: 'eartsup',
3479        subjects: [{
3480            title: "REX docker sur la mise d'une forge logicielle et ALM",
3481            length: '20 min',
3482            time: '19h',
3483            type: 'quickie',
3484            speakers: ['guillaume_membre'],
3485            abstract: "<p>Un petit REX sur la mise en place de Docker pour construire une plateforme de forge logicielle et ALM.</p>" +
3486                "<p>L'idée n'est pas de re-présenter Docker mais plutot ce qui a bien " +
3487                "marché et moins bien sur le déploiement d'une forge logicielle que " +
3488                "j'ai mis en place pour un de mes clients, les difficultés à créér des " +
3489                "images, la facilité à customiser les existantes, le temps passé par " +
3490                "rapport à l'installation directe sur la machine hote...</p>",
3491            docs: [
3492                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=YzfZsEAgNHc', type: 'youtube' }
3493            ]
3494        }, {
3495            title: "Monoliths et Microservices",
3496            length: '1h30 min',
3497            time: '19h30',
3498            type: 'talk',
3499            speakers: ['steve_sfartz'],
3500            abstract: "<p>Monoliths et Microservices : buzz words 2015, il est temps de vous faire un avis sur le sujet.</p>" +
3501                "<p>Venez découvrir les microservices, et les outils disponibles pour démarrer. " +
3502                " Illustrations avec la stack Netflix, quelques retours d'expérience, et une démo de la Gateway Programmatique Kong.</p>",
3503            docs: [
3504                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=5LnL1HYmLwY', type: 'youtube' }
3505            ]
3506        }],
3507    }, {
3508        id: '2015_10_13',
3509        title: "Soirée Reconnaissance d'écriture et GitHub",
3510        date: new Date(2015, 9, 13), //month begin at 0
3511        time: '19',
3512        register: 'http://guestli.st/346224',
3513        place: 'eartsup',
3514        subjects: [{
3515            title: "Ajoutez de la reconnaissance d'écriture à votre webapp grâce à Polymer",
3516            length: '30 min',
3517            time: '19h',
3518            type: 'quickie',
3519            speakers: ['pierre_alban_dewitte'],
3520            abstract: "<p>MyScript construit une technologie de reconnaissance d'écriture depuis plus de 15 ans. Nous avons récemment ajouté à notre portfolio un composant Polymer permettant d'intégrer très facilement de la reconnaissance d'écriture dans votre webapp.</p>" +
3521                "<p>Ce quickie sera d'abord l’occasion de comprendre comment fonctionne la reconnaissance d'écriture grâce au machine learning avec une illustration au travers de plusieurs démonstrations.</p>" +
3522                "<p>Ensuite nous expliquerons l'anatomie du composant Polymer de reconnaissance puis lors d'une séance de codage en direct nous intégrerons de la reconnaissance d'expression mathématique dans une webapp.<br><br></p>" +
3523                "<p>Venez avec votre téléphone, tablette ou ordinateur portable pour observer Polymer en action.</p>",
3524            docs: [
3525                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=gUfYJ5CgCA4', type: 'youtube' }
3526            ]
3527        }, {
3528            title: "Stratégies de collaboration avec Git & GitHub",
3529            length: '1h30',
3530            time: '19h30',
3531            type: 'talk',
3532            speakers: ['alain_helaili'],
3533            abstract: "<p>De nombreuses équipes se contentent de remplacer leur gestionnaire de code source par Git sans vraiment revoir leur mode de collaboration ni exploiter ses possibilités.</p>" +
3534                "<p>Il n'y a pas mieux pour se récupérer les contraintes du changement et aucun de ses bénéfices. L'objectif de cette présentation est de passer en revue différents workflows basés sur Git et GitHub, en y incluant des stratég
3534ies de code review et des exemples d'outils tiers.</p>" +
3535                "<p>Enfin, on verra comment le workflow humain peut se prolonger par un déploiement automatisé bien que pas forcément continu.</p>",
3536            docs: [
3537                { name: 'Vidéo de la présentation', url: 'https://www.youtube.com/watch?v=CUsZYzvrKog', type: 'youtube' }
3538            ]
3539        }],
3540    }, {
3541        id: '2015_09_24',
3542        title: "Restitution du Hackathon des communautés nantaises de développeurs",
3543        date: new Date(2015, 8, 24), //month begin at 0
3544        time: '19',
3545        register: 'https://guestlistapp.com/events/341355',
3546        place: 'eartsup',
3547        subjects: [{
3548            title: "Restitution du Hackathon des communautés nantaises de développeurs",
3549            length: '2h',
3550            time: '19h',
3551            type: 'talk',
3552            speakers: [],
3553            abstract: "<p>Le NantesJUG organise un événement dans le cadre de la Digital Week 2015, le <a href=\"http://www.nantesdigitalweek.com/evenement-2015/hackathon-des-communautes-nantaises-de-developpeurs/\">\"Hackathon des communautés nantaises de développeurs\".</a></p>" +
3554                "<p>Ce hackathon a pour objectif de réunir les différentes communautés de développeurs nantais autour d'un sujet à base d'Open Data de la ville de Nantes. Chaque communauté doit créer une équipe afin de participer.</p>" +
3555                "<p>Le sujet sera communiqué à chaque équipe au début de la Digital Week, le 17/09. Elles auront alors une semaine pour relever le défi.</p>" +
3556                "<p>Lors de la soirée, un jury, composé de membres des différentes communautés, désignera l'équipe gagnante.</p>",
3557            docs: [
3558            ]
3559        }],
3560    }, {
3561        id: '2015_06_22',
3562        title: "Soirée sur l'importance de l'UX & sur Meteor.js",
3563        date: new Date(2015, 5, 22), //month begin at 0
3564        time: '19',
3565        register: 'https://guestlistapp.com/events/333678',
3566        place: 'hub_creatic',
3567        subjects: [{
3568            title: "L'expérience utilisateur est importante pour nous",
3569            length: '45 min',
3570            time: '19h',
3571            type: 'talk',
3572            speakers: ['florence_herrou'],
3573            abstract: "<p>L'expérience utilisateur est une discipline peu connue et encore très négligée en France, en particulier lors de la conception d'applications métier. " +
3574                "Pourtant, une bonne ergonomie améliore la productivité et facilite l'adoption par les usagers. Dans beaucoup de projets, en particulier en mode agile, " +
3575                "le développeur participe à la définition de l'interface et des fonctionnalités.</p>" +
3576                "<p>Cette conférence le sensibilisera à l'importance de l'expérience utilisateur et lui donnera quelques clés pour savoir comment l'améliorer.</p>",
3577            docs: [
3578            ]
3579        }, {
3580            title: "Full Stack Reactivity avec Meteor.js",
3581            length: '45 min',
3582            time: '19h45',
3583            type: 'talk',
3584            speakers: ['anthonny_querouil'],
3585            abstract: "<p>Vous souhaitez créer des applications réactives et virer vos spinners ? Vous cherchez un environnement de développement javascript efficace ?</p>" +
3586                "<p>Meteor.js est fait pour vous !</p>" +
3587                "<p>Je vous présenterai cet outil et ce qui gravite autour.</p>",
3588            docs: [{
3589                name: 'Les slides',
3590                url: 'http://anthonny.github.io/decks/full-stack-reactivity-avec-meteorjs/',
3591                type: 'html'
3592            }, {
3593                name: 'Les sources de Tweetiments',
3594                url: 'https://github.com/anthonny/tweetiments',
3595                type: 'github'
3596            }]
3597        }],
3598    }, {
3599        id: '2015_05_11',
3600        title: 'Soirée Quickies',
3601        date: new Date(2015, 4, 11), //month begin at 0
3602        time: '19',
3603        register: 'https://guestlistapp.com/events/324039',
3604        place: 'eartsup',
3605        subjects: [{
3606            title: "Java 8 en pratique",
3607            length: '30 min',
3608            time: '19h',
3609            type: 'quickie',
3610            speakers: ['gabriel_landais'],
3611            abstract: "<p>Quelques exemples de réécriture de code legacy avec les nouvelles API Java 8.</p>",
3612        },
3613        {
3614            title: 'Gitflow In Action',
3615            length: '30 min',
3616            time: '19h30',
3617            type: 'quickie',
3618            speakers: ['cecilia_bossard'],
3619            abstract: "<p>Vous cherchez un modèle de gestion des branches pour Git facile et pratique à utiliser ? Vous souhaitez avoir un workflow simple et agile pour gérer vos versions ?</p>" +
3620                "<p>Venez jeter un oeil à GitFlow !</p>" +
3621                "<p>Je vous présenterai ce workflow qui nous a permis de mieux organiser nos versions et de remplacer SVN par Git sans regret.</p>",
3622            docs: [
3623                { name: 'Slides', url: 'http://www.slideshare.net/cecilia_bossard/git-flow-in-action', type: 'slideshare' }
3624            ]
3625        },
3626        {
3627            title: 'Tips and tricks for clean relational db schemas',
3628            length: '45 min',
3629            time: '20h',
3630            type: 'quickie',
3631            speakers: ['clement_delafargue'],
3632            abstract: "<p>It can be usual for software developers to let the ORM take care of the database schema. In many cases it's a bad idea as it makes the data stored in your database brittle and hard to use confidently. I'll show a few tricks which will help you cleanly store and query data by using your database engine to its full power.</p>" +
3633                "<p>In some cases, using an ORM brings more problems than solutions. I'll explore these cases (they are more common than you think) and how to use the freedom given by having complete control over your schema and your queries:" +
3634                "<ul>" +
3635                "<li>indexes</li>" +
3636                "<li>semantic data types</li>" +
3637                "<li>query composition</li>" +
3638                "<li>window functions</li>" +
3639                "</ul>" +
3640                "<p>I'll show how to still be efficient and concise when going this path (with Jooq / Slick / Anorm)</p>",
3641        }
3642        ],
3643        docs: [
3644            { name: 'Vidéo de la soirée', url: 'https://www.youtube.com/watch?v=i4NcsrtZWOA', type: 'youtube' },
3645        ]
3646    }, {
3647        id: '2015_04_16',
3648        title: 'Soirée Invoke Dynamite / BDD',
3649        date: new Date(2015, 3, 16), //month begin at 0
3650        time: '19',
3651        register: 'https://guestlistapp.com/events/317631',
3652        place: 'netapsys',
3653        subjects: [{
3654            title: "BDD & Cucumber: Feature first",
3655            length: '30 min',
3656            time: '19h',
3657            type: 'quickie',
3658            speakers: ['renan_michaud'],
3659            abstract: "<p>Imaginez un projet d’envergure mené en SCRUM avec un backlog constitué d’une multitude d’US plus ou moins organisées. Pensez-vous que ce Backlog ayant l’emprunte forte de la vie courante du BUILD puisse constituer votre référentiel fonctionnel ?" +
3660                " Non. L'approche BDD permet d'établir ce référentiel et d'en automatiser la vérification." +
3661                " Avec Cucumber, je vous propose de voir comment effectuer cette automatisation autant sur les web services que sur les IHM du poste de développement à la production !.</p>",
3662        },
3663        {
3664            title: 'Let\'s invoke dynamite',
3665            length: '1h30',
3666            time: '19h30',
3667            type: 'talk',
3668            speakers: ['antoine_sabot_durand'],
3669            abstract: "<p>Si l'arrivée d'InvokeDynamic dans Java 7 a marqué un tournant pour la création de langages basés sur la JVM, cette fonctionnalité est restée confidentielle dans l'univers des développeurs de frameworks Java et de Java EE.</p>" +
3670                "<p>Dans cette présentation nous reviendrons sur les particularités d'InvokeDynamic et sur sa mise en oeuvre en Java.</p>" +
3671                "<p>Ensuite nous verrons comment remplacer le mécanisme de Proxy utilisé dans CDI par des appels InvokeDynamic.</p>" +
3672                "<p>Enfin nous expliquerons comment la généralisation d'invokeDynamic pourrait marquer la mort des conteneurs et la fin de Java EE tel que nous le connaissons.</p>",
3673        }
3674        ],
3675    }, {
3676        id: '2015_03_11',
3677        title: 'Soirée Cassandra / GAE',
3678        date: new Date(2015, 2, 11), //month begin at 0
3679        time: '19',
3680        register: 'https://guestlistapp.com/events/312915',
3681        place: 'eartsup',
3682        subjects: [{
3683            title: "Google App Engine, déployer plus vite que son ombre !",
3684            length: '30 min',
3685            time: '19h',
3686            type: 'quickie',
3687            speakers: ['remi_picard'],
3688            abstract: "<p>\"Cloud\" par çi, \"Solutions PaaS\" par là. Mais quel est donc le sens de ces termes si présents ces dernières années ? Pourquoi tant de succès ? Et le développeur dans tout ça ?</p>" +
3689                "<p>Si vous vous posez toutes ces questions, venez assister à une présentation de la solution Google App Engine. Celle-ci sera illustrée par une démonstration du déploiement sur le Cloud d'un site Java JEE.</p>",
3690        },
3691        {
3692            title: 'Introduction to Cassandra',
3693            length: '1h00',
3694            time: '19h30',
3695            type: 'talk',
3696            speakers: ['duyhai_doan'],
3697            abstract: "<p>In this session, we’ll introduce Apache Cassandra, highlight its architecture, consistency and replication model to explain how the database can provide linear scalability, high availability and consistent performance.</p>" +
3698                "<p>There will be a quick overview of the Cassandra data model, query language and tooling for developers.</p>" +
3699                "<p>Sujet en français</p>",
3700            docs: [
3701                { name: 'Les slides', url: 'http://www.slideshare.net/doanduyhai/cassandra-introduction-nantesjug', type: 'slideshare' }
3702            ]
3703        },
3704        {
3705            title: 'Cassandra nice use-cases and worst anti-patterns seen in production',
3706            length: '30 min',
3707            time: '20h30',
3708            type: 'talk',
3709            speakers: ['duyhai_doan'],
3710            abstract: "<p>For this session, we'll show some best practices, dig into some nice use-cases seen in production but also the worst anti-patterns to avoid. There will be an interactive demo.</p>" +
3711                "<p>Sujet en français</p>",
3712            docs: [
3713                { name: 'Les slides sur Killrchat', url: 'http://fr.slideshare.net/doanduyhai/killrchat-presentation', type: 'slideshare' }
3714            ]
3715        }
3716        ],
3717        docs: [
3718            { name: 'Slides d\'intro', url: 'https://docs.google.com/presentation/d/1bOwzcFsAskoVdozoo-ClgLSxK4IDJhlUpPz_hSTl2_Y/edit?usp=sharing', type: 'drive' },
3719            { name: 'Restlet', url: 'https://docs.google.com/presentation/d/1PGf2fQMqm4G8ozkW8uLtaZToUM216nK7k0aC6_8_fYw/edit?usp=sharing', type: 'drive' },
3720            { name: 'Zenika', url: 'https://docs.google.com/presentation/d/1ndb-d18uvE6Z5I_OrwzTcXCSTUrPTIC9sqNMuEPrSsM/edit?usp=sharing', type: 'drive' }
3721        ]
3722    }, {
3723        id: '2015_02_16',
3724        title: 'Soirée Search Lucene/Solr - Rex Chef',
3725        date: new Date(2015, 1, 16), //month begin at 0
3726        time: '19',
3727        register: 'https://guestlistapp.com/events/310620',
3728        place: 'eartsup',
3729        subjects: [{
3730            title: "Chef, oui Chef !",
3731            length: '30 min',
3732            time: '19h',
3733            type: 'quickie',
3734            speakers: ['francois_kha'],
3735            abstract: "Nous allons vous faire un petit retour d'expérience sur la mise en place de Chef à CBP pour livrer plus fréquemment nos applications Java/JEE. Qu'est-ce que Chef ? Pourquoi l'utiliser ? Comment ? Pour quels usages ?<br/> Deux développeurs, un adminsys pour vous répondre." +
3736                "<p>par François Kha <a href='http://twitter.com/fanchok'>@fanchok</a> - Sébastien Errien <a href='http://twitter.com/SebErrien'>@SebErrien</a> - Bastien Jové <a href='http://twitter.com/Tensibai'>@Tensibai</a></p>",
3737            docs: [
3738                { name: 'Les slides', url: 'http://fr.slideshare.net/francoiskha/20150216-quickie-chef-au-jug-nantes', type: 'slideshare' }
3739            ]
3740        },
3741        {
3742            title: 'Soirée Search Lucene/Solr',
3743            length: '1h30',
3744            time: '19h30',
3745            type: 'talk',
3746            speakers: ['olivier_tavard'],
3747            abstract: "<p>Découvrez les outils open source de Search qui ont déjà convaincu de nombreuses entreprises, et qui est proposé par la fondation Apache: Lucene / Solr.</p>" +
3748                "<p>Dans la première partie de soirée, histoire de savoir de quoi on parle, Olivier vous présentera les projets Lucene et Solr, leurs composants, leur architecture, leurs features, et on saupoudrera tout ça de scalabilité avec SolrCloud (avec démo).</p>" +
3749                "<p>En deuxième partie de soirée, Olivier vous présentera l’écosystème (ou du moins une partie) qui gravite autour de Lucene /Solr: ManifoldCF qui permet de gérer les connexions aux sources de données (avec démo d’indexation de contenu et recherche en live grâce à Datafari) et Hadoop, car il faut bien parler de Big Data, et parce que Solr devient un des outils de référence pour faire du search sur Hadoop.</p>" +
3750                "Avec tout ça vous aurez dans vos bagages de quoi gérer des Big projets avec du Big search dedans.</p>",
3751            docs: [{
3752                name: 'Les slides',
3753                url: 'http://fr.slideshare.net/francelabs/presentation-lucene-solr-datafari-nantes-jug',
3754                type: 'slideshare'
3755            }]
3756        }
3757        ],
3758        docs: [
3759            { name: 'Vidéo de la soirée', url: 'https://www.youtube.com/watch?v=RpAGb8fO97k', type: 'youtube' }
3760        ]
3761    },
3762    {
3763        id: '2015_01_27',
3764        title: 'JavaFX.forReal() - MongoDB Pub/Sub',
3765        date: new Date(2015, 0, 27), //month begin at 0
3766        time: '19',
3767        register: 'http://guestli.st/306156',
3768        place: 'netapsys',
3769        subjects: [{
3770            title: 'Pub/Sub avec MongoDB',
3771            length: '30 min',
3772            time: '19h',
3773            type: 'quickie',
3774            speakers: ['tugdual_grall'],
3775            abstract: "Venez découvrir comment créer un système pub/sub de messages/notifications avec MongoDB.<br/>Durant ce quickie nous utiliserons : des capped collections, tailable cursors, Java, Node, WebSocket/Socket.io, .... pour créer une application de notification en temps réel.",
3776            docs: [{
3777                name: 'La vidéo de la soirée',
3778                url: 'http://youtu.be/ezZkiQLb7BE',
3779                type: 'youtube'
3780            }]
3781        },
3782        {
3783            title: 'JavaFX.forReal()',
3784            length: '1h30',
3785            time: '19h30',
3786            type: 'talk',
3787            speakers: ['thierry_wasylcszenko'],
3788            abstract: '<p><b>En reve:</b><br/>JavaFX (8) ... le buzz word d\'Oracle, en terme de développement de clients lourds, qui le présente comme le successeur de Swing. Tout est faisable facilement en JavaFX.</p><p><b>Dans la vraie vie:</b><br/>Mais “Swing c\'est mort”, “quelqu\'un fait-il encore du desktop?”, "y a-t-il sérieusement des gens qui utilisent JavaFX?”, “l\'avenir c\'est du web 2.0 (et au-delà) avec du *JS”, “moi je ne fais que du web”.<br/>Ces remarques vous semblent-elles familières? Cette session est faite pour vous car JavaFX répondra sans doute à toutes ces interrogations mais aussi à vos besoins.<br/>Cessons de (trop) rêver, soyons pragmatiques et revenons à la réalité. Est-il possible de réaliser des applications JavaFX complexes, pas uniquement un Bonjour Monde, et pourquoi ne pas coupler cela à du Vertx, asciidoctor, LeapMotion, JavaScript, OSGi & friends?<br/>
3788JavaFX peut-il concurrencer le web de demain voire en être complémentaire? JavaFX peut-il répondre à vos besoins?<br/>Découvrons-le ensemble lors de cette session orientée REX. Ce n\'est pas toujours aussi simple que l\'on pourrait se l\'imaginer bien que ce soit la réalité.</p>',
3789            docs: [{
3790                name: 'Les slides',
3791                url: 'http://fr.slideshare.net/twasyl/javafxforreal',
3792                type: 'slideshare'
3793            }, {
3794                name: 'La vidéo de la soirée',
3795                url: 'http://youtu.be/c011LBQRWbs',
3796                type: 'youtube'
3797            }]
3798        }
3799        ]
3800    }, {
3801        id: '2014_12_15',
3802        title: 'Le BigData NoBullShit: Cas d’utilisation chez Dictanova et Cityzen Data',
3803        date: new Date(2014, 11, 15), //month begin at 0
3804        time: '19',
3805        register: 'http://guestli.st/301611',
3806        place: 'eartsup',
3807        subjects: [{
3808            title: 'Le BigData NoBullShit: Cas d’utilisation chez Dictanova et Cityzen Data',
3809            length: '2 h',
3810            time: '19h',
3811            type: 'talk',
3812            speakers: ['damien_raude_morvan', 'david_morin'],
3813            abstract: "<p>Il y a 2 ans, la mode était de faire du Big Data, désormais il faut faire du Smart Data... Mais concrètement, à quoi est-ce que cela peut bien servir ?</p>" +
3814                "<p>A travers les expériences de deux entreprises, Dictanova (Damien Raude-Morvan) et de Cityzen Data (David Morin), nous essayerons de vous présenter des exemples concrets d’utilisations du Big Data et répondre par exemple aux questions suivantes :</p>" +
3815                "<ul><li>Quelle infrastructure mettre en place pour gérer de gros volumes de données ? Quels sont les écueils à éviter ? Les offres de type XaaS sont-elles pertinentes ?</li>" +
3816                "<li>Comment passer du simple &quot;hello world&quot; en Map/Reduce à un véritable traitement métier ? Comme modéliser un enchaînement de jobs avec Oozie ? Comme obtenir des primitives de plus haut niveau que Map/Reduce ? Cascading, Spark, Tez ?</li>" +
3817                "<li>Une fois les données stockées, comment effectuer de l’analyse sur ces dernières ? Comment utiliser des langages de requêtage comme Pig ?</li>" +
3818                "<li>Comment gérer le changement dans son modèle de données ? Modèle de données avec Avro ? Avec Parquet ou encore Thrift ?</li>" +
3819                "<li>Comment assurer la supervision de jobs en production sur un cluster Hadoop ?</li></ul>",
3820        }]
3821    }, {
3822        id: '2014_11_17',
3823        title: 'Stresser vos applications web avec Gatling',
3824        date: new Date(2014, 10, 17), //month begin at 0
3825        time: '19',
3826        register: 'http://guestli.st/296148',
3827        place: 'epsi',
3828        subjects: [{
3829            title: 'Les backstages de Devfest 2014',
3830            length: '30 min',
3831            time: '19h',
3832            type: 'quickie',
3833            speakers: ['jean-francois-garreau'],
3834        },
3835        {
3836            title: 'Stresser vos applications web avec Gatling',
3837            length: '1 h 30',
3838            time: '19h30',
3839            type: 'talk',
3840            abstract: "<p>Vous vous posez les questions :<ul><li>Mon application web (quelque soit la technologie) tient-elle la charge ?</li><li>Jusqu'à combien d'utilisateurs mon application a des temps de réponse acceptable ?</li></ul></p>" +
3841                "<p><a href='http://gatling.io/'>Gatling</a> va vous aider à y répondre.<ul><li>La philosophie de l'outil, en quoi il se distingue de ses concurrents</li><li>Une démonstration de son utilisation avec une application concrète</li></ul></p>",
3842            speakers: ['rossi_oddet'],
3843            docs: [{
3844                name: 'Les slides',
3845                url: 'http://fr.slideshare.net/RossiOddet/jug-nantes-novembre-2014',
3846                type: 'slideshare'
3847            }]
3848        }
3849        ]
3850    },
3851    {
3852        id: '2014_10_27',
3853        title: 'Java Embarqué / Internet des Objects avec IS2T  --  Une fille dans mon équipe',
3854        date: new Date(2014, 9, 27), //month begin at 0
3855        time: '19',
3856        register: 'http://guestli.st/293664',
3857        place: 'cantine_juton',
3858        subjects: [{
3859            title: 'Une fille dans mon équipe',
3860            length: '30 min',
3861            time: '19h',
3862            type: 'quickie',
3863            speakers: ['cecilia_bossard', 'jean_palies'],
3864            abstract: '<p>Actuellement, 20% des postes dans le domaine de l\'IT sont occupés par des femmes, et la tendance ne va pas en s\'arrangeant. Pourquoi ce désintérêt ?</p>' +
3865                '<p>Le groupe Women In Technology vous propose de revenir sur ce sujet et de présenter son a
3865pproche pour essayer d’inverser la tendance.</p>',
3866        },
3867        {
3868            title: 'Java Embarqué / Internet des Objects avec IS2T',
3869            length: '1 h 30',
3870            time: '19h30',
3871            type: 'talk',
3872            abstract: '<p>A travers une présentation de la plateforme d\'exécution embarquée MicroEJ, la société IS2T parlera du Java dans le monde des objets intelligents ou comment l\'usage de Java permet d\'accélérer la conception d\'un logiciel dans l\'embarqué contraint et d\'en réduire les coûts.  </p>' +
3873                '<p></p>',
3874            speakers: ['fred_rivard'],
3875        }
3876        ]
3877    }, {
3878        id: '2014_09_29',
3879        title: 'Metrics & Docker  ',
3880        date: new Date(2014, 8, 29), //month begin at 0
3881        time: '19',
3882        register: 'http://guestli.st/286752',
3883        place: 'eartsup',
3884        subjects: [{
3885            title: 'Codehale Metrics',
3886            length: '30 min',
3887            time: '19h',
3888            type: 'quickie',
3889            speakers: ['damien_raude_morvan'],
3890            abstract: '<p>En 2014, un développeur Java est plutôt habitué à évaluer la "qualité" de son code - avec SonarQube ou des processus de peer review.</p>' +
3891                '<p>Mais lorsqu\'on lui parle de la "production", il est souvent désarmé : les métriques qu\'on lui propose ne correspondent à rien de connu et il n\'a pas assez d\'informations pour guider ses améliorations.</p>' +
3892                '<p>Dans ce quicky, j’essaierais de vous présenter la solution que j\'utilise : le framework Codehale Metrics.</p>' +
3893                '<p>Ce dernier vise à permettre au développeur de créer des indicateurs techniques ou fonctionnels. Il propose de nombreux choix d\'intégration avec vos frameworks préférés et permet un export des métriques dans de nombreux formats.</p>',
3894            docs: [
3895                { name: 'Support de présentation', url: 'http://www.drazzib.com/projects/docs/metrics/#/', type: 'html' }
3896            ]
3897        },
3898        {
3899            title: 'Lucy in the sky with docker',
3900            length: '1 h 30',
3901            time: '19h30',
3902            type: 'talk',
3903            abstract: '<p>On parle beaucoup de Docker en ce moment. Je vais tenter de vous expliquer comment fonctionne Docker comme j’aurais aimé qu’on me l’explique.</p>' +
3904                '<p>Nous allons apprendre à prendre en main Docker pour construire une application web Java 8 et la déployer sur la Google Cloud Platform.</p>',
3905            speakers: ['david_gageot'],
3906        }
3907        ]
3908    }, {
3909        id: '2014_06_30',
3910        title: 'Flyway & Patterns de cache  ',
3911        date: new Date(2014, 5, 30), //month begin at 0
3912        time: '20',
3913        old_time: '19',
3914        register: 'http://guestli.st/265998',
3915        place: 'eartsup',
3916        subjects: [{
3917            title: 'France - Nigéria',
3918            length: '90 min',
3919            type: 'foot',
3920            time: '18h',
3921            speakers: ['didier_deschamps'],
3922            abstract: '<p>Huitième de finale de la coupe du monde.</p> '
3923        },
3924        {
3925            title: 'Comment planner avec Flyway',
3926            length: '30 min',
3927            time: '20h',
3928            type: 'quickie',
3929            speakers: ['ludovic_praud'],
3930            abstract: '<p>Pour avoir l\'esprit tranquille avec vos migrations SQL en DEV ou en PROD, voici un petit retour d\'expérience de 2 ans d\'utilisation quotidienne de Flyway.</p> ',
3931            docs: [
3932                { name: 'Support de présentation', url: 'https://drive.google.com/file/d/0B41V8oJXwyYhb1pTeHpsQzNsRmhYd3ZPMEhsVHduTm9tSXBr/edit?usp=sharing', type: 'drive' }
3933            ]
3934        },
3935        {
3936            title: 'Les Patterns de Cache',
3937            length: '1 h 30',
3938            time: '20h30',
3939            type: 'talk',
3940            abstract: '<p>Comment diminuer le temps de traitement d’un batch ? Le temps d’exécution d\'une requête ? Le cache est un des outils du développeur pour résoudre ses problématiques quotidiennes et les concepts qui gravitent autour sont nombreux.</p>' +
3941                '<p>Si les mots Cache Aside, Write-Behind, Read-Through ne vous sont pas familiers, cela fait pourtant parti des architectures qu’il est facile à mettre en place et qui dans certains contextes peuvent diminuer de manière drastique la durée d’un batch ou d’une requête.</p>' +
3942                '<p>
3942Nous aborderons également les différents moyens de scaler horizontalement et verticalement le cache (réplication, miroir, partitionnement) en nous appuyant sur différentes librairies existantes (GemFire, Coherence, Terracotta, Ehcache, Infinispan, Hazelcast) mais également NoSQL et plus généralement les In Memory Data Grid (IMDG)</p>',
3943            speakers: ['mathilde_lemee'],
3944        }
3945        ]
3946    }, {
3947        id: '2014_05_20',
3948        title: 'Devoxx Fr & Gradle',
3949        date: new Date(2014, 4, 20), //month begin at 0
3950        time: '19',
3951        register: 'http://guestli.st/254883',
3952        place: 'epsi',
3953        subjects: [{
3954            title: 'Devoxx France 2014',
3955            length: '30 min',
3956            type: 'quickie',
3957            speakers: ['thibaud_raison', 'pierre_cosson'],
3958            abstract: '<p>Compte-rendu et tour d\'horizon de l\'édition 2014 de Devoxx France.</p> ',
3959            docs: [{
3960                name: 'Support de présentation',
3961                url: 'https://drive.google.com/file/d/0BzLO1XLmywLJS1Q4alIxeFRxTTA/edit?usp=sharing',
3962                type: 'drive'
3963            }, {
3964                name: 'Listing ressources Devoxx 2014',
3965                url: 'https://drive.google.com/file/d/0BzLO1XLmywLJbWczVU55RGFFMEE/edit?usp=sharing',
3966                type: 'drive'
3967            }]
3968        },
3969        {
3970            title: 'Gradle ne fait pas que remplacer Maven',
3971            length: '1 h 30',
3972            type: 'talk',
3973            abstract: '<p>Il faut que vous le sachiez, Gradle ne fait pas que remplacer Maven. Il répond à d\'autres problématiques : conventions d\'entreprise, intégration continue, DevOps, parallélisme, gestion avancée des dépendances, ' +
3974                'variantes de build déclarative, compilation incrémentale, projets polyglottes, artéfacts multiples...</p>' +
3975                '<p>Dans cette session, vous apprendrez pourquoi on ne peut pas réduire Gradle à un Maven sans XML ou un Ant sous stéroïdes. Vous verrez qu\'écrire une build sera plus jamais une punition. Pire, ça pourrait devenir un plaisir !',
3976            speakers: ['cedric_champeau'],
3977        }
3978        ]
3979    },
3980    {
3981        id: '2014_04_14',
3982        title: 'Soirée Tools : Developper Efficacement',
3983        date: new Date(2014, 3, 14), //month begin at 0
3984        time: '19',
3985        register: 'http://guestli.st/245676',
3986        place: 'eartsup',
3987        subjects: [{
3988            title: 'Write Java Apps Faster Using SaaS Developer Environments',
3989            length: '45 min',
3990            type: 'talk',
3991            speakers: ['tyler_jewell', 'stevan_le_meur'],
3992            abstract: '<p>The Java community is filled with terrific solutions for enabling development of apps. Every Java developer has their choice of tools and the openness of the platform makes it accessible to anyone and extensible by everyone.</p>' +
3993                '<p>But why then, is 99% of all development still done locally? While sales, marketing, customer service, support, finance, and infrastructure has steadily moved to the cloud over the past decade, Java development remains rooted on the desktop. Will it always be this way? </p>' +
3994                '<p>In this session, we will discuss the evolution of remote development of Java applications and the emergence of SaaS Developer Environments. Often times called a cloud IDE, a SaaS environment can eliminate configuration, increase collaboration, and alleviate management concerns around consistency, compliance, and velocity. In essence, SaaS developer environments can make agile, more agile.</p>' +
3995                '<p>We will present a beta of the Codenvy Cloud, a sister system to codenvy.com that has been in development since 2011.</p>',
3996        },
3997        {
3998            title: 'Faites un « départ lancé » sur les technos Angular JS, Spring MVC, JPA, REST/HATEOAS',
3999            length: '1 h 00',
4000            type: 'talk',
4001            abstract: '<p>Présentation du principe de « Development Accelerator » avec un générateur de code simple et pragmatique.</p>' +
4002                '<p>Démos :  génération de deux types d’applications immédiatement utilisables :' +
4003                '<ul>' +
4004                '  <li>services RESTful avec Spring Data Rest / HATEOAS</li>' +
4005                '  <li>application AngularJS, REST/SpringMVC/JPA ou Spring Data</li>' +
4006                '<ul></p>',
4007            speakers: ['laurent_guerin', 'benoit_wilcox', 'ludovic_chaboud'],
4008        }
4009        ]
4010    },
4011    {
4012        id: '2014_03_17',
4013        title: 'Du Legacy Au Cloud en Moins d\'Une Heure',
4014        date: new Date(2014, 2, 17), //month begin at 0
4015        time: '19',
4016        register: 'http://guestlistapp.com/events/234840',
4017        place: 'eartsup',
4018        subjects: [{
4019            title: 'Dart, c\'est aussi Angular',
4020            length: '45 min',
4021            type: 'talk',
4022            speakers: ['pierre_reliquet'],
4023            abstract: '<p>AngularJS n\'est plus seul! Il possède désormais un concurrent de premier choix car soutenu par ... Google!</p>' +
4024                '<p>Il vous est donc désormais possible de rassurer vos DSI en argumentant que vous n\'allez pas coder votre front en JS, que vous allez utiliser un langage "réellement" typé [ressemblant à java] et qu\'en plus vous aurez les fonctionnalités d\'Angular (2-way binding, filtres...)! Ce concurrent c\'est AngularDart qui est, en réalité, plus qu\'un simple portage d\'AngularJS pour Dart.</p>' +
4025                '<p>Ce quickie a pour but de vous présenter rapidement comment, lorsque Dart rencontre Angular, les choses peuvent devenir rapidement plaisantes et puissantes.</p>',
4026            docs: [{
4027                name: 'Les sources du projet Angular Dart',
4028                url: 'https://github.com/PierreReliquet/angulardart_nantesjug',
4029                type: 'github'
4030            }]
4031        },
4032        {
4033            title: 'Du Legacy Au Cloud en Moins d\'Une Heure',
4034            length: '1 h 00',
4035            type: 'talk',
4036            abstract: '<p>Il est de plus en plus simple de développer des applications web de zéro, pour les héberger sur le cloud. Mais est-ce aussi simple quand on part de code existant ? Les techniques adaptées à un projet tout neuf sont-elles utilisables de la même façon ?</p>' +
4037                '<p>Nous verrons qu’il est possible de partir d’une application legacy, de lui ajouter des fonctionnalités et de la déployer en continu sur le cloud en moins d’une heure.</p>' +
4038                '<p>Cette session de live coding sera l’occasion de découvrir des techniques de refactoring, de développement piloté par les tests, de test et d’inspection continue. Et ce, en tentant à chaque étape de faire les choses les plus simples possibles.</p>',
4039            speakers: ['david_gageot'],
4040        }
4041        ]
4042    },
4043    {
4044        id: '2014_02_17',
4045        title: 'Gros projet en JAVA & AngularJS / Travail collaboratif en temps réél',
4046        date: new Date(2014, 1, 17), //month begin at 0
4047        time: '19',
4048        register: 'https://guestlistapp.com/events/230988',
4049        place: 'epsi',
4050        subjects: [{
4051            title: 'Vécu - Gros projet en JAVA & AngularJS',
4052            length: '45 min',
4053            type: 'talk',
4054            speakers: ['sebastien_roul', 'medy_belmokhtar'],
4055            abstract: '<p>Comment une équipe Java attaque un projet avec de l\'Angular : Cette sale bête qui fait des miracles :o)</p>' +
4056                '<p>Retour sur d\'experience sur un gros projet :' +
4057                '<ul>' +
4058                '<li>Comment organiser l\'équipes</li>' +
4059                '<li>Les pièges dans lesquels nous sommes tombés</li>' +
4060                '<li>Le choc de deux cultures... ou pas !</li>' +
4061                '<li>Les clés de succès que nous avons trouvé</li>' +
4062                '</ul>' +
4063                '</p>' +
4064                '<p>Focus sur le vécu d\'une équipe qui est passée en 6 mois à un projet multi-langages. </li>' +
4065                '</ul>' +
4066                '</p>',
4067            docs: [{
4068                name: 'La vidéo de la soirée',
4069                url: 'http://youtu.be/Rgbcjb_rVIM',
4070                type: 'youtube'
4071            }]
4072        },
4073        {
4074            title: 'Travail collaboratif en temps-réel : quand WebSocket rencontre Asciidoctor...',
4075            length: '1 h 00',
4076            type: 'talk',
4077            abstract: '<p>Ecrire de la documentation technique est primordial à la réussite d\'un projet. Afin d\'être efficace et d\'en finir avec les pertes de temps dues à l\'utilisation des Word, Open Office et consort, le projet Asciidoctor a vu le jour en 2012. Il est de plus en plus utilisé du fait de sa simplicité, sa rapidité et ses possibilités.</p>' +
4078                '<p>Parallèlement, mi 2013 la nouvelle spécification Java EE  était officiellement annoncée avec 4 nouvelles JSR dont la JSR 356 : Java API for WebSocket 1.0. Ce nouveau standard (couplé à JSON-P et JAX-RS) permet aux applications Java EE 7 de s\'interfacer très facilement avec les applications HTML5.</p>' +
4079                '<p>Dans cette conférence vous verrez comment il devient enfin intéressant d\'écrire de la documentation technique en équipe grâce à la mise en oeuvre des technologies Java EE 7 / HTML 5 et Asciidoctor (+ du AngularJS). Cet ensemble de technologie sera utilisé pour créer un éditeur de travail collaboratif en temps réel. En tant que spectateur actif, vous pourrez participer à la démonstration avec d\'autres membres de l\'assemblée.</p>',
4080            speakers: ['maxime_greau'],
4081            docs: [{
4082                name: 'La vidéo de la soirée',
4083                url: 'http://youtu.be/2XJo3UmT80U',
4084                type: 'youtube'
4085            }]
4086        }
4087        ]
4088    }, {
4089        id: '2014_01_20',
4090        title: 'Soyons RESTful avec RESTX',
4091        date: new Date(2014, 0, 20), //month begin at 0
4092        time: '19',
4093        register: 'https://guestlistapp.com/events/218334',
4094        place: 'eartsup',
4095        subjects: [{
4096            title: 'JParsec',
4097            length: '20 min',
4098            type: 'quickie',
4099            speakers: ['arnaud_bailly'],
4100            abstract: '<p><a href="http://jparsec.codehaus.org/" target="_blank">jparsec</a> est une simple bibliothèque, inspirée d\'Haskell, qui permet d\'écrire des grammaires directement en Java au moyen de combinateurs fonctionnels. Une telle grammaire devient testable, incrémentale, composable ce qui permet de développer plus vite et de manière plus fiable des mini-langages.Cette présentation est une introduction pratique à l\'écriture d\'interpréteurs de langages avec <a href="http://jparsec.codehaus.org/" target="_blank">jparsec</a>.</p>',
4101            docs: [{
4102                name: 'Les slides (sources)',
4103                url: 'https://github.com/abailly/jparsec/tree/master/parsing-made-easy',
4104                type: 'github'
4105            }]
4106        },
4107        {
4108            title: 'Soyons RESTful avec RESTX',
4109            length: '1 h 30',
4110            type: 'talk',
4111            abstract: '<p>Le monde du web est en pleine ébullition, on voit de plus en plus de JS sur le frontend avec des frameworks comme Angular ou Backbone qui finissent même pas séduire les développeurs Java que nous sommes.</p>' +
4112                '<p>Mais pour le serveur, le monde Java garde quand même l\'avantage avec son typage, sa maintenabilité et ses performances. Et pour faire communiquer les deux, rien de mieux que des services REST !<br/>Dans cette session, je vous propose donc quelques révisions sur les principes des services REST, pour voir ensuite au travers de nombreuses démos comment RESTX, un outil open source, innovant et made in France peut vous aider à construire, documenter et tester l\'API REST idéale pour vos applications web de demain.</p>' +
4113                '<p>Pour plus d\'infos sur RESTX, jetez un oeil à <a href="http://restx.io/" target="_blank">restx.io</a></p>',
4114            speakers: ['xavier_hanin'],
4115            docs: [{
4116                name: 'Les slides',
4117                url: 'http://slid.es/xavierhanin/restx',
4118                type: 'slides'
4119            }]
4120        }
4121        ]
4122    }, {
4123        id: '2013_12_04',
4124        title: 'Java 8 : Lambdas, Streams et Collectors',
4125        date: new Date(2013, 11, 4), //month begin at 0
4126        time: '19',
4127        register: 'http://guestli.st/212961',
4128        place: 'eartsup',
4129        subjects: [{
4130            title: 'Grails dans les tranchées',
4131            length: '20 min',
4132            type: 'quickie',
4133            speakers: ['dominique_jocal'],
4134            abstract: '<p>Après 2 ans et demi de développements et déploiements d’applications backoffice et front-office B2B bâties sur technologie Grails, nous présentons les patterns, configs et libs retenues, et nous débattrons de l’impact de ces nouveaux stack pour les devs critiques en entreprise.</p>'
4135        },
4136        {
4137            title: 'Java 8 : Lambdas, Streams et Collectors',
4138            length: '1 h 30',
4139            type: 'talk',
4140            intro: 'le nouveau visage de l\'API Collection',
4141            abstract: '<p>L\'API la plus utilisée du JDK est sans aucun doute l\'API Collection. Brillamment conçue il y a un peu plus de 15 ans, elle est encore aujourd\'hui au coeur de toutes les applications Java. En 2004, elle a subi son premier lifting, avec l\'introduction des génériques. Cette mise à jour, bien qu\'importante, n\'a cependant pas modifié ses patterns d\'utilisation. Avec l\'introduction des lambdas en Java 8, l\'API Collection est à nouveau réécrite, mais cette fois la situation est différente : ses patterns d\'utilisation sont complètement changés. </p><p>La première partie de cette conférence introduit les lambda expressions, comment les écrire, et ce qu\'elle nous apportent en tant que développeurs. La deuxième partir présente en détail les nouveaux patterns introduits par les API Stream et Collector. Ces nouvelles API vont changer la façon dont nous allons pouvoir traiter les collections de grande taille, y compris en parallèle, avec un modèle de programmation très simple, et des patterns très puissants. Cette puissance sera montrée dans de
4141s exemples réels, qui monteront comment Java 8 va pouvoir nous aider à écrire simplement du code efficace et performant.</p>',
4142            speakers: ['jose_paumard'],
4143            docs: [{
4144                name: 'Les slides',
4145                url: 'http://fr.slideshare.net/jpaumard/jdk-8-lambdas-streams-collectos-bretagne-tour',
4146                type: 'slideshare'
4147            }]
4148        }
4149        ]
4150    }, {
4151        id: '2013_11_04',
4152        title: 'Du SQL au NoSQL en moins d\'une heure',
4153        date: new Date(2013, 10, 4), //month begin at 0
4154        time: '19',
4155        register: 'http://guestli.st/206877',
4156        place: 'epsi',
4157        subjects: [{
4158            title: 'Amélioration de la qualité du code par restriction du langage',
4159            length: '20 min',
4160            type: 'quickie',
4161            speakers: ['hugo_wood'],
4162            abstract: '<p>Lorsque que beaucoup de possibilités s\'offrent à nous, il est difficile de prendre une décision sans expérience.</p>' +
4163                '<p>Au vu de la piètre qualité générale du code dans l\'industrie, ne serait-il pas intéressant pas de restreindre la flexibilité des langages de programmation afin de "guider" les développeurs n\'ayant pas encore acquis cette expérience ? Je vais présenter quelques fonctionnalités des langages orientés classe dont la difficulté d\'utilisation, la dangerosité, ou l\'inutilité ne sont selon moi pas assez abordées dans la formation du programmeur.</p>'
4164        },
4165        {
4166            title: 'Elastifiez votre application : du SQL au NoSQL en moins d\'une heure',
4167            length: '1 h 30',
4168            type: 'talk',
4169            abstract: 'Au cours de cette session "live coding", Tugdual et David reprendront une application full SQL "à papa" pour la réécrire en NoSQL en 60 minutes.<br/>' +
4170                'En s\'appuyant sur CouchBase et Elasticsearch, ils mettront en avant les bénéfices de cette nouvelle architecture :<br/>' +
4171                '<ul><li>la facilité de mise en place (productivité)</li>' +
4172                '<li>l\'élasticité (scalabilité)</li></ul>' +
4173                'Les thèmes abordés seront :' +
4174                '<ul><li>Approche document</li>' +
4175                '<li>JSon</li>' +
4176                '<li>REST</li>' +
4177                '<li>Cache / Memcached</li>' +
4178                '<li>Filtres et Facettes</li></ul>' +
4179                'Notre plan diabolique est de vous convertir au NoSQL à tel point que vous ne puissiez faire autrement que de le mettre chez vous (et chez vos amis) !<br><br>' +
4180                'Devoxx preview ;) ',
4181            speakers: ['david_pilato', 'tugdual_grall']
4182        }
4183        ]
4184    }, {
4185        id: '2013_10_10',
4186        title: 'Cloud Pattern',
4187        date: new Date(2013, 9, 10), //month begin at 0
4188        time: '19',
4189        register: 'https://guestlistapp.com/events/190722',
4190        place: 'epsi',
4191        subjects: [{
4192            title: 'Tour de l\'actualité',
4193            length: '20 min',
4194            type: 'quickie',
4195            intro: 'présenté par Sébastien Prunier qui lance par la même occasion les quickies.',
4196            speakers: ['sebastien_prunier'],
4197            abstract: '<p>L\'actualité informatique est riche est nécessite d\'être suivi continuellement.</p>' +
4198                '<p> Sébastien le fera pour vous en présentant les dernières nouveautés technologiques.</p>'
4199        },
4200        {
4201            title: 'Les "Cloud Patterns"',
4202            length: '1 h 30',
4203            type: 'talk',
4204            intro: 'par Nicolas Deloof, en avant-première avant Devoxx.be, dont nous avons gardé la description originale.',
4205            abstract: '<p>Le sujet lui sera bien en français - mais le speaker est trop flemmard - enfin c\'est lui qui le dit :p.</p>' +
4206                '<p>Cloud "Platform as a Service" promise to host your application without a change, but things are not so simple and you can\'t deploy your legacy EJB 1.0 application to the Cloud without some refactoring.</p>' +
4207                '<p>During this session, I will explain some architecture patterns to apply to your new developments, and the possible refactoring or platform services that can help to get your existing application migrated without major changes, so that your transition to the cloud is as smooth as possible. To avoid a pure theoretical talk, I\'ll share experience about migrating devoxx application from traditional hosting to cloud.</p>',
4208            speakers: ['nicolas_deloof']
4209        }
4210        ]
4211    },
4212    {
4213        id: '2013_06_18',
4214        title: 'SEO - Scalabilité',
4215        date: new Date(2013, 5, 18), //month begin at 0
4216        time: '19',
4217        place: 'cantine_juton',
4218        subjects: [{
4219            title: 'Nouveaux impacts du développement web sur le référencement naturel (SEO)',
4220            length: '1 h',
4221            type: 'talk',
4222            abstract: '<p>Vous réalisez des développements web (sites, applicatifs ...) et vous cherchez à optimiser leur visibilité dans les moteurs de recherches ? Alors cette conférence s\'adresse à vous !</p>' +
4223                '<p>Durant 1h, nous allons dresser les grandes recommandations SEO à prendre en compte lorsque l\'on développe pour le web, les standards mais 
4223surtout les pratiques émergentes : balisage sémantique, performances, analyse des erreurs, crawl des robots ... illustrés au travers de cas pratiques. L\'objectif : vous donner les bons réflexes pour intégrer les pré-requis du SEO dès la phase de conception du projet afin de gagner en temps et donc en rentabilité.</p>',
4224            speakers: ['guillaume_degre'],
4225            docs: [{
4226                name: 'Support de présentation',
4227                url: 'https://drive.google.com/file/d/0BzLO1XLmywLJUFUyTmtEbEpVNm8/edit?usp=sharing',
4228                type: 'drive'
4229            }]
4230        },
4231        {
4232            title: 'How to Scale?',
4233            length: '1 h',
4234            type: 'talk',
4235            abstract: '<p>Quentin presentera en s\'appuyant sur l\'experience de Clever Cloud les defis que vous allez rencontrés pour "scaler" une application.</p>' +
4236                '<p>Cette sessions s\'appuiera sur des retour d\'experience sur différentes applications et framework.</p>',
4237            speakers: ['quentin_adam']
4238        }
4239        ]
4240    },
4241    {
4242        id: '2013_05_14',
4243        title: 'Neo4J & SoapUI',
4244        date: new Date(2013, 4, 14), //month begin at 0
4245        time: '19',
4246        place: 'cantine_juton',
4247        subjects: [{
4248            title: 'Découverte de \'SoapUI\'',
4249            length: '30 min',
4250            type: 'quickie',
4251            intro: 'par Antony Guilloteau',
4252            abstract: '<p>Autour d\'une petite application train tweet, une session de live coding pour démontrer l\'utilité de SoapUI dans les développements de type SOA : shoot, mock & test..</p>',
4253            speakers: ['antony_guilloteau']
4254        },
4255        {
4256            title: 'Soirée NoSQL : Base de Données Graph avec Neo4J',
4257            length: '1 h 30',
4258            type: 'talk',
4259            abstract: '<p>Prendre un tableau et un papier pour modéliser ses données, c\'est ce que nous faisons régulièrement. Cependant à chaque fois nous devons traduire notre modèle en MCD pour l\'insérer dans un SGBD. La promesse des bases de données orientées  graphe c\'est d\'être veleda ready ! Plus besoin de convertir notre modèle.</p>' +
4260                '<p>Lors de cette présentation nous vous parlerons de Neo4j, une base données NoSQL orientée graph écrite en java, ainsi que des concepts qui gravitent autour.</p>' +
4261                '<p>On vous montrera comment réaliser un système de recommandation simple et efficace basé sur les données de github.</p>',
4262            speakers: ['benoit_simard', 'damien_raude_morvan', 'cedric_fauvet'],
4263            docs: [{
4264                name: 'Support de présentation (HTML)',
4265                url: 'http://hype.logisima.com/prez/view/5561322/Neo4j%20-%20JUG%20Nantes',
4266                type: 'slid-es'
4267            }]
4268        }
4269        ]
4270    },
4271    {
4272        id: '2013_04_15',
4273        title: 'JavaScript pour le développeur Java',
4274        date: new Date(2013, 3, 15), //month begin at 0
4275        time: '19',
4276        place: 'cantine_juton',
4277        subjects: [{
4278            title: 'JavaScript pour le développeur Java',
4279            length: '1 h 30',
4280            type: 'talk',
4281            abstract: '<p>Dans sa présentation Christophe va nous expliquer pourquoi et comment l\'ancien détracteur de JavaScript est devenu un fan du langage et, en orientant sa présentation vers des développeurs Java comme lui, essayer de nous faire regarder JavaScript sous un autre angle, à apprécier ses forces, à mieux comprendre ses faiblesses et à nous donner envie de s\'y essayer.</p>' +
4282                '<p>La présentation sera structurée en deux parties :</p>' +
4283                '<p><b>JavaScript pour le développeur Java</b></p>' +
4284                '<p>Au cours de cette présentation nous balayerons les caractéristiques de JavaScript du point de vue du développeur Java en appuyant notamment sur les différences entre les deux langages et ce qui peut se transformer en piège pour le développeur qui aurait juger inutile d\'apprendre JavaScript.</p>' +
4285                '<p><b>La caisse d\'outils du développeur JavaScript</b></p>' +
4286                '<p>Au secours, votre chef a vu dans DSI-01-MAG-INFORMATIQUE que l\'avenir est au application Web et il veut maintenant que tous vos projets soient en JavaScript. Vous paniquez parce que la dernière fois que vous avez fait du JavaScript, c\'était à la faculté dans un éditeur de texte et vous débugguiez en affichant des boites de dialogue.</p>' +
4287                '<p>Au cours de cette présentation, nous verrons que l\'écosystème JavaScript a évolué et que vous disposez maintenant de frameworks complets gérant vos couches de présentation, vos test, vos dépendances et même le backend de vos applications. Nous verrons aussi que l\'outillage a progressé et que nous pouvons maintenant faire du débuggage comme dans nos application Java, de l\'intégration continue et même de l\'audit de qualité !</p>',
4288            speakers: ['christophe_jollivet']
4289        }]
4290    },
4291    {
4292        id: '2013_03_18',
4293        title: 'Traçabilité d\'une architecture distribuée & Code Story 2013',
4294        date: new Date(2013, 2, 18), //month begin at 0
4295        time: '19',
4296        place: 'cantine_juton',
4297        subjects: [{
4298            title: 'Code Story 2013',
4299            length: '30 min',
4300            type: 'quickie',
4301            abstract: '<p>Les architectures distribuées soulèvent un certains nombre de problématiques en terme de traçabilité : détection des anomalies, suivi des utilisateurs, mesure des performances des différents services ...</p>' +
4302                '<p>Durant cette session, nous vous montrerons - démonstration à l\'appui - comment nous avons apporté une solution simple à ces problématiques, en mettant en place un système de consolidation de logs avec Node.js et MongoDb.</p>',
4303            speakers: ['sebastien_prunier', 'jerome_creignou']
4304        },
4305        {
4306            title: 'Traçabilité d\'une architecture distribuée avec NodeJS et MongoDB',
4307            length: '1 h 30',
4308            type: 'talk',
4309            abstract: '<p>Une des bonnes nouvelles du début d\'année a été le concours Code Story pour l\'édition 2013 de Devoxx France. Une superbe occasion de développer et de tester de nouvelles technos, tout en s\'amusant !</p>' +
4310                '<p>Nous débuterons la session par un retour sur notre participation à la première phase de ce concours, en vous présentant et en comparant nos choix technologiques.</p>',
4311            speakers: ['sebastien_prunier', 'jerome_creignou']
4312        }
4313        ]
4314    },
4315    {
4316        id: '2013_02_11',
4317        title: 'Soirée NoSQL - Couchbase & MongoDB',
4318        date: new Date(2013, 1, 11), //month begin at 0
4319        time: '19',
4320        place: 'cantine_juton',
4321        subjects: [{
4322            title: 'Introduction au NoSQL',
4323            length: '20 min',
4324            type: 'intro',
4325            abstract: '<p>Cette présentation commencera par une rapide introduction au NoSQL expliquant les raisons pour lesquelles de plus en plus de projets utilisent ce type de solutions. Tugdual fera également le tour des différentes approches (Clé Valeur, Document, Colonnes, Graph) et solutions du marché.</p>' +
4326                '<p>Manuel présentera MongoDB et Tugdual présentera Couchbase, deux solutions open source de base de données orientées document. Ces présentations s\'appuieront sur de nombreuses démonstrations qui mettront en avant :' +
4327                '<ul>' +
4328                '<li>L\'utilisation de JSON pour le stockage et les bénéfices et défis associés à l\'approche "Schemaless"</li>' +
4329                '<li>Le développement d\'applications</li>' +
4330                '<li>Le déploiement et l\'administration de cluster</li>' +
4331                '</ul></p>' +
4332                '',
4333            speakers: ['tugdual_grall', 'manuel_boillod']
4334        },
4335        {
4336            title: 'MongoDB',
4337            length: '45 min',
4338            type: 'talk',
4339            abstract: '<p>Présentation de MongoDB</p>',
4340            speakers: ['manuel_boillod']
4341        },
4342        {
4343            title: 'Couchbase',
4344            length: '45 min',
4345            type: 'talk',
4346            abstract: '<p>Présentation de Couchbase</p>',
4347            speakers: ['tugdual_grall']
4348        }
4349        ]
4350    },
4351    {
4352        id: '2013_01_16',
4353        title: 'Soirée Langage et Framework : Dart & Clojure',
4354        date: new Date(2013, 0, 16), //month begin at 0
4355        time: '19',
4356        place: 'cantine_juton',
4357        subjects: [{
4358            title: 'Clojure',
4359            length: '1 h',
4360            type: 'talk',
4361            abstract: '<p>Le paradigme fonctionnel revient à la mode décennie après décennie. Pourquoi l\'est-il aujourd\'hui ? Au travers de Clojure, un langage de cette nouvelle vague, nous explorerons les idées anciennes et nouvelles qu\'elle pousse et que nous retrouverons (ou pas) demain dans notre Java quotidien. (Préférerez vous au final l\'original ou la copie :-) ?)</p>',
4362            speakers: ['cedric_pineau']
4363        },
4364        {
4365            title: 'Dart',
4366            length: '1 h',
4367            type: 'talk',
4368            abstract: '<p>Dart est un nouveau langage de programmation pour développer des applications web. Créé par Google et ouvert au grand public en octobre 2011, c\'est un langage orienté-objet avec une syntaxe familière que l\'on soit développeur Java ou développeur JavaScript. Ses deux objectifs ? Performance et facilité d\'utilisation.</p>' +
4369                '<p>
4369Dans cette présentation, nous verrons quels sont les objectifs de Google en introduisant ce nouveau langage. Nous irons au coeur de celui-ci en présentant les différentes spécificités, typage optionnel, les Isolates comme modèle de concurrence, les différents mode d\'exécution, la gestion du DOM... Enfin, nous discuterons des échéances à venir pour savoir si Dart saura s\'imposer ou non en tant que langage d\'avenir pour le web.</p>',
4370            speakers: ['julien_vey']
4371        }
4372        ]
4373    },
4374    {
4375        id: '2012_12_06',
4376        title: 'Elastic Search',
4377        date: new Date(2012, 11, 6), //month begin at 0
4378        time: '19',
4379        place: 'cantine_juton',
4380        subjects: [{
4381            title: 'Elastic Search',
4382            length: '2 h',
4383            type: 'talk',
4384            abstract: '<p>Ce soirée est faite pour vous si :' +
4385                '<ul>' +
4386                '<li>Vous utilisez encore des requêtes SQL pour faire des recherches</li>' +
4387                '<li>Vos utilisateurs vous reprochent de ne pas pouvoir chercher sur toutes les rubriques</li>' +
4388                '<li>Votre temps de réponse moyen est supérieur à la demi-seconde avec seulement quelques millions de documents</li>' +
4389                '<li>Il vous faut 3 jours pour produire des statistiques sur vos données</li>' +
4390                '<li>Vous rêvez d\'offrir une recherche “à la google” sur les données de votre SI</li>' +
4391                '</ul></p>' +
4392                '<p>David présentera au cours de la soirée pourquoi et comment il est passé de la recherche SQL à Elasticsearch en détaillant les apports de ce moteur par rapport à une solution pure Lucene</p>' +
4393                '<p>Pourquoi Elasticsearch ?' +
4394                '<ul>' +
4395                '<li>L\'indexation</li>' +
4396                '<li>La recherche</li>' +
4397                '<li>La collecte de données (rivers)</li>' +
4398                '<li>Les facettes et le principe de navigation par facettes</li>' +
4399                '<li>La scalabilité horizontale</li>' +
4400                '<li>La communauté</li>' +
4401                '</ul></p>' +
4402                '<p></p>',
4403            speakers: ['david_pilato']
4404        }]
4405    },
4406    {
4407        id: '2012_11_07',
4408        title: 'OpenShift',
4409        date: new Date(2012, 10, 7), //month begin at 0
4410        time: '19',
4411        place: 'sup_info',
4412        subjects: [{
4413            title: 'OpenShift: Enjoy the benefits of cloud computing as a developer',
4414            length: '1 h 30',
4415            type: 'talk',
4416            abstract: '<p>In this session, Marek will give a quick introduction to Platform as a Service (aka awesome-sauce for developers) with OpenShift as an example. After a few slides and your questions we will spend the rest of the time working with you to get your Web code (see the languages available on our website, but Java in our case) up and running in less than 5 minutes.</p>' +
4417                '<p>We will also demonstrate how to connect your code to a back-end data store such as MongoDB and MySQL. The goal of this session is to have you excited in running your code in the cloud for free! http://openshift.redhat.com</p>',
4418            speakers: ['marek_jelen']
4419        }]
4420    },
4421    {
4422        id: '2012_10_23',
4423        title: 'Build Living Web Applications with WebSockets',
4424        date: new Date(2012, 9, 23), //month begin at 0
4425        time: '19',
4426        place: 'cantine_juton',
4427        subjects: [{
4428            title: 'Build Living Web Applications with WebSockets',
4429            length: '1 h 30',
4430            type: 'talk',
4431            abstract: '<p>Take your desktop and mobile Web apps to the next level with true, real-time connectivity. Learn how to build real-time, multi-user interaction and collaboration into your Web apps using HTML5 and WebSockets.</p>' +
4432                '<p>Whether you want your app to be a real-time retail experience or a fast-paced MMO, you\'ll learn hands-on skills to turn your mobile apps into live apps, by building peer-to-peer mobile apps, mobile-desktop interaction, and even turning your smartphone into a Nintendo Wii-style remote control.</p>',
4433            speakers: ['peter_moskovits']
4434        }]
4435    },
4436    {
4437        id: '2012_10_10',
4438        title: 'Copyright et Licence & WebMotion',
4439        date: new Date(2012, 9, 10), //month begin at 0
4440        time: '19',
4441        place: 'cantine_juton',
4442        subjects: [{
4443            title: 'Copyright et Licence',
4444            length: '1 h',
4445            type: 'talk',
4446            abstract: '<p>Le but est de présenter les notions de copyright et de licence et de sensibilisé les personnes aux problématiques qu\'elles induisent dans un développement logiciel.</p>' +
4447                '<p><ul>' +
4448                '<li>Copyright et licence (différence, but)</li>' +
4449                '<li>Les grandes familles de licences</li>' +
4450                '<li>Leur compatibilité ou incompatibilité (un casse tête pour les développeurs et les décideurs)</li>' +
4451                '<li>Les outils pour aider à leur mise en place et leur gestion</li>' +
4452                '</ul></p>',
4453            speakers: ['benjamin_poussin']
4454        }, {
4455            title: 'WebMotion',
4456            length: '1 h',
4457            type: 'talk',
4458            abstract: '<p>WebMotion est un projet libre pour le développement d\'application web en Java orienté REST. Il s\'appuie sur le standard JEE 6 avec les Servlet 3. Il fonctionne avec les principaux serveurs d\'application Tomcat, Jetty et Glassfish.</p>' +
4459                '<p>Le projet a été développé pour respecter une approche outils. Ainsi il s\'occupe principalement des interactions entre le serveur et le client. Il vous laisse libre de choisir vos framework de persistance, d\'injection de dépendance, ... pour créer votre architecture adaptée à vos besoin. Vous pouvez l\'utiliser avec vos IDE et outils de build habituels. Il se base sur un fichier de routes pour décrire la relation entre les URLs et les actions Java. Il propose aussi un ensemble d\'extra pour vous permettre de développer rapidement et simplement des sites web.</p>' +
4460                '<p>Le site web (http://www.webmotion-framework) est un exemple d\'utilisation, vous y trouverez une documentation détaillée et de nombreux exemples.</p>' +
4461                '<p>La présentation vous permettra de découvrir l\'origine du framework, sa philosophie ainsi que quelques points fonctionnels, suivants :' +
4462                '<ul>' +
4463                '<li>
4463Le fichier de route</li>' +
4464                '<li>Les actions en Java</li>' +
4465                '<li>Les extras</li>' +
4466                '</ul></p>',
4467            speakers: ['julien_ruchaud']
4468        }]
4469    },
4470    {
4471        id: '2012_06_06',
4472        title: 'Introduction au langage Ceylon',
4473        date: new Date(2012, 5, 6), //month begin at 0
4474        time: '19',
4475        place: 'netapsys',
4476        subjects: [{
4477            title: 'Introduction au langage Ceylon',
4478            length: '1 h 30',
4479            type: 'talk',
4480            abstract: '<p>Ceylon est un nouveau langage de programmation pour la machine virtuelle Java. Nous sommes fans de Java et de son écosysteme, cependant nous pensons que le langage Java et ses libraires conçus il y a 15 ans sont désuets face aux challenges actuels. Ceylon a été conçu avec plusieurs objectifs</p>' +
4481                '<p>Facile à apprendre pour les développeurs Java et C# Améliorer le typage fort de Java Fournir une syntaxe déclarative pour exprimer des concepts hierarchiques (interface utilisateurs, configuration systeme, etc...) Promouvoir l\'approche fonctionelle par des objects immuables et des fonction d\'ordre supérieur Support de la méta programmation Modulaire</p>' +
4482                '<p>Cette introduction à Ceylon vous montrera les fonctionnalités de Ceylon ainsi que les derniers progrès faits sur le compilateur, l\'IDE et la communauté autour de Ceylon.</p>',
4483            speakers: ['stephane_epardaud']
4484        }]
4485    },
4486    {
4487        id: '2012_06_04',
4488        title: 'Hibernate OGM: JPA pour NoSQL',
4489        date: new Date(2012, 5, 4), //month begin at 0
4490        time: '19',
4491        place: 'cantine_juton',
4492        subjects: [{
4493            title: 'Hibernate OGM: JPA pour NoSQL',
4494            length: '1 h 30',
4495            type: 'talk',
4496            abstract: '<p>PaaS (Plate-forme as a Service), Cloud, élasticité. Ces mots font le buzz ces temps-ci.</p>' +
4497                '<p>Mais le vrai challenge c\'est comment et où stocker vos données. Dans un data grid pour bénéficier de la scalabilité ? Via une API propriétaire ? Pourrait on utiliser une API familière ?</p>' +
4498                '<p>L\'objectif d\'Hibernate OGM est d\'explorer comment réutiliser Java Persistence et son API familière pour persister les entités dans une base de données non relationnelle.</p>' +
4499                '<p>Hibernate Object/Grid Mapper (OGM) offre une implementation JPA (manipulation d\'objets et requêtes JP-QL) tout en stockant et requêtant les données d\'une grille clé/valeur (et d\'autres approches NoSQL dans un second temps). Autrement dit, il offre une API familière tout en permettant de bénéficier des possibilités de scalabilité des data grids. Cela inclut notamment de supporter des applications JPA existantes.</p>' +
4500                '<p>Dans cette présentation, nous allons:' +
4501                '<ul>' +
4502                '<li>Faire un survol du monde NoSQL et voir l\'intérêt d\'une API comme JPA</li>' +
4503                '<li>Voir comment Hibernate OGM stocke les entités et les associations dans la base clé/valeur et explorer les compromis faits.</li>' +
4504                '<li>Voir comment les requêtes JP-QL sont implémentées au dessus d\'une technologie qui ne supporte pas la notion de requête (clé/valeur) et quel niveau de couverture peut-être obtenu faire une démonstration d\'Hibernate OGM</li>' +
4505                '</ul></p>',
4506            speakers: ['emmanuel_bernard']
4507        }]
4508    },
4509    {
4510        id: '2012_03_14',
4511        title: 'Introduction à Wicket',
4512        date: new Date(2012, 2, 14), //month begin at 0
4513        time: '19',
4514        place: 'cantine_juton',
4515        subjects: [{
4516            title: 'Introduction à Wicket',
4517            length: '1 h 30',
4518            type: 'talk',
4519            abstract: '<p>Wicket est un Framework de présentation Java orienté composant, comme JSF ou GWT, qui propose une séparation très claire entre la vue et les données. Les vues sont écrites en XHTML tandis que la partie dynamique et les données sont codées en Java.</p>' +
4520                '<p>Lors de cette présentation 100% démo, Manuel présentera les bases du framework en développant une application de gestion de contacts.</p>',
4521            speakers: ['manuel_boillod']
4522        }]
4523    },
4524    {
4525        id: '2012_02_09',
4526        title: 'Application versioning et rolling upgrade',
4527        date: new Date(2012, 1, 9), //month begin at 0
4528        time: '19',
4529        place: 'cantine_juton',
4530        subjects: [{
4531            title: 'Application versioning et rolling upgrade en haute disponibilité, avec Glassfish',
4532            length: '1 h 30',
4533            type: 'talk',
4534            abstract: '<p>Une fois qu\'une application est en production, réaliser une montée de version sans perte de service est délicat et peut rapidement vous donner la migraine. Il faut en général le faire manuellement en montant un cluster, en répliquant l\'application et ses sessions, et en j
4534onglant avec le répartiteur de charge et les instances de serveur à chaque montée en version.</p>' +
4535                '<p>La fonctionnalité de versioning présente dans GlassFish, combinée avec le rolling upgrade (en early preview) permet de réaliser cette montée en version sans perte de service sur une instance stand-alone de GlassFish.</p>' +
4536                '<p>Dans cette session, Marian présente ces fonctionnalités et comment les utiliser pour réaliser une montée en version d\'application en production sans perte de service, en utilisant exclusivement les services offerts par GlassFish.</p>',
4537            speakers: ['marian_muller']
4538        }]
4539    },
4540    {
4541        id: '2012_01_12',
4542        title: 'Introduction aux DSL en Groovy',
4543        date: new Date(2012, 0, 12), //month begin at 0
4544        time: '19',
4545        place: 'cantine_juton',
4546        subjects: [{
4547            title: 'Introduction aux DSL (Domain Specific Languages) en Groovy',
4548            length: '1 h 30',
4549            type: 'talk',
4550            abstract: '<p>Durant cette présentation, Cedric nous expliquera ce que sont les DSL (Domain Specific Languages), leurs champs d\'application et les techniques courantes pour en implémenter. Cédric presentera quelques exemples de DSL écrits avec le langage Groovy, dans l\'objectif de montrer ce que ce langage permet d\'obtenir.</p>',
4551            speakers: ['cedric_champeau']
4552        }]
4553    },
4554    {
4555        id: '2011_12_14',
4556        title: 'Hibernate vs Cloud computing',
4557        date: new Date(2011, 11, 14), //month begin at 0
4558        time: '19',
4559        place: 'cantine_juton',
4560        subjects: [{
4561            title: 'Hibernate vs Cloud computing',
4562            length: '1 h 30',
4563            type: 'talk',
4564            abstract: '<p>Au cours de cette presentation, Julien Dubois d\'Ippon Technologies abordera les sujets suivant :</p>' +
4565                '<p>Les bases de données relationnelles classiques ont du mal à monter en charge de manière “élastique”: elles sont de manière générale peu adaptées aux nouvelles s
4565olutions de cloud computing, de type Amazon EC2 ou VMWare.</p>' +
4566                '<p>Nous verrons dans cette session :</p>' +
4567                '<p><ul>' +
4568                '<li>Les problèmes couramment rencontrés et leurs solutions proposées par les grand éditeurs (type Oracle RAC), ainsi que leurs limitations</li>' +
4569                '<li>Comment ces problèmes se traduisent dans le monde Java, en particulier avec Hibernate</li>' +
4570                '<li>Quelles solutions peuvent être utilisées avec Hibernate, en particulier avec son système de cache: nous verrons les solutions de clustering, dont Terracotta et Coherence</li>' +
4571                '<li>Ce que proposent les nouvelles solutions dites “NoSQL”, en prenant l\'exemple de Cassandra: leurs avantages, leurs inconvénients, leurs limitations</li>' +
4572                '</ul></p>',
4573            speakers: ['julien_dubois']
4574        }]
4575    },
4576    {
4577        id: '2011_11_03',
4578        title: 'Java 7 : Introduction',
4579        date: new Date(2011, 10, 3), //month begin at 0
4580        time: '19',
4581        place: 'cantine_juton',
4582        subjects: [{
4583            title: 'Java 7 : Introduction',
4584            length: '1 h 30',
4585            type: 'talk',
4586            abstract: '<p>Pour cette soirée, Sebastien va nous presenter les points suivants:' +
4587                '<ul>' +
4588                '<li>Rapide historique des versions de Java</li>' +
4589                '<li>Quoi de nouveau dans Java 7 (invokedynamic, fork/join, nio2, javadoc ...) ?</li>' +
4590                '<li>Zoom sur les nouveautés dans la syntaxe (Projet Coin), avec exemples de code “avant/après” (Strings in switch, Try-with-ressource, Binary literals, Inférence de type avec l\'opérateur diamond, catch multiple, etc ...)</li>' +
4591                '<li>Un petit exemple de l\'API NIO2 qui simplifie la vie : la copie de fichier (en une ligne !)</li>' +
4592                '</ul></p>' +
4593                '<p>Pour conclure, les perspectives avec Java 8 (Closures, Collection litterals, Projet Jigsaw).</p>',
4594            speakers: ['sebastien_prunier']
4595        }]
4596    },
4597    {
4598        id: '2011_10_12',
4599        title: 'Statefull is Beautiful',
4600        date: new Date(2011, 9, 12), //month begin at 0
4601        time: '19',
4602        place: 'cantine_juton',
4603        subjects: [{
4604            title: 'Statefull is Beautiful',
4605            length: '1 h 30',
4606            type: 'talk',
4607            abstract: '<p>Pour cette presentation, Antoine d\'Ippon Technologies va nous permettre de revenir aux sources de Java EE, en abordant les sujets suivants :' +
4608                '<ul>' +
4609                '<li>Des différentes stratégies de stockage des états dans une application Java EE.</li>' +
4610                '<li>Du scope Session de l\'Api Servlet</li>' +
4611                '<li>De CDI</li>' +
4612                '<li>Des EJB 3.X</li>' +
4613                '<li>De sérialisation, passivation et résilience</li>' +
4614                '<li>De scalabilité</li>' +
4615                '<li>Des design patterns que ces concepts et technos permettent de mettre en oeuvre</li>' +
4616                '</ul></p>',
4617            speakers: ['antoine_sabot_durand']
4618        }]
4619    },
4620    {
4621        id: '2011_06_23',
4622        title: 'A la découverte de Gradle',
4623        date: new Date(2012, 6, 0), //month begin at 0
4624        time: '19',
4625        place: 'cantine_juton',
4626        subjects: [{
4627            title: 'A la découverte de Gradle',
4628            length: '1 h 30',
4629            type: 'talk',
4630            intro: 'par Grégory Boissinot de Zenika',
4631            abstract: '<p>La construction d\'un logiciel est l\'étape essentielle dans un processus d\'intégration continue. Il n\'est pas rare que cette étape de build soit complexe tant par sa mise en œuvre que par son adéquation aux besoins changeant du projet. Il est alors nécessaire d\'outiller cette c
4631onstruction par un langage épousant les spécificités du projet.</p>' +
4632                '<p>Je présenterai le système de build Gradle qui répond à cette problématique.</p>' +
4633                '<p>Gradle est un outil extrêmement flexible permettant de construire les différents types d\'applications Java/JEE. Sous le capot, Gradle s\'appuie sur un certain nombre de standards pour orchestrer ses composants :</p>' +
4634                '<p>Les conventions du système de build Maven Le gestionnaire de dépendance Ivy Une totale intégration avec les taches Ant existantes Le langage de script Groovy</p>' +
4635                '<p>La présentation détaillera les concepts principaux de Gradle et sa mise en oeuvre pour le build d\'une application JEE. Nous verrons également comment Gradle est capable de s\'insérer dans une infrastructure d\'entreprise Ant/Maven existante afin de donner toute la puissance nécessaire aux projets existants.</p>',
4636            speakers: ['gregory_boissinot']
4637        }]
4638    }
4639];

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.