Upcoming conferences: AFUP Day, Web2Day, API Platform Meetup and more!

During the spring I’ll speak at several tech events about my projects Mercure (Go), API Platform (PHP, server-side and JS, client-side) and Symfony Panther (PHP/WebDriver):

AFUP Day, May 17th in Lille

Discover Symfony Panther, a brand new end-to-end testing tool using real web browsers for Symfony and PHP.

API Platform pre-Web2day meetup, June 3th in Nantes

Topic to be announced!

Web2Day, May 6th in Nantes

Mercure: UIs always synchronized with data in database

My company Les-Tilleuls.coop will have a booth during every of these events. Come, and let’s have a chat!
Also, I’ll announce my participation to some more events soon, stay tuned!

API Platform 2.3: Major Perf Improvement, API evolution/deprecation, Better Dev Tools and Much More!

Today, the API Platform framework has reached 3k stars on GitHub, and it makes us very proud! To celebrate, I’ve just tagged the 2.3 version, that comes with a lot of amazing new features. Let’s discover them!

For newcomers, API Platform is a modern open source framework for API-driven projects. It allows, in just a few minutes, to expose hypermedia and GraphQL APIs. It also provides client-side tools leveraging the capabilities of auto-discoverable APIs: the admin interface and the React and Vue.js Progressive Web App generator. Finally, API Platform has been designed from the ground up as a Cloud Native solution that can run locally with the built-in Docker setup and be deployed instantly on a Kubernetes cluster (Heroku is also supported).

40% faster than the previous version!

We’re committed to continuously improving the performance of API Platform. In version 2.1, we’ve added an amazing invalidation-based cache mechanism. When enabled, HTTP responses are generated only one time then stored and served by a reverse caching proxy. When a resource is modified, all responses including or referencing it are automatically removed from the cache.

In version 2.3, Ben Davies has done an excellent job at profiling and patching the core component. Moreover, we’ve worked closely with the Symfony team to dramatically improve the performance of the Symfony Serializer component (one of the most important pieces of software used by API Platform).

With all these optimizations put together, in the scenario of a cache miss, API Platform-based apps are now more than 40% faster in version 2.3 compared to version 2.2 (Blackfire comparison):

A big thanks to Ben and to Nicolas Grekas from Blackfire.io for making it happen!

Support for API evolution (aka deprecating fields and resources)

A growing best practice is to use the evolution strategy for web APIs. Creating new versions of the API, of or its endpoints requires modifying all clients to upgrade, even the ones not impacted by the changes. On the other hand, this strategy (also known as versionless APIs) consists of deprecating the fields, resources types or operations that will be removed at some point. Most modern API formats including GraphQL, OpenAPI and Hydra are able to support this strategy.

In API Platform 2.3, we’ve introduced a new attribute to mark deprecated resource classes, operations and properties. All documentation formats generated by API Platform and having support for this feature will then automatically take it into account.

Here is how to deprecate an entire resource:


namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;

 * @ApiResource(deprecationReason="Create a Book instead")
class Parchment
    // ...

As you can see, to deprecate a resource, we just have to explain what the client should do to upgrade in a dedicated attribute. You can also use this new deprecationReason attribute on any operation.

The deprecation will automatically be taken into account by clients supporting the previously mentioned format. Here is how it renders for OpenAPI in the built-in Swagger UI shipped with the framework:

And now in the built-in version of GraphiQL (for GraphQL APIs):

It’s also possible to deprecate a single field:


namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;

 * @ApiResource
class Review
    // ...

     * @ApiProperty(deprecationReason="Use the rating property instead")
    public $letter;

All our client-side tools have been updated to ignore deprecated fields, operations and resources by default. The api-doc-parser library (which supports Hydra, and OpenAPI in the latest version) also support this new feature.

Dedicated Profiler Panel and Web Debug Toolbar Integration

Symfony comes with a nice set of development tools, including the Profiler, and it is compatible with API Platform! To install it, execute composer req profiler. Thanks to the contributions of Julien Deniau and Anthony Grassiot, the Web Debug Toolbar now displays an icon featuring our nice spider Webby that is linked to a new profiler panel dedicated to API Platform:

Shorter Attributes Syntax

Defining attributes using annotations can become verbose pretty quickly. As alternatives to annotations, for complex configurations API Platform also supports the XML and YAML formats. However, in version 2.3, Baptiste Meyer added a nicer and shorter syntax to define attributes on the @ApiResource and @ApiProperty annotations:

// Before
 * @ApiResource(
 *     attributes={
 *         "validation_groups"={"bar"},
 *         "normalization_context"={"groups": {"book:read"}}
 *     }
 * )
class Book
    // ...

// Now
 * @ApiResource(
 *     validationGroups={"bar"},
 *     normalizationContext={"groups": {"book:read"}}
 * )
class Book
    // ...

Of course the “old” syntax is still valid, but the new shortcuts allow a better discoverability and enable autocompletion in IDEs (if you are a PHPStorm user, install the PHP Annotations plugin to benefit from this new feature).

Revamped Admin

In version 2.3, a lot of love has been given to the API Platform Admin Component. This JavaScript library, maintained by Morgan Auchedé, dynamically constructs a UI for any API supporting Hydra or OpenAPI.

It uses React, and was built on top of the Admin On Rest library. But as you may know, Admin On Rest has been deprecated and Marmelab, the company behind the tool, has released a replacement called React Admin. React Admin comes with an updated fancy interface and it also fixes some design issues.

So we’ve patched API Platform Admin to use the new kid on the block, and we’ve taken this opportunity to also fix a well known annoying issue on our side: the Admin component wasn’t able to deal with embedded relations. This isn’t the case anymore. What’s even better, the Admin is now smart enough to reuse the data already downloaded as embedded relation instead of triggering a new HTTP request. It allows to dramatically improve the performance of the admin!

We’ve also added support for new features introduced by React Admin, including bulk delete.

Other Features

Of course, this new version also includes a lot of new features that are less visible but also very useful. Here is the curated list of some interesting changes:

  • Make resource class’s constructor parameters writable
  • Add support for interface as a resource
  • Throw an exception if a required filter isn’t set
  • Allow to specify the message when access is denied using the access_control_message attribute
  • Add a new option to include null results when using the date filter
  • Allow data persisters to return a new instance instead of mutating the existing one
  • Add a new attribute to configure specific formats per resources or operations
  • Add an --output option to the api:swagger:export command
  • Drop support for PHP 7.0
  • Upgrade Swagger UI and GraphiQL
  • GraphQL: Add a totalCount field in GraphQL paginated collections
  • JSONAPI: Allow inclusion of related resources

It is also worth mentioning that Teoh Han Hui has modernized the Docker setup we provide to leverage the new capabilities of this containerization technology.

As usual, thank you very much to all the developers who’ve contributed these new features, bug fixes, and the related documentation entries. You’re the most important part of the project: the community.

#CoopLab project: A video series about cooperatives and self-management I’m featured in

I’ve been interviewed along with other cooperatives founders form all across Europa in a video series published by the project.

I present in depth the democratic and social-equity principles behind Les-Tilleuls.coop, a self-managed company, 100% owned by its employees, I cofounded 6 years ago.

I explain how we grew from 3 to 25 while making together every important decision – including hirings and salaries – and sharing fairly the generated profits.

The website also provides materials for students (and other interested people) to create a cooperative!

Videos are available in English, French, Spanish and Italian. Here are the English ones:

Petite introduction à l’auto-défense numérique

Présentation effectuée pour la première fois samedi 5 novembre pour la CNT Lille :

Services de renseignement des États, multinationales du web (GAFAM), employeurs voir proches indiscrets… à l’heure de l’omniprésence du web dans nos vies, nous sommes tous fichés et surveillés. Cependant, il existe des méthodes (plus ou moins efficaces) qui permettent de limiter les dégâts.
Au cours d’un atelier pratique destiné aux débutants, nous découvrirons les principes généraux des techniques de fichage et de surveillance puis manipulerons quelques outils permettant de s’en protéger sur ordinateur et sur téléphone mobile.


How to make high performance API powered webapps with Symfony (Symfony Live)

I was speaking about cloud computing, APIs and JavaScript Single Page Application at the Symfony Live San Francisco conference. Here are my slides:

Open the slides in full screen

Symfony Live 2015 : Construire des applications API-centric avec Symfony

Symfony Live 2015

Je donnerai une conférence de 40 minutes au Symfony Live 2015 qui se déroulera le 9 avril à la Cité Internationale Universitaire de Paris.

J’y parlerai de la conception et du développement d’applications construites autour d’une API REST :

Au cours de ce talk, je présenterai une architecture moderne qui permet de construire des applications performantes, évolutives et interopérables :

Le talk sera didactique et accessible aux développeurs Symfony de tous niveaux. La construction d’une micro-application suivant cette architecture sera présentée pas à pas.

 17 autres conférences atuour de Symfony auront lieu lors du même évènement. Les billets sont en vente sur le site du Symfony Live.


Interview à propos de Les-Tilleuls.coop dans J’innove

Les-Tilleuls.coop : un statut Scop qui débride la créativité et l’innovation
Le jeudi 03 Juillet 2014

Créée en 2011, Les-Tilleuls.coop est une agence web spécialisée dans le développement sur-mesure de logiciels e-commerce. Basée à EuraTechnologies, cette Jeune Entreprise Innovante a pris le parti d’organiser son modèle de management selon une organisation coopérative : « à l’origine de la démarche, le mouvement des logiciels libres qui s’appuie sur un esprit communautaire. Je souhaitais recréer cet esprit et l’appliquer dans un contexte entrepreneurial », explique Kévin Dunglas, gérant de l’entreprise et directeur technique.

L’humain est au cœur du projet d’entreprise. L’agence est possédée à 95% par ses salariés et est dirigée par un gérant. Les prises de décision sont ainsi partagées : « chaque salarié coopérateur dispose d’une voix, et ce quel que soit son niveau d’implication financière. Notre mode de fonctionnement se veut démocratique. Tous les salariés participent aux sujets stratégiques de l’entreprise. Les bénéfices sont redistribués équitablement ». Cet esprit libre est aussi une condition à l’embauche : « au bout d’un an d’ancienneté, nous proposons systématiquement au salarié de devenir coopérateur ».

Les effets ?

  • Un salarié fidèle et entrepreneur : « les SSII et les agences web d’une manière générale sont réputées pour leur taux de turn-over important. Ici, nous misons sur l’implication du salarié dans la vie de l’entreprise. Mon but est de redonner du sens au travail ». Cet esprit d’entreprise se ressent au niveau des projets menés pour les clients de l’agence : « un meilleur investissement des salariés, une volonté de toujours mieux faire… ».
  • Un levier d’innovation et de créativité : « Ce statut favorise le partage d’idées. Aussi, j’invite les salariés à travailler fréquemment sur des logiciels libres en dehors de toute contrainte client. Cette liberté leur permet de tester librement de nouvelles applications et ainsi être force de proposition lors de futurs projets à mener ».

Depuis sa création, Les-Tilleuls.coop a toujours été bénéficiaire et des entreprises à forte notoriété lui font confiance : Coyote France, National Geographic, Hema, Virgin Mobile…

Quelques exemples de créations innovantes développées par les coopérateurs Les-Tilleuls.coop :

  • Une plateforme de réservation de voiture accessible via smartphone pour la société Citiz. Un système permet au client d’un opérateur d’auto partagée de garer son véhicule où il le souhaite et au futur utilisateur de repérer en temps réel où la voiture se trouve.
  • Une plateforme e-commerce qui s’adapte selon les canaux de vente pour Alice’s Garden. Dès qu’une commande est passée par un client sur Amazon, PriceMinister…, l’information est remontée au sein d’une application centralisée qui alerte automatiquement le transporteur.

J’innove en Nord Pas de Calais

Les slides du premier sfPot (apéro Symfony) Lillois

Merci d’être venus assister en nombre au premier sfPot qui s’est tenu jeudi dernier à l’Autrement Dit.

Nous y avons discuté de comment réaliser des applications web modernes architecturées autour d’une API REST réalisée avec Symfony et d’un client en JavaScript utilisant des frameworks tels que AngularJS et Backbone.js.

Comme promis, voici les slides réalisées par Alexandre Salomé et moi-même qui y ont été projetées :

Nous espérons vous voir aussi nombreux et enthousiastes lors du prochain évènement qui ne saurait tarder ! Encore merci à Cécile d’avoir organisé cette soirée.

Fuite de données personnelles à Pôle emploi ? Revente d’informations ? Piratage ?

Pôle Emploi

Voici la première contribution externe de ce blog, un article écrit par une amie qui révèle un problème de confidentialité important chez Pôle emploi : les données personnelles des usagers seraient dans la nature, utilisées pour envoyer du spam et probablement pour tenter des usurpations d’identité.

Après une rapide analyse des en-têtes de l’email en question, la piste Pôle emploi se confirme : l’adresse mail du destinataire est écrite entièrement en majuscule, ce qui est un usage peu courant… sauf dans l’interface de gestion des cordonnées du site de Pôle emploi.

Ce sont potentiellement des dizaines de milliers de noms, d’adresses postales et d’adresses emails qui sont dans la nature. Les plaintes d’usagers commencent à se répandre sur la toile, gageons que Pôle emploi aura une réaction adapté à l’ampleur du problème.

Cela fait plusieurs jours que des demandeurs d’emploi reçoivent des mails plutôt louches. Un blog alerte de ces faux entretiens d’embauche, et à voir le nombre de commentaires, on peut penser que de nombreux demandeurs d’emploi sont concernés.

Et j’en fais moi-même partie…

J’ai reçu un mail étrange hier. Il m’indique que suite à ma réponse à une annonce, je suis convoquée à un entretien pour un poste de chargée de clientèle. Le hic, c’est que je n’ai répondu à aucune annonce et qu’en plus je ne cherche absolument pas un poste de chargée de clientèle ! Passée ma surprise, je regarde avec un peu plus d’attention ce mail et plusieurs détails me sautent aux yeux : les tournures de phrase ne sont pas adaptées à ce type de démarche ; les fonctions de la personne que je dois rencontrer et de la personne qui m’envoie le mail ne sont pas précisées ; le mail d’envoi est un mail SFR… et surtout, le cabinet de recrutement qui me contacte n’existe pas, pas plus que l’entreprise qui souhaite si promptement me recruter.

Après m’être beaucoup interrogée sur le pourquoi d’une telle démarche et avoir parcouru les commentaires sur le blog cité ci-dessus, je me dis que l’hypothèse de l’usurpation d’identité est probable. Faire venir des individus en galère à un entretien, leur demander leur carte d’identité pour préparer le contrat qu’il reviendront signer le lendemain et ne jamais les revoir… bref profiter de la situation de galère des chômeurs. Même si ça me paraît quand même carrément tordu…

De toute façon, je n’avais pas prévu d’y aller. En fait, ce qui m’inquiète surtout c’est comment nos données personnelles ont été récupérées. En effet, nos nom, prénom, adresse mail, numéro de téléphone (pour certains), lieu d’habitation (habitant à Lille, je suis convoquée à Roubaix et non à Paris) et situation de chômage sont associés.
A part Pôle Emploi, aucun autre organisme ne dispose de l’ensemble de ces informations (pas la peine de me contredire, j’ai bien réfléchi à la question et, disposant de plusieurs adresses mail, il ne m’est pas difficile de savoir quels organismes disposent de quelles informations).

Alors fuites de la part de Pôle emploi ? Piratage de leur système informatique (suite aux différentes “affaires” qui ont mis en question sa fiabilité, on peut se poser très sérieusement la question) ? Ou même revente de données ?
D’après les témoignages des demandeurs d’emploi concernés par ces démarches, il semblerait que ni Pôle emploi, ni les flics ne s’intéressent au problème… Moi ça m’inquiète, ça m’inquiète que des données personnelles me concernant soient utilisées de manière frauduleuse, surtout quand ces données viennent d’une administration comme Pôle emploi.
Alors quoi ?

En dessous le fameux mail.

De : <[email protected]>
Date : 21 mars 2014 14:24
Objet : Proposition d’entretien chez f 2f, Roubaix
À : [email protected]

Convocation: xxx xxx

Suite à votre réponse à l’annonce, nous vous demandons de bien vouloir vous présenter chez f 2f pour rencontrer Mr Hurand au 35, Avenue Jean Baptiste Lebas,2ème étage (entre gare SNCF et Mairie), 59100 Roubaix.

Nous fixons donc un rendez-vous de principe pour mercredi 26 mars 2014 à 16h15, mais vous avez la possibilité bien évidemment de le fixer avant Vendredi 28 mars , dernier jour d’entretien pour ce poste de chargé de clientèle, en répondant à mon email.

Nous comptons vivement sur votre présence à l’heure prévue avec votre CV imprimé pour cet entretien individuel.

SH recrutement

Courriel transmis par le logiciel EMA http://www.emamailing.com
EMA est gratuit pour une utilisation non commerciale

Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection Antivirus avast! est active.

Nouvelle réalisation : la boutique Lost In The Supermarket

Fraichement mise en ligne, voici la boutique de vêtements de mode anglaise Lost In The Supermarket.

Elle a été réalisée à l’aide de Prestashop, de Bootstrap et de LESS. Le design est adaptif (responsive) bien que quelques défauts de jeunesse subsistent sur smartphone. Les pages contiennent du balisage sémantique Schema.org afin d’afficher des extraits enrichis dans les résultats des moteurs de recherche. La création graphique est signée Joad Martin.

Lost In The Supermarket