Sign in

GromNaN

@jerome.tamarelle.net
427 followers 124 following 211 posts

PHP Developer MongoDB Driver & Symfony Core jerome.tamarelle.net

PostsRepliesMedia
GromNaN @jerome.tamarelle.net · 24/06/2026
J'ai un chêne qui pousse dans le jardin. Dans 20 ans il me donnera de l'ombre.
Jeune chêne avec seulement quelques feuilles qui sortent de la pelouse.
110
GromNaN @jerome.tamarelle.net · 12/06/2026
@pauline-vos.nl is live from the #SymfonyOnline conference.
010
GromNaN @jerome.tamarelle.net · 18/05/2026
I got a lot of positive feedback on my talk about queryable encryption with Doctrine at #Symfony_Live Paris. So I’m presenting it again in English for Symfony Online. I’ll cover cryptography best practices and the inner workings of the Doctrine ORM.
Banner for Jérôme Tamarelle’s talk titled “Protect your data with queryable encryption” for Symfony Online Summer 2026
001
GromNaN @jerome.tamarelle.net · 07/04/2026
In the Symfony configuration, you can use `when@<env>` to set a different configuration value depending on the environment. What you're suggesting is pretty much the same thing. symfony.com/doc/current/...
Symfony Configuration with when@prod and when@dev
000
GromNaN @jerome.tamarelle.net · 08/12/2025
“It would be fully typed and other stuff that belongs to the property through attributes. Everything would be collocated to the property. I don't think it's out of the World equation of having properties in Eloquent” — Nuno Maduro
Screen capture of the live video with Nuno writing an example of class property with an attribute.
100
GromNaN @jerome.tamarelle.net · 29/11/2025
It looks like this one I've seen in Rouen, France
110
GromNaN @jerome.tamarelle.net · 28/11/2025
The #SymfonCon Amsterdam 2025 was awesome. So many nice people to meet and see again. Very good talks from the best speakers.
Photo of me and Pauline behind the 20 years of Symfony photo booth.
061
GromNaN @jerome.tamarelle.net · 22/10/2025
When chained, the ternary operator syntax ?: is hard to read. I prefer match(true) #PHP
PHP code snippet using match(true) instead of 2 ternary operator.
150
GromNaN @jerome.tamarelle.net · 16/05/2025
Just when we thought the #Symfony Dependency Injection component was feature complete, we've opened a new chapter with the introduction of resource definitions. Classes that are not service can be tagged according to the interfaces or attributes they use, which can then be injected into services.
PHP code showing usage of addResourceTag on ApiPlatform attribute class.
150
GromNaN @jerome.tamarelle.net · 09/05/2025
When one say: "I physically removed the data from the disk!" This is what I have in mind.
A hand pointing a scalpel on a hard drive.
010
GromNaN @jerome.tamarelle.net · 16/04/2025
A reminder for maintainers of #PHP libraries: adding a parameter to a method of an interface causes a fatal error in all the classes that implement it. It's a BC break that should be prohibed in a minor version. In Symfony, we add the parameter virtually using phpdoc, and read it using func_get_arg.
PHP code: 

    /**
     * @param int $nbToken
     *
     * @psalm-param int<1, max> $nbToken
     */
    public function mark(string $place /* , int $nbToken = 1 */): void
    {
        $nbToken = 1 < \func_num_args() ? func_get_arg(1) : 1;
    }

Source: https://github.com/symfony/symfony/blob/01c26aa928ecc5dc42ce90268299c190c6b712ed/src/Symfony/Component/Workflow/Marking.php#L39
0112
GromNaN @jerome.tamarelle.net · 15/04/2025
While the major release was made only 5 days ago, we have already reached install parity for the mongodb extension in version 1 and 2 ... with pie. With pecl, the latest version is automatically installed for most people, so download stats are going well. #PHP
Daily installs from packagist: 1 for version 1 and 1 for version 2.
https://packagist.org/packages/mongodb/mongodb-extension/statsTotal downloads of mongodb extension with pecl: 47k for version 2
https://pecl.php.net/package-stats.php?pid=981&rid=&cid=7
010
GromNaN @jerome.tamarelle.net · 04/04/2025
Deprecating the implicitly nullable parameter in #PHP 8.4 had a huge cost for the maintainers. Even if there are solutions to automate the fixes, that breaks almost all old code with very low value for developers. My article about fixing this is by far the most popular I have ever published.
Article about fixing the deprecating got 27k views.
263
GromNaN @jerome.tamarelle.net · 03/04/2025
Last minute talk preparation for @alcaeus79.bsky.social in extreme conditions.
010
GromNaN @jerome.tamarelle.net · 03/04/2025
#SymfonyLive Berlin is starting. I'm very happy to meet the German developers and already having great discussions.
170
GromNaN @jerome.tamarelle.net · 29/03/2025
Merci @symfony.com pour la belle surprise en ouvrant la boîte de chocolats. C'est un plaisir d'être orateur #Symfony_Live. L'organisation était encore une fois excellente, et les discussions passionnantes.
Boite de chocolats offertes aux orateurs, avec inscrit "Merci Jérôme", pour moi.Photo des orateurs sur la scène sur Symfony Live.Photo de moi sur scène, avec une illustration de Garfield "J'aime beaucoup les Lasagnes"
140
GromNaN @jerome.tamarelle.net · 27/03/2025
Suivi de @lyrixx.bsky.social qui fait une démo avec Claude. #Symfont_Live lightning talks.
120
GromNaN @jerome.tamarelle.net · 27/03/2025
Présentation de la mise en place d'un RAG avec LLM (IA) en PHP, par @welcomattic.com #Symfony_Live
Mise en place d'un système RAG en PHP
190
GromNaN @jerome.tamarelle.net · 19/03/2025
You have to replace all the PHPUnit annotations by the corresponding PHP Attributes. But Rector will ease this process: github.com/rectorphp/re...
@test becomes #[Test]@testWith annotation#[TestWith] attribute
131
GromNaN @jerome.tamarelle.net · 19/03/2025
The Symfony Demo project upgraded to PHPUnit 11, so you can upgrade your project too. Say goodbye to simple-phpunit. #php
run all test of the application 
php bin/phpunit
110
GromNaN @jerome.tamarelle.net · 19/02/2025
@afup.org on parle de ça.
AFUP store with "PHP's not dead" swag.
200
GromNaN @jerome.tamarelle.net · 18/02/2025
Your REST/GraphQL API is using JSON to represent the data, why would you use a tabular database? Leverage the flexible document model of @mongodb.bsky.social with the power of @api-platform.com to create your next project www.mongodb.com/developer/pr...
Build a REST API with JSON model
And split documents into relational tables
Hit performance issues and complex code
020
GromNaN @jerome.tamarelle.net · 10/02/2025
I was impressed by the diff, but that's mainly imported and generated files. I get why they are committed for simplicity when the PHP packages are installed. Thanks for splitting the commits, making it easier to review.
23 files changed
74000 addition
110
GromNaN @jerome.tamarelle.net · 08/02/2025
C'est dans la moyenne. Les ventes de voitures électriques stagnent.
000
GromNaN @jerome.tamarelle.net · 08/02/2025
There are a bunch of awesome new feature upcoming in @symfony.com that needs to be documented. That's definitely a great way to contribute and learn at the same time. github.com/symfony/symf... #php
Screenshot of the Symfony docs issuesIssue Streamlining server event streamingIssue [Serializer] Add NumberNormalizer
1103
GromNaN @jerome.tamarelle.net · 07/02/2025
You can mix with named arguments, and when the method is variadic you can set argument names that would not be allowed as variable name. We use this feature for the MongoDB Aggregation Builder: github.com/mongodb/mong...
Code sample from the link.
fields order doesn't matter, array unpacking must be before named arguments
110
GromNaN @jerome.tamarelle.net · 04/02/2025
Everything happens at the #LaraconEU unconference. @naderman.de shows awesome composer features.
Composer minimal changes presented by Nils
020
GromNaN @jerome.tamarelle.net · 02/02/2025
The view isn't bad from the 11th floor either.
010
GromNaN @jerome.tamarelle.net · 02/02/2025
On the way to #LaraconEU in Amsterdam, I met @naderman.de by chance on the Eurostar. It's always a joy to see familiar faces. Come to him, he has new Composer/Packagist features that are well worth a visit to its booth tomorrow.
Nils and me, selfie.
0121
GromNaN @jerome.tamarelle.net · 01/02/2025
It's pretty. I tried with an Aggregation Pipeline but I'm not sure this it the best use-case.
Aggregation Pipeline representation on a graphAggregation pipeline in Yaml
030
GromNaN @jerome.tamarelle.net · 20/01/2025
Joyeux anniversaire et bravo à tous les contributeurs.
Cake with "10th Birthday API Platform"
1144
GromNaN @jerome.tamarelle.net · 20/01/2025
Using closures and generators in #PHP classes can create circular references without you even realizing it. Learn to recognize these patterns to avoid memory leaks. dev.to/gromnan/php-...
class A
{
    public iterable $iterator;

    public function __construct()
    {
        $this->iterator = $this->generator();
    }

    private function generator(): Generator
    {
        yield;
    }
}class A {
    public Closure $closure;
    public function __construct()
    {
        $this->closure = function () {};
    }
}
172
GromNaN @jerome.tamarelle.net · 02/12/2024
- Excited to see you all in {city} later this week. It's going to be a fantastic {conference_name}! - Can’t wait to go to {talk_title} by {speaker_name}! - Also, excited to see y’all at the {sponsor_name} booth
- Just got an email for the SymfonyCon business meeting with the placeholders still in it. 
Not sure where else to report it.
Hey {attendee_fullname},


- My favorite was
… you can check {conference_name} website …


- Excited to see you all in {city} later this week. It's going to be a fantastic {conference_name}!
- I can't wait to meet {attendee_fullname}, {attendee_fullname} and {attendee_fullname}.
Can’t wait to go to {talk_title} by {speaker_name}!
Also, excited to see y’all at the {sponsor_name} booth
1100
GromNaN @jerome.tamarelle.net · 30/11/2024
It's even better if there's nothing to install on the computer. Everything goes through the browser, thanks to GitHub spaces. We used this for a MongoDB tutorial for Laravel. github.com/mongodb-deve...
To open GitHub Codespaces from a GitHub project, click on "Code" then the + "Create a codespace on dev".
000
GromNaN @jerome.tamarelle.net · 28/11/2024
I couldn't resist doing some perf optimization on a very algorithmic lib. It's nice to be able to validate the gain with phpbench. - Use regex - String manipulation instead of array of chars - Memoize results
Benchmark result. 
Init time from 1.6ms to 0.068ms
Encode Decode from 2.1ms to 0.555μs
150
GromNaN @jerome.tamarelle.net · 23/11/2024
Something like a @grafana.bsky.social dashboard in a menubar. MenubarX to show any web page in a menubar popup. menubarx.app Here is an example with my personal Grafana dashboard.
020
GromNaN @jerome.tamarelle.net · 19/11/2024
Great platform for e-commerce and CRM needs: Kafka connectivity, quick dashboards, full text search, data encryption, network peering, hot/cold storage.
100
GromNaN @jerome.tamarelle.net · 19/11/2024
Decathlon replaced MySQL + Elasticsearch combo with a single MongoDB database. 1 review every 7 seconds, but peaks at 1000 queries/s for display on the e-commerce website. Consistency across replica is optional depending on the need of each read query.
Decathlon reviews system
370
GromNaN @jerome.tamarelle.net · 19/11/2024
Best practices for data modeling: - The workload determines the optimal grouping of objects into collections - what is used together in the application is stored together in the database - MongoDB let you develop and deploy quickly and also evolve your application and schema quickly
000
GromNaN @jerome.tamarelle.net · 19/11/2024
"What is used together by the application must be stored together in the application." Daniel Coupal - Model design with #MongoDB
A car with tabular RDBMS is split into components. A single object with MongoDB
130
GromNaN @jerome.tamarelle.net · 19/11/2024
MongoDB.local Paris is about to start. More than 1000 attendees from all industries. #mongodb
050
GromNaN @jerome.tamarelle.net · 18/11/2024
The stats of the new Sylius 2 release are impressive. 854 pull requests merged in 1 year of work. Congratulations to the #sylius core team.
GitHub stats: 4,700 commits and 8,000 changed files
141