<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.7.4">Jekyll</generator><link href="https://psug.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://psug.github.io/" rel="alternate" type="text/html" /><updated>2019-04-07T14:41:20+00:00</updated><id>https://psug.github.io/feed.xml</id><title type="html">PSUG Blog</title><subtitle>Blog grouping the talks shown at the Scala User Group in Paris, France.</subtitle><entry><title type="html">micro-CFP</title><link href="https://psug.github.io/scala/3000/01/01/PSUG.html" rel="alternate" type="text/html" title="micro-CFP" /><published>3000-01-01T00:00:00+00:00</published><updated>3000-01-01T00:00:00+00:00</updated><id>https://psug.github.io/scala/3000/01/01/PSUG</id><content type="html" xml:base="https://psug.github.io/scala/3000/01/01/PSUG.html">&lt;p&gt;You have interesting things to say! Submit a talk to our &lt;a href=&quot;http://cfp.scala-ug.paris&quot;&gt;micro-CFP&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">You have interesting things to say! Submit a talk to our micro-CFP.</summary></entry><entry><title type="html">PSUG #96 - Recursion Schemes et Optics</title><link href="https://psug.github.io/scala/2019/03/28/PSUG96.html" rel="alternate" type="text/html" title="PSUG #96 - Recursion Schemes et Optics" /><published>2019-03-28T00:00:00+00:00</published><updated>2019-03-28T00:00:00+00:00</updated><id>https://psug.github.io/scala/2019/03/28/PSUG96</id><content type="html" xml:base="https://psug.github.io/scala/2019/03/28/PSUG96.html">&lt;p&gt;Bonjour à tou•te•s&lt;/p&gt;

&lt;p&gt;Pour ce meetup de mars, eBizNext nous accueille pour parler de Recursion Schemes et d’optics avec Chritophe Calvès et Nicolas Rinaudo.&lt;/p&gt;

&lt;h2 id=&quot;la-présentation-des-recursion-schemes-que-vous-allez-comprendre--chritophe-calvès&quot;&gt;La présentation des Recursion Schemes que vous allez comprendre – Chritophe Calvès&lt;/h2&gt;

&lt;p&gt;De Recursion Schemes sans algèbres, ni coalgèbre, ni fix, etc mais juste les braves fonctions factorielles et fibonacci.&lt;/p&gt;

&lt;p&gt;Vous pouvez lire &lt;a href=&quot;https://chrilves.github.io/hugo/posts/recursion_schemes_intro/&quot;&gt;ici&lt;/a&gt; un article inspiré du talk.&lt;/p&gt;

&lt;h2 id=&quot;optics-from-the-ground-up--nicolas-rinaudo&quot;&gt;Optics from the ground up – Nicolas Rinaudo&lt;/h2&gt;

&lt;p&gt;Spécifiquement, Lenses &amp;amp; Prisms, démystifier la chose et montrer que malgré les noms compliqués, c’est très simple et parfois très utile.&lt;/p&gt;

&lt;p&gt;Les slides sont disponibles &lt;a href=&quot;https://nrinaudo.github.io/optics-from-the-ground-up/&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s</summary></entry><entry><title type="html">PSUG #95 - Recursion Schemes</title><link href="https://psug.github.io/scala/2019/02/28/PSUG95.html" rel="alternate" type="text/html" title="PSUG #95 - Recursion Schemes" /><published>2019-02-28T00:00:00+00:00</published><updated>2019-02-28T00:00:00+00:00</updated><id>https://psug.github.io/scala/2019/02/28/PSUG95</id><content type="html" xml:base="https://psug.github.io/scala/2019/02/28/PSUG95.html">&lt;p&gt;Bonjour à tou•te•s&lt;/p&gt;

&lt;p&gt;Pour ce meetup d’février, Xebia nous accueille pour parler de Recursion Schemes avec Virgile Quintin, Nicolas François et Kévin Rauscher.&lt;/p&gt;

&lt;h2 id=&quot;les-recursions-schemes--virgile-quintin-et-nicolas-françois&quot;&gt;Les recursions schemes – Virgile Quintin et Nicolas François&lt;/h2&gt;

&lt;p&gt;Notre objectif est de montrer l’utilité des recursions schemes avec des exemples simples et concrets. Nous allons éviter de parler (trop) de théorie et nous concentrer sur la pratique.&lt;/p&gt;

&lt;h2 id=&quot;scala-schemas-with-shapeless--kévin-rauscher&quot;&gt;Scala Schemas with Shapeless – Kévin Rauscher&lt;/h2&gt;

&lt;p&gt;Les API et le domaine business ont des cycles de vie différents. Il est, par conséquent, dangereux de dériver l’un de l’autre. Cependant découpler les deux génère beaucoup de boilerplate. Dans cette session, nous verrons des techniques utilisant shapeless pour éliminer le boilerplate lors du passage d’un schéma à un autre.&lt;/p&gt;

&lt;p&gt;Les slides sont disponibles &lt;a href=&quot;https://blog.tomahna.fr/slide/scala-schema-wshapeless/&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s</summary></entry><entry><title type="html">PSUG #94 - Atelier cats</title><link href="https://psug.github.io/scala/2019/01/31/PSUG94.html" rel="alternate" type="text/html" title="PSUG #94 - Atelier cats" /><published>2019-01-31T00:00:00+00:00</published><updated>2019-01-31T00:00:00+00:00</updated><id>https://psug.github.io/scala/2019/01/31/PSUG94</id><content type="html" xml:base="https://psug.github.io/scala/2019/01/31/PSUG94.html">&lt;p&gt;Bonjour à tou•te•s&lt;/p&gt;

&lt;p&gt;Pour bien démarrer l’année , c’est Hands on time !&lt;/p&gt;

&lt;p&gt;Mobiskill nous accueille pour un atelier sur Cats.&lt;/p&gt;

&lt;h2 id=&quot;atelier-cats&quot;&gt;Atelier cats&lt;/h2&gt;

&lt;p&gt;On vous propose de découvrir la libraire cats et les typeclasses les plus communes : Functor, Monoid, Validation, State, etc, en TDD et Pair Programming.&lt;/p&gt;

&lt;p&gt;Le repo est &lt;a href=&quot;https://github.com/fagossa/tutorial-cats/&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s</summary></entry><entry><title type="html">PSUG #92 - La Query monade et DB monade avec Spring et Hibernate</title><link href="https://psug.github.io/scala/2018/10/25/PSUG92.html" rel="alternate" type="text/html" title="PSUG #92 - La Query monade et DB monade avec Spring et Hibernate" /><published>2018-10-25T00:00:00+00:00</published><updated>2018-10-25T00:00:00+00:00</updated><id>https://psug.github.io/scala/2018/10/25/PSUG92</id><content type="html" xml:base="https://psug.github.io/scala/2018/10/25/PSUG92.html">&lt;p&gt;Bonjour à tou•te•s,&lt;/p&gt;

&lt;p&gt;Pour ce meetup d’octobre, &lt;em&gt;Mobiskill&lt;/em&gt; nous accueille pour parler d’abstraction pure de DB avec une Query Monade avec &lt;em&gt;Stéphane Tankoua&lt;/em&gt;, puis de DB Monade dans du legacy Spring et Hibernate avec &lt;em&gt;Loïc Girault&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;query-monad-a-specialized-reader-for-pure-database-programming--stéphane-tankoua&quot;&gt;Query monad: a specialized Reader for pure Database Programming – Stéphane Tankoua&lt;/h2&gt;

&lt;p&gt;At Fabernovel Technologies (formerly Zengularity), many of our applications use relational databases and our favorite tool for this is the Play! Anorm library. We decided to express and interpret database operations, which by their very nature are side effects, with a specialised Reader monad: Query. This Query monad allow us to be compliant with functional principles such as: lazy evaluation, referential transparency.&lt;/p&gt;

&lt;p&gt;During this talk I will give the rationale of our approach, and using functional programming principles listed before, I will derive the implementation of this monad.&lt;/p&gt;

&lt;p&gt;Les slides sont &lt;a href=&quot;https://www.slideshare.net/faberNovel/talk-query-monad&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;hibernate--du-printemps-à-lété-avec-la-db-monad--loïc-girault&quot;&gt;Hibernate : du printemps à l’été avec la DB monad – Loïc Girault&lt;/h2&gt;

&lt;p&gt;Chez mediarithmics la base de code legacy d’un service utilise Hibernate et gère les transactions avec Spring. Spring présente
un certain nombre de casseroles :&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;imposer le paradigme de J2EE qu’une requête http sera traité par un thread ce qui s’apparie assez mal avec la facilité 
d’écrire du code asynchrone en scala&lt;/li&gt;
  &lt;li&gt;l’utilisation d’aspectj qui ne s’intègre pas de manière optimale avec sbt (pas compilation incrémentale, aspect non tissé 
après trois tests)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour ces raisons et d’autres, nous avons cherché une alternative. La solution est venue de l’univers fonctionnel : en 
utilisant cat-effect et notamment la type class Bracket nous avons pu implémenter une monade permettant de remplacer 
avantageusement spring-transaction.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s,</summary></entry><entry><title type="html">PSUG #91 - Spark Dataset: je t’aime… moi non plus &amp;amp; Poupées Russes</title><link href="https://psug.github.io/scala/2018/09/27/PSUG91.html" rel="alternate" type="text/html" title="PSUG #91 - Spark Dataset: je t'aime... moi non plus &amp; Poupées Russes" /><published>2018-09-27T00:00:00+00:00</published><updated>2018-09-27T00:00:00+00:00</updated><id>https://psug.github.io/scala/2018/09/27/PSUG91</id><content type="html" xml:base="https://psug.github.io/scala/2018/09/27/PSUG91.html">&lt;p&gt;Bonjour à tou•te•s&lt;/p&gt;

&lt;p&gt;Pour ce meetup de septembre, Ebiznext nous accueille pour parler de spark avec &lt;em&gt;Raphaël Luta&lt;/em&gt; &amp;amp; &lt;em&gt;Choucri Fahed&lt;/em&gt; et de recursion schemes avec &lt;em&gt;Valentin Kasas&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;spark-dataset-je-taime-moi-non-plus&quot;&gt;Spark Dataset: je t’aime… moi non plus&lt;/h2&gt;

&lt;p&gt;L’API Dataset dans Spark 2 combine en théorie le meilleur des 2 mondes : la performance et l’expressivité des Dataframe en conservant la modélisation riche et le typage fort des RDD.&lt;/p&gt;

&lt;p&gt;A l’issue d’un gros projet basé sur cette API, nous avons pu constaté qu’elle présente de nombreuses ““fonctionnalités inattendues”” et nous proposons un retour d’expérience sur les avantages et les pièges de son utilisation, en particulier pour un développeur Scala.&lt;/p&gt;

&lt;p&gt;Si vous démarrez un nouveau projet Spark ou que vous vous interrogez sur ses APIs, cette présentation vous permettra de (re)partir du bon pied et ménager votre santé physique et mentale !&lt;/p&gt;

&lt;h2 id=&quot;ces-10000-case-classes-que-je-nai-pas-écrites&quot;&gt;Ces 10000 case classes que je n’ai pas écrites&lt;/h2&gt;

&lt;p&gt;Quand on doit valider la donnée en entrée de son job Spark ou avant d’écrire ou lire dans/depuis un topic Kafka, le développeur Scala averti se tourne vers une solution à base de case classes et de dérivation automatique (shapeless, magnolia, scalaz-deriving, et consorts).&lt;/p&gt;

&lt;p&gt;Mais que feraient 5 développeurs Scala (relativement) avertis s’ils avaient à valider des données provenant d’une centaine de sources différentes, chacune ayant une centaine de structures de données différentes, avec seulement 6 mois pour livrer le tout en partant de rien ?&lt;/p&gt;

&lt;p&gt;On n’a pas essayé, mais on s’est dit qu’écrire 10000 case classes et compiler les validateurs (même avec magniolia), on n’aurait pas eu le temps.&lt;/p&gt;

&lt;p&gt;Du coup on a trouvé une solution à base de maths (ryoshka), un truc appelé “recursion schemes” et ça nous a permis faire toutes ces validations et beaucoup d’autres choses qu’on n’aurait pas imaginé initialement.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s</summary></entry><entry><title type="html">PSUG #89 - BlackJack et Scalaz-zio</title><link href="https://psug.github.io/scala/2018/08/30/PSUG89.html" rel="alternate" type="text/html" title="PSUG #89 - BlackJack et Scalaz-zio" /><published>2018-08-30T00:00:00+00:00</published><updated>2018-08-30T00:00:00+00:00</updated><id>https://psug.github.io/scala/2018/08/30/PSUG89</id><content type="html" xml:base="https://psug.github.io/scala/2018/08/30/PSUG89.html">&lt;p&gt;Bonjour à tou•te•s&lt;/p&gt;

&lt;p&gt;Après un mois de juillet sans PSUG, on revient frais et motivés comme jamais de nos vacances bien méritées.&lt;/p&gt;

&lt;p&gt;Ce mois-ci, &lt;em&gt;Vincent Spiewak&lt;/em&gt; nous apprendra à gagner au Blackjack avec Scala et Akka et &lt;em&gt;Wiem Zine&lt;/em&gt; vous fera découvrir Scalaz-IOQueue, une librairie basée sur la nouvelle ZIO.&lt;/p&gt;

&lt;h2 id=&quot;beat-the-dealer-gagner-au-blackjack-avec-scala--akka&quot;&gt;Beat the dealer: Gagner au BlackJack avec Scala / Akka&lt;/h2&gt;

&lt;p&gt;Tu ne comprend rien à la programmation fonctionnelle, le modèle Acteur, ou les endofoncteurs ? Ca tombe bien, moi aussi ^^
Ensemble, nous allons voir comment implémenter une partie de BlackJack avec Scala et Akka.
Au menu: sealed trait, pattern matching, options, futures, for/yield, map, flatmap, foldLeft, implicits et bien d’autres&lt;/p&gt;

&lt;h2 id=&quot;scalaz-zio-ioqueue&quot;&gt;Scalaz-zio: IOQueue&lt;/h2&gt;

&lt;p&gt;In April, John De Goes talked about several problems with concurrency and demonstrated how Scalaz 8 can solve those problems simply, with purely functional code, and how is possible to model actors using Scalaz 8.&lt;/p&gt;

&lt;p&gt;Months later, the effect system of Scalaz 8 has become a new independent, zero-dependency library called «scalaz-zio».&lt;/p&gt;

&lt;p&gt;They are a new, interesting, type-safe abstractions that provide a variety of features for building asynchronous and concurrent applications. In this presentation, I will talk about &lt;code class=&quot;highlighter-rouge&quot;&gt;IOQueue&lt;/code&gt;, which is a type-safe queue that uses the purely-functional &lt;code class=&quot;highlighter-rouge&quot;&gt;IORef&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I was honoured to contribute with John De Goes on the first version of IOQueue, which helped me to understand &lt;code class=&quot;highlighter-rouge&quot;&gt;IORef&lt;/code&gt; and how to work with the &lt;code class=&quot;highlighter-rouge&quot;&gt;IO&lt;/code&gt; bifunctor design. I will introduce these features and demonstrate some examples to put them in practice solving real world problems.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s</summary></entry><entry><title type="html">PSUG #88 - Rage Against the Ecosystem</title><link href="https://psug.github.io/scala/2018/06/28/PSUG88.html" rel="alternate" type="text/html" title="PSUG #88 - Rage Against the Ecosystem" /><published>2018-06-28T00:00:00+00:00</published><updated>2018-06-28T00:00:00+00:00</updated><id>https://psug.github.io/scala/2018/06/28/PSUG88</id><content type="html" xml:base="https://psug.github.io/scala/2018/06/28/PSUG88.html">&lt;p&gt;Bonjour à tou•te•s&lt;/p&gt;

&lt;p&gt;Pour ce premier meetup de l’été, nous avons le plaisir de recevoir &lt;a href=&quot;https://twitter.com/propensive&quot;&gt;Jon Pretty(@propensive)&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;Tout juste revenu de ScalaDays, Jon nous parlera de &lt;strong&gt;Fury&lt;/strong&gt; son nouvel outil de build, en anglais, ou en français, ou les deux, 
ou dans la langue d’un pays tiré au sort en lançant, les yeux bandés, une fléchette sur un planisphère (ou pas).&lt;/p&gt;

&lt;h1 id=&quot;rage-against-the-ecosystem&quot;&gt;Rage Against the Ecosystem&lt;/h1&gt;

&lt;p&gt;Scala’s open-source ecosystem is broken: writing and maintaining build configurations is too difficult, and publishing is even harder, coming with the additional friction of having to support an increasing multiplicity of binary targets. But worse, this workflow puts a burden on a few key people in the Scala community to publish their libraries quickly so that their downstream users can publish theirs, and it can take months for some projects to be published. How is it that the multi-billion-dollar Scala software industry is so dependent on so few people?&lt;/p&gt;

&lt;p&gt;I will introduce Fury, a fast, source-based dependency manager and build tool for Scala which aspires to radically disrupt the ecosystem for the better. Fury defines builds as static data, not code, making viewing them instantaneous and understanding them easy. Fury facilitates a new, distributed, version-controlled and trust-based ecosystem where publishing is as simple as tagging a signed commit and telling users about it. Builds can be external to projects, so there’s no need to impose Fury upon any existing developers who are happy using sbt.&lt;/p&gt;

&lt;p&gt;The utopia we are striving for is a new, fluid and versatile ecosystem in which developers are liberated to publish more easily and frequently, and where it becomes easier for anyone to make contributions to open-source projects.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s</summary></entry><entry><title type="html">PSUG #87 - Workshop ScalaJS</title><link href="https://psug.github.io/scala/2018/05/31/PSUG87.html" rel="alternate" type="text/html" title="PSUG #87 - Workshop ScalaJS" /><published>2018-05-31T00:00:00+00:00</published><updated>2018-05-31T00:00:00+00:00</updated><id>https://psug.github.io/scala/2018/05/31/PSUG87</id><content type="html" xml:base="https://psug.github.io/scala/2018/05/31/PSUG87.html">&lt;p&gt;Bonjour à tou•te•s&lt;/p&gt;

&lt;p&gt;Pour ce meetup de mai, c’est un &lt;strong&gt;Hands-on ScalaJS&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Pour l’occasion, &lt;strong&gt;Zenika&lt;/strong&gt; nous accueille dans une salle de ~30 places, alors &lt;a href=&quot;https://www.meetup.com/fr-FR/Paris-Scala-User-Group-PSUG/events/251045516/&quot;&gt;inscrivez-vous vite&lt;/a&gt;!&lt;/p&gt;

&lt;h1 id=&quot;initiation-à-scalajs-par-christophe-calvès&quot;&gt;Initiation à ScalaJS par &lt;a href=&quot;https://github.com/chrilves&quot;&gt;Christophe Calvès&lt;/a&gt;&lt;/h1&gt;

&lt;p&gt;Le but est de réaliser un jeu (slimetrail) en HTML/SVG en ScalaJS à la ELM.&lt;/p&gt;

&lt;p&gt;Il faut venir impérativement avec une machine avec scala 2.12, sbt 1 et un Firefox ou Chrome/Chromium installé.&lt;/p&gt;

&lt;p&gt;Les sources du projet sont &lt;a href=&quot;https://github.com/chrilves/slimetrail.scalajs/tree/PSUG&quot;&gt;ici&lt;/a&gt; et la version démo est disponible &lt;a href=&quot;https://chrilves.github.io/slimetrail/&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour des info complémentaires:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.di.fc.ul.pt/~jpn/gv/slimetrail.htm&quot;&gt;http://www.di.fc.ul.pt/~jpn/gv/slimetrail.htm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://chrilves.github.io/slimetrail/&quot;&gt;https://chrilves.github.io/slimetrail/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s</summary></entry><entry><title type="html">PSUG #86 - Traversals et implicits</title><link href="https://psug.github.io/scala/2018/04/26/PSUG86.html" rel="alternate" type="text/html" title="PSUG #86 - Traversals et implicits" /><published>2018-04-26T00:00:00+00:00</published><updated>2018-04-26T00:00:00+00:00</updated><id>https://psug.github.io/scala/2018/04/26/PSUG86</id><content type="html" xml:base="https://psug.github.io/scala/2018/04/26/PSUG86.html">&lt;p&gt;Bonjour à tou•te•s,&lt;/p&gt;

&lt;p&gt;Ce mois-ci on laisse le micro à nos deux invités. Quentin Adam (&lt;a href=&quot;http://twitter.com/waxzce&quot;&gt;@waxzce&lt;/a&gt;) vient de Nantes pour nous parler des implicits, et Luka Jacobowitz (&lt;a href=&quot;http://twitter.com/LukaJacobowitz&quot;&gt;@LukaJacobowitz&lt;/a&gt;) vient de Düsseldorf pour nous parler (en anglais), de la typeclass &lt;code class=&quot;highlighter-rouge&quot;&gt;Traverse&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Pour l’occasion, Xebia nous accueille dans sa grande salle de 100 places, alors venez nombreu•se•s !&lt;/p&gt;

&lt;h1 id=&quot;traversals-for-all-occasions--luka-jacobowitz&quot;&gt;Traversals for all occasions — Luka Jacobowitz&lt;/h1&gt;

&lt;p&gt;One of the most important aspects of programming is iterating or traversing all sorts of collections. The Traversable type class is without a doubt one of the most useful gems of functional programming and, because of its vast versatility, also often the answer to “How do I…“-questions, but how many different kinds of traversals are there?&lt;/p&gt;

&lt;p&gt;This talks aims to showcase some of the lesser known facts of traversable functors and also a bunch of other related type classes and functions that exploit different properties of our data types. We’ll see some more obscure things like requiring the commutative property to traverse unordered containers like Spark RDDs, or more straightforward ones like running a bunch of asynchronous actions in parallel, waiting for the results and accumulating errors along the way in a simple one-liner.&lt;/p&gt;

&lt;p&gt;Les slides sont &lt;a href=&quot;https://www.slideshare.net/LukaJacobowitz/traversals-for-all-ocasions&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;h1 id=&quot;implicits-pour-faire-des-apis-simples-des-dsl-ou-de-la-magie-noire-ça-marche-comment---quentin-adam&quot;&gt;Implicits: pour faire des APIs simples, des DSL ou de la magie noire, ça marche comment ? — Quentin Adam&lt;/h1&gt;

&lt;p&gt;C’est quoi un implicit ? Pourquoi ça existe dans le langage ? Le lien au DSL (au fait c’est quoi un DSL) ? Construire une API en les utilisant… Ce talk est un 101 des implicits dans le scala.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bonjour à tou•te•s,</summary></entry></feed>