<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <id>https://marmelab.com/</id>
    <title>Marmelab Blog</title>
    <updated>2026-05-07T16:25:47.486Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>François Zaninotto</name>
    </author>
    <link rel="alternate" href="https://marmelab.com/"/>
    <link rel="self" href="https://marmelab.com/atom.xml"/>
    <entry>
        <title type="html"><![CDATA[Pour la fin des contrats au forfait]]></title>
        <id>https://marmelab.com/blog/2013/02/11/pour-la-fin-des-contrats-au-forfait.html</id>
        <link href="https://marmelab.com/blog/2013/02/11/pour-la-fin-des-contrats-au-forfait.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BiaWf5zn.jpg"/>
        <updated>2013-02-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Beaucoup de contrats au forfait se finissent mal pour le client. C’est que le forfait délègue le risque tout en le cachant. Heureusement, il y a une alternative.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lancement de CloudScreener, le comparateur d'offre cloud pour les PME]]></title>
        <id>https://marmelab.com/blog/2013/02/13/lancement-de-cloudscreener-le-comparateur-d-offre-cloud-pour-les-pme.html</id>
        <link href="https://marmelab.com/blog/2013/02/13/lancement-de-cloudscreener-le-comparateur-d-offre-cloud-pour-les-pme.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BiaWf5zn.jpg"/>
        <updated>2013-02-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous sommes fiers d'annoncer la mise en ligne de notre premier site, [cloudscreener.com](http://www.cloudscreener.com){","} développé par marmelab pour la société CloudScreener.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CloudScreener, le comparateur d'offres Cloud, sort son mode expert]]></title>
        <id>https://marmelab.com/blog/2013/03/29/cloudscreener-le-comparateur-d-offres-cloud-sort-son-mode-expert.html</id>
        <link href="https://marmelab.com/blog/2013/03/29/cloudscreener-le-comparateur-d-offres-cloud-sort-son-mode-expert.html"/>
        <updated>2013-03-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CloudScreener.com, le site de diagnostic et comparaison de cloud computing développé par marmelab pour le compte de la startup CloudScreener, vient de sortir sa cinquième itération.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Inline Text Editing With Raphaël.js]]></title>
        <id>https://marmelab.com/blog/2013/05/13/inline-text-editing-with-raphael.html</id>
        <link href="https://marmelab.com/blog/2013/05/13/inline-text-editing-with-raphael.html"/>
        <updated>2013-05-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[You can easily do inline editing in pure HTML, but how about enabling the same feature in SVG, and making it available on all major browsers?]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Integrating Raphael.js With Backbone.js]]></title>
        <id>https://marmelab.com/blog/2013/05/22/integrating-raphaeljs-with-backbone.html</id>
        <link href="https://marmelab.com/blog/2013/05/22/integrating-raphaeljs-with-backbone.html"/>
        <updated>2013-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Client-side MVC frameworks usually bind model elements with DOM elements. But for more graphical applications, the view layer cannot be restricted to div and span tags.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment se passe un premier projet agile ? Interview d'Anthony Sollinger, CloudScreener.com]]></title>
        <id>https://marmelab.com/blog/2013/05/23/comment-se-passe-un-premier-projet-agile-interview-d-anthony-sollinger-cloudscreenercom.html</id>
        <link href="https://marmelab.com/blog/2013/05/23/comment-se-passe-un-premier-projet-agile-interview-d-anthony-sollinger-cloudscreenercom.html"/>
        <updated>2013-05-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Après un premier projet agile (Scrum, Lean Startup) réalisé par marmelab, nous avons demandé à Anthony Sollinger, co-fondateur de [CloudScreener.com](http://cloudscreener.com){","} de partager ses impressions.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building Sophisticated WebApps For Mobile: A Bumpy Ride]]></title>
        <id>https://marmelab.com/blog/2013/07/01/building-sophisticated-webapps-for-mobile-a-bumpy-ride.html</id>
        <link href="https://marmelab.com/blog/2013/07/01/building-sophisticated-webapps-for-mobile-a-bumpy-ride.html"/>
        <updated>2013-07-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[For the past couple weeks, we've been working on a prototype mobile WebApp built in HTML5 and d3.js. The purpose was to test the performance of d3.js on mobile browsers.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/dataviz" term="dataviz"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Connected Objects To Keep Your Job]]></title>
        <id>https://marmelab.com/blog/2013/07/22/using-connected-objects-to-keep-your-job.html</id>
        <link href="https://marmelab.com/blog/2013/07/22/using-connected-objects-to-keep-your-job.html"/>
        <updated>2013-07-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We keep hearing about the Internet of Things. The basic idea is simple, everyday objects (like a watch or even a toothbrush) will soon be connected to Internet, and will be able to communicate with each other.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Jérôme]]></title>
        <id>https://marmelab.com/blog/2013/09/16/marmelab-souhaite-la-bienvenue-a-jerome.html</id>
        <link href="https://marmelab.com/blog/2013/09/16/marmelab-souhaite-la-bienvenue-a-jerome.html"/>
        <updated>2013-09-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Après une longue expérience dans les médias, Jérôme Macias a rejoint marmelab à la fin du mois d'août.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How To Use Docker To Run PHPUnit Tests In Parallel]]></title>
        <id>https://marmelab.com/blog/2013/11/04/how-to-use-docker-to-run-phpunit-tests-in-parallel.html</id>
        <link href="https://marmelab.com/blog/2013/11/04/how-to-use-docker-to-run-phpunit-tests-in-parallel.html"/>
        <updated>2013-11-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ahoy sailor ! Let me tell you the story of [Docker](http://www.docker.io/){","} the LinuX Container (LXC) manager that you&#39;ve dreamt of for a long time.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Daphné]]></title>
        <id>https://marmelab.com/blog/2013/11/05/marmelab-souhaite-la-bienvenue-a-daphne.html</id>
        <link href="https://marmelab.com/blog/2013/11/05/marmelab-souhaite-la-bienvenue-a-daphne.html"/>
        <updated>2013-11-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Deux ans et demi en agence web (chez Nurun Nancy) ont permis à Daphné de s'aguerrir sur de nombreux projets pour des grands comptes de l'énergie, de la cosmétique, de l'alimentation pour nourrissons.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[My First Assignment: Creating an Elastica Adapter for the Sonata Admin list view]]></title>
        <id>https://marmelab.com/blog/2013/11/19/my-first-assignment-creating-an-elastica-adapter-for-the-sonata-admin-list-view.html</id>
        <link href="https://marmelab.com/blog/2013/11/19/my-first-assignment-creating-an-elastica-adapter-for-the-sonata-admin-list-view.html"/>
        <updated>2013-11-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Just like every marmelab recruit, my first weeks are spent working on various new technologies (Node.js, ElasticSearch, MongoDb, etc) with real use cases.]]></summary>
        <author>
            <name>Daphné Popin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Robin]]></title>
        <id>https://marmelab.com/blog/2013/12/04/marmelab-souhaite-la-bienvenue-a-robin.html</id>
        <link href="https://marmelab.com/blog/2013/12/04/marmelab-souhaite-la-bienvenue-a-robin.html"/>
        <updated>2013-12-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Fraîchement diplômé de l'Ecole d'Ingénieurs Telecom Nancy, Robin Bressan a rejoint l'équipe mi novembre pour renforcer nos capacités de développement.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Converting the Symfony Stopwatch Component from PHP to Zephir]]></title>
        <id>https://marmelab.com/blog/2013/12/05/converting-the-symfony-stopwatch-component-from-php-to-zephir.html</id>
        <link href="https://marmelab.com/blog/2013/12/05/converting-the-symfony-stopwatch-component-from-php-to-zephir.html"/>
        <updated>2013-12-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[During the last HackDay at&nbsp;[Marmelab](http://marmelab.com/){","} I wanted to give&nbsp;[Zephir](http://zephir-lang.com/)&nbsp;a try. Zephir is a new language which eases the creation of C extensions for PHP.]]></summary>
        <author>
            <name>Brice Bernard</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[My First Assignment: a PHPCR Browser]]></title>
        <id>https://marmelab.com/blog/2013/12/16/my-first-assignment-a-phpcr-browser.html</id>
        <link href="https://marmelab.com/blog/2013/12/16/my-first-assignment-a-phpcr-browser.html"/>
        <updated>2013-12-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I’ve just finished my master degree in IT at TELECOM Nancy, and my internship at INRIA. I was wondering if I preferred to continue studying in thesis, or to start looking for a job.]]></summary>
        <author>
            <name>Robin Bressan</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/cms" term="cms"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Gaudi: An Architect for Multi-Component Applications]]></title>
        <id>https://marmelab.com/blog/2014/01/31/introducing-gaudi-an-architect-for-multi-component-applications.html</id>
        <link href="https://marmelab.com/blog/2014/01/31/introducing-gaudi-an-architect-for-multi-component-applications.html"/>
        <updated>2014-01-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Web applications often use a lot of different components, such as MySQL, ElasticSearch, or Redis. Installing, running and maintaining theses servers can waste a lot of our time.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create Gaudi's File Easily With A Web App]]></title>
        <id>https://marmelab.com/blog/2014/02/06/create-gaudi-s-file-easily-with-a-web-app.html</id>
        <link href="https://marmelab.com/blog/2014/02/06/create-gaudi-s-file-easily-with-a-web-app.html"/>
        <updated>2014-02-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Last week I released [Gaudi](https://github.com/marmelab/gaudi){","} an architecture builder for all your applications. Gaudi uses a configuration file (called <code>.gaudi.yml</code>) to create [Docker](http://www.docker.io) containers for each component you need.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Running Symfony CMF With Gaudi]]></title>
        <id>https://marmelab.com/blog/2014/02/09/running-symfony-cmf-with-gaudi.html</id>
        <link href="https://marmelab.com/blog/2014/02/09/running-symfony-cmf-with-gaudi.html"/>
        <updated>2014-02-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Symfony CMF is a new Content Management Framework based on Symfony 2. This project won the Symfony Open-Source Application Award 2013, and is used at marmelab for a project with more than 900K documents. Symfony CMF requires several third-party components...]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/cms" term="cms"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Gaudi News: gaudi.io, apt-get install gaudi, ambassadors, and more!]]></title>
        <id>https://marmelab.com/blog/2014/05/12/gaudi-news-gaudi-io-apt-get-install.html</id>
        <link href="https://marmelab.com/blog/2014/05/12/gaudi-news-gaudi-io-apt-get-install.html"/>
        <updated>2014-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Gaudi, the dev environment builder for Docker, has gotten lots of love lately. Read on to see all the new features we've added to improve your development workflows.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ArcheoloGit: Visualize Code Age and Dev Activity]]></title>
        <id>https://marmelab.com/blog/2014/05/15/archeologit.html</id>
        <link href="https://marmelab.com/blog/2014/05/15/archeologit.html"/>
        <updated>2014-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How I used d3.js to help detect potentially dangerous code in a large codebase]]></summary>
        <author>
            <name>Daphné Popin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/dataviz" term="dataviz"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[PHPCR Browser: Edit Support and Better Performance]]></title>
        <id>https://marmelab.com/blog/2014/05/22/phpcr-browser-a-new-hope.html</id>
        <link href="https://marmelab.com/blog/2014/05/22/phpcr-browser-a-new-hope.html"/>
        <updated>2014-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The PHPCR Browser, initially released in late 2013, has been completely rewritten to improve performance and reliability, and to add support for tree edition.]]></summary>
        <author>
            <name>Robin Bressan</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/cms" term="cms"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[[Screencast] Build a working SF2 web application using 3 docker containers in 2 minutes]]></title>
        <id>https://marmelab.com/blog/2014/06/04/demo-symfony-with-docker-and-gaudi.html</id>
        <link href="https://marmelab.com/blog/2014/06/04/demo-symfony-with-docker-and-gaudi.html"/>
        <updated>2014-06-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Using gaudi's visual configuration builder, setting up a multi-container development environment from scratch is more than painless: it's fun. Make sure you watch this amazing video!]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create a Full Stack Magento Environment With gaudi]]></title>
        <id>https://marmelab.com/blog/2014/06/17/magento-full-stack-with-gaudi.html</id>
        <link href="https://marmelab.com/blog/2014/06/17/magento-full-stack-with-gaudi.html"/>
        <updated>2014-06-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[E-commerce websites with heavy traffic often require load balancers, memcache, and master/slave MySQL replication. gaudi helps to build this kind of architecture in minutes.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Resolving Action Dependencies: Comparing JavaScript and Go implementations]]></title>
        <id>https://marmelab.com/blog/2014/08/22/resolving-action-dependencies-golang.html</id>
        <link href="https://marmelab.com/blog/2014/08/22/resolving-action-dependencies-golang.html"/>
        <updated>2014-08-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Go routines are ridiculously powerful. I realized it while adding new features to gaudi. Check out how I leverage their power to outperform a JavaScript implementation by far.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[One New Tech Per Project]]></title>
        <id>https://marmelab.com/blog/2014/09/01/one-new-tech-per-project.html</id>
        <link href="https://marmelab.com/blog/2014/09/01/one-new-tech-per-project.html"/>
        <updated>2014-09-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[At marmelab, we don't wait until a customer asks us to test a new piece of technology to use it. All our projects rely on at least one piece of technology we've never used before. Read on to see our benefits vs risk evaluation of this dangerous practice.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Fibonacci sequence generator in Go]]></title>
        <id>https://marmelab.com/blog/2014/09/08/fibonacci-sequence-generator-in-go.html</id>
        <link href="https://marmelab.com/blog/2014/09/08/fibonacci-sequence-generator-in-go.html"/>
        <updated>2014-09-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Is it possible to develop generators in Golang? Sure! Here is an elegant way based on Fibonacci sequence.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Seamlessly Run Composer On HHVM Inside Docker: Introducing make-docker-command]]></title>
        <id>https://marmelab.com/blog/2014/09/10/make-docker-command.html</id>
        <link href="https://marmelab.com/blog/2014/09/10/make-docker-command.html"/>
        <updated>2014-09-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Single purpose containers for composer, bower, compass or capistrano are possible, but hard to manipulate. Read on to see how we use GNU make to seamlessly run any command line tool inside Docker.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/shell" term="shell"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ng-admin: Add an AngularJS admin GUI to any RESTful API]]></title>
        <id>https://marmelab.com/blog/2014/09/15/easy-backend-for-your-restful-api.html</id>
        <link href="https://marmelab.com/blog/2014/09/15/easy-backend-for-your-restful-api.html"/>
        <updated>2014-09-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why spend time redeveloping an admin backend using PHP if you already have a RESTful API? Introducing ng-admin, an admin generator written entirely in JavaScript, supporting relationships, smart field types, and much more.]]></summary>
        <author>
            <name>Daphné Popin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Alexis]]></title>
        <id>https://marmelab.com/blog/2014/09/16/marmelab-souhaite-la-bienvenue-a-alexis.html</id>
        <link href="https://marmelab.com/blog/2014/09/16/marmelab-souhaite-la-bienvenue-a-alexis.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/alexis_small.Cprp991O.png"/>
        <updated>2014-09-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Alexis vient apporter ses 11 ans d'expérience dans le développement web aux projets d'innovation des clients de marmelab. Vous allez voir de quel bois il se chauffe !]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Du PHP au Go: une semaine pour réaliser un produit fonctionnel ]]></title>
        <id>https://marmelab.com/blog/2014/09/22/golang-par-la-pratique.html</id>
        <link href="https://marmelab.com/blog/2014/09/22/golang-par-la-pratique.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/go-by-practice-small.C4xdQ_a_.jpg"/>
        <updated>2014-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Quels enseignements tirer d'une semaine de découverte du langage Go par un PHPiste.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[[Video] MobileInsight : une semaine avec Angular.js, Ionic et PhoneGap]]></title>
        <id>https://marmelab.com/blog/2014/09/26/mobile-insight-angular-ionic.html</id>
        <link href="https://marmelab.com/blog/2014/09/26/mobile-insight-angular-ionic.html"/>
        <updated>2014-09-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retour d'expérience sur le développement d'une application mobile hybride, basée sur le service SensioLabsInsight, avec Angular.js, Ionic et PhoneGap]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ng-admin Update: Callback Field Type, Easier Customization]]></title>
        <id>https://marmelab.com/blog/2014/09/30/ng-admin-callback-customization.html</id>
        <link href="https://marmelab.com/blog/2014/09/30/ng-admin-callback-customization.html"/>
        <updated>2014-09-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Last week, I've been working on ng-admin to introduce new field types and allow application customization]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Une console plus graphique avec node.js et d3.js]]></title>
        <id>https://marmelab.com/blog/2014/10/03/graphical-du-with-d3.html</id>
        <link href="https://marmelab.com/blog/2014/10/03/graphical-du-with-d3.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/treedu_mini.BtBkk-b0.jpg"/>
        <updated>2014-10-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA["Afficher graphiquement l'occupation disque d'un répertoire dans la console en Javascript" : l'énoncé du problème est très motivant. Mais après 5 jours à en tenter l'implémentation, peut-on dire que node.js et d3.js sont utilisables pour des rendus graphiques dans un terminal ? Oui. Mais ...]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/dataviz" term="dataviz"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab déménage!]]></title>
        <id>https://marmelab.com/blog/2014/10/29/new-offices.html</id>
        <link href="https://marmelab.com/blog/2014/10/29/new-offices.html"/>
        <updated>2014-10-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Près de deux ans après son emménagement dans les locaux d'ARTEM, marmelab vient d'emménager dans un nouveau local.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Une commande tree plus efficace grâce au Go]]></title>
        <id>https://marmelab.com/blog/2014/10/30/tree-command-with-go.html</id>
        <link href="https://marmelab.com/blog/2014/10/30/tree-command-with-go.html"/>
        <updated>2014-10-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Peut-on facilement et rapidement améliorer la classique commande `tree` grâce au langage Go ? Nancy étant dans les cartons, c'est Paris qui s'y colle pour cette journée de Hackday.]]></summary>
        <author>
            <name>Jérôme Macias</name>
        </author>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing koa-multifetch, a Node.js middleware for REST APIs]]></title>
        <id>https://marmelab.com/blog/2014/11/04/koa-multifetch.html</id>
        <link href="https://marmelab.com/blog/2014/11/04/koa-multifetch.html"/>
        <updated>2014-11-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've built a middleware for the koa framework. It allows to multiplex several requests to a REST API in a single HTTP request. Read on to learn its usage.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[We're retiring gaudi]]></title>
        <id>https://marmelab.com/blog/2014/11/06/retiring-gaudi.html</id>
        <link href="https://marmelab.com/blog/2014/11/06/retiring-gaudi.html"/>
        <updated>2014-11-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Making an orchestration tool for Docker containers was a good idea, until Docker bought another one]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Bilan du Forum PHP 2014: Le PHP, langage de l'innovation ?]]></title>
        <id>https://marmelab.com/blog/2014/11/12/forum-php-2014.html</id>
        <link href="https://marmelab.com/blog/2014/11/12/forum-php-2014.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/fp14-logo.CkU_F7LO.png"/>
        <updated>2014-11-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Le PHP est-il un langage de choix pour relever le défi de l'innovation ? Compte-rendu sélectif de ce qu'en a dit la communauté PHP réunie au Beffroi de Montrouge le 23 et 24 octobre dernier.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Big changes in ng-admin 0.3: Introducing views]]></title>
        <id>https://marmelab.com/blog/2014/11/13/introducing-ng-admin-views.html</id>
        <link href="https://marmelab.com/blog/2014/11/13/introducing-ng-admin-views.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/ng_admin_field_small.ByoSlx8l.jpg"/>
        <updated>2014-11-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ng-admin can now differentiate your field for each type of view. For the occasion, we're releasing a new version.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DotJS 2014: Big stars don't make a great event]]></title>
        <id>https://marmelab.com/blog/2014/11/24/do-js-2014-recap.html</id>
        <link href="https://marmelab.com/blog/2014/11/24/do-js-2014-recap.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/dotjs-small.CYzRsBFq.jpg"/>
        <updated>2014-11-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The DotJs conference took place on november 17th in Paris. Many great JavaScript evangelists were announced, but I expected their presentations to be much more interesting.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Creating JSON Web Token in JavaScript]]></title>
        <id>https://marmelab.com/blog/2014/12/02/creating-json-web-token-in-javascript.html</id>
        <link href="https://marmelab.com/blog/2014/12/02/creating-json-web-token-in-javascript.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/fiber-optic-globe-jared-zammit_small.CkM8kqxg.jpg"/>
        <updated>2014-12-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[One of the best way to secure an API is JSON Web Tokens. As understanding a concept passes by experimenting it, here is a post describing how to forge such a token in JavaScript.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ng-admin 0.4: Eating our own dog food]]></title>
        <id>https://marmelab.com/blog/2014/12/05/ngadmin-04-eating-our-own-dog-food.html</id>
        <link href="https://marmelab.com/blog/2014/12/05/ngadmin-04-eating-our-own-dog-food.html"/>
        <updated>2014-12-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We're releasing a new version of ng-admin, introducing a nicer GUI, a nicer config API, and tons of new features. Read on to learn what's new.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Two days to write my first Protractor tests on the ng-admin AngularJs module]]></title>
        <id>https://marmelab.com/blog/2014/12/12/protractor-in-ng-admin-angularjs-app.html</id>
        <link href="https://marmelab.com/blog/2014/12/12/protractor-in-ng-admin-angularjs-app.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/protractor_small.CNDNiI8X.jpg"/>
        <updated>2014-12-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Protractor is the de facto standard for end-to-end tests on AngularJS applications. I spent two days bootstraping it on ng-admin project.]]></summary>
        <author>
            <name>Jérôme Macias</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab: 2 years of Open-Source]]></title>
        <id>https://marmelab.com/blog/2014/12/17/marmelab-two-years-open-source.html</id>
        <link href="https://marmelab.com/blog/2014/12/17/marmelab-two-years-open-source.html"/>
        <updated>2014-12-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've been producing open-source code on GitHub for the past 2 years. Guess what? Some of it is really good!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Admin GUIs in the Microservices Era: Introducing ng-admin Multi Backend]]></title>
        <id>https://marmelab.com/blog/2014/12/19/microservice-administration-with-ng-admin.html</id>
        <link href="https://marmelab.com/blog/2014/12/19/microservice-administration-with-ng-admin.html"/>
        <updated>2014-12-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Following microservices leads to a virtuous architecture, but to a nightmare for human users. What if we could do something about it, using a web application dedicated to backend administration?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Microrest.php: Generate A RESTful API On Top Of Any Relational Database, Powered By PHP And Silex]]></title>
        <id>https://marmelab.com/blog/2015/01/05/introducing-microrest-raml-api-in-silex.html</id>
        <link href="https://marmelab.com/blog/2015/01/05/introducing-microrest-raml-api-in-silex.html"/>
        <updated>2015-01-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you have a database, you're not far from also having a REST API. All it takes is a PHP microserver written in Silex, a description of your model written in YAML... and 5 minutes of your time.]]></summary>
        <author>
            <name>Jérôme Macias</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Silex Multifetch: Multiplex Requests To Your PHP API Into A Single HTTP call]]></title>
        <id>https://marmelab.com/blog/2015/01/14/introducing-silex-multifetch-provider.html</id>
        <link href="https://marmelab.com/blog/2015/01/14/introducing-silex-multifetch-provider.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/silex-multifetch_small.D8qBlTYD.jpg"/>
        <updated>2015-01-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Batch requests is a common practice to minimize API response time. We're publishing a new library to make it possible on web services written in PHP.]]></summary>
        <author>
            <name>Jérôme Macias</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[[Video] ArchitectureTree: Visualize Software Architectures In Your Browser]]></title>
        <id>https://marmelab.com/blog/2015/01/27/architecture-tree-d3js.html</id>
        <link href="https://marmelab.com/blog/2015/01/27/architecture-tree-d3js.html"/>
        <updated>2015-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[You don't need a drawing app to create a software map anymore. Meet ArchitectureTree, a visualization combining d3.js and Angular.js for demanding architects.]]></summary>
        <author>
            <name>Jérôme Macias</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/dataviz" term="dataviz"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Playing with websockets in Go]]></title>
        <id>https://marmelab.com/blog/2015/01/29/playing-with-websockets-in-go.html</id>
        <link href="https://marmelab.com/blog/2015/01/29/playing-with-websockets-in-go.html"/>
        <updated>2015-01-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Go is quite good for asynchronous tasks. So, let's experiment it with websockets, creating a (basic) collaborative text editor, GollabEdit.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ng-admin 0.5 Is Out, and It's Compatible With Your API]]></title>
        <id>https://marmelab.com/blog/2015/02/04/ng-admin-05.html</id>
        <link href="https://marmelab.com/blog/2015/02/04/ng-admin-05.html"/>
        <updated>2015-02-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've been hard at work during the past two months, making ng-admin even more configurable. It can now consume RESTful APIs in any format thanks to a powerful mapping engine, and you can completely theme it to your colors.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[NgAdminGeneratorBundle: Create a JavaScript Admin Panel and a REST API for Symfony2 Apps in Minutes]]></title>
        <id>https://marmelab.com/blog/2015/02/24/ngadmingeneratorbundle-create-javascript-admin-panel-rest-api-symfony2-in-minutes.html</id>
        <link href="https://marmelab.com/blog/2015/02/24/ngadmingeneratorbundle-create-javascript-admin-panel-rest-api-symfony2-in-minutes.html"/>
        <updated>2015-02-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[One of our mottos at marmelab is <em>convention over configuration</em>. Here is an example of how we apply this philosophy, using Symfony2, Stan Lemon's REST bundle, ng-admin, and a brand new bundle called `NgAdminGeneratorBundle`.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ng-admin 0.6: Adding Support for Custom Types]]></title>
        <id>https://marmelab.com/blog/2015/02/25/ngadmin-06-factories.html</id>
        <link href="https://marmelab.com/blog/2015/02/25/ngadmin-06-factories.html"/>
        <updated>2015-02-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Less than a month after the previous release, ng-admin 0.6 is here with a better configuratino API and the ability to add custom types]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Yann]]></title>
        <id>https://marmelab.com/blog/2015/03/03/marmelab-souhaite-la-bienvenue-a-yann.html</id>
        <link href="https://marmelab.com/blog/2015/03/03/marmelab-souhaite-la-bienvenue-a-yann.html"/>
        <updated>2015-03-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab se renforce en pilotage de projet agile grâce à l'arrivée de Yann, coach agile et scrummaster très expérimenté et très chaleureux]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Restful.js: A Framework Agnostic JS Client for RESTful APIs]]></title>
        <id>https://marmelab.com/blog/2015/03/10/deal-easily-with-your-rest-api-using-restful-js.html</id>
        <link href="https://marmelab.com/blog/2015/03/10/deal-easily-with-your-rest-api-using-restful-js.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/restful_small.CC9B0Yym.jpg"/>
        <updated>2015-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Do you know Restangular, the Angular.js service that simplifies common GET, POST, DELETE, and UPDATE requests with a minimum of client code? It's excellent, except that it's Angular-only. We have developed a similar library in pure JavaScript. With no framework dependency, you can use it anywhere, especially in your React single-page applications.]]></summary>
        <author>
            <name>Robin Bressan</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Transpiling EcmaScript6 code to ES5 using Babel]]></title>
        <id>https://marmelab.com/blog/2015/03/12/transpiling-es6-to-es5-using-babel.html</id>
        <link href="https://marmelab.com/blog/2015/03/12/transpiling-es6-to-es5-using-babel.html"/>
        <updated>2015-03-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[During more than a week, we worked hard to introduce some EcmaScript6, the future of JavaScript, to ng-admin. Here is how we transpiled our code to ES5, to ensure every browser understands our code.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Ng-admin with postgREST]]></title>
        <id>https://marmelab.com/blog/2015/03/23/using-ng-admin-with-postgrest.html</id>
        <link href="https://marmelab.com/blog/2015/03/23/using-ng-admin-with-postgrest.html"/>
        <updated>2015-03-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[PostgREST is a lightning fast RESTful API on top of any PostgreSQL database. Ng-admin can plug to any RESTful API. What if we connected the two?]]></summary>
        <author>
            <name>Brice Bernard</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[FakeRest: Patch XMLHttpRequest to fake a REST server based on JSON data]]></title>
        <id>https://marmelab.com/blog/2015/03/25/fakerest-stub-for-rest-api.html</id>
        <link href="https://marmelab.com/blog/2015/03/25/fakerest-stub-for-rest-api.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/lego_house_small.DmPE22XT.jpg"/>
        <updated>2015-03-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How do you manage E2E testing of webapps relying on RESTful web services? Instead of setting up a server with test data, why not do it directly in the browser? FakeRest allows to do backend-less e2e testing.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Gildas]]></title>
        <id>https://marmelab.com/blog/2015/04/03/marmelab-souhaite-la-bienvenue-a-gildas.html</id>
        <link href="https://marmelab.com/blog/2015/04/03/marmelab-souhaite-la-bienvenue-a-gildas.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/gildas-small.CmyxuS65.jpg"/>
        <updated>2015-04-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un nouveau développeur web expérimenté, doublé d'un architecte logiciel, vient de rejoindre marmelab. Il est aussi très fort en Parkour.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mon premier défi : un Dobble generator en TDD]]></title>
        <id>https://marmelab.com/blog/2015/04/07/first-challenge-dobble.html</id>
        <link href="https://marmelab.com/blog/2015/04/07/first-challenge-dobble.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/dobble_small.Ddl0Vcup.jpg"/>
        <updated>2015-04-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Générer un jeu de 55 cartes avec 8 symboles uniques par carte, où chaque paire de carte n'a qu'un seul symbole en commun (oui, c'est Dobble), le tout en TDD avec ES6. Facile&nbsp;? Pas si facile.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ng-admin 0.7: Configurable Menus, Batch Actions, CSV Export, And More]]></title>
        <id>https://marmelab.com/blog/2015/05/06/ngadmin-07-menus-batch-actions-csv-export.html</id>
        <link href="https://marmelab.com/blog/2015/05/06/ngadmin-07-menus-batch-actions-csv-export.html"/>
        <updated>2015-05-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Continuing on the path of a feature-complete admin generator, the latest release of nf-admin offers much awaited features and many stability improvements.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Awesome REST: a List of Developer Resources for Building REST API]]></title>
        <id>https://marmelab.com/blog/2015/05/11/awesome-rest-list-of-developer-resources-for-rest-api.html</id>
        <link href="https://marmelab.com/blog/2015/05/11/awesome-rest-list-of-developer-resources-for-rest-api.html"/>
        <updated>2015-05-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[marmelab is glad to show you a list of useful REST resources to help developers in creating or consuming RESTful API.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Setup Webpack on an ES6 React app with SASS]]></title>
        <id>https://marmelab.com/blog/2015/05/18/setup-webpack-for-es6-react-application-with-sass.html</id>
        <link href="https://marmelab.com/blog/2015/05/18/setup-webpack-for-es6-react-application-with-sass.html"/>
        <updated>2015-05-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Webpack is really a great JavaScript bundler, allowing to turn messy and numerous JavaScript into a single minified and optimized script. Yet, we missed a good getting started tutorial. Here is one, using ES6 React app with SASS.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Minutes of PHP Tour 2015]]></title>
        <id>https://marmelab.com/blog/2015/06/01/minutes-of-phptour-2015.html</id>
        <link href="https://marmelab.com/blog/2015/06/01/minutes-of-phptour-2015.html"/>
        <updated>2015-06-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Two weeks ago, we attended the PHP Tour 2015, organized by AFUP in Luxembourg. Here is a summary of each talk we saw.]]></summary>
        <author>
            <name>Emmanuel Quentin</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DotScale 2015 Conference Summary]]></title>
        <id>https://marmelab.com/blog/2015/06/10/dotscale-2015-conference-summary.html</id>
        <link href="https://marmelab.com/blog/2015/06/10/dotscale-2015-conference-summary.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/dotscale_2015_small.C1y9RJIm.jpg"/>
        <updated>2015-06-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Monday, I attended the DotScale 2015, one of the DotConferences series. Here are my impressinos about the talks.]]></summary>
        <author>
            <name>Jérôme Macias</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[L'itération agile : entre SSII et agence, un nouveau mode de prestation informatique]]></title>
        <id>https://marmelab.com/blog/2015/06/11/iteration-agile.html</id>
        <link href="https://marmelab.com/blog/2015/06/11/iteration-agile.html"/>
        <updated>2015-06-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Alors que la plupart des sociétés de service continuent à vendre le plus de jours.homme possible, marmelab a choisi de vendre un package plus ambitieux. Il est aussi plus risqué. Qu'est-ce qu'il contient ? A qui s'adresse-t-il ? Et est-ce que ça marche ?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Jest, The React.js Unit Testing Framework, In Practice]]></title>
        <id>https://marmelab.com/blog/2015/06/24/jest-in-practice.html</id>
        <link href="https://marmelab.com/blog/2015/06/24/jest-in-practice.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/jest_small.C49vLFSW.png"/>
        <updated>2015-06-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Jest is the de facto unit testing framework for ReactJS project. It is provided and used by Facebook themselves. You will see how and why we use it on the react-admin project, the difficulties we met, and some useful tips for setting it up correctly.]]></summary>
        <author>
            <name>Jérôme Macias</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Importing a Modeled Mesh From Blender to Three.js]]></title>
        <id>https://marmelab.com/blog/2015/07/31/importing-blender-modelized-mesh-in-threejs.html</id>
        <link href="https://marmelab.com/blog/2015/07/31/importing-blender-modelized-mesh-in-threejs.html"/>
        <updated>2015-07-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this Three.js tutorial, we are going to see how to import a modeled mesh from Blender to our scene, animating it with some basic rotations.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/3d" term="3d"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ng-admin 0.8 Is Out!]]></title>
        <id>https://marmelab.com/blog/2015/08/26/ng-admin-0-8.html</id>
        <link href="https://marmelab.com/blog/2015/08/26/ng-admin-0-8.html"/>
        <updated>2015-08-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The development of ng-admin, the client-side admin GUI running on top of any REST API, continues at a steady pace. Read on to see the ton of new features coming in v0.8.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ng-admin: Meet the new demo]]></title>
        <id>https://marmelab.com/blog/2015/09/04/ng-admin-demo.html</id>
        <link href="https://marmelab.com/blog/2015/09/04/ng-admin-demo.html"/>
        <updated>2015-09-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To showcase the possibilities of ng-admin, we needed a more complete demo. How about a complete e-commerce administration? Introducing Posters Galore, your new favorite poster shop.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How-to dump your Docker-ized database on Amazon S3?]]></title>
        <id>https://marmelab.com/blog/2015/10/23/dump-docker-ized-database-to-amazon-s3.html</id>
        <link href="https://marmelab.com/blog/2015/10/23/dump-docker-ized-database-to-amazon-s3.html"/>
        <updated>2015-10-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Using Docker in staging or production environment is great. But what about your data backups? Here is a how-to tutorial to dump your dockerized databases on Amazon S3.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ng-admin 0.9: embedded lists, templates everywhere, new documentation]]></title>
        <id>https://marmelab.com/blog/2015/10/30/ng-admin-0-9.html</id>
        <link href="https://marmelab.com/blog/2015/10/30/ng-admin-0-9.html"/>
        <updated>2015-10-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Each new ng-admin release brings a lot of features and help developers build more sophisticated admin interfaces, faster. Version 0.9 is no exception - it's probably the most ambitious release ever. Read on to see what's new.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/angular-js" term="angular-js"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[De Python à PHP 7 : L'algorithme du jeu Dobble]]></title>
        <id>https://marmelab.com/blog/2015/11/05/de-python-a-php-7-l-algorithme-de-dobble.html</id>
        <link href="https://marmelab.com/blog/2015/11/05/de-python-a-php-7-l-algorithme-de-dobble.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/illustration-dobble-mini.wRWGvOPj.png"/>
        <updated>2015-11-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pour ma première semaine chez marmelab, j'ai dû reproduire le jeu Dobble en PHP, non sans mal !]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Kanban France 2015]]></title>
        <id>https://marmelab.com/blog/2015/11/09/lean-kanban-france-2015-report.html</id>
        <link href="https://marmelab.com/blog/2015/11/09/lean-kanban-france-2015-report.html"/>
        <updated>2015-11-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Here is my report of Lean Kanban France 2015, the 4th parisian edition of this great 2-days conference, which I attended a few days ago.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Meteor with Webpack, React and Redux in Practice]]></title>
        <id>https://marmelab.com/blog/2015/11/27/meteor-webpack-react-redux.html</id>
        <link href="https://marmelab.com/blog/2015/11/27/meteor-webpack-react-redux.html"/>
        <updated>2015-11-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Making Meteor works with Webpack, React and Redux: Reactivity everywhere !]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ma session découverte de l’agilité par le jeu au ForumPHP comme si vous y étiez (ou presque)]]></title>
        <id>https://marmelab.com/blog/2015/12/09/decouverte-agilite-forum-php.html</id>
        <link href="https://marmelab.com/blog/2015/12/09/decouverte-agilite-forum-php.html"/>
        <updated>2015-12-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Session de découverte de l'agilité, au travers des Serious games, dans le cadre des 10 ans du ForumPHP.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Better File Structure For React/Redux Applications]]></title>
        <id>https://marmelab.com/blog/2015/12/17/react-directory-structure.html</id>
        <link href="https://marmelab.com/blog/2015/12/17/react-directory-structure.html"/>
        <updated>2015-12-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Most Redux tutorials encourage a directory structure which I find hard to cope with in large projects. I suggest an alternative directory structure, grouping files by domain]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Lean Startup Adventure]]></title>
        <id>https://marmelab.com/blog/2016/01/13/our-lean-startup-experiment.html</id>
        <link href="https://marmelab.com/blog/2016/01/13/our-lean-startup-experiment.html"/>
        <updated>2016-01-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've run a Lean Startup experiment in 2015. We learned a lot. This is the first post of a series to share these learnings.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 2: The Idea]]></title>
        <id>https://marmelab.com/blog/2016/01/15/lean-startup-the-idea.html</id>
        <link href="https://marmelab.com/blog/2016/01/15/lean-startup-the-idea.html"/>
        <updated>2016-01-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How does a product idea come up? How can you say if it's an idea worth following?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 3: The Business Model]]></title>
        <id>https://marmelab.com/blog/2016/01/20/lean-startup-lean-canvas.html</id>
        <link href="https://marmelab.com/blog/2016/01/20/lean-startup-lean-canvas.html"/>
        <updated>2016-01-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Are you familiar with the Business Model Canvas and the Lean Canvas? We used one of them to describe our business idea.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 4: Risky Business]]></title>
        <id>https://marmelab.com/blog/2016/01/22/lean-startup-risky-business.html</id>
        <link href="https://marmelab.com/blog/2016/01/22/lean-startup-risky-business.html"/>
        <updated>2016-01-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Not all business assumptions are equal. In a Lean Startup process, we must identify the most risky assumptions to test them first.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Webpack HTML plug-in in a nutshell]]></title>
        <id>https://marmelab.com/blog/2016/01/26/webpack-html-plugin-in-a-nutshell.html</id>
        <link href="https://marmelab.com/blog/2016/01/26/webpack-html-plugin-in-a-nutshell.html"/>
        <updated>2016-01-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to use Webpack HTML plug-in to leverage your template usage? And an extra bonus: how to generate a whole static website using only Webpack.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 5: Designing a Problem Interview]]></title>
        <id>https://marmelab.com/blog/2016/01/27/lean-startup-designing-a-problem-interview.html</id>
        <link href="https://marmelab.com/blog/2016/01/27/lean-startup-designing-a-problem-interview.html"/>
        <updated>2016-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to test assumptions as early as possible with zero investment? Let's ask customers directly!]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Kevin]]></title>
        <id>https://marmelab.com/blog/2016/01/28/welcome-kevin.html</id>
        <link href="https://marmelab.com/blog/2016/01/28/welcome-kevin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/kevin_small.BD_Wnx9f.jpg"/>
        <updated>2016-01-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Vous pensiez qu'un pythoniste n'a pas sa place chez marmelab? La preuve du contraire avec Kevin!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 6: Problem interview with CloudScreener]]></title>
        <id>https://marmelab.com/blog/2016/01/29/lean-startup-first-problem-interview-with-cloudscreener.html</id>
        <link href="https://marmelab.com/blog/2016/01/29/lean-startup-first-problem-interview-with-cloudscreener.html"/>
        <updated>2016-01-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[For our first run into the Problem Interview, we chose to speak with Anthony Sollinger and Nicolas Drouet from CloudScreener]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab aide Canal+ à fluidifier sa relation client grâce à une application mobile]]></title>
        <id>https://marmelab.com/blog/2016/02/02/canal-plus-application-mobile-service-clients.html</id>
        <link href="https://marmelab.com/blog/2016/02/02/canal-plus-application-mobile-service-clients.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/canal-plus-small.BdVa60Ip.png"/>
        <updated>2016-02-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retour sur le développement d'une application mobile iOS et Android pour le compte de la Direction des Services Client de Canal+.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 7: Second Problem interview with Adista]]></title>
        <id>https://marmelab.com/blog/2016/02/03/lean-startup-second-problem-interview-with-adista.html</id>
        <link href="https://marmelab.com/blog/2016/02/03/lean-startup-second-problem-interview-with-adista.html"/>
        <updated>2016-02-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[For the second Problem interview, we chose to meet Gilles Caumont, the President of Adista.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 8: designing Personas]]></title>
        <id>https://marmelab.com/blog/2016/02/05/lean-startup-designing-personas.html</id>
        <link href="https://marmelab.com/blog/2016/02/05/lean-startup-designing-personas.html"/>
        <updated>2016-02-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How we designed our Persona from the problem interviews results.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup, day 9: Benchmarking Existing Solutions]]></title>
        <id>https://marmelab.com/blog/2016/02/10/lean-startup-benchmarking.html</id>
        <link href="https://marmelab.com/blog/2016/02/10/lean-startup-benchmarking.html"/>
        <updated>2016-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A great way to learn where to go is to look at what the competitors do. This exercise is called competitive benchmark. Let's see this in practice with Admin-as-a-service.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup, day 10: Build-Measure-Learn explained]]></title>
        <id>https://marmelab.com/blog/2016/02/12/build-measure-learn.html</id>
        <link href="https://marmelab.com/blog/2016/02/12/build-measure-learn.html"/>
        <updated>2016-02-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To continue learning we now have to build things. Enter Experiments, the Build-Measure-Learn loop.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup, day 11: The Demo]]></title>
        <id>https://marmelab.com/blog/2016/02/16/lean-startup-building-a-demo.html</id>
        <link href="https://marmelab.com/blog/2016/02/16/lean-startup-building-a-demo.html"/>
        <updated>2016-02-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Building an MVP is expensive. To maximize learning, you can take a smaller step, and build a demo first. Our demo is going to be a landing page.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Is it snobbery to want a real console on Windows?]]></title>
        <id>https://marmelab.com/blog/2016/02/22/a-usefull-windows-console.html</id>
        <link href="https://marmelab.com/blog/2016/02/22/a-usefull-windows-console.html"/>
        <updated>2016-02-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Sometimes you have to code on Windows: this can be because of a personal challenge, or because you lost a bet, or because you don't have a choice. And it can be a bit painful when you are used to a powerful terminal. But some good solutions exist, as we'll see.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/shell" term="shell"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup, day 12: How to Find a Product Name]]></title>
        <id>https://marmelab.com/blog/2016/02/24/lean-startup-product-name.html</id>
        <link href="https://marmelab.com/blog/2016/02/24/lean-startup-product-name.html"/>
        <updated>2016-02-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To publish a demo, a product needs a name. The final name will probably change, so you shouldn't invest more than 1 hour to find a name at that point.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup, day 13: The Teaser Video]]></title>
        <id>https://marmelab.com/blog/2016/02/26/lean-startup-teaser-video.html</id>
        <link href="https://marmelab.com/blog/2016/02/26/lean-startup-teaser-video.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/013_small_video_demo.DU2efNbg.jpg"/>
        <updated>2016-02-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Screencasts make great demos. But how can you film a product that doesn't exist yet?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Self-Documented Makefile]]></title>
        <id>https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html</id>
        <link href="https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/make_auto_documentation_small.BIpbM3nC.png"/>
        <updated>2016-02-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Good projects are automated projects. But documenting all those Make targets in a README file doesn't make much sense, when you can make the Makefile auto-documented.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/shell" term="shell"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup, day 14: Customer Acquisition]]></title>
        <id>https://marmelab.com/blog/2016/03/02/lean-startup-customer-acquisition.html</id>
        <link href="https://marmelab.com/blog/2016/03/02/lean-startup-customer-acquisition.html"/>
        <updated>2016-03-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[All we did from now did not result to clear desire from customers.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab Javascript Boilerplate: deux jours de gagnés à chaque démarrage projet]]></title>
        <id>https://marmelab.com/blog/2016/03/08/marmelab-boilerplate-starter-kit-javascript.html</id>
        <link href="https://marmelab.com/blog/2016/03/08/marmelab-boilerplate-starter-kit-javascript.html"/>
        <updated>2016-03-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Voici le modèle de nos projets JavaScript full-stack. Le meilleur des technologies actuelles (React, Redux, Koa.js, ng-admin) mêlé aux bonnes pratiques dictées par l'expérience. Et c'est open-source !]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[EventDrops 0.2 is out!]]></title>
        <id>https://marmelab.com/blog/2016/03/09/eventdrops-02-is-out.html</id>
        <link href="https://marmelab.com/blog/2016/03/09/eventdrops-02-is-out.html"/>
        <updated>2016-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After a long delay, EventDrops 0.2 has finally been released. It includes a full code reworking, metaballs and an interactive demo. Check it out!]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/dataviz" term="dataviz"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 15: Learn]]></title>
        <id>https://marmelab.com/blog/2016/03/15/lean-startup-learn.html</id>
        <link href="https://marmelab.com/blog/2016/03/15/lean-startup-learn.html"/>
        <updated>2016-03-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After experimenting through a demo, and gathering data on our most risky assumption, it's time to draw conclusions.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 16: Pivot]]></title>
        <id>https://marmelab.com/blog/2016/03/23/lean-startup-pivot-explained.html</id>
        <link href="https://marmelab.com/blog/2016/03/23/lean-startup-pivot-explained.html"/>
        <updated>2016-03-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Time for a pivot! Let's write a new Business Model based on what we've learned with the demo and the customer interviews.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup Adventure, day 17: Understanding The Minimum Viable Product]]></title>
        <id>https://marmelab.com/blog/2016/04/12/lean-startup-mvp.html</id>
        <link href="https://marmelab.com/blog/2016/04/12/lean-startup-mvp.html"/>
        <updated>2016-04-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When it's time to go public, design the first version of your product as an experimentation to make sure you reached a product-market fit.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[End to End (e2e) Testing React Apps With Selenium WebDriver And Node.js is Easier Than You Think]]></title>
        <id>https://marmelab.com/blog/2016/04/19/e2e-testing-with-node-and-es6.html</id>
        <link href="https://marmelab.com/blog/2016/04/19/e2e-testing-with-node-and-es6.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/munchausen-small.B4uNEinm.jpg"/>
        <updated>2016-04-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Testing single-page-apps using a browser is a must. Selenium can look intimidating, but it's really easy to use - once you handle asynchronous commands the right way.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean Startup, day 18: Determining The Break-Even Point]]></title>
        <id>https://marmelab.com/blog/2016/04/22/lean-startup-the-end.html</id>
        <link href="https://marmelab.com/blog/2016/04/22/lean-startup-the-end.html"/>
        <updated>2016-04-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How do you write a financial business plan and determine the moment where your startup will make money? How much can an average SaaS business make? Here is a step-by-step introduction to the simple math involved early financial forecasts for startups.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Blockchain Explained to Web Developers, Part 1: The Theory]]></title>
        <id>https://marmelab.com/blog/2016/04/28/blockchain-for-web-developers-the-theory.html</id>
        <link href="https://marmelab.com/blog/2016/04/28/blockchain-for-web-developers-the-theory.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blockchain_illustration_small.DoacwiWa.jpg"/>
        <updated>2016-04-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[It sounds exciting but it's complicated. Read on to understand the what, the how and the why of blockchains.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/blockchain" term="blockchain"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[#play14 Luxembourg Third Edition: A Network Is Born]]></title>
        <id>https://marmelab.com/blog/2016/05/04/play14.html</id>
        <link href="https://marmelab.com/blog/2016/05/04/play14.html"/>
        <updated>2016-05-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[March 2016. Third edition of #play14, unconference about facilitation, innovation, change management and happiness through games. Here is what happened.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[La blockchain expliquée aux développeurs web, partie 1: la théorie]]></title>
        <id>https://marmelab.com/blog/2016/05/12/blockchain-expliquee-aux-developpeurs-web-la-theorie.html</id>
        <link href="https://marmelab.com/blog/2016/05/12/blockchain-expliquee-aux-developpeurs-web-la-theorie.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blockchain_illustration_small.DoacwiWa.jpg"/>
        <updated>2016-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Tout le monde en parle mais personne n'y comprend vraiment grand chose. Allez, on essaie de vous expliquer ce que c'est, comment ça marche, et à quoi ça sert.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/blockchain" term="blockchain"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Blockchain Explained to Web Developers, Part 2: In Practice]]></title>
        <id>https://marmelab.com/blog/2016/05/20/blockchain-for-web-developers-in-practice.html</id>
        <link href="https://marmelab.com/blog/2016/05/20/blockchain-for-web-developers-in-practice.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/billboard_small.BWBEZKmE.jpg"/>
        <updated>2016-05-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How hard is it to build a decentralized ad server on top of the Ethereum blockhain? How does it look like? Get practical advice based on our experience building a real life project with the blockchain.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/blockchain" term="blockchain"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Résoudre le jeu snake, premier essai: Pathfinding et Python]]></title>
        <id>https://marmelab.com/blog/2016/06/08/snake.html</id>
        <link href="https://marmelab.com/blog/2016/06/08/snake.html"/>
        <updated>2016-06-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Mon premier défi : 5 jours pour dompter un serpent avec un autre. Est-il possible de résoudre le jeu Snake en python avec un algorithme simple de recherche de chemin?]]></summary>
        <author>
            <name>Joachim Cherqui</name>
            <uri>https://github.com/jcherqui</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Blockchain Explained to Web Developers, Part 3: The Truth]]></title>
        <id>https://marmelab.com/blog/2016/06/14/blockchain-for-web-developers-the-truth.html</id>
        <link href="https://marmelab.com/blog/2016/06/14/blockchain-for-web-developers-the-truth.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/chainwall_small.BQchaAAV.jpg"/>
        <updated>2016-06-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Beyond the buzz around the blockchain, there are many things that you only discover after trying to use it, and that make the blockchain a very impractical solution to a very rare problem. Are you sure you need a blockchain?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/blockchain" term="blockchain"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Minutes of AWS Summit Paris 2016]]></title>
        <id>https://marmelab.com/blog/2016/06/15/minutes-of-aws-summit-paris-2016.html</id>
        <link href="https://marmelab.com/blog/2016/06/15/minutes-of-aws-summit-paris-2016.html"/>
        <updated>2016-06-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We attended to the AWS Summit 2016 at Paris two weeks ago. Here is our feedback about this cloud-focused event.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[La blockchain expliquée aux développeurs web, 3ème partie : la vérité sur la blockchain]]></title>
        <id>https://marmelab.com/blog/2016/06/24/blockchain-expliquee-aux-developers-web-la-verite.html</id>
        <link href="https://marmelab.com/blog/2016/06/24/blockchain-expliquee-aux-developers-web-la-verite.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/chainwall_small_mirror.BHjxp168.jpg"/>
        <updated>2016-06-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Au-delà des fantasmes sur la blockchain, on ne la comprend vraiment qu'après l'avoir essayée. Notre vision est qu'il s'agit d'une solution très bancale à un problème très rare. Etes-vous sûr(e) d'avoir vraiment besoin d'une blockchain ?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/blockchain" term="blockchain"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Restful.js: Review of an open-source project]]></title>
        <id>https://marmelab.com/blog/2016/06/29/restful-js-review-of-an-open-source-project.html</id>
        <link href="https://marmelab.com/blog/2016/06/29/restful-js-review-of-an-open-source-project.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/restful-review-small.DEv4OVGq.jpg"/>
        <updated>2016-06-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The truth about the lifecycle of the not well maintained restful.js]]></summary>
        <author>
            <name>Robin Bressan</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Résoudre le jeu snake, deuxième essai: ES6 et ReactJS]]></title>
        <id>https://marmelab.com/blog/2016/08/18/snake-2.html</id>
        <link href="https://marmelab.com/blog/2016/08/18/snake-2.html"/>
        <updated>2016-08-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Après un premier essai de résolution du jeu snake en Python, marmelab me lance sur une version JavaScript, avec un nouvel algorithme. Bilan de mes découvertes.]]></summary>
        <author>
            <name>Joachim Cherqui</name>
            <uri>https://github.com/jcherqui</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Update a Single Page App on Code Change Without Draining The Battery]]></title>
        <id>https://marmelab.com/blog/2016/08/29/auto-reload-spa-on-mobile-setinterval.html</id>
        <link href="https://marmelab.com/blog/2016/08/29/auto-reload-spa-on-mobile-setinterval.html"/>
        <updated>2016-08-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Each time you change the code of a SPA in production, connected users should be invited to refresh. If that seems easy to achieve, the simplest solution (AJAX polling) is also the worst, at least on mobile.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing admin-on-rest, the React Admin GUI for REST APIs]]></title>
        <id>https://marmelab.com/blog/2016/09/02/admin-on-rest-react-admin-framework.html</id>
        <link href="https://marmelab.com/blog/2016/09/02/admin-on-rest-react-admin-framework.html"/>
        <updated>2016-09-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you like ng-admin, you will love admin-on-rest. We've built up on two years of experience with frontend admin frameworks to design and develop a powerful React app.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Florian]]></title>
        <id>https://marmelab.com/blog/2016/09/07/marmelab-souhaite-la-bienvenue-a-florian.html</id>
        <link href="https://marmelab.com/blog/2016/09/07/marmelab-souhaite-la-bienvenue-a-florian.html"/>
        <updated>2016-09-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un nouveau développeur rejoint notre bureau de Nancy. Mieux qu'un développeur, un Software Craftsman ! Découvrez le parcours de notre nouvelle recrue.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Puissance 4 multi-joueur : retour d'expérience]]></title>
        <id>https://marmelab.com/blog/2016/09/19/puissance-4-retour-experience.html</id>
        <link href="https://marmelab.com/blog/2016/09/19/puissance-4-retour-experience.html"/>
        <updated>2016-09-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Première semaine parmi les équipes marmelab, premier challenge de la période d'intégration, 4 jours pour mettre au point un serveur de jeu puissance 4.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Custom Route Component For React Router]]></title>
        <id>https://marmelab.com/blog/2016/09/20/custom-react-router-component.html</id>
        <link href="https://marmelab.com/blog/2016/09/20/custom-react-router-component.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/interchange_small.CAe0cokO.jpg"/>
        <updated>2016-09-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Sometimes in complex React applications, groups of pages follow the same pattern. React router can be tweaked to offer a custom Route component, and avoid repetition.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Jeu mobile en React Native : retour d'expérience]]></title>
        <id>https://marmelab.com/blog/2016/09/26/react-native-retour-experience.html</id>
        <link href="https://marmelab.com/blog/2016/09/26/react-native-retour-experience.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-native-photo.DkeeKRJR.png"/>
        <updated>2016-09-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Episode 2 ! Reprendre les concepts de développement du web pour faire du natif avec une codebase presque partagée... React native réinvente la façon de faire du cross-plateforme, ou presque !]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab joins the Hacktober Fest 2016!]]></title>
        <id>https://marmelab.com/blog/2016/10/10/marmelab-joins-hacktober-fest-2016.html</id>
        <link href="https://marmelab.com/blog/2016/10/10/marmelab-joins-hacktober-fest-2016.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/hacktober-fest-logo.D7vH9ypT.png"/>
        <updated>2016-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab has always been keen on open-source. Sharing knowledge and tools is one of our main mottos. That's why we decided to take part in the Hacktober Fest 2016!]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Moments d'invention : Retour sur une rencontre]]></title>
        <id>https://marmelab.com/blog/2016/10/13/moments-d-invention.html</id>
        <link href="https://marmelab.com/blog/2016/10/13/moments-d-invention.html"/>
        <updated>2016-10-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[L'intelligence collective au service de la cité : et le numérique dans tout ça ? Deux jours à Nancy pour inventer ensemble.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Saga To Accumulate And Deduplicate Redux Actions]]></title>
        <id>https://marmelab.com/blog/2016/10/18/using-redux-saga-to-deduplicate-and-group-actions.html</id>
        <link href="https://marmelab.com/blog/2016/10/18/using-redux-saga-to-deduplicate-and-group-actions.html"/>
        <updated>2016-10-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[While developing a React component for admin-on-rest, I stumbled upon a fun use case that demonstrates the power of redux-saga. Read on to see if Saga can help you, too.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[WebSocket-based app with Django Channels and React]]></title>
        <id>https://marmelab.com/blog/2016/10/19/websocket-based-app-with-django-channels-and-react.html</id>
        <link href="https://marmelab.com/blog/2016/10/19/websocket-based-app-with-django-channels-and-react.html"/>
        <updated>2016-10-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Let's explore how to manage WebSocket with Django Channels and React with a concrete project!]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab s'amuse : the Team Responsibility Game]]></title>
        <id>https://marmelab.com/blog/2016/11/01/team-resp-game.html</id>
        <link href="https://marmelab.com/blog/2016/11/01/team-resp-game.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/001-children-at-play.DN5B_Vpw.jpg"/>
        <updated>2016-11-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Toute l'équipe a participé au Serious Game appelé Team Responsibility Game. Petite leçon de vivre ensemble.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Julien]]></title>
        <id>https://marmelab.com/blog/2016/11/04/marmelab-souhaite-la-bienvenue-a-julien.html</id>
        <link href="https://marmelab.com/blog/2016/11/04/marmelab-souhaite-la-bienvenue-a-julien.html"/>
        <updated>2016-11-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Julien est Lead Developer, et il vient renforcer l'équipe de développement de marmelab à Nancy. Gageons que son exigence de qualité collera avec les valeurs de marmelab !]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Un jeu d'Othello dans le terminal avec Python]]></title>
        <id>https://marmelab.com/blog/2016/11/07/othello-en-python.html</id>
        <link href="https://marmelab.com/blog/2016/11/07/othello-en-python.html"/>
        <updated>2016-11-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Première semaine d'intégration, premier challenge, un jeu d'Othello développé en Python entièrement jouable dans le terminal]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[admin-on-rest 0.5 is out]]></title>
        <id>https://marmelab.com/blog/2016/11/10/admin-on-rest-0-5.html</id>
        <link href="https://marmelab.com/blog/2016/11/10/admin-on-rest-0-5.html"/>
        <updated>2016-11-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The development of admin-on-rest, the React admin GUI for REST APIs, continues at a fast pace: we've shipped one release per month for the past two months. Read on to see what's new.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[La ferme des animaux agiles, une version française par Marmelab]]></title>
        <id>https://marmelab.com/blog/2016/11/17/animal-farm.html</id>
        <link href="https://marmelab.com/blog/2016/11/17/animal-farm.html"/>
        <updated>2016-11-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Le comic strip 'pigs & chicken', couramment utilisé dans les formations agiles pour décrire les rôles dans Scrum est devenu un jeu. Explication.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[For Charities, Web Development is Free at Marmelab]]></title>
        <id>https://marmelab.com/blog/2016/11/21/free-for-charity.html</id>
        <link href="https://marmelab.com/blog/2016/11/21/free-for-charity.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/marthas_table_small.m3Kh8Cm6.jpg"/>
        <updated>2016-11-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We all need a sense of purpose in do. We choose to give some of our time to charity. Read on to understand why, and how to apply.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reversi bot: Go et Symfony en action]]></title>
        <id>https://marmelab.com/blog/2016/11/24/reversi-bot-go-et-symfony-en-action.html</id>
        <link href="https://marmelab.com/blog/2016/11/24/reversi-bot-go-et-symfony-en-action.html"/>
        <updated>2016-11-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Après une première version jouable dans le terminal, voici la version Facebook messenger du célèbre jeu d'Othello. Au programme, un serveur de bot sous Symfony 3 et une intelligence artificielle en GO !]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/bot" term="bot"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Othello mobile en React Native]]></title>
        <id>https://marmelab.com/blog/2016/11/30/othello-mobile-en-react-native.html</id>
        <link href="https://marmelab.com/blog/2016/11/30/othello-mobile-en-react-native.html"/>
        <updated>2016-11-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Après Othello dans le terminal et Othello sur Facebook, c'est au tour d'Othello mobile (android) de passer sur le devant de la scène grâce à React Native et Redux.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Npm Tips and Tricks]]></title>
        <id>https://marmelab.com/blog/2016/12/07/npm-tips-and-tricks.html</id>
        <link href="https://marmelab.com/blog/2016/12/07/npm-tips-and-tricks.html"/>
        <updated>2016-12-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[All Node.js developers know the npm install command to grab their favorite dependencies. What about the lesser known npm commands?]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Chez Marmelab, le développement web est gratuit pour les associations !]]></title>
        <id>https://marmelab.com/blog/2016/12/08/gratuit-pour-les-associations.html</id>
        <link href="https://marmelab.com/blog/2016/12/08/gratuit-pour-les-associations.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/marthas_table_small.m3Kh8Cm6.jpg"/>
        <updated>2016-12-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous avons tous besoin de trouver du sens dans ce que nous faisons. Nous choisissons de donner de notre temps pour les associations. Découvrez pourquoi nous le faisons, et comment postuler, dans cet article.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Retour d'expérience sur le développement d'un chatbot en Node.js avec serverless]]></title>
        <id>https://marmelab.com/blog/2016/12/16/tobaccobot.html</id>
        <link href="https://marmelab.com/blog/2016/12/16/tobaccobot.html"/>
        <updated>2016-12-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous avons développé un coach virtuel pour arrêter de fumer par SMS. En fait, un chatbot utilisant Node.js et serverless. Nous avons beaucoup appris au passage. Ce post est le condensé de nos apprentissages.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/bot" term="bot"/>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Isomorphique en pratique]]></title>
        <id>https://marmelab.com/blog/2016/12/21/react-isomorphique-en-pratique.html</id>
        <link href="https://marmelab.com/blog/2016/12/21/react-isomorphique-en-pratique.html"/>
        <updated>2016-12-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Cette semaine, c'est un projet plutôt atypique qui m'attend. Le développement d'un jeu d'Othello dans le navigateur et tout cela en Isomorphique et avec React. L'occasion de découvrir un principe encore assez peu répandu.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Minutes of DotJS 2016]]></title>
        <id>https://marmelab.com/blog/2016/12/22/minutes-of-dotjs-2016.html</id>
        <link href="https://marmelab.com/blog/2016/12/22/minutes-of-dotjs-2016.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/logo-dotjs.Dy701xk5.png"/>
        <updated>2016-12-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We attended to the DotJS 2016 at Paris two weeks ago. Here is our feedback about this event.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[End-to-end Testing For Single-Page Apps With No Server]]></title>
        <id>https://marmelab.com/blog/2017/01/04/e2e-selenium-no-server.html</id>
        <link href="https://marmelab.com/blog/2017/01/04/e2e-selenium-no-server.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/self-service-small.vdGoWpLQ.jpg"/>
        <updated>2017-01-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Setting up Selenium for e2e tests isn't hard, but requires an HTTP server to serve the HTML and JS files that you want to test. What if you could avoid this complexity?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment exploiter la base SIRENE des entreprises de France en SQL]]></title>
        <id>https://marmelab.com/blog/2017/01/09/sirene-import-sql.html</id>
        <link href="https://marmelab.com/blog/2017/01/09/sirene-import-sql.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/data.gouv.fr_small.CRCn2ZIE.png"/>
        <updated>2017-01-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Depuis le 1er janvier 2017, la base SIRENE des entreprises de France est en Open Data. Mais comme Excel ne sait pas charger un CSV de 8 Go, il va falloir faire appel à SQL. Voici la recette.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[admin-on-rest 0.7 is out]]></title>
        <id>https://marmelab.com/blog/2017/01/13/admin-on-rest-0-7.html</id>
        <link href="https://marmelab.com/blog/2017/01/13/admin-on-rest-0-7.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/admin-on-rest-07.BJ0P6Z1q.png"/>
        <updated>2017-01-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Admin-on-rest, the React admin GUI for REST APIs, gets about one new major release per month. Here are the highlights of versions 0.6 and 0.7, the last of which was just released.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le processus d'initialisation des projets chez Marmelab]]></title>
        <id>https://marmelab.com/blog/2017/01/17/initialisation-des-projets.html</id>
        <link href="https://marmelab.com/blog/2017/01/17/initialisation-des-projets.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/Hello_world_small.C2vBTjVs.jpg"/>
        <updated>2017-01-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Chez Marmelab, chaque démarrage projet est précédé d'une phase d'initialisation. Voici la recette.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ng-admin 1.0 is out!]]></title>
        <id>https://marmelab.com/blog/2017/01/27/ngadmin-10-is-out.html</id>
        <link href="https://marmelab.com/blog/2017/01/27/ngadmin-10-is-out.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/ng-admin-10-small.Owy7qdXf.png"/>
        <updated>2017-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The first stable version of ng-admin, the AngularJS-powered admin GUI for RESTful APIs, is finally out. After almost three years of development, we are proud to release the 1.0 version, ready for production.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ng-admin" term="ng-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment l'Etat se modernise grâce au Lean Startup]]></title>
        <id>https://marmelab.com/blog/2017/02/03/des-startups-dans-l-etat.html</id>
        <link href="https://marmelab.com/blog/2017/02/03/des-startups-dans-l-etat.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/leankanban.BShzWbrt.jpg"/>
        <updated>2017-02-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab était présent à la conférence Lean Kanban France édition 2016. Une session nous a particulièrement marqué : Des startups dans l'Etat.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React is Slow, React is Fast: Optimizing React Apps in Practice]]></title>
        <id>https://marmelab.com/blog/2017/02/06/react-is-slow-react-is-fast.html</id>
        <link href="https://marmelab.com/blog/2017/02/06/react-is-slow-react-is-fast.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/flamegraph_small.CpuijF9u.png"/>
        <updated>2017-02-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React is slow - just like other frontend frameworks. But if you care about performance, it's fairly easy to make any React application super fast. Here is how.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Npm (or Yarn) Install within a Docker Container, the Right Way]]></title>
        <id>https://marmelab.com/blog/2017/02/08/yarn-npm-install-within-docker-container.html</id>
        <link href="https://marmelab.com/blog/2017/02/08/yarn-npm-install-within-docker-container.html"/>
        <updated>2017-02-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Docker is awesome. Yet, it brings some common pitfalls, especially when you need to handle file permissions correctly, or need to use SSH. Here are some solutions to counter these issues.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Maxime]]></title>
        <id>https://marmelab.com/blog/2017/02/09/bienvenue-a-maxime.html</id>
        <link href="https://marmelab.com/blog/2017/02/09/bienvenue-a-maxime.html"/>
        <updated>2017-02-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Maxime a cinq ans d'expérience en .Net et nous rejoint dans le bureau de Nancy. Découvrez le visage du nouveau développeur marmelab.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vous avez dit Awalé ?]]></title>
        <id>https://marmelab.com/blog/2017/02/10/awale-en-python.html</id>
        <link href="https://marmelab.com/blog/2017/02/10/awale-en-python.html"/>
        <updated>2017-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Le jeu Awalé en python, première semaine d'intégration.]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[admin-on-rest 0.8 is out]]></title>
        <id>https://marmelab.com/blog/2017/02/14/admin-on-rest-0-8.html</id>
        <link href="https://marmelab.com/blog/2017/02/14/admin-on-rest-0-8.html"/>
        <updated>2017-02-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Admin-on-rest, the React admin GUI for REST APIs, hits its last 0.X version before the stable release. With translations, image input, authentication, and easier customization, admin-on-rest is getting very close to the 1.0 milestone.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Taking Picture From Webcam Using Canvas]]></title>
        <id>https://marmelab.com/blog/2017/02/15/taking-picture-from-webcam-using-canvas.html</id>
        <link href="https://marmelab.com/blog/2017/02/15/taking-picture-from-webcam-using-canvas.html"/>
        <updated>2017-02-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Taking a picture from a browser using the webcam is not trivial as it may seem. It requires a low supported API and some canvas manipulation. Here is the missing how-to.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Maze, jeu collaboratif hautement immersif]]></title>
        <id>https://marmelab.com/blog/2017/02/17/the-maze-the-game.html</id>
        <link href="https://marmelab.com/blog/2017/02/17/the-maze-the-game.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/the_maze_150x150.DCBZiyHp.jpg"/>
        <updated>2017-02-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The Maze est un des meilleurs jeux de mise en situation "grandeur nature", où les équipes doivent traverser un labyrinthe matérialisé par un quadrillage au sol.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agility to the rescue of slipping tasks!]]></title>
        <id>https://marmelab.com/blog/2017/02/21/agility-to-the-rescue.html</id>
        <link href="https://marmelab.com/blog/2017/02/21/agility-to-the-rescue.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/agility-slipping-tasks-small.rqDMYJuG.png"/>
        <updated>2017-02-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When we develop web or mobile apps, sometimes a User Story takes much more than estimated. What can we learn from that?]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[admin-on-rest: Meet the demo]]></title>
        <id>https://marmelab.com/blog/2017/02/22/admin-on-rest-demo.html</id>
        <link href="https://marmelab.com/blog/2017/02/22/admin-on-rest-demo.html"/>
        <updated>2017-02-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Admin-on-rest, the React admin GUI for REST APIs, is approaching 1.0. But what can it do for you? A video and a live demo will give you a taste of its delightful features.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Sedy, the Serverless GitHub Bot That Fixes Typos for you]]></title>
        <id>https://marmelab.com/blog/2017/02/28/sedy-the-serverless-github-bot-which-fix-typos-for-you.html</id>
        <link href="https://marmelab.com/blog/2017/02/28/sedy-the-serverless-github-bot-which-fix-typos-for-you.html"/>
        <updated>2017-02-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To facilitate typo fixes and simple code reviews, Sedy brings the power of the sed Linux command to Github comments.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[admin-on-rest 0.9 is out]]></title>
        <id>https://marmelab.com/blog/2017/03/10/admin-on-rest-0-9.html</id>
        <link href="https://marmelab.com/blog/2017/03/10/admin-on-rest-0-9.html"/>
        <updated>2017-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Time for our monthly release: admin-on-rest, the React admin GUI for REST APIs, becomes responsive, and gets a handful of new features. Read on to see them in detail.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Développement d'un bot Awale pour Slack]]></title>
        <id>https://marmelab.com/blog/2017/03/15/awale-slack.html</id>
        <link href="https://marmelab.com/blog/2017/03/15/awale-slack.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/awale-slack-logo.C99BcAD4.png"/>
        <updated>2017-03-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nouveau challenge pour Maxime: développer un bot awale avec Go et Symfony.]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/bot" term="bot"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Découvrir les service workers]]></title>
        <id>https://marmelab.com/blog/2017/03/21/decouvrir-les-service-workers.html</id>
        <link href="https://marmelab.com/blog/2017/03/21/decouvrir-les-service-workers.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/catWorker.BMxXvard.jpg"/>
        <updated>2017-03-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un outil de plus dans la panoplie des développeurs web ? Les services workers offrent bien plus que la simple possibilité de rendre une application disponible hors-ligne. Voyons ça en pratique.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Play14: Practicing Serious Games with Talented People Is a Great Way to Learn]]></title>
        <id>https://marmelab.com/blog/2017/03/27/play-14.html</id>
        <link href="https://marmelab.com/blog/2017/03/27/play-14.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/play14_legos.C9UEHUUn.jpg"/>
        <updated>2017-03-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I've only spent a day at #play14 Luxembourg 2017, but I've learned so much that I recommend it warmly. If you're looking at a way to improve your soft skills through games, this unconference is a must.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comprendre les générateurs en JavaScript]]></title>
        <id>https://marmelab.com/blog/2017/03/28/generator-in-depth.html</id>
        <link href="https://marmelab.com/blog/2017/03/28/generator-in-depth.html"/>
        <updated>2017-03-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les générateurs sont une fonctionnalité introduite dans ES6 qui permet de créer des fonctions spéciales avec la capacité de mettre en pause leur exécution en retournant un résultat intermédiaire.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How I Found a Vulnerability Leaking User Credentials in Red Hat's Ravello Systems]]></title>
        <id>https://marmelab.com/blog/2017/03/29/redhat-ravello-systems-user-credentials-leak.html</id>
        <link href="https://marmelab.com/blog/2017/03/29/redhat-ravello-systems-user-credentials-leak.html"/>
        <updated>2017-03-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I found the credentials of a Red Hat solution architect and was able to log into their Ravello Systems account. Can this teach us something about security?.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le jeu Awalé en React Native]]></title>
        <id>https://marmelab.com/blog/2017/04/03/awale-en-react-native.html</id>
        <link href="https://marmelab.com/blog/2017/04/03/awale-en-react-native.html"/>
        <updated>2017-04-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retour d'expérience sur le développement d'une application mobile Android avec React Native]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Conditional Babel Configuration: Introducing Babel env]]></title>
        <id>https://marmelab.com/blog/2017/04/06/different-babel-configuration-with-single-babelrc-file-using-babelenv.html</id>
        <link href="https://marmelab.com/blog/2017/04/06/different-babel-configuration-with-single-babelrc-file-using-babelenv.html"/>
        <updated>2017-04-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After being stuck for a few hours because of some Babel configuration issues in an isomorphic app, we finally discovered the Babel `env` property. It allows to apply some sort of conditional configuration, depending on a given environment variable.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le jeu Awalé en isomorphique avec Next.js]]></title>
        <id>https://marmelab.com/blog/2017/04/07/awale-isomorphic.html</id>
        <link href="https://marmelab.com/blog/2017/04/07/awale-isomorphic.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/awale-next-js.BsrQOJHQ.png"/>
        <updated>2017-04-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retour d'expérience sur Next.js]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Troubleshooting Continuous Integration, or How to Debug Tests That Fail on CI, but Pass Locally]]></title>
        <id>https://marmelab.com/blog/2017/04/13/toubleshooting-ci-fails.html</id>
        <link href="https://marmelab.com/blog/2017/04/13/toubleshooting-ci-fails.html"/>
        <updated>2017-04-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you're using a Continuous Integration server, sooner or later a build will fail on the CI, but pass on your development machine. There are several ways to troubleshoot such failures - but relaunching the CI build isn't one of them.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitHub Oauth Authentication for SPA Without Server]]></title>
        <id>https://marmelab.com/blog/2017/04/24/github-oauth-authentication-without-server.html</id>
        <link href="https://marmelab.com/blog/2017/04/24/github-oauth-authentication-without-server.html"/>
        <updated>2017-04-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[You don't need a server with a 100% uptime just to use the GitHub authentication. Here is a cheap and easy solution using AWS Lambda.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Admin-on-rest 1.0 Stable is out]]></title>
        <id>https://marmelab.com/blog/2017/04/26/admin-on-rest-1-0.html</id>
        <link href="https://marmelab.com/blog/2017/04/26/admin-on-rest-1-0.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/admin-on-rest-demo-still.CIvWqGxD.png"/>
        <updated>2017-04-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Finally, admin-on-rest gets the stable grade! Read on to see what's new in this new release, the first major achievement of a project started eight months ago.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Specifiers and artists, ou l'importance de la communication verbale]]></title>
        <id>https://marmelab.com/blog/2017/05/04/specifiers-and-artists.html</id>
        <link href="https://marmelab.com/blog/2017/05/04/specifiers-and-artists.html"/>
        <updated>2017-05-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Et maintenant la Rolls Royce des serious games agiles, utilisée dans la plupart des formations et sessions de découverte de l'agilité.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[We attended the first dot AI conference.]]></title>
        <id>https://marmelab.com/blog/2017/05/05/dotai.html</id>
        <link href="https://marmelab.com/blog/2017/05/05/dotai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/dotai-logo.6OltFRCQ.png"/>
        <updated>2017-05-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[It's the first time there's a dot conference around AI theme. And since we always try to discover what’s behind new trends and technologies, we were there!]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SG: Un moteur à effet pour JavaScript]]></title>
        <id>https://marmelab.com/blog/2017/05/09/sg.html</id>
        <link href="https://marmelab.com/blog/2017/05/09/sg.html"/>
        <updated>2017-05-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Dans le post précédent, je vous ai parlé des générateurs et de leur fonctionnement. Aujourd'hui je vais vous parler de leur exécution et de ce qu'ils peuvent accomplir.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Internationalizing a React Application using Polyglot]]></title>
        <id>https://marmelab.com/blog/2017/05/16/internationalizing-react-application-using-polyglot.html</id>
        <link href="https://marmelab.com/blog/2017/05/16/internationalizing-react-application-using-polyglot.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/flags.DD3SP5za.jpg"/>
        <updated>2017-05-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Following an Internationalization tutorial is generally quite straightforward. But what about implementing it in a real-world application? Here is a tested solution using context and provider.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab développe un CMS Web Sémantique pour le CNRS]]></title>
        <id>https://marmelab.com/blog/2017/05/22/cnrs-cms-web-semantique.html</id>
        <link href="https://marmelab.com/blog/2017/05/22/cnrs-cms-web-semantique.html"/>
        <updated>2017-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Bilan d'un projet réussi pour le CNRS, mêlant Node.js, React.js, MongoDB, Docker, Material Design, et un processus de développement agile.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/cms" term="cms"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Minutes of React Europe 2017]]></title>
        <id>https://marmelab.com/blog/2017/05/24/minutes-of-react-europe-2017.html</id>
        <link href="https://marmelab.com/blog/2017/05/24/minutes-of-react-europe-2017.html"/>
        <updated>2017-05-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We just came back from the React Europe Paris conference, a huge event where we saw the React ecosystem shaping of future of web and mobile development. Read on to see what we learned, loved, and laughed at.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Admin-on-rest now supports GraphQL backends]]></title>
        <id>https://marmelab.com/blog/2017/06/01/aor-graphql.html</id>
        <link href="https://marmelab.com/blog/2017/06/01/aor-graphql.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/admin-on-rest-graphql.Cpp6kdd-.png"/>
        <updated>2017-06-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Admin-on-rest, the frontend framework for admin interfaces based on React.js and Material Design, isn't only about REST. Read on to see how to plug it to a GraphQL backend.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[5e édition du Printemps Agile de Caen]]></title>
        <id>https://marmelab.com/blog/2017/06/12/printemps-agile.html</id>
        <link href="https://marmelab.com/blog/2017/06/12/printemps-agile.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/printempsAgile1.DQvJTk8p.jpg"/>
        <updated>2017-06-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Jusqu'à présent, la ville de Caen était réputée pour sa scène rock (The Lanskies, Cannibale, Grand Parc) et electro (Baadman, Superpoze, Fakear). Mais elle risque également de le devenir pour son dynamisme autour de l'agilité.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Animate your world with ThreeJS and TweenJS]]></title>
        <id>https://marmelab.com/blog/2017/06/15/animate-you-world-with-threejs-and-tweenjs.html</id>
        <link href="https://marmelab.com/blog/2017/06/15/animate-you-world-with-threejs-and-tweenjs.html"/>
        <updated>2017-06-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When the time comes to animate a 3D scene in the browser with ThreeJS, do you prefer manual or declarative animation?]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/3d" term="3d"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Augmented Reality With HTML5: What Can Mobile Web Browsers Do?]]></title>
        <id>https://marmelab.com/blog/2017/06/19/augmented-reality-html5.html</id>
        <link href="https://marmelab.com/blog/2017/06/19/augmented-reality-html5.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/augmented_reality_small.BfgnH8bI.png"/>
        <updated>2017-06-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Augmented Reality seems to be cpu intensive, hard to develop, and reserved to native technologies. Yet HTML5 and JS can provide an equivalent user experience. Read on to see how we developed a mobile app to help you draw (or tattoo) whatever you want.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/3d" term="3d"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[USI 2017: The Talks You Should Watch]]></title>
        <id>https://marmelab.com/blog/2017/06/22/usi-2017.html</id>
        <link href="https://marmelab.com/blog/2017/06/22/usi-2017.html"/>
        <updated>2017-06-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I've been to the USI conference in Paris for the third time. As usual, talks  were inspirational and related to technology, leadership, and creativity. Read on to get my takeaways.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing aor-permissions: Customize Admin-on-rest based on user permissions]]></title>
        <id>https://marmelab.com/blog/2017/06/26/aor-permissions.html</id>
        <link href="https://marmelab.com/blog/2017/06/26/aor-permissions.html"/>
        <updated>2017-06-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Admin interfaces are often multi-user, with custom permissions or roles per user. As this is a fairly common usecase, we decided to offer a well integrated solution for it in admin-on-rest.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Admin-on-rest 1.1 and 1.2: Focus On The New Features]]></title>
        <id>https://marmelab.com/blog/2017/06/29/admin-on-rest-1-2.html</id>
        <link href="https://marmelab.com/blog/2017/06/29/admin-on-rest-1-2.html"/>
        <updated>2017-06-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We release a minor version of admin-on-rest, the React admin GUI for REST APIs, every month. Here is a summary of the new features introduced during the past 2 months.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Json GraphQL Server]]></title>
        <id>https://marmelab.com/blog/2017/07/12/json-graphql-server.html</id>
        <link href="https://marmelab.com/blog/2017/07/12/json-graphql-server.html"/>
        <updated>2017-07-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Start a GraphQL Server based on your data in 30 seconds. No need to learn about Schema syntax or npm modules.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dive Into GraphQL]]></title>
        <id>https://marmelab.com/blog/2017/09/03/dive-into-graphql.html</id>
        <link href="https://marmelab.com/blog/2017/09/03/dive-into-graphql.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/graphql-logo-small.CDHtKmEX.png"/>
        <updated>2017-09-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Beyond marketing, and because I believe that, in web development, there is no one-size fits all tool, I want to help developers answer this simple question: Is GraphQL a good fit for my next project?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dive Into GraphQL Part I: What's Wrong With REST?]]></title>
        <id>https://marmelab.com/blog/2017/09/04/dive-into-graphql-part-i-what-s-wrong-with-rest.html</id>
        <link href="https://marmelab.com/blog/2017/09/04/dive-into-graphql-part-i-what-s-wrong-with-rest.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/rest-in-peace-small.lRYLw5Wp.jpg"/>
        <updated>2017-09-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[REST was a great idea, but with modern usage scenarios, it's become slow, expensive, and cumbersome. Do we need to replace it?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dive Into GraphQL Part II: Anatomy of a GraphQL Query]]></title>
        <id>https://marmelab.com/blog/2017/09/05/dive-into-graphql-part-ii-anatomy-of-a-graphql-query.html</id>
        <link href="https://marmelab.com/blog/2017/09/05/dive-into-graphql-part-ii-anatomy-of-a-graphql-query.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/anatomy-small.ZNU4nnKw.jpg"/>
        <updated>2017-09-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A gentle introduction full of examples and tips for GraphQL, the new way to build web services for mobile.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dive Into GraphQL Part III: Building a GraphQL Server With Node.js]]></title>
        <id>https://marmelab.com/blog/2017/09/06/dive-into-graphql-part-iii-building-a-graphql-server-with-nodejs.html</id>
        <link href="https://marmelab.com/blog/2017/09/06/dive-into-graphql-part-iii-building-a-graphql-server-with-nodejs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/construction-small.B3U2ktKz.jpg"/>
        <updated>2017-09-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this tutorial, you'll learn the best practices of server-side GraphQL development, based on real-life experience. Covers the basics plus scalability, logging, unit tests, and modularity.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dive Into GraphQL Part IV: Building a GraphQL-powered mobile application With React]]></title>
        <id>https://marmelab.com/blog/2017/09/07/dive-into-graphql-part-iv-building-a-graphql-client-with-reactjs.html</id>
        <link href="https://marmelab.com/blog/2017/09/07/dive-into-graphql-part-iv-building-a-graphql-client-with-reactjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/building-client-small.DmFQCYZ4.jpg"/>
        <updated>2017-09-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Client-side GraphQL is easier than client-side REST because the tools are better. But the additional features (caching, optimistic UI) bring some complexity. Overall, what is the GraphQL frontend developer experience?]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dive Into GraphQL Part V: Should You Use GraphQL?]]></title>
        <id>https://marmelab.com/blog/2017/09/08/dive-into-graphql-part-v-should-you-use-graphql.html</id>
        <link href="https://marmelab.com/blog/2017/09/08/dive-into-graphql-part-v-should-you-use-graphql.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/diving-small.BeKyBYfA.jpg"/>
        <updated>2017-09-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Lessons learned from GraphQL development: developer experience, benefits and concerns. Is GraphQL a must have, or is it overkill?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Real-Time Resource Locking Using Websockets and Navigation]]></title>
        <id>https://marmelab.com/blog/2017/09/13/real-time-resource-locking-using-socketio-and-react-router.html</id>
        <link href="https://marmelab.com/blog/2017/09/13/real-time-resource-locking-using-socketio-and-react-router.html"/>
        <updated>2017-09-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Real time and locking often go hand in hand with complexity. This post explains how to deal with it the easy way.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Admin-on-rest 1.3: Summer Changes]]></title>
        <id>https://marmelab.com/blog/2017/09/14/admin-on-rest-1-3.html</id>
        <link href="https://marmelab.com/blog/2017/09/14/admin-on-rest-1-3.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/13-small.B9a5O1lz.png"/>
        <updated>2017-09-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[New features: Permissions handling, layoutless custom routes, refresh by action, custom validator messages, not found pages. And a big announcement!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[New Website Design]]></title>
        <id>https://marmelab.com/blog/2017/09/22/new-design.html</id>
        <link href="https://marmelab.com/blog/2017/09/22/new-design.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/new_site_desktop_small.BAvO3NQa.png"/>
        <updated>2017-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The marmelab.com website is now more mobile friendly, and provides a better reading experience on the blog. It's also more up to date in terms of design.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Retour sur une année en télétravail à plein temps]]></title>
        <id>https://marmelab.com/blog/2017/09/27/full-time-remote-job.html</id>
        <link href="https://marmelab.com/blog/2017/09/27/full-time-remote-job.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/scout.BBeqoAHD.jpg"/>
        <updated>2017-09-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On trouve beaucoup d’articles de blog sur le « full time remote jobs », moins sur le télétravail à plein temps. Si les entreprises en France s’ouvrent petit à petit, journée par journée au télétravail, le travail à plein temps à distance est moins courant. Pourtant c’est possible et c’est efficace.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Agile Setup: How Marmelab Bootstraps Projects In 2 Weeks]]></title>
        <id>https://marmelab.com/blog/2017/09/29/project-initialization.html</id>
        <link href="https://marmelab.com/blog/2017/09/29/project-initialization.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/Hello_world_small.C2vBTjVs.jpg"/>
        <updated>2017-09-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[At Marmelab, each new project starts by a two weeks setup phase. Here is our recipe to start soon.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Elixir GenServer Explained to Redux Developers]]></title>
        <id>https://marmelab.com/blog/2017/10/04/elixir-genserver-explained-to-redux-developers.html</id>
        <link href="https://marmelab.com/blog/2017/10/04/elixir-genserver-explained-to-redux-developers.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/201709_genserver_banner.DRujhwqb.png"/>
        <updated>2017-10-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[GenServer is the cornerstone of a lot of Elixir distributed apps. If know Redux, you'll easily understand its strengths]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Running React Router v4, Redux Saga, SSR and Code Splitting together]]></title>
        <id>https://marmelab.com/blog/2017/10/17/code-splitting.html</id>
        <link href="https://marmelab.com/blog/2017/10/17/code-splitting.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/splitting.D_W9Yk4u.jpg"/>
        <updated>2017-10-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Code splitting and server-side rendering are two ways of making a React app fast. Let's put them together in practice, with Redux, Sagas and React Router V4.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Adrien]]></title>
        <id>https://marmelab.com/blog/2017/10/24/bienvenue-a-adrien.html</id>
        <link href="https://marmelab.com/blog/2017/10/24/bienvenue-a-adrien.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/adrien_small.ChqiXqJ8.jpg"/>
        <updated>2017-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ingénieur doté d'un an et demi d'expérience en C# et angular.js, Adrien nous rejoint au bureau de Nancy. Mais qui est-il vraiment ?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le jeu du Taquin en python]]></title>
        <id>https://marmelab.com/blog/2017/10/25/jeu-du-taquin-en-python.html</id>
        <link href="https://marmelab.com/blog/2017/10/25/jeu-du-taquin-en-python.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/puzzle15-game-small.CRFb9lSk.jpg"/>
        <updated>2017-10-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Compte rendu de ma première semaine d'intégration chez Marmelab : développement d'un jeu du Taquin en Python, en ligne de commande]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Comfygure, A Configuration Manager For Easy Deployments]]></title>
        <id>https://marmelab.com/blog/2017/11/07/introducing-comfygure.html</id>
        <link href="https://marmelab.com/blog/2017/11/07/introducing-comfygure.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/comfy-screen.BhJW9i5d.png"/>
        <updated>2017-11-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Store and deploy settings across development, test, and production environments, using an encrypted key-value store.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Learning Jest Through Practice]]></title>
        <id>https://marmelab.com/blog/2017/11/08/jest-through-practice.html</id>
        <link href="https://marmelab.com/blog/2017/11/08/jest-through-practice.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/jest.BI1HxBqZ.png"/>
        <updated>2017-11-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Jest is a Javascript testing framework highlighting three main features: no configuration, improved performance, and easy mocking. Are they marketing promises, or reality? Let's verify it by testing Jest on a basic React project.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le jeu du Taquin en go]]></title>
        <id>https://marmelab.com/blog/2017/12/01/jeu-du-taquin-en-go.html</id>
        <link href="https://marmelab.com/blog/2017/12/01/jeu-du-taquin-en-go.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/puzzle15-go-banner-small.-1Rh_NLl.png"/>
        <updated>2017-12-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Compte rendu de ma seconde semaine d'intégration chez Marmelab : développement d'un jeu du Taquin en GO et d'un algorithme de suggestion de coups]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How To Implement Material Design Motion with React.js]]></title>
        <id>https://marmelab.com/blog/2017/12/04/material-design-animations-react-router.html</id>
        <link href="https://marmelab.com/blog/2017/12/04/material-design-animations-react-router.html"/>
        <updated>2017-12-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Mobile web apps need sophisticated animations to feel native. This tutorial lists the good practices to implement such animations, illustrated by a concrete example.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Minutes of DotJS 2017]]></title>
        <id>https://marmelab.com/blog/2017/12/11/minutes-of-dotjs-2017.html</id>
        <link href="https://marmelab.com/blog/2017/12/11/minutes-of-dotjs-2017.html"/>
        <updated>2017-12-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We attended the DotJS 2017 conference in Paris. We saw several awesome talks worth watching. Read on for details!]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Let's cook some Crystal!]]></title>
        <id>https://marmelab.com/blog/2017/12/14/lets-cook-some-crystal.html</id>
        <link href="https://marmelab.com/blog/2017/12/14/lets-cook-some-crystal.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/20171025_crystal_language.CMed1dUf.png"/>
        <updated>2017-12-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In the jungle of new programming languages, Crystal is one of the most popular ones, but also the most mysterious. Let's take a look at it.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comprendre la mécanique des jeux grâce au livre Game storming ]]></title>
        <id>https://marmelab.com/blog/2017/12/19/game-storming.html</id>
        <link href="https://marmelab.com/blog/2017/12/19/game-storming.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/gamestorming.BJEXPSqn.jpg"/>
        <updated>2017-12-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[En plus d'être une compilation de plus de 90 jeux sérieux et activités de facilitation, Game Storming nous livre la mécanique des jeux sérieux.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le jeu du Taquin en php (framework Symfony)]]></title>
        <id>https://marmelab.com/blog/2018/01/08/jeu-du-taquin-en-php.html</id>
        <link href="https://marmelab.com/blog/2018/01/08/jeu-du-taquin-en-php.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/puzzle15-orchester-small.DoMkv10O.jpg"/>
        <updated>2018-01-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Compte rendu de ma troisième semaine d'intégration chez Marmelab : développement d'un client web en php (framework Symfony), basé sur l'api 15 puzzle]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Réussir une rétrospective agile]]></title>
        <id>https://marmelab.com/blog/2018/01/11/agile-retrospectives.html</id>
        <link href="https://marmelab.com/blog/2018/01/11/agile-retrospectives.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/retrospective.DX2nmGIN.jpg"/>
        <updated>2018-01-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pour le premier apéro agile de Nancy, je présentais les fondamentaux de la rétrospective agile, tels que présentés dans le livre "Agile Retrospectives". Voici 5 étapes simples pour améliorer le processus du travail en commun.]]></summary>
        <author>
            <name>Yann Gensollen</name>
            <uri>https://github.com/YannGens</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[BlendWebMix 2017]]></title>
        <id>https://marmelab.com/blog/2018/01/15/blendwebmix-2017.html</id>
        <link href="https://marmelab.com/blog/2018/01/15/blendwebmix-2017.html"/>
        <updated>2018-01-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous étions à la conférence BlendWebMix à Lyon cette année, entre autres pour y présenter GraphQL. Voici ce que nous en avons retenu.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Configurable Artifacts: Deploy Code Like a Pro]]></title>
        <id>https://marmelab.com/blog/2018/01/22/configurable-artifact-in-deployment.html</id>
        <link href="https://marmelab.com/blog/2018/01/22/configurable-artifact-in-deployment.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/partial-deployment-pipeline.Bcp2Eh2P.png"/>
        <updated>2018-01-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Configurable artifacts are a deployment method used to ship code to various environments in a single build. Read on to learn how to better automate your deployment.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[La blockchain, quand l'individu sert au collectif... malgré lui]]></title>
        <id>https://marmelab.com/blog/2018/01/25/blockchain-conference.html</id>
        <link href="https://marmelab.com/blog/2018/01/25/blockchain-conference.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blockchain_conference.e35VFNhb.png"/>
        <updated>2018-01-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une vidéo de 40 minutes sans langue de bois, avec des exemples concrets et plein de dessins pour enfin tout comprendre à la blockchain]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/blockchain" term="blockchain"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[EventDrops, The Time Series Data Visualization, Gets a Major Performance Boost]]></title>
        <id>https://marmelab.com/blog/2018/01/26/event-drops-10-is-out.html</id>
        <link href="https://marmelab.com/blog/2018/01/26/event-drops-10-is-out.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/event-drops.C1IyhG-6.png"/>
        <updated>2018-01-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After several months of hard work, we are pleased to release a new version (1.0) of EventDrops, the d3.js dataviz for time series. On the menu: blazing fast performances, simplified configuration, and healthier foundations for easier maintenance!]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/dataviz" term="dataviz"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le jeu du Taquin en React et React Native]]></title>
        <id>https://marmelab.com/blog/2018/02/07/jeu-du-taquin-en-react.html</id>
        <link href="https://marmelab.com/blog/2018/02/07/jeu-du-taquin-en-react.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/puzzle15-flight-small.D-j9dajP.jpg"/>
        <updated>2018-02-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Compte-rendu des quatrième et cinquième semaines de mon intégration chez Marmelab, au cours desquelles j'ai développé une application et un client web en React]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Understanding Recursion, Tail Call and Trampoline Optimizations]]></title>
        <id>https://marmelab.com/blog/2018/02/12/understanding-recursion.html</id>
        <link href="https://marmelab.com/blog/2018/02/12/understanding-recursion.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/fractal_small.AcRmOSen.jpg"/>
        <updated>2018-02-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In order to understand recursion, you must understand recursion.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Admin-on-rest 1.4: Winter Changes]]></title>
        <id>https://marmelab.com/blog/2018/02/14/admin-on-rest-1-4.html</id>
        <link href="https://marmelab.com/blog/2018/02/14/admin-on-rest-1-4.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/13-small.B9a5O1lz.png"/>
        <updated>2018-02-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This new version fixes many bugs, including long standing issues, and introduces a couple new features]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[School Of PO, retour sur la conférence]]></title>
        <id>https://marmelab.com/blog/2018/02/15/la-conf-school-of-po.html</id>
        <link href="https://marmelab.com/blog/2018/02/15/la-conf-school-of-po.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.uO8qdknW.jpg"/>
        <updated>2018-02-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Compte-rendu de la première conférence dédiée aux agilistes et aux Product Owners, qui s'est déroulée à Paris le 13 février dernier]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convert An Image Into An ASCII Art Masterpiece With Pure JavaScript]]></title>
        <id>https://marmelab.com/blog/2018/02/20/convert-image-to-ascii-art-masterpiece.html</id>
        <link href="https://marmelab.com/blog/2018/02/20/convert-image-to-ascii-art-masterpiece.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/homer.BMrAyb2y.png"/>
        <updated>2018-02-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This tutorial leverages the FileReader and Canvas APIs to demonstrate the browser image manipulation capabilities]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Automating accessibility testing with Selenium Webdriver and AxeCore]]></title>
        <id>https://marmelab.com/blog/2018/02/22/accessibililty-testing-e2e.html</id>
        <link href="https://marmelab.com/blog/2018/02/22/accessibililty-testing-e2e.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/image-small.pzHG0oG9.jpg"/>
        <updated>2018-02-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To make sure your site is accessible, you'd better add a check for accessibility in your continuous integration process. Here is how.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/accessibility" term="accessibility"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Lean Startup : This Book Isn't Actually About Startups]]></title>
        <id>https://marmelab.com/blog/2018/03/12/the-lean-startup.html</id>
        <link href="https://marmelab.com/blog/2018/03/12/the-lean-startup.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DoEjbReI.jpg"/>
        <updated>2018-03-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA["Don't judge a book by its cover"... neither should you by its title. I read "The Lean Startup" by Eric Ries, and you should read it too. It's all about innovation.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Functional Programming in JavaScript, Part 1: The Unit]]></title>
        <id>https://marmelab.com/blog/2018/03/14/functional-programming-1-unit-of-code.html</id>
        <link href="https://marmelab.com/blog/2018/03/14/functional-programming-1-unit-of-code.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/lego-title-small.XHjzAX99.jpg"/>
        <updated>2018-03-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This gentle introduction to functional programming explains pure functions, currying, and composition. Easy peasy!]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using NVIDIA GPU within Docker Containers]]></title>
        <id>https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html</id>
        <link href="https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/nvidia-docker-small.DL05aayR.png"/>
        <updated>2018-03-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Diving into machine learning requires some computation power, mainly brought by GPUs. Let's start our machine learning journey by configuring Docker to use NVIDIA GPU.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Customer Story: 1859 Cloud, or How a Fintech Can Help Charities]]></title>
        <id>https://marmelab.com/blog/2018/03/28/1859.html</id>
        <link href="https://marmelab.com/blog/2018/03/28/1859.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/1859_team.OQ0-pKK0.png"/>
        <updated>2018-03-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've been working with 1859 for more than 3 years to build an innovative investment club, powered by a mobile app and a full-fledge admin. Read on to learn more about this customer story.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Finding And Fixing Node.js Memory Leaks: A Practical Guide]]></title>
        <id>https://marmelab.com/blog/2018/04/03/how-to-track-and-fix-memory-leak-with-nodejs.html</id>
        <link href="https://marmelab.com/blog/2018/04/03/how-to-track-and-fix-memory-leak-with-nodejs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cookie-monster.DYnbFD0q.png"/>
        <updated>2018-04-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[An introduction to memory debugging, from identifying causes to fixing leaks, using Chrome DevTools, and illustrated by simple examples]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Enjoy Painless Typing With ReasonML!]]></title>
        <id>https://marmelab.com/blog/2018/04/09/enjoy-painless-typing-with-reason.html</id>
        <link href="https://marmelab.com/blog/2018/04/09/enjoy-painless-typing-with-reason.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/smallbanner.CvMTMDGc.jpg"/>
        <updated>2018-04-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ReasonML is one of the hypest language of the moment, and in my opinion, it's for good reasons. Let's discover this language together.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[#play14 Luxembourg 2018: The Serious Games Unconference Turns 5]]></title>
        <id>https://marmelab.com/blog/2018/04/12/play14.html</id>
        <link href="https://marmelab.com/blog/2018/04/12/play14.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.W8qDUF2A.jpg"/>
        <updated>2018-04-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What can you expect from a two day conference for agile coaches and practitioners who really want to play? Games!]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA["Confessions of a Public Speaker", a Fun and Inspiring Guide for Giving Better Talks!]]></title>
        <id>https://marmelab.com/blog/2018/04/16/confessions-of-a-public-speaker.html</id>
        <link href="https://marmelab.com/blog/2018/04/16/confessions-of-a-public-speaker.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.D_3ekwMy.jpg"/>
        <updated>2018-04-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[As a seasoned speaker, I decided to go one step further by reading feedbacks from professionals. Scott Berkun is one of them, and his book brought me to very precious and practical insights about how to thrill the crowds. Here is a book review of this must-read book.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Functional Programming in JavaScript, Part 2: The Monoid]]></title>
        <id>https://marmelab.com/blog/2018/04/18/functional-programming-2-monoid.html</id>
        <link href="https://marmelab.com/blog/2018/04/18/functional-programming-2-monoid.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/monoid-small-title.DoIpi_ik.jpg"/>
        <updated>2018-04-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What do number addition, string concatenation, array concatenation, and function composition have in common? They are all monoids, and they have very interesting properties.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[M&M's: Agile Retrospective For Gloutons]]></title>
        <id>https://marmelab.com/blog/2018/04/23/mms-retrospective.html</id>
        <link href="https://marmelab.com/blog/2018/04/23/mms-retrospective.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BZ8XBS72.jpg"/>
        <updated>2018-04-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've experimented an alternative way to liberate our retrospectives, using food. The results are delicious!]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Admin-on-rest Becomes React-admin, and Gets a Major 2.0 Release]]></title>
        <id>https://marmelab.com/blog/2018/05/18/react-admin-2-0.html</id>
        <link href="https://marmelab.com/blog/2018/05/18/react-admin-2-0.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-2-small.BmyHbRBt.png"/>
        <updated>2018-05-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Material-ui 1.0, CSS-in-JS, undo button, bulk actions, and much more: Building admin GUIs with React has never been easier.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Site Reliability Engineering: Google's Secret Sauce For High Availability And Happy Ops]]></title>
        <id>https://marmelab.com/blog/2018/05/24/site-reliability-engineering.html</id>
        <link href="https://marmelab.com/blog/2018/05/24/site-reliability-engineering.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/sre-book.BXM7CIfm.png"/>
        <updated>2018-05-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Developers have a lot to learn from the book "Site Reliability Engineering - How Google Runs Production Systems", starting with time management and blameless retrospectives.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Get Rid Of Toxic Bugs On Your Apps With Detox!]]></title>
        <id>https://marmelab.com/blog/2018/06/05/get-rid-of-toxic-bugs-on-your-apps-with-detox.html</id>
        <link href="https://marmelab.com/blog/2018/06/05/get-rid-of-toxic-bugs-on-your-apps-with-detox.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.9hYDRXMS.jpeg"/>
        <updated>2018-06-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[End-to-end tests are common in the browser land, much less for native apps. A good solution is Detox, a gray box E2E testing framework for mobile apps.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lean from the Trenches: Managing Large Scale Projects with Kanban]]></title>
        <id>https://marmelab.com/blog/2018/06/21/lean-from-trenches.html</id>
        <link href="https://marmelab.com/blog/2018/06/21/lean-from-trenches.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BG6tP-8I.jpg"/>
        <updated>2018-06-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How Henrik Kniberg facilitated a 60 persons project with agile methodologies]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Managing State in React: Redux or not Redux?]]></title>
        <id>https://marmelab.com/blog/2018/06/27/redux-or-not-redux.html</id>
        <link href="https://marmelab.com/blog/2018/06/27/redux-or-not-redux.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/redux-or-not.BJehkqc4.jpg"/>
        <updated>2018-06-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Redux is a fantastic tool for managing state in React.js, but is it suitable for all situations? Probably not.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin 2.1 Is Out]]></title>
        <id>https://marmelab.com/blog/2018/07/02/react-admin-2-1.html</id>
        <link href="https://marmelab.com/blog/2018/07/02/react-admin-2-1.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-2-1-small.CUYthPDj.png"/>
        <updated>2018-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The first minor version since 2.0 improves the developer experience, based on the feedback we've received. It's never been so fun to develop admin GUIs with React!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin Advanced Recipes: Creating a Record Related to the Current One]]></title>
        <id>https://marmelab.com/blog/2018/07/09/react-admin-tutorials-form-for-related-records.html</id>
        <link href="https://marmelab.com/blog/2018/07/09/react-admin-tutorials-form-for-related-records.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-tutorials-form-for-related-records-small.B9Qyzz_I.png"/>
        <updated>2018-07-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin doesn't offer a feature that you need? No problem, it's just React! This practical tutorial shows how to use the routing and a custom button to improve the user experience.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DotAI 2018: Machine Learning for Humans]]></title>
        <id>https://marmelab.com/blog/2018/07/12/humans-learning-machine-learning-at-dotai.html</id>
        <link href="https://marmelab.com/blog/2018/07/12/humans-learning-machine-learning-at-dotai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.J2acb-0I.jpg"/>
        <updated>2018-07-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I attended a few weeks ago my first conference about machine learning. As a developer with almost no experience in this field, I learned a lot without getting lost in the mathematical meanders associated with this topic. Here is my feedback.]]></summary>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Julien M]]></title>
        <id>https://marmelab.com/blog/2018/07/16/bienvenue-a-julien.html</id>
        <link href="https://marmelab.com/blog/2018/07/16/bienvenue-a-julien.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/julienm_small.CKxE_4YY.jpg"/>
        <updated>2018-07-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Fort de dix ans de développement chez un éditeur de logiciels pour les professionnels de santé, Julien s'est décidé à faire le grand saut et vient de rejoindre Marmelab.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Automating Accessibility and Performance Testing with Puppeteer and AxeCore]]></title>
        <id>https://marmelab.com/blog/2018/07/18/accessibility-performance-testing-puppeteer.html</id>
        <link href="https://marmelab.com/blog/2018/07/18/accessibility-performance-testing-puppeteer.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/image-small.pzHG0oG9.jpg"/>
        <updated>2018-07-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To make sure your site is accessible and fast, check it during the continuous integration process. Here is how to do it in practice.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/accessibility" term="accessibility"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Jouer pour mieux travailler : Le Quarto]]></title>
        <id>https://marmelab.com/blog/2018/07/20/jouer-pour-mieux-travailler-le-quarto.html</id>
        <link href="https://marmelab.com/blog/2018/07/20/jouer-pour-mieux-travailler-le-quarto.html"/>
        <updated>2018-07-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Première semaine chez Marmelab ; premier projet ; premières sueurs ; premières découvertes ; et surtout : premières étoiles dans les yeux]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin 2.2 Is Out With Export, Clone, And More]]></title>
        <id>https://marmelab.com/blog/2018/08/16/react-admin-2-2.html</id>
        <link href="https://marmelab.com/blog/2018/08/16/react-admin-2-2.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-2-2-small.BrnaFcrt.png"/>
        <updated>2018-08-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Export button, Dense AppBar, callback side effect, error page, clear Button on inputs, clone button... There are so much enhancements in this release that you'd better read the article.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin Advanced Recipes - Adding Related Records Inline With Custom Forms]]></title>
        <id>https://marmelab.com/blog/2018/08/27/react-admin-tutorials-custom-forms-related-records.html</id>
        <link href="https://marmelab.com/blog/2018/08/27/react-admin-tutorials-custom-forms-related-records.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-tutorials-custom-forms-related-records-small.Bjdrk2wF.png"/>
        <updated>2018-08-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin allows to initialize a form to create a new resource related to the current one inside the main form. Here is how.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agile Integration: Passing On Culture to Newcomers in 5 Weeks]]></title>
        <id>https://marmelab.com/blog/2018/09/05/agile-integration.html</id>
        <link href="https://marmelab.com/blog/2018/09/05/agile-integration.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CePpHMYO.jpg"/>
        <updated>2018-09-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We believe that the commonly used onboarding processes are broken. We invented a new way to welcome new collaborators, help them learn our tools and methods, and find their place in our organization. Let's fix onboarding together!]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin 2.3: Better UI, User Menu, Tree Shaking, Tree List, and more!]]></title>
        <id>https://marmelab.com/blog/2018/09/07/react-admin-2-3.html</id>
        <link href="https://marmelab.com/blog/2018/09/07/react-admin-2-3.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-2-2-small.BrnaFcrt.png"/>
        <updated>2018-09-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This new release of react-admin, our client-side admin GUI running on top of REST and GraphQL APIs, should be called a 3.0 since it brings so many new things. But, by virtue of SemVer and backwards changes, it's just a 2.3.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Functional Programming in JavaScript, Part 3: Introduction to Functors and Monads]]></title>
        <id>https://marmelab.com/blog/2018/09/26/functional-programming-3-functor-redone.html</id>
        <link href="https://marmelab.com/blog/2018/09/26/functional-programming-3-functor-redone.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/monad_functor_small.BIwBjeQ0.jpg"/>
        <updated>2018-09-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[`Functors` and `Monads` may sound frightening, they are powerful concepts that can help developers on a day-to-day basis.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hacktoberfest 2018: Come Contribute To OSS With Us!]]></title>
        <id>https://marmelab.com/blog/2018/10/01/marmelab-joining-hacktoberfest-2018.html</id>
        <link href="https://marmelab.com/blog/2018/10/01/marmelab-joining-hacktoberfest-2018.html"/>
        <updated>2018-10-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Like every year, Marmelab is joining the Hacktoberfest. Come with us to celebrate open-source software and try to win a nice t-shirt.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Create a Carousel and a Wizard Form With React and CSS-in-JS]]></title>
        <id>https://marmelab.com/blog/2018/10/04/react-slider-poll.html</id>
        <link href="https://marmelab.com/blog/2018/10/04/react-slider-poll.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DEon2L5e.jpg"/>
        <updated>2018-10-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A wizard form is like a carousel: it's a series of slides. Implementing it in React is a great way to learn about state, transitions, and CSS-in-JS.]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Découverte du langage Go pour ma deuxième semaine d'intégration : Go Go Quarto Ranger !]]></title>
        <id>https://marmelab.com/blog/2018/10/09/go-go-quarto-ranger.html</id>
        <link href="https://marmelab.com/blog/2018/10/09/go-go-quarto-ranger.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/QuartoGoMini.Dw-nekAD.JPG"/>
        <updated>2018-10-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nouveau sprint d'intégration à Marmelab sur le jeu du Quarto : Réaliser une IA capable de battre un humain]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin 2.4: Field Guessers, Aside, DateTimeInput, Better Accessibility... and TypeScript!]]></title>
        <id>https://marmelab.com/blog/2018/10/18/react-admin-2-4.html</id>
        <link href="https://marmelab.com/blog/2018/10/18/react-admin-2-4.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-2-4-small.sSbVpMjv.png"/>
        <updated>2018-10-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin, our client-side admin GUI running on top of REST and GraphQL APIs, gets a bunch of new features to further improve the developer experience. Click to check the highlights.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Multipass Render Pattern]]></title>
        <id>https://marmelab.com/blog/2018/10/18/react-render-context-pattern.html</id>
        <link href="https://marmelab.com/blog/2018/10/18/react-render-context-pattern.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C9cQdGSB.jpeg"/>
        <updated>2018-10-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Making components allowing to quickly build interfaces while remaining customizable]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Devfest Nantes 2018: Retour sur la première conférence tech de la saison]]></title>
        <id>https://marmelab.com/blog/2018/10/22/devfest-nantes-2018.html</id>
        <link href="https://marmelab.com/blog/2018/10/22/devfest-nantes-2018.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/devfest-2018.BVasdJIk.jpg"/>
        <updated>2018-10-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab a rejoint Palo IT à l'autre bout de la France pour découvrir la conférence Devfest. Découvrez notre sélection des sessions les plus marquantes.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Inspiring Talks + Awesome Networking = BlendWebMix 2018]]></title>
        <id>https://marmelab.com/blog/2018/11/02/blendwebmix-2018.html</id>
        <link href="https://marmelab.com/blog/2018/11/02/blendwebmix-2018.html"/>
        <updated>2018-11-02T00:00:00.000Z</updated>
        <author>
            <name>Jonathan Petitcolas</name>
            <uri>https://github.com/jpetitcolas</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Developer's Diary: Building A Notes Taking App in Shell]]></title>
        <id>https://marmelab.com/blog/2018/11/08/a-developers-diary.html</id>
        <link href="https://marmelab.com/blog/2018/11/08/a-developers-diary.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/diary.HVXIeN58.jpg"/>
        <updated>2018-11-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I'm used to recording all the little things I learn from day to day as a developer. Since I didn't find the right note-taking tool to integrate in my daily routine, I coded it. Read on to see what I learned in the process.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/shell" term="shell"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab permet aux entreprises clientes d'Harmonie Mutuelle d'ajuster leurs dépenses grâce à une DataViz]]></title>
        <id>https://marmelab.com/blog/2018/11/13/harmonie-dataviz.html</id>
        <link href="https://marmelab.com/blog/2018/11/13/harmonie-dataviz.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BsGx2f2V.jpg"/>
        <updated>2018-11-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une idée à forte incertitude, plein de risques techniques, le tout dans un grand groupe : ce projet est un candidat idéal pour l'approche marmelab.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/dataviz" term="dataviz"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vous aimez les legos ? React est fait pour vous !]]></title>
        <id>https://marmelab.com/blog/2018/11/22/react-legos.html</id>
        <link href="https://marmelab.com/blog/2018/11/22/react-legos.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blendwebmix2018_small.Dt8V56OY.png"/>
        <updated>2018-11-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Voici la vidéo de la conférence de 45 minutes que j'ai donnée à BlendWebMix 2018. J'y partage les bonnes pratiques React.js que nous avons apprises grâce à react-admin.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Minutes of DotJS 2018]]></title>
        <id>https://marmelab.com/blog/2018/11/27/minutes-of-dotjs-2018.html</id>
        <link href="https://marmelab.com/blog/2018/11/27/minutes-of-dotjs-2018.html"/>
        <updated>2018-11-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We attended the DotJS 2018 conference in Paris. We saw several awesome talks worth watching. Read on for details!]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Twelve-Factor Applications: How Do You Validate Your Configuration?]]></title>
        <id>https://marmelab.com/blog/2018/12/05/twelve-factor-applications-how-do-you-validate-your-configuration.html</id>
        <link href="https://marmelab.com/blog/2018/12/05/twelve-factor-applications-how-do-you-validate-your-configuration.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/12appConfigurationSmall.BQz9GpFe.jpg"/>
        <updated>2018-12-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When we deliver our code as docker images, how do we ensure that their configuration is correct?]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin 2.6: Datagrid Improvements, UI Polish, and Better Styling]]></title>
        <id>https://marmelab.com/blog/2019/01/09/react-admin-2-6.html</id>
        <link href="https://marmelab.com/blog/2019/01/09/react-admin-2-6.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DX0oGWpG.png"/>
        <updated>2019-01-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Thanks to the hard work of more than a dozen developers, 2019 starts with a new react-admin release. Read on to see the highlights.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Timeline With React, Storybook, Material-UI, and React-Admin]]></title>
        <id>https://marmelab.com/blog/2019/01/17/react-timeline.html</id>
        <link href="https://marmelab.com/blog/2019/01/17/react-timeline.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CLDZaLAF.png"/>
        <updated>2019-01-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When customer requirements can't be addressed by react-admin out of the box, it's time to use pure React. As this tutorial shows, it's quite straightforward, and react-admin never gets in the way.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTTPS In Development: A Practical Guide]]></title>
        <id>https://marmelab.com/blog/2019/01/23/https-in-development.html</id>
        <link href="https://marmelab.com/blog/2019/01/23/https-in-development.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/home-security.DMB1OvzF.jpg"/>
        <updated>2019-01-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why and how to setup HTTPS certificates, with or without reverse proxy, in a JavaScript development environment.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[User Stories Are Overrated]]></title>
        <id>https://marmelab.com/blog/2019/01/31/user-stories-are-overrated.html</id>
        <link href="https://marmelab.com/blog/2019/01/31/user-stories-are-overrated.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.DKYZ-7aA.jpg"/>
        <updated>2019-01-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Trying to fit every requirement into a user story leads to backlog aberration. We should only use User Stories when trying to capture user value.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin Advanced Recipes: Creating and Editing a Record From the List Page]]></title>
        <id>https://marmelab.com/blog/2019/02/07/react-admin-advanced-recipes-creating-and-editing-a-record-from-the-list-page.html</id>
        <link href="https://marmelab.com/blog/2019/02/07/react-admin-advanced-recipes-creating-and-editing-a-record-from-the-list-page.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.DDKXgImV.jpg"/>
        <updated>2019-02-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Don't want to show a full new page to edit or create records? This tutorial shows how to display those forms in a drawer or a dialog from the List page.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How To Improve Postgres Performance: Our Tips and Tricks]]></title>
        <id>https://marmelab.com/blog/2019/02/13/how-to-improve-postgres-performances.html</id>
        <link href="https://marmelab.com/blog/2019/02/13/how-to-improve-postgres-performances.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DK50ZLEG.jpg"/>
        <updated>2019-02-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We recently had to investigate and optimize a large PostgreSQL database. Here is a what we did to remove the bottlenecks.]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment mettre en place les migrations avec Hasura]]></title>
        <id>https://marmelab.com/blog/2019/02/21/comment-mettre-en-place-les-migrations-avec-hasura.html</id>
        <link href="https://marmelab.com/blog/2019/02/21/comment-mettre-en-place-les-migrations-avec-hasura.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.C0xVDxRd.png"/>
        <updated>2019-02-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hasura est un serveur GraphQL pour PostgreSQL. Lorsque le modèle de données change, comment passer l'info à Hasura pour mettre à jour l'API?]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[First-class End-to-end Testing on Meteor]]></title>
        <id>https://marmelab.com/blog/2019/02/28/cypress-on-meteor.html</id>
        <link href="https://marmelab.com/blog/2019/02/28/cypress-on-meteor.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BRVDgprA.jpg"/>
        <updated>2019-02-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to setup cypress e2e tests on a meteor app]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin Advanced Recipes: User Profile]]></title>
        <id>https://marmelab.com/blog/2019/03/07/react-admin-advanced-recipes-user-profile.html</id>
        <link href="https://marmelab.com/blog/2019/03/07/react-admin-advanced-recipes-user-profile.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.D1GCRH8A.jpg"/>
        <updated>2019-03-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin doesn't offer a feature that you need? No problem, it's just React! This practical tutorial shows how to allow users to edit their profile.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Has Built-In Dependency Injection]]></title>
        <id>https://marmelab.com/blog/2019/03/13/react-dependency-injection.html</id>
        <link href="https://marmelab.com/blog/2019/03/13/react-dependency-injection.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dgy4Qo0f.jpg"/>
        <updated>2019-03-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Developers coming from other frameworks sometimes look for a dependency injection system, but fail to find it. It's right before their eyes.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin 2.8: Query Component, Data Loss Protection, Top Bar Customization, And More]]></title>
        <id>https://marmelab.com/blog/2019/03/15/react-admin-2-8.html</id>
        <link href="https://marmelab.com/blog/2019/03/15/react-admin-2-8.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cd605x8s.jpg"/>
        <updated>2019-03-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Highlights of the new features introduced by version 2.7 and 2.8]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/admin-on-rest" term="admin-on-rest"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Functional Programming in JavaScript, Part 4: The Art of Chaining Different Monads]]></title>
        <id>https://marmelab.com/blog/2019/03/20/functional-programming-4-art-of-chaining-monad.html</id>
        <link href="https://marmelab.com/blog/2019/03/20/functional-programming-4-art-of-chaining-monad.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/legomovie-duplo-aliens-small.DrBv2xDp.jpg"/>
        <updated>2019-03-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[It is a bad practice to chain one monad with a monad of another type. Read on to understand why, and how to chain monads the right way.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Supplying your own Defaults to React Admin]]></title>
        <id>https://marmelab.com/blog/2019/03/27/supplying-your-own-defaults-to-react-admin.html</id>
        <link href="https://marmelab.com/blog/2019/03/27/supplying-your-own-defaults-to-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CXW0hwG8.jpeg"/>
        <updated>2019-03-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[You don't agree with some of our design decisions? No problem, just supply your own and keep your code DRY!]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[What Can React Developers Learn From The Vue.Js Ecosystem?]]></title>
        <id>https://marmelab.com/blog/2019/04/03/vuejs-amsterdam-2019.html</id>
        <link href="https://marmelab.com/blog/2019/04/03/vuejs-amsterdam-2019.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.fbFGaR8d.jpg"/>
        <updated>2019-04-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[For the first time, marmelab developers attended the European VueJs conference. Read on to discover what we learned!]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/vuejs" term="vuejs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Property Based Testing in Javascript]]></title>
        <id>https://marmelab.com/blog/2019/04/18/property-based-testing-js.html</id>
        <link href="https://marmelab.com/blog/2019/04/18/property-based-testing-js.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/800px-Hyperspace.Bd0XcNw3.jpg"/>
        <updated>2019-04-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Want to be more confident with your code? Property Based Testing can automatically generate data to test your code]]></summary>
        <author>
            <name>Pierre-Etienne Moreau</name>
            <uri>https://github.com/pemoreau</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build Augmented Reality Applications With React-Native]]></title>
        <id>https://marmelab.com/blog/2019/04/25/react-native-augmented-reality.html</id>
        <link href="https://marmelab.com/blog/2019/04/25/react-native-augmented-reality.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/arhero.CHicX1b4.jpg"/>
        <updated>2019-04-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Do you need to do native development to get native AR performance on mobile?]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/3d" term="3d"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Innovator's Dilemma: How Can You Loose When You Seem to Be Winning?]]></title>
        <id>https://marmelab.com/blog/2019/04/30/innovator-dilemma.html</id>
        <link href="https://marmelab.com/blog/2019/04/30/innovator-dilemma.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C_Xl08rF.jpg"/>
        <updated>2019-04-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you want to understand what true disruptive innovation is and go further than the buzzword: Read that book.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Créer et publier une application web sur Linux grâce aux snaps]]></title>
        <id>https://marmelab.com/blog/2019/05/15/creer-et-publier-une-application-web-sur-linux-grace-aux-snaps.html</id>
        <link href="https://marmelab.com/blog/2019/05/15/creer-et-publier-une-application-web-sur-linux-grace-aux-snaps.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail-snapcraft.ChtoEWB-.png"/>
        <updated>2019-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les stores d'application facilitent la distribution et la mise à jour des applications. Grâce aux snaps, c'est aussi possible sur Ubuntu.]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/linux" term="linux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agile Lean Ireland 2019: The Conference You Wish You Had Gone To]]></title>
        <id>https://marmelab.com/blog/2019/05/22/ali-2019.html</id>
        <link href="https://marmelab.com/blog/2019/05/22/ali-2019.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.b-QO2Bfr.jpg"/>
        <updated>2019-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In the middle of Dublin, and with an impressive line-up of speakers, this agile conference was really worth the trip.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Releasing Comfygure 1.0]]></title>
        <id>https://marmelab.com/blog/2019/05/28/releasing-comfygure-1-0.html</id>
        <link href="https://marmelab.com/blog/2019/05/28/releasing-comfygure-1-0.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/comfy-demo.CS1ojuDD.png"/>
        <updated>2019-05-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Two years after the initial release, we're finally publishing a stable version of comfygure! Read on to see what's new in our open-source configuration storage.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[On apprend quoi pendant un stage chez Marmelab?]]></title>
        <id>https://marmelab.com/blog/2019/06/05/retour-sur-experience.html</id>
        <link href="https://marmelab.com/blog/2019/06/05/retour-sur-experience.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/jeu.DfnXET8W.jpg"/>
        <updated>2019-06-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[J'ai côtoyé pendant 8 semaines les équipes de pilotage et de développement de Marmelab. J'ai découvert tout un tas de pratiques qui m'ont étonnées, je vous les présente !]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Pierre]]></title>
        <id>https://marmelab.com/blog/2019/06/13/bienvenue-pierre.html</id>
        <link href="https://marmelab.com/blog/2019/06/13/bienvenue-pierre.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/pierre_small.CWDGbLpc.jpg"/>
        <updated>2019-06-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un nouveau développeur full-stack vient renforcer notre équipe.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Quixo, le morpion de l'intégration: Un jeu en python sur console]]></title>
        <id>https://marmelab.com/blog/2019/06/14/integration-quixo-pierre.html</id>
        <link href="https://marmelab.com/blog/2019/06/14/integration-quixo-pierre.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/quixo_box.00CQ32HR.jpg"/>
        <updated>2019-06-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Récit de ma première semaine d'intégration et du défi que j'ai du relever: développer un jeu de Quixo en 4 jours.]]></summary>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Symfony for Quarto in Allegro! My third integration week at Marmelab.]]></title>
        <id>https://marmelab.com/blog/2019/06/19/quarto-symfony.html</id>
        <link href="https://marmelab.com/blog/2019/06/19/quarto-symfony.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/QuartoSymfony.IRYxIaSB.jpg"/>
        <updated>2019-06-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How I made Quarto a pleasant game with a Symfony graphical user interface, and learned a lot in the process.]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[WebAuthn: Server and Client-Side Strong Auth Library For JavaScript]]></title>
        <id>https://marmelab.com/blog/2019/06/24/web-authn-fido2-open-source-package.html</id>
        <link href="https://marmelab.com/blog/2019/06/24/web-authn-fido2-open-source-package.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover_small.DW2k_jNK.jpg"/>
        <updated>2019-06-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Browsers support a new WebAuthn standard to facilitate strong authentication. We've open-sourced a library to facilitate its implementation.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ma seconde semaine d'intégration: Jouons à deux avec Symfony]]></title>
        <id>https://marmelab.com/blog/2019/07/25/quixo-avec-symfo-framework-php.html</id>
        <link href="https://marmelab.com/blog/2019/07/25/quixo-avec-symfo-framework-php.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/quixo-symfo-docker.CV2Ne7OB.jpg"/>
        <updated>2019-07-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[C'est ma deuxième semaine chez Marmelab. Pour mon parcours d'intégration, je dois développer le jeu Quixo en PHP avec le framework Symfony, et coder un mode multijoueur.]]></summary>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Créer son propre loader Webpack]]></title>
        <id>https://marmelab.com/blog/2019/08/27/creer-son-propre-loader-webpack.html</id>
        <link href="https://marmelab.com/blog/2019/08/27/creer-son-propre-loader-webpack.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/webpack-small.Dy0fMiko.png"/>
        <updated>2019-08-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Webpack permet d'ajouter des étapes supplémentaires au processus de compilation des projets JS. C'est plus difficile quand le projet utilise `create-react-app`. Voici la solution.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Helping Amnesty International Target a New Audience]]></title>
        <id>https://marmelab.com/blog/2019/08/28/helping-amnesty-international-target-a-new-audience.html</id>
        <link href="https://marmelab.com/blog/2019/08/28/helping-amnesty-international-target-a-new-audience.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BE2fKotP.jpg"/>
        <updated>2019-08-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The pen is mightier than the sword... Can we get a smartphone to be as mighty? Read the story of how Marmelab  helped AI to invent a new form of activism.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Load Testing Node.js App with Flood.io]]></title>
        <id>https://marmelab.com/blog/2019/09/17/load-testing-nodejs-app-with-floodi.html</id>
        <link href="https://marmelab.com/blog/2019/09/17/load-testing-nodejs-app-with-floodi.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.CPbwDaYT.png"/>
        <updated>2019-09-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We tried a new product that helped us load test an app before a critical event in production. This post explains how we did and how flood.io helped us.]]></summary>
        <author>
            <name>Kévin Maschtaler</name>
            <uri>https://github.com/Kmaschta</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CouchDB, The Open-Source Cloud Firestore Alternative?]]></title>
        <id>https://marmelab.com/blog/2019/09/25/couchdb_pouchdb_serious_firebase_alternative.html</id>
        <link href="https://marmelab.com/blog/2019/09/25/couchdb_pouchdb_serious_firebase_alternative.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-mini.B2Guq9E3.jpeg"/>
        <updated>2019-09-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to develop an offline-first, real time React app using a NoSQL database, in practice.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Matthieu]]></title>
        <id>https://marmelab.com/blog/2019/10/03/bienvenue-matthieu.html</id>
        <link href="https://marmelab.com/blog/2019/10/03/bienvenue-matthieu.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/matthieu_small.mT0GihKu.jpg"/>
        <updated>2019-10-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[L'équipe de développeurs marmelab continue de s'étoffer avec le renfort d'un nouveau profil très expérimenté.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Amnesty International: Designing the Experience]]></title>
        <id>https://marmelab.com/blog/2019/10/07/amnesty-international-designing-the-experience.html</id>
        <link href="https://marmelab.com/blog/2019/10/07/amnesty-international-designing-the-experience.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BE2fKotP.jpg"/>
        <updated>2019-10-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[From solution to problem, the work we did for Amnesty is a great example of how we design digital products]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3: Zoom in the Authentication Layer]]></title>
        <id>https://marmelab.com/blog/2019/10/09/react-admin-v3-auth.html</id>
        <link href="https://marmelab.com/blog/2019/10/09/react-admin-v3-auth.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Bejsyl0A.jpg"/>
        <updated>2019-10-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The developer experience was our main concern for designing the new react-admin version. See how it applies to the auth logic.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3: Zoom in the i18n Layer]]></title>
        <id>https://marmelab.com/blog/2019/10/10/react-admin-v3-i18n.html</id>
        <link href="https://marmelab.com/blog/2019/10/10/react-admin-v3-i18n.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DEWgjIog.jpg"/>
        <updated>2019-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is a great example of how we use dependency injection in React.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3: Zoom in the Styling Layer]]></title>
        <id>https://marmelab.com/blog/2019/10/10/react-admin-v3-styling.html</id>
        <link href="https://marmelab.com/blog/2019/10/10/react-admin-v3-styling.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BrUDwm0M.jpg"/>
        <updated>2019-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Material-ui handles most of the styling and theming of react-admin v3.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3: Zoom in the Data Layer]]></title>
        <id>https://marmelab.com/blog/2019/10/14/react-admin-v3-data.html</id>
        <link href="https://marmelab.com/blog/2019/10/14/react-admin-v3-data.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C65Wa5CZ.jpg"/>
        <updated>2019-10-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Querying the Data Provider with React hooks is such a joy that it should suffice to motivate you to upgrade.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3: Zoom in the UI Changes]]></title>
        <id>https://marmelab.com/blog/2019/10/15/react-admin-v3-ui.html</id>
        <link href="https://marmelab.com/blog/2019/10/15/react-admin-v3-ui.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CDDKErMY.jpg"/>
        <updated>2019-10-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The react-admin user interface for lists and forms has seen a few tweaks to improve usability and visual consistency.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Firebase for Backend-as-a-Service: Pros and Cons]]></title>
        <id>https://marmelab.com/blog/2019/10/23/feedback-on-firebase-in-project-start-up.html</id>
        <link href="https://marmelab.com/blog/2019/10/23/feedback-on-firebase-in-project-start-up.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/smallFirebase.CY3xkNPP.jpg"/>
        <updated>2019-10-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On a short project, we decided to use Firebase, a Rapid Application Development service, to save time. Was it a good choice?]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Quoridor: Playing A Maze Game On The Console With Python]]></title>
        <id>https://marmelab.com/blog/2019/10/24/quoridor-part-1.html</id>
        <link href="https://marmelab.com/blog/2019/10/24/quoridor-part-1.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.C2St_XB4.jpg"/>
        <updated>2019-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[First part of my feelings about my integration period at marmelab.]]></summary>
        <author>
            <name>Matthieu Chaffotte</name>
            <uri>https://github.com/mchaffotte</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Jouer seul à Quixo grâce à un bot en Golang]]></title>
        <id>https://marmelab.com/blog/2019/10/30/jouer-seul-a-quixo-grace-a-un-bot-en-golang.html</id>
        <link href="https://marmelab.com/blog/2019/10/30/jouer-seul-a-quixo-grace-a-un-bot-en-golang.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.WFLWWP8z.png"/>
        <updated>2019-10-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[J'entame ma 3ème semaine d'intégration chez Marmelab. A la fin de cette semaine, je devrai pouvoir jouer seul à Quixo grâce à une IA en Golang]]></summary>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/bot" term="bot"/>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le server-side rendering sans framework: pas si dur!]]></title>
        <id>https://marmelab.com/blog/2019/11/08/le-server-side-rendering-sans-framework-pas-si-dur.html</id>
        <link href="https://marmelab.com/blog/2019/11/08/le-server-side-rendering-sans-framework-pas-si-dur.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BYkq-xvy.jpg"/>
        <updated>2019-11-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Comment configurer une appli React Apollo pour faire du SSR avec code splitting et hot reload]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Faker 1.9: The Best Faker Data Generator... Yet]]></title>
        <id>https://marmelab.com/blog/2019/11/14/faker-1-9.html</id>
        <link href="https://marmelab.com/blog/2019/11/14/faker-1-9.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CZ1byrrJ.jpg"/>
        <updated>2019-11-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've published a new version of the popular PHP library Faker. The next one will be a major version, with breaking changes.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Web Worker à l'école des sorciers]]></title>
        <id>https://marmelab.com/blog/2019/11/20/magical-web-workers.html</id>
        <link href="https://marmelab.com/blog/2019/11/20/magical-web-workers.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/harryPotterSmall.EtL1Lk8a.jpeg"/>
        <updated>2019-11-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Découverte de la magie des web workers à travers React.]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3: Improved Developer Experience Thanks to React Hooks]]></title>
        <id>https://marmelab.com/blog/2019/11/20/react-admin-3-0.html</id>
        <link href="https://marmelab.com/blog/2019/11/20/react-admin-3-0.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.9utvbmm0.jpg"/>
        <updated>2019-11-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After 7 months of hard work, version 3.0 stable is finally here!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Au secours, mon poste ne démarre plus !]]></title>
        <id>https://marmelab.com/blog/2019/11/21/au-secours-mon-poste-ne-demarre-plus.html</id>
        <link href="https://marmelab.com/blog/2019/11/21/au-secours-mon-poste-ne-demarre-plus.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.D9Y40Cks.jpg"/>
        <updated>2019-11-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On connaît tous ce collègue qui, un matin, s'est retrouvé face à un écran noir. La plupart du temps, il suffit d'appeler le service support de l'entreprise. Mais chez nous, chaque dévelopeur est responsable de sa machine. Voilà comment nous gérons ça.]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Si Darwin avait raison, l'agilité fonctionne par hasard]]></title>
        <id>https://marmelab.com/blog/2019/11/26/darwin-agile.html</id>
        <link href="https://marmelab.com/blog/2019/11/26/darwin-agile.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.D8043V5G.jpg"/>
        <updated>2019-11-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Voici la vidéo de la conférence de 45 minutes sur Modern Agile que j'ai donnée à Agile France et au Forum PHP 2019.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build Your Own Design System With StencilJS]]></title>
        <id>https://marmelab.com/blog/2019/12/06/build-your-own-design-system-with-stenciljs.html</id>
        <link href="https://marmelab.com/blog/2019/12/06/build-your-own-design-system-with-stenciljs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.DrudmqQ0.png"/>
        <updated>2019-12-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Design Systems are an increasingly common practice in web development. Let's study how to do ours with StencilJS]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Quixo sur mobile grâce à React-native !]]></title>
        <id>https://marmelab.com/blog/2019/12/11/quixo-sur-mobile-grace-a-react-native.html</id>
        <link href="https://marmelab.com/blog/2019/12/11/quixo-sur-mobile-grace-a-react-native.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.D5Hx_H-M.png"/>
        <updated>2019-12-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nouvelle semaine d'intégration et nouvel objectif : pouvoir jouer à Quixo sur mobile !]]></summary>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3.1: Make Your Own Admin]]></title>
        <id>https://marmelab.com/blog/2019/12/18/react-admin-3-1.html</id>
        <link href="https://marmelab.com/blog/2019/12/18/react-admin-3-1.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BcuKNrOz.png"/>
        <updated>2019-12-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Easier theming, new components, and fine-tuned capabilities make react-admin suitable for even more projects.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab Helps WALLIX Prototype A Zero Knowledge App For Session Management]]></title>
        <id>https://marmelab.com/blog/2020/01/08/wallix.html</id>
        <link href="https://marmelab.com/blog/2020/01/08/wallix.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DOfAFC5Z.jpg"/>
        <updated>2020-01-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To build a zero-knowledge web application for managing a cluster of security proxies, we've had to push modern browsers to their limits]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Quixo en React isomorphic avec Next.js]]></title>
        <id>https://marmelab.com/blog/2020/01/15/quixo-react-iso-nextjs.html</id>
        <link href="https://marmelab.com/blog/2020/01/15/quixo-react-iso-nextjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.CxuEdYcl.png"/>
        <updated>2020-01-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Dernière semaine d'intégration pour développer une application React rendue côté serveur et la déployer !]]></summary>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Amnesty International: Taking advantage of the Lean Startup methodology to prove ourselves wrong]]></title>
        <id>https://marmelab.com/blog/2020/01/16/amnesty-build-measure-learn.html</id>
        <link href="https://marmelab.com/blog/2020/01/16/amnesty-build-measure-learn.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BE2fKotP.jpg"/>
        <updated>2020-01-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The ideas we had for the urgent actions application were just assumptions. We tested them with the help of the Build-Measure-Learn feedback loop, and were quite surprised with the results.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mocking an API with Polly.js]]></title>
        <id>https://marmelab.com/blog/2020/01/23/mocking-an-api-with-pollyjs.html</id>
        <link href="https://marmelab.com/blog/2020/01/23/mocking-an-api-with-pollyjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/polly-js-small.B2VCBuiw.png"/>
        <updated>2020-01-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[It is never easy to set up functional tests involving calls to an external API. Polly.js is a useful tool to know when you need to mock calls to an API.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why and How We Made Our Website Privacy Friendly]]></title>
        <id>https://marmelab.com/blog/2020/01/28/about-privacy.html</id>
        <link href="https://marmelab.com/blog/2020/01/28/about-privacy.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.iEl2X3Ov.jpg"/>
        <updated>2020-01-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Today is International Data Privacy Day, so we made some changes on our website to protect your privacy.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Getting The Ball Rolling With DeviceMotion]]></title>
        <id>https://marmelab.com/blog/2020/02/05/getting-the-ball-rolling-with-devicemotion.html</id>
        <link href="https://marmelab.com/blog/2020/02/05/getting-the-ball-rolling-with-devicemotion.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/raider_boulder_thumbnail.0Tykujp-.jpg"/>
        <updated>2020-02-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[There are two relatively new APIs in the browser: DeviceMotion and DeviceOrientation. Let's see how to use them to detect the device motion and orientation.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le temps réel avec GraphQL: Facile ou pas facile?]]></title>
        <id>https://marmelab.com/blog/2020/02/13/decouverte-graphql-temps-reel.html</id>
        <link href="https://marmelab.com/blog/2020/02/13/decouverte-graphql-temps-reel.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.OOGhkM1R.jpg"/>
        <updated>2020-02-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Mettre à jour des données en temps réel sur une application GraphQL, un défi? Une seule façon de le savoir: créons un prototype de sondage en temps réel.]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Programming A Space Invader In OCaml and OpenGL: Lessons Learned]]></title>
        <id>https://marmelab.com/blog/2020/02/21/ocaml-and-opengl-in-practice.html</id>
        <link href="https://marmelab.com/blog/2020/02/21/ocaml-and-opengl-in-practice.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-mini.CKncjPr5.jpeg"/>
        <updated>2020-02-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After a first experience with ReasonML, I wanted to check if its parent language, OCaml, was also that good. It took me an entire game to form a clear opinion.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Star Wars Agile Retrospectives: The Starfish and the Death Star]]></title>
        <id>https://marmelab.com/blog/2020/02/28/star-wars-star-fish.html</id>
        <link href="https://marmelab.com/blog/2020/02/28/star-wars-star-fish.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BsQmhKoU.jpg"/>
        <updated>2020-02-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We at the empire didn't do a great job with the Death Star. Let's use the Agile methodology to improve our process through a Retrospective.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Quoridor: Coffee time for the mouse]]></title>
        <id>https://marmelab.com/blog/2020/03/04/quoridor-part-2.html</id>
        <link href="https://marmelab.com/blog/2020/03/04/quoridor-part-2.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.BIYEoCxc.jpg"/>
        <updated>2020-03-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Second part of my feelings about my integration period at marmelab.]]></summary>
        <author>
            <name>Matthieu Chaffotte</name>
            <uri>https://github.com/mchaffotte</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin 3.3: Faster Navigation And Reduced Footprint Thanks To Application Cache]]></title>
        <id>https://marmelab.com/blog/2020/03/06/react-admin-3-3.html</id>
        <link href="https://marmelab.com/blog/2020/03/06/react-admin-3-3.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.B4gGJXwv.jpg"/>
        <updated>2020-03-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Save up to 50% scripting time and a lot of bandwidth in your react-admin applications]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[OpenAPI dans la jungle du REST]]></title>
        <id>https://marmelab.com/blog/2020/03/26/openapi-dans-la-jungle-du-rest.html</id>
        <link href="https://marmelab.com/blog/2020/03/26/openapi-dans-la-jungle-du-rest.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/apiJungleSquare.BNSLQVy4.jpg"/>
        <updated>2020-03-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[HATEOAS, JSON-LD, JSON API, HAL, Hydra ... La liste des acronymes de spécification liées au REST est longue. Quelle est la place d'OpenAPI dans cette liste ?]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Usine partagée : des visières contre le Covid-19]]></title>
        <id>https://marmelab.com/blog/2020/03/31/visieres-covid.html</id>
        <link href="https://marmelab.com/blog/2020/03/31/visieres-covid.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BtPp9jBO.jpg"/>
        <updated>2020-03-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Des volontaires Marmelab ont développé en un week-end une plateforme de commande de visières à usage médical.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Goridor: The Gopher Rest]]></title>
        <id>https://marmelab.com/blog/2020/04/09/quoridor-part-3.html</id>
        <link href="https://marmelab.com/blog/2020/04/09/quoridor-part-3.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.D5D1yjZ4.jpg"/>
        <updated>2020-04-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[My integration period at marmelab continues with the Go implementation of the Quoridor board game.]]></summary>
        <author>
            <name>Matthieu Chaffotte</name>
            <uri>https://github.com/mchaffotte</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[OpenAPI : un contrat pour vos API.s]]></title>
        <id>https://marmelab.com/blog/2020/04/17/openapi-un-contrat-pour-vos-apis.html</id>
        <link href="https://marmelab.com/blog/2020/04/17/openapi-un-contrat-pour-vos-apis.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/openAPI.DiRdpCTm.png"/>
        <updated>2020-04-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[La spécification OpenAPI permet d'écrire le contrat du service fourni par une API REST. Mais comment écrire un tel contrat et à quoi va-t-il servir ?]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3 Advanced Recipes - Adding Related Records Inline With Custom Forms]]></title>
        <id>https://marmelab.com/blog/2020/04/27/react-admin-tutorials-custom-forms-related-records.html</id>
        <link href="https://marmelab.com/blog/2020/04/27/react-admin-tutorials-custom-forms-related-records.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.Cenh3Su9.png"/>
        <updated>2020-04-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to migrate to react-admin v3 with this tutorial for a common feature in admin forms.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab recrute en télétravail]]></title>
        <id>https://marmelab.com/blog/2020/04/28/teletravail.html</id>
        <link href="https://marmelab.com/blog/2020/04/28/teletravail.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BDH8w1X6.jpg"/>
        <updated>2020-04-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Le confinement nous a appris que nous savons collaborer en télétravail. Nous pouvons donc recruter partout en France !]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Jérémie]]></title>
        <id>https://marmelab.com/blog/2020/04/30/bienvenue-jeremie.html</id>
        <link href="https://marmelab.com/blog/2020/04/30/bienvenue-jeremie.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.gsCLH6Rh.jpg"/>
        <updated>2020-04-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pour la première fois de son existence, Marmelab se dote d'un commercial. Et pas des moindres.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Nettoyage de printemps de nos projets open-source]]></title>
        <id>https://marmelab.com/blog/2020/05/13/nettoyage-de-printemps-sur-nos-projets-open-source.html</id>
        <link href="https://marmelab.com/blog/2020/05/13/nettoyage-de-printemps-sur-nos-projets-open-source.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/springCleaningThumb.IubACLwF.jpg"/>
        <updated>2020-05-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On trouve plus de 200 dépôts publics sur notre compte Github. Est-ce à dire que nous maintenons plus de 200 projets open-source ? Non, un petit nettoyage s'imposait...]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Gremlins.js 2: The New Batch]]></title>
        <id>https://marmelab.com/blog/2020/06/02/gremlins-2.html</id>
        <link href="https://marmelab.com/blog/2020/06/02/gremlins-2.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/gremlins_small.B2aSgWcg.png"/>
        <updated>2020-06-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've modernized the code of Gremlins.js, our monkey testing library for frontend apps. It's now super easy to detect memory leaks in your JavaScript code.]]></summary>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Modsir : Un modèle SIR pour simuler l'épidémie de COVID]]></title>
        <id>https://marmelab.com/blog/2020/06/03/modsir.html</id>
        <link href="https://marmelab.com/blog/2020/06/03/modsir.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BDf4tYRz.jpg"/>
        <updated>2020-06-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Modsir19 est un produit visant à modéliser et prévoir l’évolution de la pandémie Covid19 et ses conséquences sur l’occupation hospitalière. Marmelab a embarqué dans l'équipe pour 2 sprints de conception et développement des interfaces utilisateurs.]]></summary>
        <author>
            <name>Pierre-Etienne Moreau</name>
            <uri>https://github.com/pemoreau</uri>
        </author>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin 3.6: Easier Customization Of Edit and Create Views]]></title>
        <id>https://marmelab.com/blog/2020/06/09/react-admin-3-6.html</id>
        <link href="https://marmelab.com/blog/2020/06/09/react-admin-3-6.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DZd65ZOV.jpg"/>
        <updated>2020-06-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Three minor releases in the last three months: it's about time we look at the new features!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building A Web Application In 15 Minutes Using StrapiJS And NextJS]]></title>
        <id>https://marmelab.com/blog/2020/06/18/build-an-application-in-fiften-minutes-using-strapijs.html</id>
        <link href="https://marmelab.com/blog/2020/06/18/build-an-application-in-fiften-minutes-using-strapijs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-mini.DINo1H-e.jpeg"/>
        <updated>2020-06-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hands-on with StrapiJS, an Headless CMS that allows to separate data and display.]]></summary>
        <author>
            <name>Julien Demangeon</name>
            <uri>https://github.com/jdemangeon</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab est lauréat du Challenge Sobriété Numérique 2020]]></title>
        <id>https://marmelab.com/blog/2020/06/22/sobriete-numerique.html</id>
        <link href="https://marmelab.com/blog/2020/06/22/sobriete-numerique.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CTyIVWmI.png"/>
        <updated>2020-06-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Notre projet: améliorer l'impact environnemental de react-admin et d'API Platform Admin, deux framework open-source très utilisés.]]></summary>
        <author>
            <name>Florian Ferbach</name>
            <uri>https://github.com/floo51</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Handling JWT in Admin Apps the Right Way]]></title>
        <id>https://marmelab.com/blog/2020/07/02/manage-your-jwt-react-admin-authentication-in-memory.html</id>
        <link href="https://marmelab.com/blog/2020/07/02/manage-your-jwt-react-admin-authentication-in-memory.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/jwt-in-memory-thumbnail.DtwxTR9h.png"/>
        <updated>2020-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The best practice regarding JWT storage is to use memory rather than local storage. But it comes with numerous challenges. Let's see how to tackle these in the case of a react-admin application.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing React-Admin Enterprise Edition]]></title>
        <id>https://marmelab.com/blog/2020/09/02/react-admin-enterprise-edition.html</id>
        <link href="https://marmelab.com/blog/2020/09/02/react-admin-enterprise-edition.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BulXATCL.png"/>
        <updated>2020-09-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Buy additional modules on top of the OSS version, and professional support by Marmelab experts to streamline your react-admin development.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Changing The Look And Feel Of React-Admin Without JSX]]></title>
        <id>https://marmelab.com/blog/2020/09/11/react-admin-tutorials-build-your-own-theme.html</id>
        <link href="https://marmelab.com/blog/2020/09/11/react-admin-tutorials-build-your-own-theme.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.D1K08vYM.jpg"/>
        <updated>2020-09-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to customize the theme of a react-admin application without rewriting everything]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3 Advanced Recipes: Creating a Record Related to the Current One]]></title>
        <id>https://marmelab.com/blog/2020/09/16/react-admin-tutorials-form-for-related-records.html</id>
        <link href="https://marmelab.com/blog/2020/09/16/react-admin-tutorials-form-for-related-records.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/react-admin-tutorials-form-for-related-records-small.B9Qyzz_I.png"/>
        <updated>2020-09-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin doesn't offer a feature that you need? No problem, it's just React! This practical tutorial shows how to use the routing and a custom button to improve the user experience.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Developers Can Save The Planet, Part I: The Problem]]></title>
        <id>https://marmelab.com/blog/2020/09/21/web-developer-climate-change.html</id>
        <link href="https://marmelab.com/blog/2020/09/21/web-developer-climate-change.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.3W_p1pq_.jpg"/>
        <updated>2020-09-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How much CO2 do I emit on a typical day with my digital activities? Are the developers responsible for climate change?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Developers Can Save The Planet, Part II: The Solution]]></title>
        <id>https://marmelab.com/blog/2020/09/22/developers-save-the-planet-the-solution.html</id>
        <link href="https://marmelab.com/blog/2020/09/22/developers-save-the-planet-the-solution.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BP22hTRP.jpg"/>
        <updated>2020-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How can developers design, code, and host software to minimize their carbon footprint? How reliable are these practices?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Gagner l'estime des futurs développeurs en rédigeant des ADR]]></title>
        <id>https://marmelab.com/blog/2020/10/07/gagner-estime-futurs-developpeurs-redigeant-adr.html</id>
        <link href="https://marmelab.com/blog/2020/10/07/gagner-estime-futurs-developpeurs-redigeant-adr.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C3l6JENQ.jpg"/>
        <updated>2020-10-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les Architecture Decision Records (ADR) répondent à la question: Pourquoi a-t-on mis ça en place déjà ?]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin October 2020 Update]]></title>
        <id>https://marmelab.com/blog/2020/10/07/react-admin-october-update.html</id>
        <link href="https://marmelab.com/blog/2020/10/07/react-admin-october-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.97AgKZeQ.jpg"/>
        <updated>2020-10-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin 3.7, 3.8 and 3.9 introduce TypeScript support, Filter Sidebar, User Menu Improvements, and ListContext]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Into The Labyrinth With x3dom]]></title>
        <id>https://marmelab.com/blog/2020/10/16/into-the-labyrinth-with-x3dom.html</id>
        <link href="https://marmelab.com/blog/2020/10/16/into-the-labyrinth-with-x3dom.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/into-the-maze-thumbnail.BtIO61v6.jpg"/>
        <updated>2020-10-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What if you could create a 3D Labyrinth game with only HTML tags? That's the promise of x3dom, which I explore in practice in this tutorial]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/3d" term="3d"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin Enterprise Edition - October 2020 Update]]></title>
        <id>https://marmelab.com/blog/2020/10/21/ra-enterprise-october-update.html</id>
        <link href="https://marmelab.com/blog/2020/10/21/ra-enterprise-october-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DO7p_J_z.jpg"/>
        <updated>2020-10-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Accordion and Wizard Forms, Edit in dialog, Dual List Input, and Content Locks will make you more productive with react-admin.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Sunsetting PHP Faker]]></title>
        <id>https://marmelab.com/blog/2020/10/21/sunsetting-faker.html</id>
        <link href="https://marmelab.com/blog/2020/10/21/sunsetting-faker.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BXmqmV-D.jpg"/>
        <updated>2020-10-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I am the lead developer of a popular PHP library. I can't maintain it anymore or give it away, so I'm archiving the project.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Plugging React-Admin To Google Sheets]]></title>
        <id>https://marmelab.com/blog/2020/11/05/react-admin-data-provider-based-on-google-sheets.html</id>
        <link href="https://marmelab.com/blog/2020/11/05/react-admin-data-provider-based-on-google-sheets.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.Bi46yf3c.jpg"/>
        <updated>2020-11-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin pretends it can connect to any backend using a custom data provider. I decided to challenge this statement. How far did I go?]]></summary>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Checkoid, An Input Validation Library Built With Composition In Mind]]></title>
        <id>https://marmelab.com/blog/2020/11/13/presenting-checkoid.html</id>
        <link href="https://marmelab.com/blog/2020/11/13/presenting-checkoid.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/checkoid-blog-thumbnail.CdKuVKyy.jpg"/>
        <updated>2020-11-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've built a simple and powerful validation library that allows to combine validator like lego pieces.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment ARTE a simplifié le développement multi-plateforme à l’aide d’une API orientée front]]></title>
        <id>https://marmelab.com/blog/2020/11/18/arte-multi-plateforme.html</id>
        <link href="https://marmelab.com/blog/2020/11/18/arte-multi-plateforme.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C_AAeYJF.png"/>
        <updated>2020-11-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Voici la vidéo de la conférence que nous avons donnée au Forum PHP 2020.]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Argos: Measure The Carbon Footprint Of Software, Improve Developer Practices]]></title>
        <id>https://marmelab.com/blog/2020/11/26/argos-sustainable-development.html</id>
        <link href="https://marmelab.com/blog/2020/11/26/argos-sustainable-development.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dry5Ypmo.jpg"/>
        <updated>2020-11-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've built a tool measuring the energy consumption of web apps to help reduce the environmental impact of developers. See how it works in this preview.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Alleviate the health problems of sitting all-day]]></title>
        <id>https://marmelab.com/blog/2020/12/09/stretching-as-a-developer.html</id>
        <link href="https://marmelab.com/blog/2020/12/09/stretching-as-a-developer.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/sitting-thumbnail.D6l7Aprg.png"/>
        <updated>2020-12-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[As developers, we're sitting most of the day. Let's see what we do at Marmelab to counter the effects of the sitting position.]]></summary>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v3 Advanced Recipes: Managing User Profile]]></title>
        <id>https://marmelab.com/blog/2020/12/14/react-admin-v3-userprofile.html</id>
        <link href="https://marmelab.com/blog/2020/12/14/react-admin-v3-userprofile.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.D1GCRH8A.jpg"/>
        <updated>2020-12-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin doesn't offer a feature that you need? No problem, it's just React! This practical tutorial update shows how to allow users to edit their profile in React-admin v3.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Pascal]]></title>
        <id>https://marmelab.com/blog/2021/01/06/bienvenue-pascal.html</id>
        <link href="https://marmelab.com/blog/2021/01/06/bienvenue-pascal.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/pascal-small.BC0IXFmR.jpg"/>
        <updated>2021-01-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Doté d'un profil mixte dev / produit / innovation, mâtiné d'une formation en RSE, Pascal est une recrue de choix pour notre équipe de facilitateurs !]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Histoire d'une migration chez Arte, partie 1/3 : le contexte]]></title>
        <id>https://marmelab.com/blog/2021/01/07/migration-continue-chez-arte-pourquoi.html</id>
        <link href="https://marmelab.com/blog/2021/01/07/migration-continue-chez-arte-pourquoi.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/migration-arte-1-context-thumb.BRnsETvz.jpg"/>
        <updated>2021-01-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pourquoi nous nous sommes lancés dans un chantier de migration continue]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Histoire d'une migration chez Arte, partie 2/3 : la mise en place]]></title>
        <id>https://marmelab.com/blog/2021/01/13/migration-continue-chez-arte-mise-en-place.html</id>
        <link href="https://marmelab.com/blog/2021/01/13/migration-continue-chez-arte-mise-en-place.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/migration-arte-2-bootstrap-thumb.DNXWTv2q.jpg"/>
        <updated>2021-01-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Comment nous avons préparé un chantier de migration continue]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The True Power Of Monoids: How To Combine Validators]]></title>
        <id>https://marmelab.com/blog/2021/01/21/the-true-power-of-concat.html</id>
        <link href="https://marmelab.com/blog/2021/01/21/the-true-power-of-concat.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/true-power-thumbnail.C_lIprsX.jpg"/>
        <updated>2021-01-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Come and see monoids in real-life, in this tutorial explaining how to combine validator functions like lego pieces.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Histoire d'une migration chez Arte, partie 3/3 : action]]></title>
        <id>https://marmelab.com/blog/2021/01/22/migration-continue-chez-arte-action.html</id>
        <link href="https://marmelab.com/blog/2021/01/22/migration-continue-chez-arte-action.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/migration-arte-3-action-thumb.BzJHseAU.jpg"/>
        <updated>2021-01-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Comment nous avons mis en œuvre une migration continue]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin February 2021 Update]]></title>
        <id>https://marmelab.com/blog/2021/02/02/react-admin-february-2021-update.html</id>
        <link href="https://marmelab.com/blog/2021/02/02/react-admin-february-2021-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.5hhkjBIU.jpg"/>
        <updated>2021-02-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin 3.10, 3.11 and 3.12 introduce tons of improvements, including server-side validation, keyboard navigation, and optimistic mutations]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin Enterprise Edition - February 2021 Update]]></title>
        <id>https://marmelab.com/blog/2021/02/04/react-admin-ee-february-2020.html</id>
        <link href="https://marmelab.com/blog/2021/02/04/react-admin-ee-february-2020.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CF_Vlf7A.jpg"/>
        <updated>2021-02-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In the past 3 months, the Enterprise Edition got 3 new private modules: ra-search, ra-calendar, and ra-enterprise, in addition to saved queries in ra-preferences.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Validator assemble! Functors in Action]]></title>
        <id>https://marmelab.com/blog/2021/02/12/validator-assemble.html</id>
        <link href="https://marmelab.com/blog/2021/02/12/validator-assemble.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/assemble-thumbnail.DnmoiqHO.jpg"/>
        <updated>2021-02-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this new functional programming tutorial, I'll explain how Functors can help us assemble validator functions to validate complex data structures like objects.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tests d'intégration en Node.js: de Supertest à Frisby.js]]></title>
        <id>https://marmelab.com/blog/2021/02/19/test-integration-nodejs-de-supertest-a-frisbyjs.html</id>
        <link href="https://marmelab.com/blog/2021/02/19/test-integration-nodejs-de-supertest-a-frisbyjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DO7p_J_z.jpg"/>
        <updated>2021-02-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pourquoi et comment tester des APIs web ? Quels outils nous facilitent la tâche, et quels sont leurs limites ?]]></summary>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[FOSS interview : comfygure avec Kevin]]></title>
        <id>https://marmelab.com/blog/2021/02/26/foss-interview-comfygure-avec-kevin.html</id>
        <link href="https://marmelab.com/blog/2021/02/26/foss-interview-comfygure-avec-kevin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BBcrfLNd.png"/>
        <updated>2021-02-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Dans cette vidéo, Kevin nous parle du projet open-source comfygure]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Argos: Comparing the Energy Consumption of Two Web Stacks]]></title>
        <id>https://marmelab.com/blog/2021/03/04/argos-comparing-the-energy-consumption-of-two-web-stacks.html</id>
        <link href="https://marmelab.com/blog/2021/03/04/argos-comparing-the-energy-consumption-of-two-web-stacks.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DtIsakRd.jpg"/>
        <updated>2021-03-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Does an app in Node.js/Rails consume more energy than the same app in Vanilla.js+WebComponents/React.js? We've used Argos, our energy footprint calculator, to find out.]]></summary>
        <author>
            <name>Pierre-Etienne Moreau</name>
            <uri>https://github.com/pemoreau</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[FOSS interview : stretch-discord avec Maxime et Pierre]]></title>
        <id>https://marmelab.com/blog/2021/03/08/foss-interview-stretch-discord-avec-maxime-et-pierre.html</id>
        <link href="https://marmelab.com/blog/2021/03/08/foss-interview-stretch-discord-avec-maxime-et-pierre.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BBcrfLNd.png"/>
        <updated>2021-03-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Dans cette vidéo, Maxime et Pierre nous parlent du projet open-source stretch-discord]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <author>
            <name>Maxime Richard</name>
            <uri>https://github.com/zyhou</uri>
        </author>
        <author>
            <name>Pierre Haller</name>
            <uri>https://github.com/HALLERPierre</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Guillaume et Clément]]></title>
        <id>https://marmelab.com/blog/2021/03/09/bienvenue-guillaume-clement.html</id>
        <link href="https://marmelab.com/blog/2021/03/09/bienvenue-guillaume-clement.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dnj1t2uO.jpg"/>
        <updated>2021-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous accueillons presque en même temps deux développeurs full-stack expérimentés. Qui sont-ils?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Retour d'une intégration partie 1/2 : Le pentago en Python et Symfony]]></title>
        <id>https://marmelab.com/blog/2021/03/17/retour-integration-pentago-en-python-et-en-symfony.html</id>
        <link href="https://marmelab.com/blog/2021/03/17/retour-integration-pentago-en-python-et-en-symfony.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumb.DwLfkflS.png"/>
        <updated>2021-03-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retour d'expérience sur mes deux première semaines d'intégration chez marmelab ou j'ai développé, d'abord en Python puis en Symfony, le jeu Pentago.]]></summary>
        <author>
            <name>Clément Le Biez</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Onboarding chez Marmelab : 5 semaines pour faire un jeu - Semaine 1]]></title>
        <id>https://marmelab.com/blog/2021/03/31/integration-tipsy.html</id>
        <link href="https://marmelab.com/blog/2021/03/31/integration-tipsy.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/tipsy.CHjZtVpz.jpg"/>
        <updated>2021-03-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pendant 5 semaines j'ai développé un jeu en python, créé son api avec symfony, fait son IA en Go, écrit sa version mobile en react-native et publié une version web avec nextjs. Voici ce que je retiens de la première semaine.]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[FOSS interview : React-admin avec Gildas]]></title>
        <id>https://marmelab.com/blog/2021/04/06/foss-interview-react-admin-avec-gildas.html</id>
        <link href="https://marmelab.com/blog/2021/04/06/foss-interview-react-admin-avec-gildas.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BBcrfLNd.png"/>
        <updated>2021-04-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Dans cette vidéo, Gildas nous parle du projet open-source React-admin]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-Admin April 2021 Update]]></title>
        <id>https://marmelab.com/blog/2021/04/07/react-admin-april-update.html</id>
        <link href="https://marmelab.com/blog/2021/04/07/react-admin-april-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CRhwEHkD.png"/>
        <updated>2021-04-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[With react-admin 3.13 and 3.14, developer productivity continues to increase, and new developers should get up and running faster than before.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GreenFrame.io: What is the carbon footprint of a web page?]]></title>
        <id>https://marmelab.com/blog/2021/04/08/greenframe-io-website-carbon.html</id>
        <link href="https://marmelab.com/blog/2021/04/08/greenframe-io-website-carbon.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/preview.KSikHLC-.png"/>
        <updated>2021-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've made Argos, our tool for measuring the environmental impact of web apps, available for public web pages, for free.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment contrôler le temps dans un container Docker]]></title>
        <id>https://marmelab.com/blog/2021/04/15/comment-controler-le-temps-dans-un-container-docker.html</id>
        <link href="https://marmelab.com/blog/2021/04/15/comment-controler-le-temps-dans-un-container-docker.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/time-travel-thumbnail.CmMQlz2v.jpg"/>
        <updated>2021-04-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pour stabiliser des tests dépendant de la date, on peut changer la date d'un container. Mais est-ce que ce pouvoir n'est pas trop dangereux ?]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Retour d'une intégration partie 2/2 : Le pentago en Go et React Native]]></title>
        <id>https://marmelab.com/blog/2021/04/22/retour-integration-pentago-en-go-et-en-react-native.html</id>
        <link href="https://marmelab.com/blog/2021/04/22/retour-integration-pentago-en-go-et-en-react-native.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.ELBwuaKn.png"/>
        <updated>2021-04-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retour d'expérience sur mes deux dernières semaines d'intégration chez marmelab où j'ai développé une IA en Golang puis une application mobile en React native du jeu Pentago.]]></summary>
        <author>
            <name>Clément Le Biez</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/react-native" term="react-native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GreenFrame: Calculating The Impact of Cache on MediaWiki Carbon Emissions]]></title>
        <id>https://marmelab.com/blog/2021/04/29/greenframe-calculating-the-impact-of-cache-on-mediawiki-carbon-emissions.html</id>
        <link href="https://marmelab.com/blog/2021/04/29/greenframe-calculating-the-impact-of-cache-on-mediawiki-carbon-emissions.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blog-thumbnail.CNyAglMx.png"/>
        <updated>2021-04-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I have compared several configurations of a MediaWiki server, respectively with and without cache, and we found that caches play a major role in the energy footprint reduction.]]></summary>
        <author>
            <name>Antoine Fricker</name>
            <uri>https://www.linkedin.com/in/antoine-fricker-2a566754/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Atomic CRM, A New React-Admin Demo]]></title>
        <id>https://marmelab.com/blog/2021/05/06/react-admin-crm.html</id>
        <link href="https://marmelab.com/blog/2021/05/06/react-admin-crm.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dy1tC7Xt.jpg"/>
        <updated>2021-05-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin isn't just for admins. Check out how we used it to build a complete CRM solution.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
        <category scheme="https://marmelab.com/blog/tags/atomic-crm" term="atomic-crm"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Become a {javascript} ninja with Ninja Coder]]></title>
        <id>https://marmelab.com/blog/2021/05/27/ninja-coder.html</id>
        <link href="https://marmelab.com/blog/2021/05/27/ninja-coder.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.Dx8GyD2u.jpg"/>
        <updated>2021-05-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Recruiters ask everywhere for Ninja developers. We've built the perfect IDE for such developers, using Machine Learning and Pose detection.]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab Helps Broadcom Build A Customizable Developer Portal]]></title>
        <id>https://marmelab.com/blog/2021/06/08/broadcom-layer-7-react-admin.html</id>
        <link href="https://marmelab.com/blog/2021/06/08/broadcom-layer-7-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CoQEalKh.png"/>
        <updated>2021-06-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Broadcom leveraged react-admin to boost and enhance their API Management offering with API Hub, which provides an enriched API consumer-facing user experience]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[I Tested React Server Components And I'm Not A Fan (Yet).]]></title>
        <id>https://marmelab.com/blog/2021/06/15/react-server-components.html</id>
        <link href="https://marmelab.com/blog/2021/06/15/react-server-components.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/logo.DYWD0SGO.jpeg"/>
        <updated>2021-06-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React Server Components are an upcoming feature of the React framework. I wanted to form my own opinion about them. Spoiler: It's mixed]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Behold the Power of Laziness With Functional Programming]]></title>
        <id>https://marmelab.com/blog/2021/06/23/power-of-lazyness.html</id>
        <link href="https://marmelab.com/blog/2021/06/23/power-of-lazyness.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/finger-snap-thumbnail.DZmPpMH5.jpg"/>
        <updated>2021-06-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To finish the exploration of functional programming with the Checkoid internals, let's combine a synchronous Validator with asynchronous one with a lazy Promise... that is also a Monad.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Towards Digital Sustainability, A Keynote]]></title>
        <id>https://marmelab.com/blog/2021/06/29/towards-digital-sustainability.html</id>
        <link href="https://marmelab.com/blog/2021/06/29/towards-digital-sustainability.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cz_DgNdt.png"/>
        <updated>2021-06-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I had the pleasure to give a talk about how developers impact climate change at the SymfonyWorld Online 2021 conference. Here is the full-length video.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Overriding the Create-React-App Webpack Configuration Without Ejecting]]></title>
        <id>https://marmelab.com/blog/2021/07/22/cra-webpack-no-eject.html</id>
        <link href="https://marmelab.com/blog/2021/07/22/cra-webpack-no-eject.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BwpDj-Io.jpg"/>
        <updated>2021-07-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Create-React-App is a great tool to bootstrap React apps, but it can be quite painful when you need fine-grained control over the Webpack configuration.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing React.js Hooks And Components: The Missing Piece]]></title>
        <id>https://marmelab.com/blog/2021/08/31/testing-react.html</id>
        <link href="https://marmelab.com/blog/2021/08/31/testing-react.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BK7Hy44n.jpg"/>
        <updated>2021-08-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Leveraging storybook and testing-library makes integration tests a piece of cake - and I don't need more.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin September 2021 Update]]></title>
        <id>https://marmelab.com/blog/2021/09/08/react-admin-september-2021-update.html</id>
        <link href="https://marmelab.com/blog/2021/09/08/react-admin-september-2021-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.D6SiMfXU.jpg"/>
        <updated>2021-09-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[From 3.15 to 3.18, React-admin introduced tons of improvements, including a better sidebar, quick choice creation, and many List additions.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Onboarding chez Marmelab: Une symfony en une semaine]]></title>
        <id>https://marmelab.com/blog/2021/09/15/onboarding-chez-marmelab-de-lapi-et-de-lia.html</id>
        <link href="https://marmelab.com/blog/2021/09/15/onboarding-chez-marmelab-de-lapi-et-de-lia.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/symphony-robot.BmyFKByD.jpg"/>
        <updated>2021-09-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Apres avoir développé un jeu en python, voici comment j'ai créé son api avec Symfony.]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin Enterprise Edition - September 2021 Update]]></title>
        <id>https://marmelab.com/blog/2021/09/22/react-admin-ee-september-2021.html</id>
        <link href="https://marmelab.com/blog/2021/09/22/react-admin-ee-september-2021.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DtcfKXoi.jpg"/>
        <updated>2021-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In the past 6 months, the Enterprise Edition got 2 new private modules: ra-audit-log, and ra-rbac. ra-preferences now also features no-code components.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Discovering Rust by Playing the Quoridor Board Game]]></title>
        <id>https://marmelab.com/blog/2021/09/30/quoridor-rust.html</id>
        <link href="https://marmelab.com/blog/2021/09/30/quoridor-rust.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/corridor-rust.CvvHqQhS.png"/>
        <updated>2021-09-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To learn a new language, nothing beats practice. We've used Rust to redevelop a game that we already built in many other languages. Here are our impressions.]]></summary>
        <author>
            <name>Matthieu Chaffotte</name>
            <uri>https://github.com/mchaffotte</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using An SQLite Database Live In React-Admin]]></title>
        <id>https://marmelab.com/blog/2021/10/14/using-an-sqlite-database-live-in-react-admin.html</id>
        <link href="https://marmelab.com/blog/2021/10/14/using-an-sqlite-database-live-in-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blog-thumbnail.CO9x5If5.jpg"/>
        <updated>2021-10-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To use a database in a web app, we have to build an API. But what if we could use a database directly from the browser?]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab souhaite la bienvenue à Anthony et Alexandre]]></title>
        <id>https://marmelab.com/blog/2021/10/27/bienvenue-anthony-alexandre.html</id>
        <link href="https://marmelab.com/blog/2021/10/27/bienvenue-anthony-alexandre.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CCNHHSYn.png"/>
        <updated>2021-10-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous accueillons simultanément deux nouveaux développeurs full-stack. Voici leurs cursus.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using ESI elements with Next.js]]></title>
        <id>https://marmelab.com/blog/2021/11/04/using-esi-element-tags-with-nextjs.html</id>
        <link href="https://marmelab.com/blog/2021/11/04/using-esi-element-tags-with-nextjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/esi-thumbnail.DUGAKfE4.jpg"/>
        <updated>2021-11-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How we used Edge-Side Includes in a React.js application to boost the performance of a Server-Side Rendered application.]]></summary>
        <author>
            <name>Alexis Janvier</name>
            <uri>https://github.com/alexisjanvier</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[On a terminé le FALL CHALLENGE 2021]]></title>
        <id>https://marmelab.com/blog/2021/11/09/escape-coding-game-contest.html</id>
        <link href="https://marmelab.com/blog/2021/11/09/escape-coding-game-contest.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/fallChallenge2021.6QjofsLW.png"/>
        <updated>2021-11-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Notre petite équipe à défendu l'honneur de Marmelab sur l'escape game organisé par CodinGame.com]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <author>
            <name>Alexandre Herbeth</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How To Become A React-admin Grandmaster In 237 Easy Steps]]></title>
        <id>https://marmelab.com/blog/2021/11/10/become-a-react-admin-grandmaster.html</id>
        <link href="https://marmelab.com/blog/2021/11/10/become-a-react-admin-grandmaster.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.h6in4_NU.jpg"/>
        <updated>2021-11-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I gave a talk about advanced react-admin tips at this year's API Platform Conference in Lille, France. Here is the video of the talk.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Improving User Experience With A Mouse In A CLI Application]]></title>
        <id>https://marmelab.com/blog/2021/11/17/user-mouse-cli-blessed.html</id>
        <link href="https://marmelab.com/blog/2021/11/17/user-mouse-cli-blessed.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/hoverMarble.DLERQO5K.png"/>
        <updated>2021-11-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I used the blessed library to add mouse interactions to a terminal app, and it improved the user experience a lot.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vers la sobriété numérique, la conférence]]></title>
        <id>https://marmelab.com/blog/2021/11/18/vers-la-sobriete-numerique.html</id>
        <link href="https://marmelab.com/blog/2021/11/18/vers-la-sobriete-numerique.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.SrtJJSBh.jpg"/>
        <updated>2021-11-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[J'ai eu l'honneur d'ouvrir le Forum PHP 2021 à Paris avec une conférence de vulgarisation sur les enjeux de la Green Tech. Si vous l'avez ratée, la vidéo est en ligne !]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[We've sold 10,000$ Worth Of Ether And Donated It All To Charities]]></title>
        <id>https://marmelab.com/blog/2021/11/26/we-sold-all-our-ether.html</id>
        <link href="https://marmelab.com/blog/2021/11/26/we-sold-all-our-ether.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DbYfJGjs.jpg"/>
        <updated>2021-11-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Back in 2016, we mined 5 ethers to test the blockchain technology. This year, we've sold the remaining ether and donated the revenue to charities, because we don't want to speculate on global warming.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/blockchain" term="blockchain"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Brighter Future For The Web? Exploring Solid]]></title>
        <id>https://marmelab.com/blog/2021/12/01/a-possibly-brighter-future-for-the-web-exploring-solid.html</id>
        <link href="https://marmelab.com/blog/2021/12/01/a-possibly-brighter-future-for-the-web-exploring-solid.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.Ci3u0TkK.jpg"/>
        <updated>2021-12-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The current web is not what Tim Berners-Lee expected it to become, and he wants to fix it. He came up with a solution called Solid. Is it usable yet? Let's find out!]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Speed up the loading of your pages by using variable fonts]]></title>
        <id>https://marmelab.com/blog/2021/12/08/speed-up-the-loading-of-your-pages-by-using-variable-fonts.html</id>
        <link href="https://marmelab.com/blog/2021/12/08/speed-up-the-loading-of-your-pages-by-using-variable-fonts.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.B039UELq.jpg"/>
        <updated>2021-12-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Each font variant (bold, medium, etc.) requires an additional file, which slows down navigation. Except if you use variable fonts!]]></summary>
        <author>
            <name>Clément Le Biez</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building A Retro React-Admin Theme For Fun And Profit]]></title>
        <id>https://marmelab.com/blog/2021/12/15/retro-admin.html</id>
        <link href="https://marmelab.com/blog/2021/12/15/retro-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/old_computer.Do2_ZpQ2.jpeg"/>
        <updated>2021-12-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[While waiting for the react-admin of the future, let's discover the react-admin of the past.]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/css" term="css"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Sites médias : 70% de l'empreinte carbone vient des pubs et des stats]]></title>
        <id>https://marmelab.com/blog/2021/12/20/mesurons-lempreinte-carbone-des-plus-gros-sites-medias.html</id>
        <link href="https://marmelab.com/blog/2021/12/20/mesurons-lempreinte-carbone-des-plus-gros-sites-medias.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.tN9NaEY8.jpg"/>
        <updated>2021-12-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Editeurs de sites web, voici un outil et des recettes pour réduire votre impact environnemental]]></summary>
        <author>
            <name>Clément Le Biez</name>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab Welcomes Aníbal To The React-Admin Core Team]]></title>
        <id>https://marmelab.com/blog/2022/01/05/welcome-anibal.html</id>
        <link href="https://marmelab.com/blog/2022/01/05/welcome-anibal.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.ad-zS2_8.jpg"/>
        <updated>2022-01-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The React-admin team expands, with a new developer joining us from Montevideo, Uruguay]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/welcome" term="welcome"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Un dev chez les Product Owners]]></title>
        <id>https://marmelab.com/blog/2022/01/11/un-dev-en-immersion-au-school-of-product.html</id>
        <link href="https://marmelab.com/blog/2022/01/11/un-dev-en-immersion-au-school-of-product.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/school-of-po.Dghoynxe.webp"/>
        <updated>2022-01-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[J'ai participé à la conférence 'School of product' avec un regard de développeur, voici ce que j'en retiens.]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Decarbonization In The Media Industry: GreenFrame Helps France.TV To Reduce Its Digital Emissions]]></title>
        <id>https://marmelab.com/blog/2022/01/13/francetv-greenframe.html</id>
        <link href="https://marmelab.com/blog/2022/01/13/francetv-greenframe.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BZtRpW0u.jpg"/>
        <updated>2022-01-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[GreenFame, the carbon leak detector for websites, is now being used to tackle the new challenges caused by the transformation in the media industry.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Media Websites: 70% of the Carbon Footprint Caused by Ads and Stats]]></title>
        <id>https://marmelab.com/blog/2022/01/17/media-websites-carbon-emissions.html</id>
        <link href="https://marmelab.com/blog/2022/01/17/media-websites-carbon-emissions.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.tN9NaEY8.jpg"/>
        <updated>2022-01-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Website editors, here is a tool and guide to reduce your environmental impact]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <author>
            <name>Clément Le Biez</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Intégration: dépasser la peur de l'échec]]></title>
        <id>https://marmelab.com/blog/2022/01/20/la-peur-de-lechec.html</id>
        <link href="https://marmelab.com/blog/2022/01/20/la-peur-de-lechec.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.D9ImA6f9.jpg"/>
        <updated>2022-01-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Dans l'innovation, l'échec fait partie du quotidien. C'est l'un des premiers apprentissages des nouveaux arrivants chez Marmelab.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Réduire l'empreinte carbone d'un site web en pratique : le cas lemonde.fr]]></title>
        <id>https://marmelab.com/blog/2022/01/27/greenframe-lemonde-reduction-impact-carbone.html</id>
        <link href="https://marmelab.com/blog/2022/01/27/greenframe-lemonde-reduction-impact-carbone.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Om52-RR-.jpg"/>
        <updated>2022-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les équipes du Monde nous ont chargé de réduire les émissions de CO2 liées à l'utilisation de leur site de 30%. Pari tenu ?]]></summary>
        <author>
            <name>Clément Le Biez</name>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Run React-Admin On Next.Js]]></title>
        <id>https://marmelab.com/blog/2022/02/02/bootstrap-your-react-admin-project-with-nextjs.html</id>
        <link href="https://marmelab.com/blog/2022/02/02/bootstrap-your-react-admin-project-with-nextjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.R0YZ1dcQ.jpg"/>
        <updated>2022-02-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin is designed for single-page-apps, but can also run with an SSR framework like Next.js]]></summary>
        <author>
            <name>Anibal Svarcas</name>
            <uri>https://github.com/WiXSL</uri>
        </author>
        <author>
            <name>Adrien Amoros</name>
            <uri>https://github.com/Luwangel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How We Write For The Web]]></title>
        <id>https://marmelab.com/blog/2022/02/10/writing-for-web.html</id>
        <link href="https://marmelab.com/blog/2022/02/10/writing-for-web.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C0Uwl4kD.jpg"/>
        <updated>2022-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Everybody writes at Marmelab. Here is our secret sauce for publishing one good article per week for the past 9 years.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dessiner un logo en LOGO, c'est possible ?]]></title>
        <id>https://marmelab.com/blog/2022/02/23/old_language.html</id>
        <link href="https://marmelab.com/blog/2022/02/23/old_language.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/code.D3UnHvgF.png"/>
        <updated>2022-02-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Peut-on faire du beau code avec un vieux language périmé ? La seule façon de le savoir, c'est d'essayer !]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why You Should Upgrade To Material-UI V5]]></title>
        <id>https://marmelab.com/blog/2022/02/27/mui-v5-rocks.html</id>
        <link href="https://marmelab.com/blog/2022/02/27/mui-v5-rocks.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DmUC0smc.jpg"/>
        <updated>2022-02-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The latest version of the React component library boosts the developer experience when writing custom styles.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment réduire l’empreinte écologique d’un service numérique ?]]></title>
        <id>https://marmelab.com/blog/2022/03/02/reduire-impact-site-web.html</id>
        <link href="https://marmelab.com/blog/2022/03/02/reduire-impact-site-web.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BA0wee5V.jpg"/>
        <updated>2022-03-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une démarche outillée pour mettre en oeuvre une stratégie "Green Tech".]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Bull: Traitements asynchrones en Node.js]]></title>
        <id>https://marmelab.com/blog/2022/03/09/inist-bulljs.html</id>
        <link href="https://marmelab.com/blog/2022/03/09/inist-bulljs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/queue.Bi9eveh_.jpg"/>
        <updated>2022-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retour sur la mise en place d'un système de workers en tâche de fond sur une application web pour le CNRS]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implementing Path-Finding On A Hexagonal Board]]></title>
        <id>https://marmelab.com/blog/2022/03/22/implementing-path-finding-on-a-hexagonal-board.html</id>
        <link href="https://marmelab.com/blog/2022/03/22/implementing-path-finding-on-a-hexagonal-board.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.WZhxWVc7.jpg"/>
        <updated>2022-03-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Board games present unexpected programming challenges, and I learned many lessons by trying to detect the winner of a simple - yet very interesting - game of Hex.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin V4: No More Props Injection]]></title>
        <id>https://marmelab.com/blog/2022/03/30/react-admin-v4-no-props-injection.html</id>
        <link href="https://marmelab.com/blog/2022/03/30/react-admin-v4-no-props-injection.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.6Sm2Jv5_.jpg"/>
        <updated>2022-03-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The new major version of react-admin improves developer experience a great deal thanks to one simple trick.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Digital Carbon Footprint: The Current State of Measuring Tools]]></title>
        <id>https://marmelab.com/blog/2022/04/05/greenframe-compare.html</id>
        <link href="https://marmelab.com/blog/2022/04/05/greenframe-compare.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CPMiyitg.jpg"/>
        <updated>2022-04-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Benchmarking the CO2 emissions estimated by GreenIT Analysis, Website Carbon, Digital Beacon, GreenFrame, Ecograder, and PageSpeed Insight on the same website, weather.com.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin V4: Persistent Preferences]]></title>
        <id>https://marmelab.com/blog/2022/04/05/react-admin-v4-stored-preferences.html</id>
        <link href="https://marmelab.com/blog/2022/04/05/react-admin-v4-stored-preferences.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CpvBsOlS.jpg"/>
        <updated>2022-04-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The new major version introduces a new set of features centered around User Experience and preferences.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin V4: Goodbye, Redux!]]></title>
        <id>https://marmelab.com/blog/2022/04/08/react-admin-v4-goodbye-redux.html</id>
        <link href="https://marmelab.com/blog/2022/04/08/react-admin-v4-goodbye-redux.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CKGe5An4.jpg"/>
        <updated>2022-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The most important difference between react-admin v3 and v4 lies under the hood. React-admin v4 no longer uses Redux for state management - without changing the developer API.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin V4: Build Your Own Framework]]></title>
        <id>https://marmelab.com/blog/2022/04/11/react-admin-v4-build-your-own-framework.html</id>
        <link href="https://marmelab.com/blog/2022/04/11/react-admin-v4-build-your-own-framework.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.o6z-u05b.jpg"/>
        <updated>2022-04-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you had to write a framework for single-page apps, chances are you would probably build something close to react-admin v4.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin V4: Switching Form Library]]></title>
        <id>https://marmelab.com/blog/2022/04/12/react-admin-v4-new-form-framework.html</id>
        <link href="https://marmelab.com/blog/2022/04/12/react-admin-v4-new-form-framework.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CP4FPUA-.jpg"/>
        <updated>2022-04-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We replaced react-final-form with react-hook-form. Why did we make the switch and what does it change for you?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing React-admin V4]]></title>
        <id>https://marmelab.com/blog/2022/04/13/react-admin-v4.html</id>
        <link href="https://marmelab.com/blog/2022/04/13/react-admin-v4.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DaR6i-zp.webp"/>
        <updated>2022-04-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After over 6 months of development, we are excited to introduce the new major version of react-admin.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Déployer un site statique client-side via Amazon S3]]></title>
        <id>https://marmelab.com/blog/2022/04/27/deploiement-site-statique-avec-amazon-s3.html</id>
        <link href="https://marmelab.com/blog/2022/04/27/deploiement-site-statique-avec-amazon-s3.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.WYsMJToo.jpg"/>
        <updated>2022-04-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un guide pas à pas pour tirer parti des services AWS pour son site internet]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Rendre Les Scripts Bash Lisibles Par Un Dev JS]]></title>
        <id>https://marmelab.com/blog/2022/05/05/bash-script-google-zx.html</id>
        <link href="https://marmelab.com/blog/2022/05/05/bash-script-google-zx.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/musee_info.DnM6eEVq.jpg"/>
        <updated>2022-05-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Vous êtes dev JS ? Vous en avez assez de ne pas savoir lire les oneliners bash ? Alors en voiture !]]></summary>
        <author>
            <name>Alexandre Herbeth</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin Enterprise Edition, Now In V4]]></title>
        <id>https://marmelab.com/blog/2022/06/07/ra-ee-v4.html</id>
        <link href="https://marmelab.com/blog/2022/06/07/ra-ee-v4.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DbMi-Jt0.png"/>
        <updated>2022-06-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[RBAC, editable datagrid, many-to-many relationships, realtime, calendar, audit log, site search, and more: the private modules are now available for the latest version of react-admin.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Deploying A Web App With Docker And AWS Fargate]]></title>
        <id>https://marmelab.com/blog/2022/06/08/deploy-a-web-application-with-docker-and-aws-fargate.html</id>
        <link href="https://marmelab.com/blog/2022/06/08/deploy-a-web-application-with-docker-and-aws-fargate.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.EYDFkLhV.jpg"/>
        <updated>2022-06-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A step-by-step guide, with screenshots, that I built during my integration challenge]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[De la programmation orientée objet à la programmation fonctionnelle]]></title>
        <id>https://marmelab.com/blog/2022/06/20/de-la-programmation-oriente-objet-a-la-programmation-fonctionnelle.html</id>
        <link href="https://marmelab.com/blog/2022/06/20/de-la-programmation-oriente-objet-a-la-programmation-fonctionnelle.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.Bj9eQCTs.jpg"/>
        <updated>2022-06-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Lors de mon intégration, venant du monde de Java, j'ai dû apprendre à utiliser des concepts de la programmation fonctionnelle.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/functional-programming" term="functional-programming"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A State Management Tour: Proxy State With Valtio]]></title>
        <id>https://marmelab.com/blog/2022/06/23/proxy-state-with-valtio.html</id>
        <link href="https://marmelab.com/blog/2022/06/23/proxy-state-with-valtio.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/logo.BJeRw9Rg.svg"/>
        <updated>2022-06-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I try to simplify my state management approach using a proxy based tool, Valtio]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Installing React-Admin In A Remix App]]></title>
        <id>https://marmelab.com/blog/2022/07/01/add-react-admin-to-your-remix-app-using-supabase.html</id>
        <link href="https://marmelab.com/blog/2022/07/01/add-react-admin-to-your-remix-app-using-supabase.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blog-thumbnail.CDBxeHBA.jpg"/>
        <updated>2022-07-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A step-by-step example explaining how to use React-Admin inside a Remix app, and how to configure it to use Supabase as the data provider.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin Reached 20,000 Stars On GitHub]]></title>
        <id>https://marmelab.com/blog/2022/07/06/react-admin-20-000-stars.html</id>
        <link href="https://marmelab.com/blog/2022/07/06/react-admin-20-000-stars.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.I9nHZRnK.webp"/>
        <updated>2022-07-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've managed to build a sustainable open-source project! This is a dream come true.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Caritas Uses React-Admin To Accelerate Their Intranet Development]]></title>
        <id>https://marmelab.com/blog/2022/07/07/react-admin-caritas.html</id>
        <link href="https://marmelab.com/blog/2022/07/07/react-admin-caritas.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.rQiBexVw.webp"/>
        <updated>2022-07-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Interview of Alex, head of web dev at Caritas, and Cornelius, PO.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[LorrainJS: la librairie qui parle Lorrain]]></title>
        <id>https://marmelab.com/blog/2022/07/20/lorrain-js.html</id>
        <link href="https://marmelab.com/blog/2022/07/20/lorrain-js.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/lorraine.DqYUBBXA.png"/>
        <updated>2022-07-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Découvrez les prototypes JavaScript, les expressions régulières, et la publication de package npm grâce à une librairie que personne, personne n'a jamais demandée]]></summary>
        <author>
            <name>Alexandre Herbeth</name>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
        <category scheme="https://marmelab.com/blog/tags/accessibility" term="accessibility"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Les ~10 préceptes de la revue de code]]></title>
        <id>https://marmelab.com/blog/2022/08/25/les-10-commandements-de-la-revue-de-code.html</id>
        <link href="https://marmelab.com/blog/2022/08/25/les-10-commandements-de-la-revue-de-code.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/review.DFZsU7uZ.jpg"/>
        <updated>2022-08-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Faire des revues de code, c'est bien, mais comment bien les faire?]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[IA: Comment se faire battre par sa propre création]]></title>
        <id>https://marmelab.com/blog/2022/09/02/coder-une-ia-imbattable-a-abalone.html</id>
        <link href="https://marmelab.com/blog/2022/09/02/coder-une-ia-imbattable-a-abalone.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.fhjlXQya.jpg"/>
        <updated>2022-09-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Pendant mon intégration chez Marmelab, j'ai développé un algorithme pour jouer à Abalone. Il est (vraiment) imbattable.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin September 2022 Update]]></title>
        <id>https://marmelab.com/blog/2022/09/05/react-admin-septempter-2022-updates.html</id>
        <link href="https://marmelab.com/blog/2022/09/05/react-admin-septempter-2022-updates.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DSPexp-N.webp"/>
        <updated>2022-09-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Since version 4.0, react-admin released many great features both in the open-source and enterprise editions. References and Forms, in particular, have received many upgrades.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convertir un projet Docker Compose en Kubernetes, partie 1]]></title>
        <id>https://marmelab.com/blog/2022/09/12/premier-contact-avec-kubernetes.html</id>
        <link href="https://marmelab.com/blog/2022/09/12/premier-contact-avec-kubernetes.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BgdHka_V.jpg"/>
        <updated>2022-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Kubernetes n'est pas si complexe d'utilisation qu'on le dit. Voyons en douceur comment migrer depuis docker-compose.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React I Love You, But You're Bringing Me Down]]></title>
        <id>https://marmelab.com/blog/2022/09/20/react-i-love-you.html</id>
        <link href="https://marmelab.com/blog/2022/09/20/react-i-love-you.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DpIGyZpP.webp"/>
        <updated>2022-09-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've come a long, long way together. You changed. Where do we go from here?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convertir un projet Docker Compose en Kubernetes, partie 2]]></title>
        <id>https://marmelab.com/blog/2022/09/28/premier-contact-avec-kubernetes-partie2.html</id>
        <link href="https://marmelab.com/blog/2022/09/28/premier-contact-avec-kubernetes-partie2.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BgdHka_V.jpg"/>
        <updated>2022-09-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Découvrons les fonctionnalités clés de K8s avec notre application fraîchement migrée.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create a CRUD API In Minutes With PostgREST]]></title>
        <id>https://marmelab.com/blog/2022/10/05/postgrest-api.html</id>
        <link href="https://marmelab.com/blog/2022/10/05/postgrest-api.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/flash.CIyXt4hY.jpg"/>
        <updated>2022-10-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[PostgREST lets developers expose a REST API based on an existing database with almost no code. Let's discover how setup this tool!]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin, Now On Discord]]></title>
        <id>https://marmelab.com/blog/2022/10/12/react-admin-discord.html</id>
        <link href="https://marmelab.com/blog/2022/10/12/react-admin-discord.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.n-K4t62N.webp"/>
        <updated>2022-10-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The new place to discuss react-admin, ask questions, and get help.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Copilot Made Me An Augmented Programmer]]></title>
        <id>https://marmelab.com/blog/2022/10/19/ai-augmented-coder.html</id>
        <link href="https://marmelab.com/blog/2022/10/19/ai-augmented-coder.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.B849UOV-.webp"/>
        <updated>2022-10-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Programming with AI-powered assistants like GitHub Copilot feels like being in a science fiction movie - for better and for worse.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Writing A React-Admin Data Provider For Offline-First Applications]]></title>
        <id>https://marmelab.com/blog/2022/10/26/create-an-localforage-dataprovider-in-react-admin.html</id>
        <link href="https://marmelab.com/blog/2022/10/26/create-an-localforage-dataprovider-in-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/storage.DgmaDGPp.jpg"/>
        <updated>2022-10-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Can we use react-admin with only client-side storage? Leveraging LocalForage, which uses InnoDB and is not limited in size, react-admin becomes the ideal tool for offline-first web applications.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Niji & GreenFrame, exemple d'un partenariat réussi]]></title>
        <id>https://marmelab.com/blog/2022/11/03/greenframe-niji.html</id>
        <link href="https://marmelab.com/blog/2022/11/03/greenframe-niji.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Bsur_4aR.webp"/>
        <updated>2022-11-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Niji a sponsorisé le support de Kubernetes dans GreenFrame, notre outil d'analyse de l'empreinte carbone des sites web.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GreenFrame Is Open-Source]]></title>
        <id>https://marmelab.com/blog/2022/11/09/greenframe-open-source.html</id>
        <link href="https://marmelab.com/blog/2022/11/09/greenframe-open-source.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.fv_8m5t3.webp"/>
        <updated>2022-11-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The best developer tool to measure the carbon footprint of websites is now free to use.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Au coeur du Volcamp]]></title>
        <id>https://marmelab.com/blog/2022/11/17/volcamp.html</id>
        <link href="https://marmelab.com/blog/2022/11/17/volcamp.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/logo-volcamp.7j6Sv68L.png"/>
        <updated>2022-11-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On a assisté à la conférence Volcamp en Auvergne, inflitrés au coeur du domaine du groupe LavaJUG. Voici ce qu'on en a retenu]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a B2B app with Strapi and React-Admin]]></title>
        <id>https://marmelab.com/blog/2022/11/28/building-a-crud-app-with-strapi-and-react-admin.html</id>
        <link href="https://marmelab.com/blog/2022/11/28/building-a-crud-app-with-strapi-and-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/building.BA_rDYQg.png"/>
        <updated>2022-11-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Combining a backend-as-a-service and a low-code tool lets you develop web apps super fast]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin December 2022 Update]]></title>
        <id>https://marmelab.com/blog/2022/12/08/react-admin-december-2022-update.html</id>
        <link href="https://marmelab.com/blog/2022/12/08/react-admin-december-2022-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.VvWADcA_.png"/>
        <updated>2022-12-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Configurable components, Edit in dialog, useInfiniteGetList, Discord server, better inputs documentation, and many more new features to discover in the last 3 releases.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Multi-Tenant Single-Page Apps: Dos and Don'ts]]></title>
        <id>https://marmelab.com/blog/2022/12/14/multitenant-spa.html</id>
        <link href="https://marmelab.com/blog/2022/12/14/multitenant-spa.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Bpdn6ZYf.webp"/>
        <updated>2022-12-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How can you implement multitenancy in React, Vue, Svelte, or any other frontend framework?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How To Implement Web Login In A Private NPM Registry]]></title>
        <id>https://marmelab.com/blog/2022/12/22/how-to-implement-web-login-in-a-private-npm-registry.html</id>
        <link href="https://marmelab.com/blog/2022/12/22/how-to-implement-web-login-in-a-private-npm-registry.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/npm-web-login-cover-small.BUtP4nTk.png"/>
        <updated>2022-12-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[NPM v9 is now using Web Login as its default authentication type. Let's see how it works and what it takes to implement it in a private registry.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Securely Managing Database Secrets With Vault]]></title>
        <id>https://marmelab.com/blog/2023/01/05/securely-manage-database-secrets-with-vault.html</id>
        <link href="https://marmelab.com/blog/2023/01/05/securely-manage-database-secrets-with-vault.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.ikX8M7oj.jpeg"/>
        <updated>2023-01-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this post, I will show how to setup the root and user credentials for a Postgres database in a truly secure way, leveraging a secret management system.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[useAsyncEffect: The Missing React Hook]]></title>
        <id>https://marmelab.com/blog/2023/01/11/use-async-effect-react.html</id>
        <link href="https://marmelab.com/blog/2023/01/11/use-async-effect-react.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Pii3TkfD.webp"/>
        <updated>2023-01-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Introducing a new React hook that allows you to run asynchronous side effects in a simple way.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[EdgeDB, A New Competitor In The Database Area]]></title>
        <id>https://marmelab.com/blog/2023/01/19/edgedb-a-new-competitor-in-database-area.html</id>
        <link href="https://marmelab.com/blog/2023/01/19/edgedb-a-new-competitor-in-database-area.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dmt2eBdw.webp"/>
        <updated>2023-01-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How EgdeDb differs from other databases, does it compete, does it works? Let's check this.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/database" term="database"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab Celebrates 10 Years Of Digital Innovation]]></title>
        <id>https://marmelab.com/blog/2023/01/23/marmelab-s-tenth-anniversary.html</id>
        <link href="https://marmelab.com/blog/2023/01/23/marmelab-s-tenth-anniversary.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DEHL5V1z.webp"/>
        <updated>2023-01-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A decade of designing and developing web and mobile apps for clients: Let's look back on 10 years of exploration, sharing, and caring.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Rive: Animate Web UIs with State Machines]]></title>
        <id>https://marmelab.com/blog/2023/01/30/rive-animation-state-machine.html</id>
        <link href="https://marmelab.com/blog/2023/01/30/rive-animation-state-machine.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/generic-blog-thumbnail.Ba7f8ZxH.png"/>
        <updated>2023-01-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Rive helps you create animations with state-machine]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Without useEffect]]></title>
        <id>https://marmelab.com/blog/2023/02/01/react-without-useeffect.html</id>
        <link href="https://marmelab.com/blog/2023/02/01/react-without-useeffect.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.eDpG2L08.webp"/>
        <updated>2023-02-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[useEffect is the hardest part of React - and the most error-prone. What if we could build entire React apps without this hook? It's possible - but you need a framework.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Are No-Code Tools A Good Choice For Developers?]]></title>
        <id>https://marmelab.com/blog/2023/02/17/build-a-react-admin-like-interface-in-no-code.html</id>
        <link href="https://marmelab.com/blog/2023/02/17/build-a-react-admin-like-interface-in-no-code.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/no-code-thumbnail.Bq-5JT5G.jpg"/>
        <updated>2023-02-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Developers often use low-code tools like react-admin to increase their development speed. But what about no-code tools? How far can they get and are they nice to use?]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/no-code" term="no-code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Acme Refrigerator HelpDesk, A New React-Admin Demo]]></title>
        <id>https://marmelab.com/blog/2023/02/23/react-admin-help-desk-demo.html</id>
        <link href="https://marmelab.com/blog/2023/02/23/react-admin-help-desk-demo.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dz5stqPI.webp"/>
        <updated>2023-02-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The best way to learn react-admin is by looking at existing apps. Here is a new one to learn from.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Copilot to Review Code And Fund Open-Source Projects]]></title>
        <id>https://marmelab.com/blog/2023/02/27/copilot-code-review.html</id>
        <link href="https://marmelab.com/blog/2023/02/27/copilot-code-review.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cg6vVTeu.webp"/>
        <updated>2023-02-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What if we could use AI to spot bugs, suggest improvements, and pay open-source developers for their work?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin March 2023 Update]]></title>
        <id>https://marmelab.com/blog/2023/03/01/react-admin-march-2023-update.html</id>
        <link href="https://marmelab.com/blog/2023/03/01/react-admin-march-2023-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.D8W2enSm.webp"/>
        <updated>2023-03-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DataProvider callbacks, Count components, OAuth support, Custom Resource routes, and many more new features to discover in the last 2 releases.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building A Graphical User Interface in the Terminal using Go]]></title>
        <id>https://marmelab.com/blog/2023/03/13/building-graphical-ui-go.html</id>
        <link href="https://marmelab.com/blog/2023/03/13/building-graphical-ui-go.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CKyVoTNr.jpg"/>
        <updated>2023-03-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[For my onboarding at Marmelab, I built the Labyrinth game with a command line interface using Go and GOCUI.]]></summary>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Marmelab Helped iad Boost Transparency and Recruitment with Customizable Income Prediction Tool]]></title>
        <id>https://marmelab.com/blog/2023/03/14/iad-reference.html</id>
        <link href="https://marmelab.com/blog/2023/03/14/iad-reference.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cdi1mH-l.jpg"/>
        <updated>2023-03-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[IAD disrupts traditional real estate by fostering independent consultants and enhancing their experience with a Marmelab-created revenue simulator.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Creating Custom Form Layouts With React Admin]]></title>
        <id>https://marmelab.com/blog/2023/03/22/creating-custom-form-layouts-with-react-admin.html</id>
        <link href="https://marmelab.com/blog/2023/03/22/creating-custom-form-layouts-with-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blog-thumbnail.CPAqfVAO.jpg"/>
        <updated>2023-03-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React Admin is a very convenient tool to create fully-featured forms quickly. Let's have a look at how to customize a form layout to improve its readability and the user experience.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using AI To Pilot A Racing Car With The Voice]]></title>
        <id>https://marmelab.com/blog/2023/03/23/handless-racing-game-with-ai.html</id>
        <link href="https://marmelab.com/blog/2023/03/23/handless-racing-game-with-ai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/demo.CTPR0yW_.png"/>
        <updated>2023-03-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We built a handless game with TensorFlow and JavaScript to learn how to integrate AI into web applications.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Let's Play Poker (Planning)]]></title>
        <id>https://marmelab.com/blog/2023/03/30/lets-play-poker.html</id>
        <link href="https://marmelab.com/blog/2023/03/30/lets-play-poker.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/pokertitle-small.CPrfeVZV.jpeg"/>
        <updated>2023-03-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Building a collaborative Planning Poker Application with no server using peerJS.]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reducing Our Impact: Marmelab's Pursuit of a Smaller Carbon Footprint]]></title>
        <id>https://marmelab.com/blog/2023/04/06/marmelab-carbon-footprint.html</id>
        <link href="https://marmelab.com/blog/2023/04/06/marmelab-carbon-footprint.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BcFonLyG.jpg"/>
        <updated>2023-04-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Our agency emits 2.2tCO2e per employee per year, less that half of the sector average. And we're actively working to reduce our carbon footprint.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[What Is The Carbon Footprint Of Data Centers?]]></title>
        <id>https://marmelab.com/blog/2023/04/12/carbon-impact-of-data-centers.html</id>
        <link href="https://marmelab.com/blog/2023/04/12/carbon-impact-of-data-centers.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/data-center-carbon-impact-thumbnail.B7pVH61P.png"/>
        <updated>2023-04-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[My key takeaways about an academic conference held last month at Loria, where I learned about the carbon footprint of data centers and its impact.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building A Custom Tags Selector With React-Admin]]></title>
        <id>https://marmelab.com/blog/2023/04/26/build-a-custom-tags-selector-with-react-admin.html</id>
        <link href="https://marmelab.com/blog/2023/04/26/build-a-custom-tags-selector-with-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blog-thumbnail.DR89pkzb.png"/>
        <updated>2023-04-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How react-admin data provider hooks streamline the development of complex components.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Des pratiques commerciales open-source ?]]></title>
        <id>https://marmelab.com/blog/2023/05/05/un-commercial-open-source.html</id>
        <link href="https://marmelab.com/blog/2023/05/05/un-commercial-open-source.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CWolh5xP.webp"/>
        <updated>2023-05-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Les développeurs et facilitateurs partagent souvent ici leurs secrets de fabrication. Les commerciaux, jamais. Il est temps de réparer cette injustice.]]></summary>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Porting React-Admin to Solid]]></title>
        <id>https://marmelab.com/blog/2023/05/11/porting-react-admin-to-solidjs.html</id>
        <link href="https://marmelab.com/blog/2023/05/11/porting-react-admin-to-solidjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.C3ZjZO6M.webp"/>
        <updated>2023-05-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Is Solid.js mature enough to build complex web apps? What are the core differences with React? To answer these questions, we developed solid-admin. Let's dive in!]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/solidjs" term="solidjs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[User-Centric Testing using React Testing Library]]></title>
        <id>https://marmelab.com/blog/2023/05/26/react-user-centric-testing.html</id>
        <link href="https://marmelab.com/blog/2023/05/26/react-user-centric-testing.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DLpmnxi_.webp"/>
        <updated>2023-05-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to use Vitest and React Testing Library to write unit and integration tests for a Search Component.]]></summary>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/integration" term="integration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convert GIF to WebM Files to Reduce the Carbon Footprint of Your Website]]></title>
        <id>https://marmelab.com/blog/2023/06/01/an-effort-to-improve-the-carbon-footprint-of-the-react-admin-website.html</id>
        <link href="https://marmelab.com/blog/2023/06/01/an-effort-to-improve-the-carbon-footprint-of-the-react-admin-website.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/157shots_so.IPzTL8ov.png"/>
        <updated>2023-06-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Reducing the size of the video assets of the React Admin documentation certainly is a simple way to reduce its carbon footprint. But this comes with some challenges. Hence, we've built a CLI tool to make the process easier.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Is React Having An Angular.js Moment?]]></title>
        <id>https://marmelab.com/blog/2023/06/05/react-angularjs-moment.html</id>
        <link href="https://marmelab.com/blog/2023/06/05/react-angularjs-moment.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.S2qpTmfp.jpg"/>
        <updated>2023-06-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React Server Components, while innovative, risk causing division in the React community due to their potential to undermine Single-Page App architecture.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building Artificial Consciousness With GPT-3]]></title>
        <id>https://marmelab.com/blog/2023/06/06/artificial-consciousness.html</id>
        <link href="https://marmelab.com/blog/2023/06/06/artificial-consciousness.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BxhqF-rQ.jpg"/>
        <updated>2023-06-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Meet Molly, a conversational agent with an inner monologue, who gives the illusion of consciousness.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tech, Crêpes, et Éthique. Marmelab était à MiXiT !]]></title>
        <id>https://marmelab.com/blog/2023/06/12/mixit-2023.html</id>
        <link href="https://marmelab.com/blog/2023/06/12/mixit-2023.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/large.DvfKLBI8.png"/>
        <updated>2023-06-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[La conférence lyonnaise sur la tech mais surtout sur ce qu'il y a autour.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin June 2023 Update]]></title>
        <id>https://marmelab.com/blog/2023/06/13/react-admin-june-2023-update.html</id>
        <link href="https://marmelab.com/blog/2023/06/13/react-admin-june-2023-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/large.DtNczlGt.png"/>
        <updated>2023-06-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Infinite pagination, dark mode, ReferenceOneInput, zero-config server-side validation, auto-saving forms, TreeInput, create-react-admin, and much more!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Internationalization with Polyglot.js and NestJS]]></title>
        <id>https://marmelab.com/blog/2023/06/27/internationalization-with-polyglotjs-and-nestjs.html</id>
        <link href="https://marmelab.com/blog/2023/06/27/internationalization-with-polyglotjs-and-nestjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-small.v1XsdiOv.jpg"/>
        <updated>2023-06-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[See how to manage translation with Polyglot.js and a NestJS backend, and take advantage of interpolation and pluralization!]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-Admin vs Refine: Feature Comparison]]></title>
        <id>https://marmelab.com/blog/2023/07/04/react-admin-vs-refine.html</id>
        <link href="https://marmelab.com/blog/2023/07/04/react-admin-vs-refine.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.LAJtSC68.png"/>
        <updated>2023-07-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What is the best React framework for your next project? Make an informed decision with this detailed benchmark.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Kanban Board With React]]></title>
        <id>https://marmelab.com/blog/2023/07/28/create-a-kanban-board-in-react-admin.html</id>
        <link href="https://marmelab.com/blog/2023/07/28/create-a-kanban-board-in-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/kanban-cover.oqYtfUi2.jpg"/>
        <updated>2023-07-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to develop a Trello-like board where users can drag and drop cards, using react and react-admin.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/accessibility" term="accessibility"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Marmelab Transformed Accor's IT Architecture to Boost Revenue and Customer Experience]]></title>
        <id>https://marmelab.com/blog/2023/08/03/marmelab-accor.html</id>
        <link href="https://marmelab.com/blog/2023/08/03/marmelab-accor.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C86mhJlV.png"/>
        <updated>2023-08-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The largest hotel group in Europe approached us to assist in resolving delivery and performance issues with their mobile app development.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building AI-Augmented Apps With React-Admin]]></title>
        <id>https://marmelab.com/blog/2023/08/09/ai-augmented_react-apps.html</id>
        <link href="https://marmelab.com/blog/2023/08/09/ai-augmented_react-apps.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BzSPQ8JC.png"/>
        <updated>2023-08-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Add AI superpowers to your web apps with the new PredictiveTextInput and SmartRichTextInput components.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The current state of WASI in containers space]]></title>
        <id>https://marmelab.com/blog/2023/09/06/the-current-state-of-wasi-in-containers-space.html</id>
        <link href="https://marmelab.com/blog/2023/09/06/the-current-state-of-wasi-in-containers-space.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.CjOIYqvQ.jpg"/>
        <updated>2023-09-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[WASI takes more and more place in containers, but can we use it?]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/serverless" term="serverless"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-Admin Authentication Using Active Directory]]></title>
        <id>https://marmelab.com/blog/2023/09/13/active-directory-integration-tutorial.html</id>
        <link href="https://marmelab.com/blog/2023/09/13/active-directory-integration-tutorial.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BAJpivpX.jpg"/>
        <updated>2023-09-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This tutorial will show you, step by step, how to configure a React-Admin application to use Azure Active Directory as an authentication provider.]]></summary>
        <author>
            <name>Adrien Guernier</name>
            <uri>https://www.linkedin.com/in/adrien-guernier-9b54b558</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Interview : LODEX, un outil open-source au service de la recherche]]></title>
        <id>https://marmelab.com/blog/2023/09/20/retour-experience-lodex.html</id>
        <link href="https://marmelab.com/blog/2023/09/20/retour-experience-lodex.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cx3aZ8ND.jpg"/>
        <updated>2023-09-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Comment se passe le un projet de développement web avec Marmelab ? Nous avons interviewé Camille de Salabert et Nicolas Thouvenin de l'Inist CNRS pour en savoir plus sur leur expérience.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin October 2023 Update]]></title>
        <id>https://marmelab.com/blog/2023/10/02/react-admin-october-2023-update.html</id>
        <link href="https://marmelab.com/blog/2023/10/02/react-admin-october-2023-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.CSk7BtYy.jpg"/>
        <updated>2023-10-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What? Another super-long article about react-admin updates? But when am I supposed to read this?]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin v4 Advanced Recipes: Creating a Record Related to the Current One]]></title>
        <id>https://marmelab.com/blog/2023/10/12/react-admin-v4-advanced-recipes-creating-a-record-related-to-the-current-one.html</id>
        <link href="https://marmelab.com/blog/2023/10/12/react-admin-v4-advanced-recipes-creating-a-record-related-to-the-current-one.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DkOaq_bU.jpg"/>
        <updated>2023-10-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This practical tutorial shows how to use the routing and a custom button to improve user experience.]]></summary>
        <author>
            <name>Matthieu Chaffotte</name>
            <uri>https://github.com/mchaffotte</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Can You Fall In Love With An AI?]]></title>
        <id>https://marmelab.com/blog/2023/10/19/can-you-fall-in-love-with-an-ai.html</id>
        <link href="https://marmelab.com/blog/2023/10/19/can-you-fall-in-love-with-an-ai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/can-you-fall-in-love-with-an-ai-thumbnail.ZlfFG0eD.png"/>
        <updated>2023-10-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In the movie "Her", the hero falls in love with an AI. This is no longer science fiction: I managed to recreate the voice chat experience.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/bot" term="bot"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Milestones: The Secret Trick To Better Dependency Management]]></title>
        <id>https://marmelab.com/blog/2023/10/26/milestones.html</id>
        <link href="https://marmelab.com/blog/2023/10/26/milestones.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.R_vs1AU8.jpg"/>
        <updated>2023-10-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Milestones link code changes directly to specific release versions, boosting project clarity.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Turning Open-Source Into Profit: Our Journey]]></title>
        <id>https://marmelab.com/blog/2023/11/08/open-source-profit-1.html</id>
        <link href="https://marmelab.com/blog/2023/11/08/open-source-profit-1.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CO6zGvzE.jpg"/>
        <updated>2023-11-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We’ve generated almost €1M with react-admin, an open-source developer tool. How did we do it? Here is our story, and it’s open-source, too.]]></summary>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Anatomy Of A Profitable Open-Source Project]]></title>
        <id>https://marmelab.com/blog/2023/11/13/open-source-profit-2.html</id>
        <link href="https://marmelab.com/blog/2023/11/13/open-source-profit-2.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Ps6-Xglb.jpg"/>
        <updated>2023-11-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We open the books of react-admin, a profitable open-source project generating almost €1M in revenue. We hope this will assist other open-source developers in building their businesses.]]></summary>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Displaying Test Screenshots in GitHub Actions]]></title>
        <id>https://marmelab.com/blog/2023/11/20/screenshot-ci.html</id>
        <link href="https://marmelab.com/blog/2023/11/20/screenshot-ci.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CYKKx3uv.png"/>
        <updated>2023-11-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Build a CI workflow (GitHub or GitLab) to turn the screenshots taken after an e2e test failure (Cypress, Playwright) into CI artifacts.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/github" term="github"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[From Open-Source Project to Marketable Product]]></title>
        <id>https://marmelab.com/blog/2023/11/22/open-source-profit-3.html</id>
        <link href="https://marmelab.com/blog/2023/11/22/open-source-profit-3.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DfygVMIH.jpg"/>
        <updated>2023-11-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How can you sell something that is free? We explain how we turned react-admin, a popular open-source project, into a profitable product.]]></summary>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using React-Admin With Your Favorite UI Library]]></title>
        <id>https://marmelab.com/blog/2023/11/28/using-react-admin-with-your-favorite-ui-library.html</id>
        <link href="https://marmelab.com/blog/2023/11/28/using-react-admin-with-your-favorite-ui-library.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BhAI3Ea3.png"/>
        <updated>2023-11-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The core of react-admin is UI-agnostic. This article explains how to build a react-admin application with Tailwind CSS and Daisy UI.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Selling Open-Source Products Requires Sales & Marketing Skills]]></title>
        <id>https://marmelab.com/blog/2023/12/08/open-source-profit-4.html</id>
        <link href="https://marmelab.com/blog/2023/12/08/open-source-profit-4.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cl2D-61J.jpg"/>
        <updated>2023-12-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In our journey to monetize a popular open-source project, we realized that mere engineering skills weren't sufficient. Acquiring sales and marketing expertise was essential to make our project profitable.]]></summary>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Optical Character Recognition on Handwritten Documents]]></title>
        <id>https://marmelab.com/blog/2023/12/11/how-we-tackled-ocr-on-handwritten-historical-documents.html</id>
        <link href="https://marmelab.com/blog/2023/12/11/how-we-tackled-ocr-on-handwritten-historical-documents.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DK6jSpX4.webp"/>
        <updated>2023-12-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[What is the state of the art in OCR of handwritten historical documents? We tested Open Source libraries and Cloud-based solutions, met researchers in the domain, and learned a lot in the process.]]></summary>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The View Transition API: A New Way to Animate Page Transitions]]></title>
        <id>https://marmelab.com/blog/2023/12/21/view-transitions.html</id>
        <link href="https://marmelab.com/blog/2023/12/21/view-transitions.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BRbAq1OK.jpg"/>
        <updated>2023-12-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A new, experimental API has landed on chromium-based browsers. It allows us to have better control of the transition between two pages.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/css" term="css"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Crystal clear reviews using Conventional Comments]]></title>
        <id>https://marmelab.com/blog/2024/01/05/crystal-clear-reviews-with-conventional-comments.html</id>
        <link href="https://marmelab.com/blog/2024/01/05/crystal-clear-reviews-with-conventional-comments.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C_7ugsi8.webp"/>
        <updated>2024-01-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you've ever struggled when writing or reading a review, here's a way to simplify this essential process.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/github" term="github"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Documentation: The Key Enabler For Open-Source Success]]></title>
        <id>https://marmelab.com/blog/2024/01/10/open-source-documentation.html</id>
        <link href="https://marmelab.com/blog/2024/01/10/open-source-documentation.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.4i_uwvfc.jpg"/>
        <updated>2024-01-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why investing in documentation pays off, and how to write great documentation, based on our experience with react-admin.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Continuous Migration: Keeping Users Uninterrupted]]></title>
        <id>https://marmelab.com/blog/2024/01/18/continous-migration.html</id>
        <link href="https://marmelab.com/blog/2024/01/18/continous-migration.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BD8PpW0O.jpg"/>
        <updated>2024-01-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Struggling with disruptive app migrations? Discover a systematic strategy that enables progressive migration while maintaining a consistent and uninterrupted user interface.]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[New client-side hooks coming to React 19]]></title>
        <id>https://marmelab.com/blog/2024/01/23/react-19-new-hooks.html</id>
        <link href="https://marmelab.com/blog/2024/01/23/react-19-new-hooks.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BO8XnSIx.jpg"/>
        <updated>2024-01-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Data fetching and form handling are about to get easier in React, and not just in SSR apps.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Demystifying Monitoring: From Basics to OpenTelemetry]]></title>
        <id>https://marmelab.com/blog/2024/01/31/demystifying-monitoring-from-basics-to-opentelemetry.html</id>
        <link href="https://marmelab.com/blog/2024/01/31/demystifying-monitoring-from-basics-to-opentelemetry.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small-th.BxpA3eyF.jpg"/>
        <updated>2024-01-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to make sure that our application works well and catch any problem ASAP? Discover monitoring, from basic concepts to OpenTelemetry, a very promising open-source project.]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Write JavaScript Shell Scripts With Bun]]></title>
        <id>https://marmelab.com/blog/2024/02/05/bun-shell.html</id>
        <link href="https://marmelab.com/blog/2024/02/05/bun-shell.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DArSPmOh.jpg"/>
        <updated>2024-02-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[JS developers can now write shell scripts with good performance with Bun Shell. This promising tool is still under development.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/shell" term="shell"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build Type-Safe SQL Queries With Kysely]]></title>
        <id>https://marmelab.com/blog/2024/02/14/type-safe-sql-wheries-with-kysely.html</id>
        <link href="https://marmelab.com/blog/2024/02/14/type-safe-sql-wheries-with-kysely.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.CCapHj6j.jpg"/>
        <updated>2024-02-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[From database to query results, the Kysely query builder embraces strong typing with TypeScript.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/database" term="database"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Automate Your Workflow With Git Hooks]]></title>
        <id>https://marmelab.com/blog/2024/02/27/git-hooks.html</id>
        <link href="https://marmelab.com/blog/2024/02/27/git-hooks.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C6td90re.jpg"/>
        <updated>2024-02-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Git Hooks and Husky can be used to check the quality of your code, automate repetitive tasks or standardize commit messages.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Admin March 2024 Update]]></title>
        <id>https://marmelab.com/blog/2024/03/05/react-admin-march-2024-update.html</id>
        <link href="https://marmelab.com/blog/2024/03/05/react-admin-march-2024-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Zp6GlHgZ.png"/>
        <updated>2024-03-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AG Grid, Versioning, Date inputs, improved providers, new themes, a new demo, Daisy UI, Cognito... and a YouTube channel!]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[OpenTelemetry in Practice: Instrumenting JavaScript Apps for Tracing]]></title>
        <id>https://marmelab.com/blog/2024/03/14/opentelemetry-in-practice-instrumenting-javascript-apps-for-tracing.html</id>
        <link href="https://marmelab.com/blog/2024/03/14/opentelemetry-in-practice-instrumenting-javascript-apps-for-tracing.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small-th.BhsxXCPd.jpg"/>
        <updated>2024-03-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've enabled OpenTelemetry on some of our Node.js APIs and their React client, and it was surprisingly easy. The full-stack traces let us debug faster. This hands-on guide explains how to do it.]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Cut Through The Noise: AI-Curated News Digests]]></title>
        <id>https://marmelab.com/blog/2024/03/21/ai-curator.html</id>
        <link href="https://marmelab.com/blog/2024/03/21/ai-curator.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small1.DcRfQGNw.jpg"/>
        <updated>2024-03-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[With so many sources of information available, it's easy to become overwhelmed by information overload. Let's use AI to select and summarize the most relevant articles.]]></summary>
        <author>
            <name>Adrien Guernier</name>
            <uri>https://www.linkedin.com/in/adrien-guernier-9b54b558</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GSAP Basics: Dive into Web Animations]]></title>
        <id>https://marmelab.com/blog/2024/03/27/gsap-basics-js-animation.html</id>
        <link href="https://marmelab.com/blog/2024/03/27/gsap-basics-js-animation.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/pexels-pixabay-106155-small.Baj9De1O.jpg"/>
        <updated>2024-03-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[GSAP is a powerful and open-source JS animation library. Here are the essentials to get you started.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/css" term="css"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SnowCamp 2024 : Les talks à ne pas manquer]]></title>
        <id>https://marmelab.com/blog/2024/03/29/snowcamp-2024.html</id>
        <link href="https://marmelab.com/blog/2024/03/29/snowcamp-2024.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DbG7zkuD.jpg"/>
        <updated>2024-03-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous avons assisté à cette très bonne conférence tech généraliste. Voici nos talks préférés.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/accessibility" term="accessibility"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Synchronize Backend and Frontend Types With tRPC]]></title>
        <id>https://marmelab.com/blog/2024/04/04/trpc-full-stack-types.html</id>
        <link href="https://marmelab.com/blog/2024/04/04/trpc-full-stack-types.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/backend-frontend-bridge-thumbnail.B3u_5zMU.jpeg"/>
        <updated>2024-04-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Experience seamless type synchronization across the stack with tRPC, freeing developers from tedious manual typing tasks.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Trigger Animations On Scroll With GSAP]]></title>
        <id>https://marmelab.com/blog/2024/04/11/trigger-animations-on-scroll-with-gsap-scrolltrigger.html</id>
        <link href="https://marmelab.com/blog/2024/04/11/trigger-animations-on-scroll-with-gsap-scrolltrigger.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/pexels-lex-photography-1109543-small.DWfVuMkR.jpg"/>
        <updated>2024-04-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The GSAP ScrollTrigger plugin facilitates scroll-based animations like parallax scrolling and slide-in panels. Learn how to use it to create engaging user experiences.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/css" term="css"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[LIT: A Lightweight Library For Building Web Components]]></title>
        <id>https://marmelab.com/blog/2024/04/18/web-component-with-lit.html</id>
        <link href="https://marmelab.com/blog/2024/04/18/web-component-with-lit.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BxrBgxsQ.jpg"/>
        <updated>2024-04-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To explore the LIT framework, I built a framework-agnostic accordion component that I managed to reuse in React and Vue.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Highlight Search Terms In Page Content]]></title>
        <id>https://marmelab.com/blog/2024/04/23/highlight-search-query.html</id>
        <link href="https://marmelab.com/blog/2024/04/23/highlight-search-query.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.hOVMtN6H.png"/>
        <updated>2024-04-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Leverage the CSS Custom Highlight API to highlight words within a larger body of text. This technique is compatible with all JS frameworks.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment organiser visuellement les gros formulaires ?]]></title>
        <id>https://marmelab.com/blog/2024/05/03/ux-formulaires.html</id>
        <link href="https://marmelab.com/blog/2024/05/03/ux-formulaires.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BdyYbBx7.png"/>
        <updated>2024-05-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[L'expérience utilisateur sur les longs formulaires est un défi ergonomique. Découvrez les bonnes pratiques pour améliorer l'UX des grands formulaires.]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ux" term="ux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[We don't talk about Bruno (The API Client)]]></title>
        <id>https://marmelab.com/blog/2024/05/03/we-dont-talk-about-bruno.html</id>
        <link href="https://marmelab.com/blog/2024/05/03/we-dont-talk-about-bruno.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CS9TUjKk.jpg"/>
        <updated>2024-05-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Bruno is an innovative open-source IDE for APIs you won't be able to live without.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Paris 2024]]></title>
        <id>https://marmelab.com/blog/2024/05/07/react-paris-2024.html</id>
        <link href="https://marmelab.com/blog/2024/05/07/react-paris-2024.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/large.C4qI_OFN.jpg"/>
        <updated>2024-05-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you missed React Paris 2024, here is a summary of the talks I found the most interesting.]]></summary>
        <author>
            <name>Adrien Guernier</name>
            <uri>https://www.linkedin.com/in/adrien-guernier-9b54b558</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A State Management Tour: Atomic State With Jotai]]></title>
        <id>https://marmelab.com/blog/2024/05/16/atomic-state-with-jotai.html</id>
        <link href="https://marmelab.com/blog/2024/05/16/atomic-state-with-jotai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/generic-blog-cover.BMH4AXgD.jpg"/>
        <updated>2024-05-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I try to simplify my state management approach using an atomic tool, jotai]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using React-Admin With React Native]]></title>
        <id>https://marmelab.com/blog/2024/05/22/using-react-admin-with-react-native.html</id>
        <link href="https://marmelab.com/blog/2024/05/22/using-react-admin-with-react-native.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/blog-thumbnail.Cai1yVW4.jpg"/>
        <updated>2024-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin can be used to build native mobile applications, which can also run on web browsers, thanks to its headless architecture.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/react-native" term="react-native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GSAP In Practice: Avoid The Pitfalls]]></title>
        <id>https://marmelab.com/blog/2024/05/30/gsap-in-practice-avoid-the-pitfalls.html</id>
        <link href="https://marmelab.com/blog/2024/05/30/gsap-in-practice-avoid-the-pitfalls.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/pexels-caroline-martins-4317484-small.DdM0cH9o.jpg"/>
        <updated>2024-05-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[From SVG inconsistencies to resetting ScrollTrigger animations smoothly, or even FOUC prevention, we share practical solutions for GSAP pitfalls.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/css" term="css"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using AI To Autofill Forms With Wikipedia]]></title>
        <id>https://marmelab.com/blog/2024/06/05/ai-form-autocompletion-with-openai-and-wikipedia.html</id>
        <link href="https://marmelab.com/blog/2024/06/05/ai-form-autocompletion-with-openai-and-wikipedia.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small-th.BHwgzAbD.jpg"/>
        <updated>2024-06-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Discover how AI can automate form completion from external sources, making data entry quick and efficient.]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[MiXiT 2024 : La conférence Tech, Crêpes, et Éthique]]></title>
        <id>https://marmelab.com/blog/2024/06/12/mixit-2024.html</id>
        <link href="https://marmelab.com/blog/2024/06/12/mixit-2024.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BSDu0x2q.jpg"/>
        <updated>2024-06-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On a adoré la conférence lyonnaise sur la tech et sur ce qu'il y a autour. Voici nos talks préférés et les liens vers les rediffusions.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Bpifrance et GreenFrame : Retour d’expérience]]></title>
        <id>https://marmelab.com/blog/2024/06/19/bpi-greenframe.html</id>
        <link href="https://marmelab.com/blog/2024/06/19/bpi-greenframe.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BLO6OtAF.jpg"/>
        <updated>2024-06-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nous avons interviewé Calange Favreau, responsable Cloud chez Bpifrance, qui est utilisateur de GreenFrame et engagé dans une démarche de réduction de son empreinte carbone numérique.]]></summary>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing React-Admin V5]]></title>
        <id>https://marmelab.com/blog/2024/06/20/react-admin-v5.html</id>
        <link href="https://marmelab.com/blog/2024/06/20/react-admin-v5.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CdpNyHo9.jpg"/>
        <updated>2024-06-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After 6 months of hard work, the new major version of React-admin is here!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comment j'ai remplacé mon patron par une IA]]></title>
        <id>https://marmelab.com/blog/2024/06/27/virtual-francois-ai.html</id>
        <link href="https://marmelab.com/blog/2024/06/27/virtual-francois-ai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cyborg-small.DtnupBZt.png"/>
        <updated>2024-06-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Vous voudriez inverser la relation hiérarchique avec votre manager ou votre patron ? Voici une méthode facile et rapide ;) .]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/vuejs" term="vuejs"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building An AI Assistant at the Edge]]></title>
        <id>https://marmelab.com/blog/2024/07/05/ai-assistant-edge-cloudflare-workers-ai.html</id>
        <link href="https://marmelab.com/blog/2024/07/05/ai-assistant-edge-cloudflare-workers-ai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DvaAxAFK.jpg"/>
        <updated>2024-07-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Cloudflare recently launched Workers AI that provides machine learning model inference at the edge. This article explains how we built a simple AI Assistant using Nuxt and Llama 3 8B on Workers AI.]]></summary>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/vuejs" term="vuejs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Optimizing AI for Qwant: From Prototype to Production]]></title>
        <id>https://marmelab.com/blog/2024/07/08/qwant-ai-gen.html</id>
        <link href="https://marmelab.com/blog/2024/07/08/qwant-ai-gen.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.TcYLCOOp.jpg"/>
        <updated>2024-07-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab partnered with Qwant to transform a promising AI prototype into a robust, production-ready agent. Discover how our expertise in AI evaluation and agile methodologies ensured a seamless and efficient deployment.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[4 Serious Games To Improve Collaboration]]></title>
        <id>https://marmelab.com/blog/2024/07/25/play14-2024-part1.html</id>
        <link href="https://marmelab.com/blog/2024/07/25/play14-2024-part1.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/play14_2024_1_thumbnail.BbPdWt7A.jpeg"/>
        <updated>2024-07-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This year marked a special edition as #play14 celebrated its 10th anniversary. Here are four serious games you can use to improve team collaboration.]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <author>
            <name>Benoît Chazoule</name>
            <uri>https://www.linkedin.com/in/%F0%9F%8E%BCbeno%C3%AEt-chazoule-1a96b273/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[5 Serious Games To Better Know Each Other]]></title>
        <id>https://marmelab.com/blog/2024/07/26/play14-2024-part2.html</id>
        <link href="https://marmelab.com/blog/2024/07/26/play14-2024-part2.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/play14_2024_2_thumbnail.1ra6uW2V.jpeg"/>
        <updated>2024-07-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[During this 10th edition of #play14, we have filled up on workshops to help you with your team building, and here are 5 more.]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <author>
            <name>Benoît Chazoule</name>
            <uri>https://www.linkedin.com/in/%F0%9F%8E%BCbeno%C3%AEt-chazoule-1a96b273/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DotJs 2025: Rediscovering JavaScript's Future]]></title>
        <id>https://marmelab.com/blog/2024/08/22/dotjs-2024.html</id>
        <link href="https://marmelab.com/blog/2024/08/22/dotjs-2024.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/large.OmsT38j9.png"/>
        <updated>2024-08-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[From the stunning venue to the captivating talks and valuable networking opportunities, the conference exceeded our expectations.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Adding Voice Recognition To A Web App]]></title>
        <id>https://marmelab.com/blog/2024/08/29/speech-to-text.html</id>
        <link href="https://marmelab.com/blog/2024/08/29/speech-to-text.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DvaAxAFK.jpg"/>
        <updated>2024-08-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Speech-to-Text is becoming a common feature, and modern tooling makes it easier to implement. Read how we built an Aqua clone using Cloudflare Workers AI, OpenAI Whisper, and Vue3.]]></summary>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/vuejs" term="vuejs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Atomic CRM: the Open-Source Toolkit for Personalized Solutions]]></title>
        <id>https://marmelab.com/blog/2024/09/06/open-source-crm-atomic-crm.html</id>
        <link href="https://marmelab.com/blog/2024/09/06/open-source-crm-atomic-crm.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CtiAOSmZ.jpg"/>
        <updated>2024-09-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Every company has unique CRM needs, but custom solutions are costly. We built Atomic CRM—an open-source framework for custom CRMs—to tackle this challenge.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/atomic-crm" term="atomic-crm"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GreenFrame Update: Easier Scenarios, Env Vars, and Improved Security]]></title>
        <id>https://marmelab.com/blog/2024/09/12/green-frame-updates.html</id>
        <link href="https://marmelab.com/blog/2024/09/12/green-frame-updates.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DTiiq3Gy.jpg"/>
        <updated>2024-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[GreenFrame 2.0 is here! It's never been easier to measure and reduce your website's carbon footprint.]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Quel CDN d'images choisir en 2024 ?]]></title>
        <id>https://marmelab.com/blog/2024/09/19/cdn-image-comparatif.html</id>
        <link href="https://marmelab.com/blog/2024/09/19/cdn-image-comparatif.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cdn-globe.DoqG_Ix0.jpg"/>
        <updated>2024-09-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un CDN d'image accélère le chargement des pages web. Mais il y a tellement d'offres que l'on s'y perd. Nous avons pris le temps de sélectionner et de tester les meilleurs.]]></summary>
        <author>
            <name>Erwan Bourlon</name>
            <uri>https://fr.linkedin.com/in/erwan-bourlon-171ba51b7</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Shape Up: Should You Change Your Agile Methodology?]]></title>
        <id>https://marmelab.com/blog/2024/09/26/shape-up.html</id>
        <link href="https://marmelab.com/blog/2024/09/26/shape-up.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/shape-up-book-basecamp-thumbnail.Z72uiKq2.jpg"/>
        <updated>2024-09-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Stop Running in Circles and Ship Work that Matters: It is the promise of this methodology that we are going to explore in greater depth.]]></summary>
        <author>
            <name>Benoît Chazoule</name>
            <uri>https://www.linkedin.com/in/%F0%9F%8E%BCbeno%C3%AEt-chazoule-1a96b273/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/book-review" term="book-review"/>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin: October 2024 Update]]></title>
        <id>https://marmelab.com/blog/2024/09/27/react-admin-october-2024-update.html</id>
        <link href="https://marmelab.com/blog/2024/09/27/react-admin-october-2024-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BoXKOMe3.jpg"/>
        <updated>2024-09-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've released two minor versions of react-admin v5 since the summer. Read on to learn about the new features and improvements we've added to the library.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le bestiaire des longs formulaires]]></title>
        <id>https://marmelab.com/blog/2024/10/04/le-bestiaire-des-longs-formulaires.html</id>
        <link href="https://marmelab.com/blog/2024/10/04/le-bestiaire-des-longs-formulaires.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DvhCbpOO.jpg"/>
        <updated>2024-10-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Étapes, accordéons, onglets ou sommaire : quelle est la meilleure structure pour optimiser les longs formulaires ?]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ux" term="ux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[LLMs Are the CPUs of the AI Era]]></title>
        <id>https://marmelab.com/blog/2024/10/10/llms-are-modern-day-cpus.html</id>
        <link href="https://marmelab.com/blog/2024/10/10/llms-are-modern-day-cpus.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BaTg4udN.jpg"/>
        <updated>2024-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[LLMs share similarities with CPUs but bring unique challenges like slower speeds and probabilistic behavior. To effectively use LLMs, we need new programming approaches, specialized developers, and adjustments in our educational system.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[useContextSelector: Speeding Up React Apps With Large Context]]></title>
        <id>https://marmelab.com/blog/2024/10/16/usecontextselector-a-faster-usecontext-for-react.html</id>
        <link href="https://marmelab.com/blog/2024/10/16/usecontextselector-a-faster-usecontext-for-react.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.B6Qittgj.jpg"/>
        <updated>2024-10-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Tips and tricks to optimize the performance of your React app]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Behind the Code of Atomic CRM]]></title>
        <id>https://marmelab.com/blog/2024/10/28/behind-the-code-of-atomic-crm.html</id>
        <link href="https://marmelab.com/blog/2024/10/28/behind-the-code-of-atomic-crm.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C_HexRIV.jpg"/>
        <updated>2024-10-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Join François and Thor Schaeff from Supabase as they explore the technical journey of building Atomic CRM, the tools used, and the benefits of open-source development.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
        <category scheme="https://marmelab.com/blog/tags/atomic-crm" term="atomic-crm"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[PostgREST: Revolutionizing Web Development with Instant APIs]]></title>
        <id>https://marmelab.com/blog/2024/11/04/postgrest-revolutionizing-web-development-with-instant-apis.html</id>
        <link href="https://marmelab.com/blog/2024/11/04/postgrest-revolutionizing-web-development-with-instant-apis.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BjThpgEM.jpg"/>
        <updated>2024-11-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[PostgREST has been around for a long time, but many web developers still haven't discovered how it can simplify their workflow.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/database" term="database"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[API Platform Admin: The Ultimate Admin Generator For PHP]]></title>
        <id>https://marmelab.com/blog/2024/11/12/api-platform-admin-the-ultimate-admin-generator-for-php.html</id>
        <link href="https://marmelab.com/blog/2024/11/12/api-platform-admin-the-ultimate-admin-generator-for-php.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BSVvCnl2.jpg"/>
        <updated>2024-11-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Watch the conference talk to discover how API Platform Admin can help you easily create powerful admin interfaces for PHP applications, without needing JavaScript knowledge.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Google OAuth in React: A Beginner’s Guide to Authentication]]></title>
        <id>https://marmelab.com/blog/2024/11/18/google-authentication-react.html</id>
        <link href="https://marmelab.com/blog/2024/11/18/google-authentication-react.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BwqeF8aE.jpg"/>
        <updated>2024-11-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to use Google Identity Services as the authentication provider in a React application, a step-by-step tutorial.]]></summary>
        <author>
            <name>Erwan Bourlon</name>
            <uri>https://fr.linkedin.com/in/erwan-bourlon-171ba51b7</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tech, Maroille, et Bière. Marmelab était à la DevFest Lille !]]></title>
        <id>https://marmelab.com/blog/2024/11/26/devfest-lille.html</id>
        <link href="https://marmelab.com/blog/2024/11/26/devfest-lille.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/devfest-lille.DYwAk9qK.png"/>
        <updated>2024-11-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab était à la conférence lilloise et vous raconte les conférences qui ont marqué leur esprit.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Un regard sur le Devfest Strasbourg 2024 ]]></title>
        <id>https://marmelab.com/blog/2024/12/06/devfest-strasbourg.html</id>
        <link href="https://marmelab.com/blog/2024/12/06/devfest-strasbourg.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.D2YKYo5V.png"/>
        <updated>2024-12-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab était au Devfest Strasbourg 2024. Voici ce qu'on en a pensé et ce qu'on y a découvert.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/postgres" term="postgres"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Who Needs Human Code Reviews When We Have AI?]]></title>
        <id>https://marmelab.com/blog/2024/12/16/automated-code-review.html</id>
        <link href="https://marmelab.com/blog/2024/12/16/automated-code-review.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cj_W9cYF.webp"/>
        <updated>2024-12-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We automated proofreading our blog articles with a GitHub action leveraging an LLM. It even reviewed this very article!]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/bot" term="bot"/>
        <category scheme="https://marmelab.com/blog/tags/github" term="github"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Secret to Reliable AI Agents: Mastering Eval]]></title>
        <id>https://marmelab.com/blog/2024/12/18/eval-the-key-to-useful-ai-agents.html</id>
        <link href="https://marmelab.com/blog/2024/12/18/eval-the-key-to-useful-ai-agents.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dcjfa2rW.jpg"/>
        <updated>2024-12-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[While AI agents can be built in days, it takes weeks to find the best configuration to optimize cost, speed, relevancy, etc. Eval tools and frameworks are the key ingredients for this optimization phase.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin: January 2025 Update]]></title>
        <id>https://marmelab.com/blog/2025/01/08/react-admin-january-2025-update.html</id>
        <link href="https://marmelab.com/blog/2025/01/08/react-admin-january-2025-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CwFv4-9y.jpg"/>
        <updated>2025-01-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We've released two minor versions of react-admin v5 since the fall. Read on to learn about the new features and improvements we've added to the library.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DevFest Dijon 2024: Retour sur les bancs de la fac]]></title>
        <id>https://marmelab.com/blog/2025/01/17/devfest-dijon.html</id>
        <link href="https://marmelab.com/blog/2025/01/17/devfest-dijon.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Bby6amxe.png"/>
        <updated>2025-01-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Voici un résumé de nos sujets préférés durant le plus gros événement de la tech dijonnais]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <author>
            <name>Antoine Fricker</name>
            <uri>https://www.linkedin.com/in/antoine-fricker-2a566754/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to build a CMS with React-Admin]]></title>
        <id>https://marmelab.com/blog/2025/01/24/how-to-build-a-cms-with-react-admin.html</id>
        <link href="https://marmelab.com/blog/2025/01/24/how-to-build-a-cms-with-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/ra-cms-thumbnail.hXyx7_WM.jpg"/>
        <updated>2025-01-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Many applications require a user interface to manage and edit content. This post demonstrates how to create a basic headless CMS using PostgreSQL, React-Admin, and Supabase.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/cms" term="cms"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Beyond Buttons: Using AI Agents To Augment Web Apps]]></title>
        <id>https://marmelab.com/blog/2025/01/31/adding-ai-interaction-to-control-a-web-app.html</id>
        <link href="https://marmelab.com/blog/2025/01/31/adding-ai-interaction-to-control-a-web-app.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.COsrZrHi.png"/>
        <updated>2025-01-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to integrate LLM-based features into existing web apps? One of the keys is to allow an iterative approach via a conversational UI.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/ux" term="ux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Best Open Source CRM for 2025]]></title>
        <id>https://marmelab.com/blog/2025/02/03/open-source-crm-benchmark-for-2025.html</id>
        <link href="https://marmelab.com/blog/2025/02/03/open-source-crm-benchmark-for-2025.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BQEAQ7yN.jpg"/>
        <updated>2025-02-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A developer-friendly comparison of the best self-hosted CRMs for small businesses. Compare flexibility, integrations, and ease of use.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Handling Relationships in React Admin]]></title>
        <id>https://marmelab.com/blog/2025/02/06/handling-relationships-in-react-admin.html</id>
        <link href="https://marmelab.com/blog/2025/02/06/handling-relationships-in-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.BAOhhdRN.jpg"/>
        <updated>2025-02-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how React Admin can help you manage relational models, from simple to complex relationships like many-to-many.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/database" term="database"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Load Testing Web Applications With k6]]></title>
        <id>https://marmelab.com/blog/2025/02/14/load-testing.html</id>
        <link href="https://marmelab.com/blog/2025/02/14/load-testing.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Dv0x3Am0.jpg"/>
        <updated>2025-02-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Discovering load testing can help you better anticipate how an application behaves under different types of load.]]></summary>
        <author>
            <name>Adrien Guernier</name>
            <uri>https://www.linkedin.com/in/adrien-guernier-9b54b558</uri>
        </author>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Filling Forms from Images in React Admin]]></title>
        <id>https://marmelab.com/blog/2025/02/21/filling-forms-from-document-in-react-admin.html</id>
        <link href="https://marmelab.com/blog/2025/02/21/filling-forms-from-document-in-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.ByaCQlja.jpg"/>
        <updated>2025-02-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Introducing the `<FormFillerButton />` component in the React Admin AI package that provides automatic form filling from images.]]></summary>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing Zero: Rocicorp's Ultra-Fast Sync Engine for the Web]]></title>
        <id>https://marmelab.com/blog/2025/02/28/zero-sync-engine.html</id>
        <link href="https://marmelab.com/blog/2025/02/28/zero-sync-engine.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.5E2lBnZz.jpg"/>
        <updated>2025-02-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We put Zero to the test by building an offline-first app with live database synchronization. It delivers on speed and developer experience but comes with some notable limitations.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/database" term="database"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/postgres" term="postgres"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/solidjs" term="solidjs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Making Specialized AI Agents Work Together with Swarm]]></title>
        <id>https://marmelab.com/blog/2025/03/06/ai-agents-orchestration-with-swarm.html</id>
        <link href="https://marmelab.com/blog/2025/03/06/ai-agents-orchestration-with-swarm.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/swarm-ai-thumbnail.bzuIfByZ.jpg"/>
        <updated>2025-03-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To tackle complex topics effectively, many specialized AI agents work better than one large general agent. But how can multiple agents collaborate seamlessly? Swarm, an educational framework by OpenAI, offers a powerful way to understand and implement multi-agent orchestration.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Scrum Fatigue: Why It Happens and How to Fix It]]></title>
        <id>https://marmelab.com/blog/2025/03/14/scrum-fatigue.html</id>
        <link href="https://marmelab.com/blog/2025/03/14/scrum-fatigue.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.Da2F-Vol.jpg"/>
        <updated>2025-03-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Scrum is widely used to boost collaboration and speed up software delivery. But for many teams, it leads to stress and burnout. Why does Scrum sometimes feel exhausting? More importantly, how can we fix it?]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/popular" term="popular"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI's Environmental Impact: Making an Informed Choice]]></title>
        <id>https://marmelab.com/blog/2025/03/19/ai-carbon-footprint.html</id>
        <link href="https://marmelab.com/blog/2025/03/19/ai-carbon-footprint.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DpCglbTF.jpg"/>
        <updated>2025-03-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Various studies highlight the significant environmental footprint of Large Language Models (LLMs). Those concerned about climate change might consider avoiding AI for this reason. But is that the right choice? Let's examine the facts.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/greenframe" term="greenframe"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin: March 2025 Update]]></title>
        <id>https://marmelab.com/blog/2025/03/24/react-admin-march-2025-update.html</id>
        <link href="https://marmelab.com/blog/2025/03/24/react-admin-march-2025-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.QWpYb7Nc.jpg"/>
        <updated>2025-03-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin v5.5 and v5.6 introduce broader compatibility, a modern black and white theme, and enhanced features for forms and list views. The Enterprise Edition packages also receive new components and improvements.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[get-current-day: The Ultimate NPM Package For Today's Date]]></title>
        <id>https://marmelab.com/blog/2025/04/01/get-current-day.html</id>
        <link href="https://marmelab.com/blog/2025/04/01/get-current-day.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/banner.BtAjjQM7.png"/>
        <updated>2025-04-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Leveraging cutting-edge JavaScript techniques, Marmelab proudly introduces a revolutionary library to get the current date. Say goodbye to timezone issues and date struggles with this innovative approach.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
        <category scheme="https://marmelab.com/blog/tags/tech4good" term="tech4good"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building AI-Powered Browser Extensions With WXT]]></title>
        <id>https://marmelab.com/blog/2025/04/15/browser-extension-form-ai-wxt.html</id>
        <link href="https://marmelab.com/blog/2025/04/15/browser-extension-form-ai-wxt.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.G5TQ1Vyc.png"/>
        <updated>2025-04-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[FormAIdable is a browser extension for Chrome and Firefox that extracts information from one tab and automatically populates form fields in another. It makes a great tutorial for building extensions.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Give a SPA Feel to Your Static Website with Hotwire's Turbo]]></title>
        <id>https://marmelab.com/blog/2025/04/18/give-a-spa-feel-to-your-static-website-with-turbo.html</id>
        <link href="https://marmelab.com/blog/2025/04/18/give-a-spa-feel-to-your-static-website-with-turbo.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/synthwave-car-turbo.CQ_iQXpn.jpeg"/>
        <updated>2025-04-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Turbo is a JavaScript library promising to give a Single Page App feel to a static website without requiring to write JS code. We tested it on the React Admin documentation pages, but faced several issues that made this solution impractical to us.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-admin With Shadcn UI]]></title>
        <id>https://marmelab.com/blog/2025/04/23/react-admin-with-shadcn.html</id>
        <link href="https://marmelab.com/blog/2025/04/23/react-admin-with-shadcn.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cd404JZW.jpg"/>
        <updated>2025-04-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The default react-admin UI relies on Material Design, but react-admin supports other design systems. Getting a Shadcn UI look takes just a few lines of code.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/ux" term="ux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Client-Side React Rocks]]></title>
        <id>https://marmelab.com/blog/2025/05/09/client-side-react-rocks.html</id>
        <link href="https://marmelab.com/blog/2025/05/09/client-side-react-rocks.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.D5kZ_5Xr.jpg"/>
        <updated>2025-05-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React Server Components (RSC) are nice, but they can't beat client-side components in developer experience. See an example with a unique take on the Datagrid API.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Paris 2025 : De l'importance des utilisateurs (et des développeurs)]]></title>
        <id>https://marmelab.com/blog/2025/05/15/react-paris-2025.html</id>
        <link href="https://marmelab.com/blog/2025/05/15/react-paris-2025.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.YCYBAYWG.jpg"/>
        <updated>2025-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Marmelab était à React Paris. Voici ce que nous y avons appris. Le thème principal de la majorité des conférences concernait l'expérience utilisateur ou l'expérience développeur et c'était passionnant]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-Admin: May 2025 Update]]></title>
        <id>https://marmelab.com/blog/2025/05/21/react-admin-may-2025-update.html</id>
        <link href="https://marmelab.com/blog/2025/05/21/react-admin-may-2025-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CNABVFpr.jpg"/>
        <updated>2025-05-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A better Datagrid, AutoPersistInStore, InPlaceEditor, default prop overrides, optimistic creation, MUI V7, a kanban demo, and more!]]></summary>
        <author>
            <name>Erwan Bourlon</name>
            <uri>https://fr.linkedin.com/in/erwan-bourlon-171ba51b7</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SolidJS for React Developers]]></title>
        <id>https://marmelab.com/blog/2025/05/28/solidjs-for-react-developper.html</id>
        <link href="https://marmelab.com/blog/2025/05/28/solidjs-for-react-developper.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/solidjs-thumbnail.DIraTmhQ.png"/>
        <updated>2025-05-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[SolidJS has been around for a few years now. As a React developer, I wanted to give it a try. While it resembles React in many ways, it also introduces some key differences.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/solidjs" term="solidjs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Recherche généalogique de nouvelle génération : La refonte du système de Coutot-Roehrig]]></title>
        <id>https://marmelab.com/blog/2025/06/17/recherche-genealogique-de-nouvelle-generation-la-refonte-du-systeme-de-coutot-roehrig.html</id>
        <link href="https://marmelab.com/blog/2025/06/17/recherche-genealogique-de-nouvelle-generation-la-refonte-du-systeme-de-coutot-roehrig.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BqV2pU2r.jpg"/>
        <updated>2025-06-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Coutot-Roehrig, leader en généalogie successorale en France et deuxième en Europe, a fait appel à Marmelab pour optimiser ses recherches généalogiques.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[MiXiT 2025 : La conférence tech, éthique et crêpes]]></title>
        <id>https://marmelab.com/blog/2025/06/19/mixit-2025.html</id>
        <link href="https://marmelab.com/blog/2025/06/19/mixit-2025.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DU_cIzkL.jpg"/>
        <updated>2025-06-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On aime toujours autant la conférence lyonnaise sur la tech et sur ce qu'il y a autour. Voici nos talks préférés avec les liens vers les rediffusions.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/testing" term="testing"/>
        <category scheme="https://marmelab.com/blog/tags/sustainability" term="sustainability"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Typed Query Builders: Kysely vs. Drizzle]]></title>
        <id>https://marmelab.com/blog/2025/06/26/kysely-vs-drizzle.html</id>
        <link href="https://marmelab.com/blog/2025/06/26/kysely-vs-drizzle.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.Bw2EPBog.jpeg"/>
        <updated>2025-06-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We compared the developer experience of the two leading type-safe query builders, focusing on schema generation, querying, and migrations.]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/database" term="database"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[10 Icebreakers to Warm Up a Group of People]]></title>
        <id>https://marmelab.com/blog/2025/07/02/10-icebreakers-to-warm-up-a-group-of-people.html</id>
        <link href="https://marmelab.com/blog/2025/07/02/10-icebreakers-to-warm-up-a-group-of-people.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-thumbnail.CVMgQ4Gm.jpg"/>
        <updated>2025-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Icebreakers relax the atmosphere, create bonds between people and warm up attendees before starting a workshop or a collaborative task. Thanks to #play14 Nancy, we discovered new icebreakers that we can use in our jobs every day]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Thumbless OS: What If AI Was Generating The UI?]]></title>
        <id>https://marmelab.com/blog/2025/07/21/thumbless-os-what-if-ai-was-the-heart-of-the-system.html</id>
        <link href="https://marmelab.com/blog/2025/07/21/thumbless-os-what-if-ai-was-the-heart-of-the-system.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.B31pADx1.jpg"/>
        <updated>2025-07-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We built a proof-of-concept of a new mobile OS based on a LLM, where the notion of application disappears and the UI adapts to the current task. Is it the future of computer UX?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/mobile" term="mobile"/>
        <category scheme="https://marmelab.com/blog/tags/ux" term="ux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DNS Caching in NodeJS]]></title>
        <id>https://marmelab.com/blog/2025/07/28/dns-in-nodejs.html</id>
        <link href="https://marmelab.com/blog/2025/07/28/dns-in-nodejs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.0gyPGECJ.png"/>
        <updated>2025-07-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How we improved the performance of our backend-for-frontend by caching DNS lookups.]]></summary>
        <author>
            <name>Arnaud Tilbian</name>
            <uri>https://www.linkedin.com/in/arnaud-tilbian/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/performance" term="performance"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Coding Assistants Are the New Compilers]]></title>
        <id>https://marmelab.com/blog/2025/07/29/ai-coding-assistants-are-the-new-compilers.html</id>
        <link href="https://marmelab.com/blog/2025/07/29/ai-coding-assistants-are-the-new-compilers.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.lDt9V14i.jpg"/>
        <updated>2025-07-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Do we still need developers where a business analyst can build an app with Claude Code?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Bring MCP Support To Your Shadcn Registry]]></title>
        <id>https://marmelab.com/blog/2025/08/19/shadcn-admin-kit-mcp.html</id>
        <link href="https://marmelab.com/blog/2025/08/19/shadcn-admin-kit-mcp.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/shadcn-admin-kit-mcp-thumbnail.Bmb92QVm.png"/>
        <updated>2025-08-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We taught Cursor to use our open-source Shadcn Admin Kit, thanks to the brand new registry:mcp command.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Bright Future Of Developers]]></title>
        <id>https://marmelab.com/blog/2025/09/03/natural-language-developers.html</id>
        <link href="https://marmelab.com/blog/2025/09/03/natural-language-developers.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.6thxHgKk.jpg"/>
        <updated>2025-09-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A new breed of developers is emerging. They ship production code daily but can't write a for loop. They're not imposters – they're the future of programming.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-Admin: September 2025 Update]]></title>
        <id>https://marmelab.com/blog/2025/09/15/react-admin-september-2025-update.html</id>
        <link href="https://marmelab.com/blog/2025/09/15/react-admin-september-2025-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DkRxslGd.jpg"/>
        <updated>2025-09-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Discover the latest features and improvements in react-admin, including render props for easier customization, the new RecordField component, soft delete functionality, scheduling components, menu keyboard navigation, and more.]]></summary>
        <author>
            <name>Matthieu Hochlander</name>
            <uri>https://github.com/Madeorsk/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ARTE x Marmelab : Dans les coulisses d’ARTE.tv ]]></title>
        <id>https://marmelab.com/blog/2025/09/23/arte-agile-bff-home-page-editor.html</id>
        <link href="https://marmelab.com/blog/2025/09/23/arte-agile-bff-home-page-editor.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BUlr7K7I.jpg"/>
        <updated>2025-09-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Interview croisée avec Agathe Michalski, Responsable Technique, et Virginie Rieber, Product Owner chez ARTE, sur la collaboration avec Marmelab.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/reference" term="reference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marmelab, agence web à Nancy au cœur du Grand Est]]></title>
        <id>https://marmelab.com/blog/2025/09/24/marmelab-agence-web-a-nancy-au-coeur-du-grand-est.html</id>
        <link href="https://marmelab.com/blog/2025/09/24/marmelab-agence-web-a-nancy-au-coeur-du-grand-est.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.DMwJ3Ro2.jpg"/>
        <updated>2025-09-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Basée à Nancy, Marmelab est une agence web du Grand Est reconnue pour son expertise en développement d'applications métier. Fondée en 2013, notre équipe de plus de 20 développeurs séniors accompagne les entreprises locales et nationales dans leurs projets de développements.]]></summary>
        <author>
            <name>Jérémie Grossetete</name>
            <uri>https://www.linkedin.com/in/jeremiegrossetete/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/marmelab" term="marmelab"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Drag-and-Drop Scheduler in React with Bryntum]]></title>
        <id>https://marmelab.com/blog/2025/09/29/ra-scheduler.html</id>
        <link href="https://marmelab.com/blog/2025/09/29/ra-scheduler.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.mx0lA9fv.webp"/>
        <updated>2025-09-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Integrate Bryntum Scheduler into React Admin: drag-and-drop, zoom, infinite scroll, custom forms, and data converters - step by step.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Do you need a Backend For Frontend?]]></title>
        <id>https://marmelab.com/blog/2025/10/01/do-you-need-a-backend-for-frontend.html</id>
        <link href="https://marmelab.com/blog/2025/10/01/do-you-need-a-backend-for-frontend.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BA7ivYrE.jpg"/>
        <updated>2025-10-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When your frontend teams are drowning in API complexity and your backend team is overwhelmed with frontend-specific requests, the BFF pattern might be your lifeline. But is it always the right choice?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Learning Collaboration with Serious Games]]></title>
        <id>https://marmelab.com/blog/2025/10/09/leaning-collaboration-with-serious-games-glance-play14-nancy.html</id>
        <link href="https://marmelab.com/blog/2025/10/09/leaning-collaboration-with-serious-games-glance-play14-nancy.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-small.CQHIfgBM.jpg"/>
        <updated>2025-10-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Serious Games are a great way to learn, this article focuses on the workshops about collaboration we attended at #play14 Nancy that gave us a lasting impression.]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Add Role-Based Access Control On Top Of Your REST API]]></title>
        <id>https://marmelab.com/blog/2025/10/16/rbac-rest-middleware.html</id>
        <link href="https://marmelab.com/blog/2025/10/16/rbac-rest-middleware.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/rbac-rest-middleware-cover-small.BLMkutPe.webp"/>
        <updated>2025-10-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We built a Caddy module to control access to REST resources based on the user's role and a set of permissions.]]></summary>
        <author>
            <name>Jean-Baptiste Kaiser</name>
            <uri>https://www.linkedin.com/in/jean-baptiste-kaiser-77939a6b/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/golang" term="golang"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why AI Agents Need to Make Mistakes]]></title>
        <id>https://marmelab.com/blog/2025/10/20/why-smart-agents-need-to-make-mistakes.html</id>
        <link href="https://marmelab.com/blog/2025/10/20/why-smart-agents-need-to-make-mistakes.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C-2artRD.jpg"/>
        <updated>2025-10-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Developers often try to eliminate errors from AI agents. But science shows that being wrong — within reason — is what makes intelligence adaptive.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[From GraphQL to Zod: Simplifying Arte's API Architecture]]></title>
        <id>https://marmelab.com/blog/2025/10/29/from-graphql-to-zod.html</id>
        <link href="https://marmelab.com/blog/2025/10/29/from-graphql-to-zod.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.7ZhxeskK.jpg"/>
        <updated>2025-10-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Our team at Marmelab helped Arte transition away from a complex GraphQL layer. Here's how Zod became our secret weapon for maintaining type safety while reducing architectural complexity.]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/graphql" term="graphql"/>
        <category scheme="https://marmelab.com/blog/tags/rest" term="rest"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[vibe-spec: Generate Specifications From Coding Agent Logs]]></title>
        <id>https://marmelab.com/blog/2025/10/30/vibe-spec-generate-specifications-from-coding-agent-logs.html</id>
        <link href="https://marmelab.com/blog/2025/10/30/vibe-spec-generate-specifications-from-coding-agent-logs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.CW1Rtwzs.jpg"/>
        <updated>2025-10-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AI coding assistants can build software in semi-autonomy, but without specifications, projects lack functional definitions. The solution? Extract problem statements directly from conversation logs.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[4 Serious Games That Boost Team Communication]]></title>
        <id>https://marmelab.com/blog/2025/11/04/boosting-team-communication-through-play-3-reious-games-to-try.html</id>
        <link href="https://marmelab.com/blog/2025/11/04/boosting-team-communication-through-play-3-reious-games-to-try.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-small.C3XwVGNx.jpg"/>
        <updated>2025-11-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Serious Games are a great way to learn. This article focuses on the workshops about communication we attended at #play14 Nancy that left a lasting impression.]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spec-Driven Development: The Waterfall Strikes Back]]></title>
        <id>https://marmelab.com/blog/2025/11/12/spec-driven-development-waterfall-strikes-back.html</id>
        <link href="https://marmelab.com/blog/2025/11/12/spec-driven-development-waterfall-strikes-back.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BuAQbrZG.jpg"/>
        <updated>2025-11-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Kiro, Spec-kit, Bmad, Tessl, and other SDD frameworks turn business analysts into Markdown reviewers. Isn't there a more agile way to use Coding Agents?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Server Components With Parcel]]></title>
        <id>https://marmelab.com/blog/2025/11/14/react-server-components-with-parcel.html</id>
        <link href="https://marmelab.com/blog/2025/11/14/react-server-components-with-parcel.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.B9vHADqc.jpg"/>
        <updated>2025-11-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Mix client and server code seamlessly with React Server Components (RSC), now available outside of the Next.js ecosystem.]]></summary>
        <author>
            <name>Gildas Garcia</name>
            <uri>https://github.com/djhi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[LocalStack: Develop and Test Lambdas Locally]]></title>
        <id>https://marmelab.com/blog/2025/11/26/localstack-develop-and-test-your-lambda-locally.html</id>
        <link href="https://marmelab.com/blog/2025/11/26/localstack-develop-and-test-your-lambda-locally.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.iHvotnem.jpg"/>
        <updated>2025-11-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Developing Lambdas can be a pain, but with SAM to manage the infrastructure and Localstack to test locally, it's a breeze.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[TypeScript Types as a Programming Language]]></title>
        <id>https://marmelab.com/blog/2025/12/04/typescript-type-as-a-programming-language.html</id>
        <link href="https://marmelab.com/blog/2025/12/04/typescript-type-as-a-programming-language.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover-small.dpDGYvrK.jpg"/>
        <updated>2025-12-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Did you know TypeScript is Turing complete? In this post, I will approach type definitions as writing a program.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Transactions and RLS in Supabase Edge Functions]]></title>
        <id>https://marmelab.com/blog/2025/12/08/supabase-edge-function-transaction-rls.html</id>
        <link href="https://marmelab.com/blog/2025/12/08/supabase-edge-function-transaction-rls.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.wFUxDJwk.png"/>
        <updated>2025-12-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Edge functions are a powerful way to run server-side code close to your users. But how to handle transactions and Row Level Security (RLS) in these functions?]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/node-js" term="node-js"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tech F'Est : La conf de proximité]]></title>
        <id>https://marmelab.com/blog/2025/12/11/tech-f-est-2025.html</id>
        <link href="https://marmelab.com/blog/2025/12/11/tech-f-est-2025.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.DnLQzgYr.png"/>
        <updated>2025-12-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On a été à la première conférence de la Tech F'Est à Nancy. Voici les différents talks présentés à l'occasion.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/accessibility" term="accessibility"/>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SQL Window Functions and PARTITION BY in Practice]]></title>
        <id>https://marmelab.com/blog/2025/12/15/sql-window-functions-and-partition-by-in-practice.html</id>
        <link href="https://marmelab.com/blog/2025/12/15/sql-window-functions-and-partition-by-in-practice.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.B0sCBCHF.jpg"/>
        <updated>2025-12-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Sharing our experience with window functions in a recent client project involving historical data management]]></summary>
        <author>
            <name>Cindy Manel</name>
            <uri>https://www.linkedin.com/in/cindy-m-756808b8/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/database" term="database"/>
        <category scheme="https://marmelab.com/blog/tags/postgres" term="postgres"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[L'évaluation des IAs : Comment passer du POC à la production]]></title>
        <id>https://marmelab.com/blog/2025/12/17/evaluation-ia.html</id>
        <link href="https://marmelab.com/blog/2025/12/17/evaluation-ia.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cs0TOjZg.jpg"/>
        <updated>2025-12-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[La conférence de François Zaninotto au Forum PHP 2025 a permis de partager des outils et des retours d'expérience concrets pour évaluer et optimiser les agents IA.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/conference" term="conference"/>
        <category scheme="https://marmelab.com/blog/tags/video" term="video"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[You Don’t Need Code, You Need to Test Hypotheses]]></title>
        <id>https://marmelab.com/blog/2026/01/06/you-dont-need-code-you-need-to-test-hypotheses.html</id>
        <link href="https://marmelab.com/blog/2026/01/06/you-dont-need-code-you-need-to-test-hypotheses.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.B2_lXpbp.jpg"/>
        <updated>2026-01-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Clients often come to Marmelab with a development request and a solution already in mind. But in reality, what they truly need is not code, it’s to validate hypotheses.]]></summary>
        <author>
            <name>Alexandra Martin</name>
            <uri>https://www.linkedin.com/in/alexandra-mart/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/agile" term="agile"/>
        <category scheme="https://marmelab.com/blog/tags/lean-startup" term="lean-startup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Best Open Source CRM for 2026]]></title>
        <id>https://marmelab.com/blog/2026/01/09/open-source-crm-benchmark-2026.html</id>
        <link href="https://marmelab.com/blog/2026/01/09/open-source-crm-benchmark-2026.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DoUyeIxG.jpg"/>
        <updated>2026-01-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The best CRM is the one you can reshape. We compared 9 open-source CRMs in 2026 to find the most flexible, developer-friendly options for small businesses.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Kanban Board With Drag-and-Drop in React with Shadcn]]></title>
        <id>https://marmelab.com/blog/2026/01/15/building-a-kanban-board-with-shadcn.html</id>
        <link href="https://marmelab.com/blog/2026/01/15/building-a-kanban-board-with-shadcn.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/kanban-cover.oqYtfUi2.jpg"/>
        <updated>2026-01-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Build a Trello-like task board with React, Shadcn Admin Kit, and smooth drag-and-drop interactions. Create, edit, and organize todos across three columns with optimistic updates.]]></summary>
        <author>
            <name>Jonathan Arnault</name>
            <uri>https://fr.linkedin.com/in/jonathanarnault</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agent Experience: Best Practices for Coding Agent Productivity]]></title>
        <id>https://marmelab.com/blog/2026/01/21/agent-experience.html</id>
        <link href="https://marmelab.com/blog/2026/01/21/agent-experience.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.R3y4IpYP.jpg"/>
        <updated>2026-01-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why do coding agents shine in some projects and fail in others? This article explains how to design your codebase so agents work autonomously and effectively.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Free Laravel Admin With API Platform and React-Admin]]></title>
        <id>https://marmelab.com/blog/2026/01/23/laravel-api-platform-react-admin.html</id>
        <link href="https://marmelab.com/blog/2026/01/23/laravel-api-platform-react-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BvXK2nMR.jpg"/>
        <updated>2026-01-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Replace Laravel Nova with a flexible admin built on open standards and open-source tools.]]></summary>
        <author>
            <name>Anibal Svarcas</name>
            <uri>https://github.com/WiXSL</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/oss" term="oss"/>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Coding a trading card game on ATProtocol]]></title>
        <id>https://marmelab.com/blog/2026/01/30/coding-a-trading-card-game-on-atproto.html</id>
        <link href="https://marmelab.com/blog/2026/01/30/coding-a-trading-card-game-on-atproto.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BEth5fKc.jpg"/>
        <updated>2026-01-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The protocol behind BlueSky lets you store data in a decentralized way. You can even build a web application on top of it.]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Arazzo: The Missing Piece for AI-Assisted API Consumption]]></title>
        <id>https://marmelab.com/blog/2026/02/02/arazzo-a-documentation-helper-for-generating-client-code-using-ai.html</id>
        <link href="https://marmelab.com/blog/2026/02/02/arazzo-a-documentation-helper-for-generating-client-code-using-ai.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/shadow.Dc2sdiTt.jpg"/>
        <updated>2026-02-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Arazzo is the new OpenAPI Initiative specification for describing API workflows. Discover how it makes API integration clearer and more reliable.]]></summary>
        <author>
            <name>Guillaume Pierson</name>
            <uri>https://github.com/Nitix</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mettre React KO avec knockoutjs]]></title>
        <id>https://marmelab.com/blog/2026/02/10/knockoutjs.html</id>
        <link href="https://marmelab.com/blog/2026/02/10/knockoutjs.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/robot-fight.CTsDAZPX.png"/>
        <updated>2026-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Peut-on aujourd'hui se passer de gros framework comme React, Vue ou Angular pour faire un site web correct et maintenable ? Que dire de knockoutjs par exemple ?]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/js" term="js"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[MCP Security: Understanding Vulnerabilities in Model Context Protocol]]></title>
        <id>https://marmelab.com/blog/2026/02/16/mcp-security-vulnerabilities.html</id>
        <link href="https://marmelab.com/blog/2026/02/16/mcp-security-vulnerabilities.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/ai-security-thumbnail.CgMmzfRh.jpg"/>
        <updated>2026-02-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The Model Context Protocol promises seamless AI integration, but are we opening security holes? I explore common MCP vulnerabilities and how to detect them.]]></summary>
        <author>
            <name>Thibault Barrat</name>
            <uri>https://github.com/thibault-barrat</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building an Admin App with TanStack Start and Shadcn]]></title>
        <id>https://marmelab.com/blog/2026/02/18/scaffold-your-shadcn-admin-app-with-tanstack-start.html</id>
        <link href="https://marmelab.com/blog/2026/02/18/scaffold-your-shadcn-admin-app-with-tanstack-start.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.9uQE8u3h.jpg"/>
        <updated>2026-02-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Leverage TanStack Start and Shadcn Admin Kit to quickly build an admin application over a REST API.]]></summary>
        <author>
            <name>Matthieu Hochlander</name>
            <uri>https://github.com/Madeorsk/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
        <category scheme="https://marmelab.com/blog/tags/tutorial" term="tutorial"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[9 Advanced PostgreSQL Features I Wish I Knew Sooner]]></title>
        <id>https://marmelab.com/blog/2026/02/23/do-you-know-psql.html</id>
        <link href="https://marmelab.com/blog/2026/02/23/do-you-know-psql.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BcAOE6sN.png"/>
        <updated>2026-02-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[GENERATED columns, EXCLUDE constraints, DISTINCT ON, Foreign Data Wrappers... PostgreSQL has powerful features you might not know about. Here are my favorites.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/postgres" term="postgres"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React-Admin: February 2026 Update]]></title>
        <id>https://marmelab.com/blog/2026/02/26/react-admin-february-2026-update.html</id>
        <link href="https://marmelab.com/blog/2026/02/26/react-admin-february-2026-update.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.DETHcEtB.jpg"/>
        <updated>2026-02-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React-admin 5.12, 5.13 and 5.14 introduce TanStack router adapter, RecordsIterator, TextArrayField, DataTableInput, and more!]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Taskfile: The Modern Alternative to Makefile That Will Change Your Workflow]]></title>
        <id>https://marmelab.com/blog/2026/03/12/taskfile-alternative-makefile.html</id>
        <link href="https://marmelab.com/blog/2026/03/12/taskfile-alternative-makefile.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.DLaKJs7b.png"/>
        <updated>2026-03-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Taskfile is a tool inspired by Makefile written in Go. It was designed to address common problems encountered with Makefile, while offering a simpler and more readable syntax.]]></summary>
        <author>
            <name>Anthony Rimet</name>
            <uri>https://www.linkedin.com/in/anthonyrimet/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/devops" term="devops"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Atomic CRM March 2026 Updates]]></title>
        <id>https://marmelab.com/blog/2026/03/13/atomic-crm-march-updates.html</id>
        <link href="https://marmelab.com/blog/2026/03/13/atomic-crm-march-updates.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.ZieOflnN.png"/>
        <updated>2026-03-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Discover what's new in Atomic CRM 1.5, including SSO support, a new MCP server for AI assistants, enhanced mobile UX, and much more.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/atomic-crm" term="atomic-crm"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Software Developers Will Never Die]]></title>
        <id>https://marmelab.com/blog/2026/03/20/software-will-never-die.html</id>
        <link href="https://marmelab.com/blog/2026/03/20/software-will-never-die.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BgjRGIMU.jpg"/>
        <updated>2026-03-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AI agents can now rewrite an app in hours. But software value lies in judgment, trust, and specification — not code. Here's why the craft of software engineering is evolving, not dying.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Symfony, Mercure, React: Real-time Updates In Less Than 100 Lines Of Code]]></title>
        <id>https://marmelab.com/blog/2026/03/25/symfony-mercure-react-realtime-updates.html</id>
        <link href="https://marmelab.com/blog/2026/03/25/symfony-mercure-react-realtime-updates.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BuUk9bB_.jpg"/>
        <updated>2026-03-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How I implemented real-time updates in less than 100 lines of code using Mercure in a React application with Symfony.]]></summary>
        <author>
            <name>Matthieu Hochlander</name>
            <uri>https://github.com/Madeorsk/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/php" term="php"/>
        <category scheme="https://marmelab.com/blog/tags/typescript" term="typescript"/>
        <category scheme="https://marmelab.com/blog/tags/react" term="react"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[UX Quest: Train Your Usability Skills]]></title>
        <id>https://marmelab.com/blog/2026/03/26/ux-quest-train-your-usability-skills.html</id>
        <link href="https://marmelab.com/blog/2026/03/26/ux-quest-train-your-usability-skills.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.Cr70iXfK.png"/>
        <updated>2026-03-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Developers need to expand their skills because coding agents are taking an increasing part of their job. Let's start with usability!]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ux" term="ux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A new hope. Good bye React. Meet COBOL-Admin.]]></title>
        <id>https://marmelab.com/blog/2026/04/01/good-bye-react-meet-cobol-admin.html</id>
        <link href="https://marmelab.com/blog/2026/04/01/good-bye-react-meet-cobol-admin.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BLt_VWm4.png"/>
        <updated>2026-04-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[React Admin is a great framework to build admin interfaces. However we can do better, we can do simpler, we can do faster. How? By leveraging the power of old and robust technology: COBOL.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/react-admin" term="react-admin"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Strikes Back: Using an LLM to write COBOL]]></title>
        <id>https://marmelab.com/blog/2026/04/08/cobol-ai-strikes-back.html</id>
        <link href="https://marmelab.com/blog/2026/04/08/cobol-ai-strikes-back.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/ia-strikes-back.9X0cC-07.jpeg"/>
        <updated>2026-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When AI-powered coding meets punch-card era technology]]></summary>
        <author>
            <name>Julien Mattiussi</name>
            <uri>https://github.com/JulienMattiussi</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Creating an MCP Server from OpenAPI Documentation]]></title>
        <id>https://marmelab.com/blog/2026/04/16/create-mcp-from-openapi.html</id>
        <link href="https://marmelab.com/blog/2026/04/16/create-mcp-from-openapi.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/cover.DfUm1psF.jpg"/>
        <updated>2026-04-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Is an OpenAPI spec enough to let AI agents interact with a REST API? Let's find out.]]></summary>
        <author>
            <name>Guillaume Billey</name>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[MCP Servers: Your Next User Is An AI Agent]]></title>
        <id>https://marmelab.com/blog/2026/04/22/mcp-servers-101.html</id>
        <link href="https://marmelab.com/blog/2026/04/22/mcp-servers-101.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.BYT4aKOo.jpg"/>
        <updated>2026-04-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[MCP servers are the best thing since sliced bread. They extend the capabilities of AI assistants and let them connect with third-party tools. If your service doesn't have one yet, it's time to prioritize it.]]></summary>
        <author>
            <name>François Zaninotto</name>
            <uri>https://github.com/fzaninotto</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
        <category scheme="https://marmelab.com/blog/tags/architecture" term="architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude Code Tips I Wish I’d Had From Day One]]></title>
        <id>https://marmelab.com/blog/2026/04/24/claude-code-tips-i-wish-id-had-from-day-one.html</id>
        <link href="https://marmelab.com/blog/2026/04/24/claude-code-tips-i-wish-id-had-from-day-one.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.D5OC4eOW.png"/>
        <updated>2026-04-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The workflow, best practices, and pitfalls we learned after months of daily Claude Code use at marmelab.]]></summary>
        <author>
            <name>Caroline Schneider</name>
            <uri>https://www.linkedin.com/in/caroline-schneider-608072224/</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[From Legacy to Lightning: How To Modernize A Python App]]></title>
        <id>https://marmelab.com/blog/2026/04/27/modernize-legacy-python-app.html</id>
        <link href="https://marmelab.com/blog/2026/04/27/modernize-legacy-python-app.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/small.C3p_v68K.jpg"/>
        <updated>2026-04-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to modernize a legacy Python application without stopping the world? Here's a list of tools and practices that can help.]]></summary>
        <author>
            <name>Adrien Guernier</name>
            <uri>https://www.linkedin.com/in/adrien-guernier-9b54b558</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/python" term="python"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Wars Ep. 3: The Return of the Developer]]></title>
        <id>https://marmelab.com/blog/2026/05/07/episode-3-the-return-of-the-developer.html</id>
        <link href="https://marmelab.com/blog/2026/05/07/episode-3-the-return-of-the-developer.html"/>
        <media:thumbnail url="https://marmelab.com/_astro/thumbnail.FtcNA3hS.jpg"/>
        <updated>2026-05-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This article is about how a developer can make the most of AI tools, by making good architectural decisions and reviewing the code the AI generates.]]></summary>
        <author>
            <name>Thiery Michel</name>
            <uri>https://github.com/ThieryMichel</uri>
        </author>
        <category scheme="https://marmelab.com/blog/tags/ai" term="ai"/>
    </entry>
</feed>