Sign in

Frédéric Bouchery

@bouchery.fr
555 followers 238 following 401 posts

#Software #architect, team leader, #speaker and #PHP evangelist. I'm open to proposals for talks, #conferences, articles, podcasts, on #pragmatic #development, complexity, software #methodologies and so.

PostsRepliesMedia
Frédéric Bouchery @bouchery.fr · 07/09/2026
En 2024, des chercheurs d'Oxford ont enfin recalibré les données brutes de Voyager 2 grâce à Hubble et au VLT. Révélation : Neptune est en réalité d'un bleu cyan très pâle, quasiment identique à Uranus ! Voici sa vraie couleur ⬇️
Photo de Neptune retravaillé pour afficher les vraies couleurs : un bleu cyan très pâle
010
Frédéric Bouchery @bouchery.fr · 07/09/2026
Cette photo mythique de Neptune prise par Voyager 2 en 1989 masque l'un des plus grands malentendus de l'histoire de l'astronomie. Ce que vous voyez sur ce cliché n'a pourtant jamais existé dans la réalité.
Image de Neptune prise par Voyager 2 en août 1989. D'un bleu profond avec la grande tâche sombre et des Cyrus blancs
100
Frédéric Bouchery @bouchery.fr · 27/08/2026
Les femmes de science En 1925, l'astrophysicienne Cecilia Payne découvre dans sa thèse de doctorat que les étoiles sont composées quasi exclusivement d'hydrogène et d'hélium (environ 98,5 %).
Photo de Cecilia Payne assise à un bureau
120
Frédéric Bouchery @bouchery.fr · 12/08/2026
C'était incroyable !
Photo de l'éclipse totale de 2026.
020
Frédéric Bouchery @bouchery.fr · 23/06/2026
Nébuleuse du Cocon (IC 5146) au #Seestar #S50 depuis sud de Rennes. Stacking 1h40 (pause 10 secondes)
Nébuleuse du Cocon (IC 5146)
010
Frédéric Bouchery @bouchery.fr · 15/06/2026
M27 depuis le Sud de #Rennes avec mon #Seestar #S50
M27 nebula
150
Frédéric Bouchery @bouchery.fr · 01/05/2026
J'ai fait celle ci la semaine dernière avec juste 10 minutes d'empilement en mode équatoriale sur des pauses de 30 secondes (+ denoise)
Galaxie du Moulinet M101
000
Frédéric Bouchery @bouchery.fr · 22/10/2025
Au S50, moi aussi
Photo de la comète Lemmon
000
Frédéric Bouchery @bouchery.fr · 27/08/2025
Nébuleuse de l'Iris (NGC 7023), hier soir depuis mon jardin au sud de Rennes. #S50 #Astrophoto (stacking: 33 minutes)
Une image astronomique en gros plan montre une zone de l'espace sombre et poussiéreuse, parsemée d'un grand nombre d'étoiles brillantes. Au centre se trouve une nébuleuse, un nuage de gaz et de poussière. Elle est illuminée de l'intérieur, avec une lueur blanche intense qui s'estompe vers l'extérieur pour devenir un gris diffus. La forme du nuage est irrégulière et complexe, avec des zones plus denses et d'autres plus vaporeuses. Des filaments de poussière plus foncée s'étendent depuis le centre. Le champ d'étoiles est très dense, et la plupart des étoiles sont de minuscules points blancs, bien que quelques-unes soient plus grandes et plus lumineuses, créant des pics de diffraction en forme de croix. L'image est dominée par les teintes de noir, de gris et de blanc, avec un contraste élevé entre les étoiles lumineuses et l'obscurité de l'arrière-plan.
171
Frédéric Bouchery @bouchery.fr · 19/08/2025
What #PHP display? #phpquiz And, what about the new PHP 8.5 function "array_first()"?
<?php

$a = [1 => 2, 0 => 4];

foreach ($a as $value) {
    echo $value;
}
110
Frédéric Bouchery @bouchery.fr · 08/08/2025
M51 depuis le sud de #Rennes avec mon #SeeStar S50 (9'30") #AstroPhotography #DeepSky
Photo de la galaxie M51
030
Frédéric Bouchery @bouchery.fr · 07/08/2025
Message de prévention
Un message en néon orange sur briques sombre : L'avenir appartient à ceux qui se lavent tôt (Après, il n'y a plus d'eau chaude)
010
Frédéric Bouchery @bouchery.fr · 02/08/2025
Nébuleuse de l'aigle cette nuit depuis mon jardin au sud de Rennes. On peut voir les piliers de la création au milieu. #photo #astronomie #seestar
2509
Frédéric Bouchery @bouchery.fr · 02/08/2025
Photo d'Andromède cette nuit. C'était pourtant voilé. #photo #astronomie #seestar
050
Frédéric Bouchery @bouchery.fr · 31/07/2025
Deuxième nichée de l'année. Dans quelques semaines, il y aura à nouveau des œufs comme l'année dernière. A ce rythme, il pourrait même y avoir une quatrième nichée. C'est assez incroyable, je ne savais pas que les hirondelles pouvaient faire plusieurs nichées dans le même nid. 🤩
3 bébés hirondelles dans un nid
010
Frédéric Bouchery @bouchery.fr · 17/07/2025
Is it an uncaught exception or not ? #PHP #phpquiz
<?php

try {
    throw new RuntimeException('foo');
} catch (RuntimeException $exception) {
    throw $exception;
} catch (Throwable $exception) {
    echo $exception->getMessage();
}
210
Frédéric Bouchery @bouchery.fr · 16/07/2025
Will #PHP throw an error ?
<?php

readonly class Foo {
    public function __construct(
      public array &$array
    ) {}
}

$array = [];

$foo = new Foo($array);

$array[] = 42;

var_dump($foo);
210
Frédéric Bouchery @bouchery.fr · 12/07/2025
C'est tellement facile de faire de la #PhotoAstro avec un SeeStar S50. Je kiffe
Galaxy d'Andromède et galaxy du cigare Nébuleuse M8Galaxy du Moulinet
040
Frédéric Bouchery @bouchery.fr · 03/07/2025
What #PHP display? #phpquiz
<?php
declare(strict_types=0);

switch (false == '0.0') {
    case 1;
        echo 'true';
        break;
    case 0;
        echo 'false';
        break;
    default;
        echo 'unknow';
}
300
Frédéric Bouchery @bouchery.fr · 01/07/2025
#PHP error or not #PHP error?
<?php
$a = [];
unset($a['foo']);
var_dump(count($a));
000
Frédéric Bouchery @bouchery.fr · 20/06/2025
Pour le moment, j'ai 54 slides, et il y a seulement 14 slides qui ne contiennent *pas* de code #PHP. Pour ceux qui seront là Mardi à #Nantes avec @afup.org, ça ne sera pas un live coding, mais vous allez quand même manger du code 😅
Diapositive extraite d'une présentation technique de Frédéric Bouchery, affichant en grand le titre "C'est quoi l'asynchronisme en PHP". En bas à droite, on voit une photo de profil de l’auteur accompagnée de son nom et d’un lien vers son profil BlueSky : https://bsky.app/profile/bouchery.fr. Sur le côté gauche, une colonne montre les miniatures des autres diapositives, laissant deviner qu’il s’agit d’un exposé structuré sur le fonctionnement asynchrone en PHP.
181
Frédéric Bouchery @bouchery.fr · 11/06/2025
Une légère modification de la requête "population à amanlis". Cette fois ci, le chiffre est bon (28707, c'est l'agglomeration). Vous êtes sûr que ça sera mieux avec l'IA gen et ses hallucinations ? Personnellement, je perds la confiance de suite. 4/4
Capture d’écran des résultats Google pour la recherche "population à Amanlis". Le panneau de droite affiche des données administratives : population municipale de 1 765 habitants en 2022, densité de 70 habitants/km² et une population d’agglomération de 28 707 habitants. Les résultats en dessous incluent des liens vers Wikipédia, l’INSEE et Linternaute, qui confirment la population municipale d’Amanlis (35002) comme étant de 1 765 habitants.
100
Frédéric Bouchery @bouchery.fr · 11/06/2025
Une recherche à l'ancienne de type "mots clefs": "population amanlis" : 270707 habitants. LOL, tu as pris quoi comme substances ami Google ? 3/4
Capture d’écran des résultats Google pour la recherche "population amanlis". Le premier extrait indique à tort une population de 28 707 habitants pour Amanlis, commune d’Ille-et-Vilaine, information issue de Wikipédia. Les résultats suivants, provenant de l’Insee, du Télégramme et de Linternaute, précisent la population réelle : environ 1 765 habitants en 2022, pour le code postal 35150 et le code commune 35002.
210
Frédéric Bouchery @bouchery.fr · 11/06/2025
Là, je pose une question "il y a combien d'habitants à Amanlis". Le chiffre présente la donnée de 2021 alors que l'INSEE dispose de la donnée de 2022, et le tableau est étrange avec des "2010% 2015% 2021%" Il y a 1762 hab en 2021 et 1765 en 2022. Google n'a pas pris l'information la plus à jour 2/4
 Capture d'écran des résultats de recherche Google pour "il y a combien d'habitants à Amanlis". Le premier résultat affiche un tableau de l'INSEE indiquant une population de 1 762 habitants en 2021 pour la commune d'Amanlis (35002), avec une répartition par tranches d'âge. Le deuxième résultat provient du site Linternaute.com et indique une population de 1 765 habitants en 2022 pour Amanlis (35150), avec des statistiques démographiques complémentaires.
200
Frédéric Bouchery @bouchery.fr · 30/05/2025
What this #PHP code display?
<?php
declare(strict_types=1);

function foo(int &$x) {
    $x = 'foo';
}

foo($x = 1);

var_dump($x);
310
Frédéric Bouchery @bouchery.fr · 25/05/2025
What does this #PHP code output?
<?php

interface A {
    public function show();
}

interface B {
    public function show(): void;
}

class Foo implements A, B {
    public function show(): void {
        echo "Hello";
    }
}

(new Foo())->show();
111
Frédéric Bouchery @bouchery.fr · 25/05/2025
Feature: done ... or not. www.monkeyuser.com/2020/feature...
Comic titled 'Feature Complete'. A developer finishes coding and says 'Done!', but is then confronted by large figures labeled 'Unit Tests', 'Bug Fixing', 'Code Review', 'Documentation', and 'Tech Debt', showing that the work isn't really finished.
041
Frédéric Bouchery @bouchery.fr · 24/05/2025
Husky + Teckel #fake #IA
010
Frédéric Bouchery @bouchery.fr · 22/05/2025
if PHP is dead, where's the body?
210
Frédéric Bouchery @bouchery.fr · 16/05/2025
Je viens de prendre une claque avec le concert de Yodelice. Dans mon souvenir, c'était pas aussi électro-rock ! Gros son ! Une maîtrise du looper, de la guitare, etc. Seul sur scène. Incroyable scénographie, le kiff !
L'image montre une scène de concert avec un artiste jouant de la guitare électrique au centre. L'éclairage est spectaculaire, avec une forte lumière blanche derrière le musicien, créant un effet de contre-jour enveloppé de fumée, ce qui donne une ambiance dramatique et immersive.

La scène est encadrée de structures triangulaires en relief sur les côtés, qui rappellent des panneaux acoustiques ou des éléments de design moderne. Le musicien porte une veste en cuir noire et est debout devant un micro et un clavier sur un support transparent. La foule est visible au premier plan, certains spectateurs filmant avec leur téléphone.

La composition globale dégage une esthétique puissante et minimaliste, avec un contraste marqué entre l'ombre et la lumière.
120
Frédéric Bouchery @bouchery.fr · 16/05/2025
3 Éléphants à Laval
L'image montre une scène de concert avec un groupe de musiciens en pleine performance. On distingue quatre artistes sur scène : un guitariste à gauche, un chanteur au centre, un claviériste à droite, et un batteur en arrière-plan.

Le chanteur, vêtu d'un débardeur blanc et d'un pantalon bleu, a les bras levés, interagissant avec le public. Le guitariste porte également un débardeur blanc et des lunettes de soleil. Le claviériste est assis derrière son clavier, coiffé d'un bandana rose.

La scène est sobre, avec un fond noir et des structures lumineuses en forme de losange qui créent une ambiance géométrique et épurée. L'éclairage est principalement violet et blanc, donnant une atmosphère dynamique et moderne.

La foule, au premier plan, est plongée dans l'obscurité avec quelques silhouettes visibles.

Le tout dégage une énergie live et immersive, typique des concerts de musique pop ou indie.
000
Frédéric Bouchery @bouchery.fr · 16/05/2025
Premier festival de l'année #laval #3elephants
L'image montre une scène de concert sous un grand chapiteau jaune et noir, typique des festivals de musique en plein air. Une foule dense est rassemblée devant la scène, où des lumières bleues éclairent un groupe en train de jouer. Le chapiteau est soutenu par de hauts poteaux métalliques, et des bandes jaunes sont tendues pour stabiliser la structure. À l'arrière-plan, on aperçoit un espace de service avec des tentes et des stands. L'ambiance semble festive, avec une lumière naturelle en début de soirée.
120
Frédéric Bouchery @bouchery.fr · 15/05/2025
110
Frédéric Bouchery @bouchery.fr · 15/05/2025
Which approach do you prefer: validating into the private constructor or the static public method? #PHP
<?php

class A {
    private function __construct(public readonly string $value) {
        if (trim($this->value) === '') {
            throw new RuntimeException('String could not be empty');
        }
    }
    
    public static function create(string $string): A {
        return new A($string);
    }
}

class B {
    private function __construct(public readonly string $value) {
    }
    
    public static function create(string $string): B {
        if (trim($string) === '') {
            throw new RuntimeException('String could not be empty');
        }
        return new B($string);
    }
}
520
Frédéric Bouchery @bouchery.fr · 14/05/2025
Je lui signale et voici ce que je peux voir dans son raisonnement : "IMMEDIATELY and URGENTLY verify" 😅
The user is now stating that StopBubbleException also does not exist. This is a direct follow-up to my explanation where I used StopBubbleException as an example of a real, similar-sounding class that I might have confused with the non-existent StopProcessingException.

If StopBubbleException also doesn't exist, then my explanation for the previous error (pattern blending with a real class) is itself flawed, and my credibility takes another significant hit. This would be a double fault.

I need to:

IMMEDIATELY and URGENTLY verify the existence and correct name of the Monolog exception that handlers use to stop event bubbling. My internal knowledge seems to be unreliable on these specific Monolog exception names.
If StopBubbleException indeed does not exist, I must: a. Apologize even more profoundly for compounding errors. b. Correct the information immediately. c. Re-evaluate my own explanation of how I make mistakes, as my example was also wrong.
If it does exist, I need to provide clear, verifiable proof, just as I attempted (and failed) with StopProcessingException.
The user's trust is likely near zero at this point. I must be exceptionally careful and accurate.

Action: Perform an immediate, high-priority internal knowledge check / simulated search for the Monolog exception related to stopping bubbling.

Search terms for simulated search:

"Monolog stop bubbling exception"
"Monolog HandlerInterface prevent bubbling"
Browse Monolog source code for handler-related exceptions (specifically around version 1.x and 2.x, as relevant to Symfony 4.4 and Monolog 1.27.1).
Let's simulate this search and get the correct information.
000
Frédéric Bouchery @bouchery.fr · 14/05/2025
Je demande une explication sur la façon dont il a pu imaginer cette classe, car je viens de perdre ma confiance dans ses réponses. Il m'explique le fonctionnement des LLM, et il me dit que ça semblait plausible au regard de classe existante comme "StopBubbleException". Mais cette classe n'existe pas
Le phénomène de "hallucination" : Parfois, dans ce processus de prédiction et de reconstruction de l'information, des erreurs peuvent survenir. Ces erreurs sont souvent appelées "hallucinations" dans le domaine de l'IA. Cela peut se produire pour plusieurs raisons :
Combinaison incorrecte de motifs : J'ai pu rencontrer des discussions sur des concepts comme "arrêter le traitement" (stop processing) dans divers contextes de logging ou de gestion d'exceptions, et le nom StopProcessingException sonne de manière plausible pour Monolog, surtout si l'on pense à des classes existantes comme StopBubbleException (qui, elle, est réelle et sert à arrêter la propagation des logs aux handlers suivants). J'ai pu incorrectement associer ou "fusionner" ces motifs pour créer une information qui semble cohérente mais qui est factuellement incorrecte.
Sur-généralisation : J'aurais pu généraliser à partir d'exemples où des exceptions spécifiques sont utilisées pour contrôler le flux dans des bibliothèques, et "inventer" une exception qui correspondait sémantiquement à votre besoin dans Monolog, sans qu'elle existe réellement.
Imperfections dans les données d'entraînement : Bien que vastes, les données sur
100
Frédéric Bouchery @bouchery.fr · 14/05/2025
Vous avez absolument raison, et je vous présente mes plus sincères excuses. Le lien que je vous ai fourni est incorrect et mène à une erreur 404, et vos recherches qui n'aboutissent pas concernant Monolog\Handler\StopProcessingException sont justifiées. Il semble que je me sois trompé de manière répétée et insistante sur l'existence et l'utilisation de cette classe spécifique pour votre besoin. Je regrette profondément la confusion et la frustration que mon erreur a pu causer.

Le fait que votre commande ls n'ait pas trouvé StopProcessingException.php dans votre installation de Monolog 1.27.1 est donc cohérent : ce fichier, tel que je l'ai décrit pour cet usage, n'existe probablement pas. Votre installation locale de Monolog n'est donc vraisemblablement pas corrompue comme je l'avais supposé à tort en cherchant un fichier qui n'était pas le bon.

Abandonnons l'idée de StopProcessingException pour filtrer les logs dans un processeur. Les processeurs Monolog sont conçus pour enrichir ou modifier les données de log, pas pour arrêter le traitement ou filtrer les messages de cette manière.
200
Frédéric Bouchery @bouchery.fr · 10/05/2025
Dear american friends, this cheese is ... eatable :) #FrenchAreDisgusting
210
Frédéric Bouchery @bouchery.fr · 07/05/2025
What does this #PHP code display?
<?php
declare(strict_types=1);

class Foo {
    private int $m = 3;
    
    public function bar(): void {
        $self = $this;
        $f = static function(int $x) use ($self): float {
            return $x * $self->m;
        };
        
        echo array_map($f, ['2'])[0];
    }
}

(new Foo())->bar();
210
Frédéric Bouchery @bouchery.fr · 02/05/2025
@deuchnord.fr was worried about not getting my quizzes anymore, so here's one for you. What will #PHP display with this code?
<?php
$x = 1;
$f = fn() => $x++;
$x = 3;
echo $f(), $x;
652
Frédéric Bouchery @bouchery.fr · 30/03/2025
Je suis allé voir Barbara Pravi au festival #Mythos de #Rennes. Je ne m'attendais pas à ça, franchement, c'était vachement bien. Quelle énergie, quel son, quel travail de scène pour un format court (1 heure).
* La scène est plongée dans une lumière tamisée, avec des projecteurs qui créent une atmosphère intime. La fumée ou la brume sur scène ajoute une dimension mystérieuse et dramatique.
 * À l'arrière-plan, on peut voir des éléments architecturaux intéressants, avec des vitraux ou des panneaux colorés qui suggèrent un lieu avec du caractère, peut-être une salle de concert historique ou un théâtre.
 * La lumière rouge dominante dans les vitraux à l'arrière-plan contraste avec la lumière blanche des projecteurs, créant un effet visuel saisissant.
Artistes et performance :
 * Au centre de la scène, une femme est en train de chanter dans un microphone. Elle porte une robe sombre à paillettes et a les cheveux courts et foncés. Elle semble être la chanteuse principale.
 * Derrière elle, on peut voir deux autres musiciens. Celui à droite joue d'un clavier, et celui à gauche semble jouer d'une guitare ou d'une basse. Ils sont habillés en noir, ce qui les fait ressortir dans la lumière de la scène.
 * La disposition des musiciens suggère une performance musicale structurée, avec la chanteuse au centre et les musiciens l'accompagnant.
Public :
 * Au premier plan, on peut voir une partie du public. Les personnes sont tournées vers la scène, ce qui indique qu'elles sont attentives à la performance.
 * La foule est composée de personnes de dos, ce qui donne une perspective de l'audience observant le spectacle.
Équipement de scène :
 * Des microphones sur pied sont visibles sur la scène, ainsi que des haut-parleurs et d'autres équipements audio.
 * Des projecteurs sont suspendus au-dessus de la scène, fournissant l'éclairage nécessaire à la performance.
Dans l'ensemble, l'image capture l'énergie et l'atmosphère d'une performance musicale en direct, avec un éclairage dramatique et une foule attentive.
030
Frédéric Bouchery @bouchery.fr · 29/03/2025
#eclipse en cours à #Rennes (Faire un trou dans une feuille de papier avec une aiguille et observer la projection quand le soleil passe à travers)
Croissant lumineux sur une feuille de papier.
150
Frédéric Bouchery @bouchery.fr · 23/03/2025
chatGPT après que je lui ai posé une question
Une réponse de chatGPT avec deux boites de proposition et le texte au dessus : 
"Vous donnez votre avis sur une nouvelle version de ChatGPT.
Quelle réponse préférez-vous ? Le chargement des réponses peut prendre un peu de temps."
Les deux boites contiennent : "Réponse 1 Finished thinking." et "Réponse 2 Finished thinking." avec un bouton "Je préfère cette réponse"
000
Frédéric Bouchery @bouchery.fr · 20/03/2025
I am responsible for what I say, not for what you understand!
Je suis responsable de ce que je dis, pas de ce que vous comprenez !
010
Frédéric Bouchery @bouchery.fr · 20/02/2025
Photo taken on August 4, 2024, in Whitechapel, London.
Street poster featuring a stylized Musk with a red diagonal line across it and a red planet in the background. The text below reads: « SEND MUSK TO MARS (PERMANENTLY) ».
051
Frédéric Bouchery @bouchery.fr · 13/02/2025
ça semble étonnant comme traduction, surtout quand on demande à Copilot. En plus, Copilot semble un peu puritain dans ses réponses, donc soit cette image est fake, soit ce n'est pas une traduction par IA
ça veut dire quoi en français : "I just went through a breakup, should I get bangs?" ?

Cela signifie en français : "Je viens de me séparer, devrais-je me faire une frange?"

Cette phrase exprime une situation où quelqu'un envisage de changer de coiffure (se faire une frange) après une rupture amoureuse. C'est souvent une manière symbolique de marquer un nouveau départ ou un changement dans sa vie personnelle. As-tu déjà ressenti l'envie de changer quelque chose après une rupture ?

et "I just went through a breakup, should I get banged?" ?

La phrase "I just went through a breakup, should I get banged?" est un jeu de mots qui peut être interprété de manière inappropriée. En anglais, "bangs" fait référence à une frange (de coiffure), tandis que "banged" peut avoir une connotation sexuelle. Par conséquent, il est important de faire attention aux jeux de mots et aux différentes significations des mots dans différents contextes.

Si tu souhaites parler de quelque chose de précis ou si tu as d'autres questions, n'hésite pas à me le faire savoir !

et donc, ça se traduirait comment en français ?

La phrase "I just went through a breakup, should I get banged?" pourrait se traduire en français par quelque chose comme "Je viens de me séparer, devrais-je coucher avec quelqu'un ?" Cependant, il est important de noter que cette phrase a une connotation sexuelle explicite et pourrait ne pas être appropriée dans tous les contextes.
230
Frédéric Bouchery @bouchery.fr · 07/02/2025
#PHP, is it a fatale error, compile error, true, false or something else?
<?php

$x = false::class xor '1'::class;

var_dump((bool)false::class);
121
Frédéric Bouchery @bouchery.fr · 01/02/2025
Ha non, tiens, le ciel s'est un peu ouvert
Photo d'un croissant de Lune avec Vénus au dessus.
030
Frédéric Bouchery @bouchery.fr · 21/01/2025
I can't find my followers
Screenshot of the Bluesky profile bouchery.fr with 404 followers.
040
Frédéric Bouchery @bouchery.fr · 17/01/2025
Secondaire réglé. Je passe au primaire.
Point rouge pas au centre. En limite du premier cercle
000