Des seins, des fesses, du python, Squarity, n'importe quoi.

  • Faut que je dépile les bêtises qui se sont passés chez Toyrrid···, mais j’ai pas envie. Alors on va tenter un truc : le scrap-prout-writing. Je sais à peu près ce que je dois raconter, je l’écris directement. Ce sera possiblement mauvais, mais je pourrais passer à autre chose, tel que continuer le super-jeu que je code en ce moment dans Squarity.

    Trajet

    Ça se passe à la plage, DeRH Farine a loué un hôtel-bungalow géant pour le week-end. Je suis dans la co-voiture de Collègue Dinosaure-Nageur, avec des gens co-cools.

    TODO : expliquer pourquoi il s’appelle Dinosaure-Nageur. Ou pas. Osef.

    On joue à des jeux de voiture et on mange le goûter préparé par DeRH Farine. Je me demande s’il faut participer au péage ou à l’essence. Personne ne le propose à Dinosaure-Nageur. Je suppose qu’il fera passer tout ça en note de frais, puisque c’est un déplacement à-peu-près-professionnel.

    On arrive à Villeplage-sur-Rombière. Le tenancier du bungalôtel est un vieux de forme générale sphérique, pas aimable du tout. Il nous martèle avec insistance que nous devons garder nos chambres propres et bien rangées, car une visite d’acheteurs potentiels du bungalôtel est prévue pour le lendemain. On sent que son profond désir est de vendre tout ce bordel et de se barrer à la retraite, pour rouler dans les prés au gré du vent (puisqu’il est sphérique).

    Je balance mes affaires au hasard dans une piaule.

    Pour cette première journée : activité plage globale. J’avais pas compris que je devais prendre mon maillot de bain. DeRH Farine est désespérée de ma boulettitude. Heureusement, il y a un distributeur de maillot de bain au milieu de la plage, dont les prix sont prévisiblement très cher.

    On batifole sur la plage, on boit des bières, j’essaye d’être discret quand je regarde les femmes des alentours.

    Téléportation dans un monde parallèle

    Session de PaintBall corporate. C’est notre deuxième partie. Je me fais stupidement toucher. En sortant du terrain, je rejoins Collègue·e Iel, qui ne participais pas car iel·le est objecteurtrice de conscience.

    − Tu ne joues plus ?

    − Ben non, je me suis fait toucher.

    − Mais y’a des medics. Si tu fais toucher, tu restes sur place, t’appelles au secours et tu peux être ressuscité.

    − Oh mince, j’avais oublié. Bon, tant pis, je reprendrais à la prochaine partie.

    L’organisateur du PaintBall l’avait expliqué et j’avais complètement oublié. Je suis passé pour un super boulet, ce dont j’ai l’habitude, mais c’est drôle quand c’est auprès de Collègue·e Iel. J’ai du rester assis à côté d’iel·le, mon cerveau moulinant à plein régime pour trouver des sujets de conversation non-offensants. J’en n’ai pas trouvé.

    Retour dans le monde réel

    C’est le soir. Comme on est des geeks, pas de sortie en boîte ni de boule à facettes ni d’eurodance. Juste tout le monde dans la salle commune avec des bières, une console et des jeux de société. J’aime bien.

    Jeu de stratégie en hexagone avec Collègue Double-Nom, Collègue Digiprout et un autre. Ensuite, jeu collaboratif de terraformation de Mars.

    La soirée tire péniblement sur sa fin. J’erre entre les gens, une bière chaude à la main. Fondateur Coinche, qui ne me connait pas encore très bien, sonde mes compétences en me posant quelques questions sur un ton léger. Ça dérive en conversation profondément chaotique. J’ai l’impression (mais c’est possiblement que moi), qu’il s’agit d’un concours implicite de qui sortira les propos les plus scabreux et provoquants.

    Cet hypothétique concours se termine lorsque je suggère l’idée de méta-spécialiser à outrance les jouets sexuels virtuels vendus par Toyrrid···. Au lieu que ce soit juste des avatars de nain·e·s, de transsexuel·le·s, ou autre, ça pourrait être des avatars de nain·e·s qui aiment les transsexuel·le·s, ou encore mieux, des avatars de nain·e·s qui aiment les transsexuel·le·s qui aiment les asiatiques.

    Attendez… Est-ce que c’est associatif ? Des personnes X qui aiment (des personnes Y qui aiment des personnes Z), est-ce que c’est pareil que (des personnes X qui aiment des personnes Y) qui aiment des personnes Z ? Ah ben non. Relisez bien les phrases.

    Je vais me coucher, pour de vrai. J’étais en train d’écrire et je vais me coucher, je continuerai demain.

    Mise en équation de l’amour !!!

    Jour suivant

    Je me réveille péniblement pour l’activité de randonnée sur sable à laquelle je me suis inscrit. Présentons mes 3 co-randonneurs :

    Collègue Raoulos : un chilien qui parle pas français mais qui vit en France quand même.

    Collègue PoilÉquitable : un mec avec une calvitie et une barbe qui remonte jusqu’aux cheveux. Quand on le regarde bien en face, sa tête est un ovale avec EXACTEMENT la même longueur de poil tout autour.

    Collègue EarlyBird : un type qui a l’habitude de se lever très tôt. C’est particulièrement stupide. Ce matin à 7 heures, il s’est fait alpaguer par Hôtelier Sphérique d’un aimable : « Eh bè toi, pisque t’es là, tu vas m’ranger eul’foutoir que vous avâtes fioutu dans la salle commune. C’est-y pas Dieu possib’ une gougnafferie pareille ! J’ai des gens qu’ils vont visiter eul’bungalôtel, faut qu’ça soye prop’, saprétonnerre de vieille pute croûtée !« . Alors que c’est même pas lui qu’a foutu le bordel car il s’est couché super tôt pour pouvoir se lever super tôt. Loser !!

    Collègue PoilÉquitable (schéma de principe, photo non contractuelle)

    On randonne sur sable, accompagné d’un guide agréé. Je suis concentré sur les paysages et j’engage pas trop la conversation avec les collègues.

    Notre guide nous montre un bâtiment étrange en forme de bol géant. C’est un super-four solaire pour faire des expériences à plusieurs milliers de degrés.

    Fin de la randonnée et de la matinée, notre guide nous quitte. DeRH Farine avait mandé Hôtelier Sphérique de nous préparer des sandwichs et de les glisser dans nos sacs. Ceux-ci me semblent corrects, mais les 3 collègues les regardent suspicieusement, décident qu’ils ne sont visuellement pas bon et que ce serait mieux de se faire « un p’tit restau quelque part ».

    Pour moi, ça semble très bon. En plus, c’est un « hoagie sandwich ».

    Le restaurant impossible (de la fin du monde)

    C’est là que démarre l’un des épisodes les plus étranges des ~10 dernières années de ma vie.

    Collègue Raoulos veut un restaurant typico-spécifique, mais à chaque fois qu’on passe devant l’un deux, il dit « no, not this one », tout en étant incapable d’indiquer précisément ce qu’il veut.

    Collègue PoilÉquitable refuse les quelques restaux que Collègue Raoulos était prêt à accepter, en précisant juste : « I want real food ».

    Collègue EarlyBird veut un restaurant pas trop cher. Il décide des directions à prendre et tente de dépatouiller la situation. On sent son désespoir. Il sort l’inévitable phrase « j’ai l’impression d’être le papa d’un groupe de gosses ». Merci pour l’infantilisation.

    Moi, j’adopte ma technique du super-flamby : je ne prends aucune initiative, je marche en suivant le groupe, quand on me demande ce que je veux, je dis juste « whatever ».

    On erre ainsi dans le village balnéaire. De temps en temps, notre groupe de 4 se sépare en 2 sous-groupes, afin que Collègue EarlyBird puisse déblaterrer sur Collègue Raoulos. C’est amusant.

    Affamés et éreintés, nous finissons par trouver un boui-boui de bord de plage qui trouve grâce aux yeux de tout le monde.

    Et là, moment de surbizarrerie : Alors que Collègue PoilÉquitable et moi prenons une pizza certifiée « real food », Collègue Raoulos prend juste une petite salade et Collègue EarlyBird passe directement au dessert ! Ce dernier nous explique que dans les conventions sociales d’où il vient (je sais pas où, osef), les groupes de gens ont l’habitude de prendre leurs différents plats dans différents restaurants. Ouais, d’accord. Mais est-ce une raison pour ne prendre qu’un dessert ?

    Donc, si je récapitule :

    • Un groupe de seulement 4 personnes,
    • incluant un flamby à qui n’importe quoi aurait convenu,
    • a mis plus d’une heure pour choisir un restau,
    • tout ça pour que 2 personnes dudit groupe ne prennent pas un vrai repas,
    • alors qu’on avait de la bouffe gratuite dans nos sacs !

    Eh bien c’était bizarre. Donc j’ai adoré, ça me fait une histoire à raconter !

    Nous, bizarres comme ça, dans le restau (Collègue EarlyBird était parti pleurer aux toilettes).

    Thalassomarmotte

    Début d’après-midi. Je me suis inscrit à une thalasso qui commencera dans une heure. Collègue EarlyBird veut faire les magasins pour ramener des cadeaux à sa famille. Je trouve un prétexte bidon pour les abandonner et je rentre à l’hôtel pour me masturber. Hôtelier Sphérique passe juste après moi dans les toilettes pour vérifier qu’elles soyent toujours prop’ purin d’enculerie de clients cradingueux qui bouyakavent partout ce qu’ils touchent merde-chier-zob-vagin-cyprine-foutre-corpuscule-de-krause.

    Je rejoins le groupe de thalasso. Avant de partir, on recroise Collègue EarlyBird et Collègue Raoulos. Même après le déblaterrage précédemment mentionné, ces deux là ont continué de trainer ensemble. Bizarre.

    Collègue EarlyBird a acheté une peluche de marmotte pour ses enfants.

    Mais Collègue Raoulos tient la même peluche dans sa main, alors qu’il n’a pas d’enfants. Qu’est-ce à dire que ceci ? Je m’en veux de les avoir quittés juste après le restau. Ils ont manifestement continué de faire des choses bizarres que j’ai ratées. Ont-ils fait toutes les boutiques du village ? Ont-ils décidés de faire se combattre leurs deux marmottes dans un tripot clandestin afin d’ultimement départager qui est le plus bizarre des deux ? Je ne le saurais jamais.

    On va à la thalasso. Rien de spécial à dire sur cette activité. Chill et cool.

    Y’a juste un moment, on croise une femme avec des courbes divines comme j’aime. Collègue GruyèreRapé s’exclame, rit et agite sa main pour faire genre « wouloulou, ça c’est de la gonzesse ! ». Il n’a rien dit d’explicite, mais il a probablement été suffisamment indiscret pour que la femme réalise la raison de son exclamation.

    En tant que super-flamby, je n’ai pas osé réagir, ni sur le coup, ni après. J’avais envie de hurler au visage de Collègue GruyèreRapé qu’il devrait fermer sa grande gueule.

    Je n’ai pas la prétention de défendre la cause des femmes ni le féminisme. Vous l’avez déjà compris en consultant ce blog, qui est une orgie planétaire de greluches foutument tankées. Je préfère encore être un tocard masculin ordinaire plutôt que de me faire accuser d’être profem.

    Mais je suis pragmatique. Si les hommes poussent des cris d’animaux à chaque fois qu’ils croisent une femme possédant des nichons et des fesses, celles pour qui ça ne dérange pas de se montrer n’oseront plus le faire et je n’aurais plus rien à me mettre devant les yeux. Je mate les nanas partout où je vais, mais en restant le plus discret possible (en vrai, je sais pas si je le suis vraiment).

    Ne mettez pas Brandy-Lee Ellen mal à l’aise quand elle s’habille comme ça.

    Merci, Collèguee Ishtar

    On rentre, on débarque dans la salle commune et on attaque les bières.

    Collègue·e Iel arrive de son activité (sauvetage de truite des sables), elle demande à DeRH Farine si des gens veulent jouer. Celle-ci désigne le groupe dans lequel je suis. Je regarde Collègue·e Iel en souriant, qui me rend mon sourire. Le consensus nous oriente vers un jeu de Saboteur (les nain·e·s qui creusent un tunnel).

    Là je me dis : « iel·le m’a fait un sourire, c’est cool. Ça ne iellui pose aucun problème de jouer avec moi. Ça veut dire que je suis le seul à psychoter sur ces histoires passées de conversation en anglais/français et de femme noire norvégienne qui était une IA. Iel·le est passé·e à autre chose, iel·le a bien raison, on va jouer, ça va bien se passer et je pourrais moi aussi passer à autre chose plutôt que de m’auto-prendre la tête pour rien. »

    Autour de la table, nous sommes :

    • Collègue·e Iel.
    • Collèguee Ishtar, nouvellement arrivée. Elle ressemble à la chanteuse du groupe Alabina, sans la chirurgie esthétique sur la gueule.
    • Collèguee Marquise-Glouglou, qui vit au Ghana.
    • Collègue Raoulos, qui a la capacité de jouer à un jeu de manière cohérente même s’il n’en connaît pas les règles.
    • Collègue lhevrett, scotché à son téléphone pour entretenir sa communauté de tweetos.
    • Et donc moi.

    Les parties se déroulent sans problème, on discute, on joue, on boit. J’arrive jamais à déterminer qui sabote dans le jeu, mais ça se passe sur un quadrillage 2D alors forcément j’aime bien.

    Une conversation s’éternise et plus personne ne joue. Je perds un peu le fil, je ne sais plus si c’est mon tour. C’est possiblement moi qui bloque tout le jeu. Je demande très rapidement « excusez-moi, c’est à qui de jouer ? », quelqu’un répond, je dis « ok merci » puis je la boucle, pour que tout le monde puisse reprendre le sujet de conversation précédent.

    Collèguee Marquise-Glouglou demande à Collègue·e Iel : « et donc, tu nous racontais un moment de ta vie où tu œuvrais pour l’assocation des Bienfaiseurtrice de l’Humanité ? »

    Ce qu’il y a de bien avec Collègue·e Iel, c’est qu’iel·le est doté·e d’un système de sécurité avertissant immédiatement l’entourage qu’iel·le va péter un câble : iel·le devient tout·e rouge.

    Je iellui avais coupé la parole au moment où je demandais à qui c’était de jouer, alors qu’iel·le allait nous narrer un de ses bénévolats pour le Bien. En plus, c’était à iel·le de jouer. Je n’avais pas fait attention à ces détails.

    Iel·le continue d’être rouge et ne dit plus rien, iel·le ne répond même pas à Collèguee Marquise-Glouglou, iel·le se contente de dire que c’est pas important, tout en faisant un signe dédaigneux de la main dans ma direction. Marquise-Glouglou retente une approche, à nouveau rejetée.

    On continue de jouer mais l’ambiance est lourde. Plus personne n’ose rien dire. Collègue Raoulos et Collègue lhevrett n’ont rien suivi, ils doomscrollent sur leurs téléphones. Je finis ma bière cul sec, puis je prétexte que ma bière est vide pour m’extrader de la table et en chercher une autre.

    Lorsque je reviens, Collèguee Ishtar est seule à la table. Je ne sais pas où sont les autres. On discute tou·te·s les deux de l’événement merdique qui vient de subvenir. Elle me confirme que ce que j’ai fait n’était pas du tout déplacé, que c’était une demande normale et que Collègue·e Iel a pété les plomb·e·s pour rien. C’est ce que je soupçonnais, mais je suis heureux qu’une autre personne me le confirme.

    La voix de Collèguee Ishtar est grave, posée et rassurante. Une voix de chanteuse de jazz. Genre Angélique Kidjo, au début de la chanson « Voodoo Child », avec les paroles « Amon min kélédjé vodoo vi amon« , et tant pis si c’est pas du jazz. Ça me réconforte. Je la remercie intérieurement.

    Collèguee Marquise-Glouglou revient. Elle nous explique que Collègue·e Iel a réagit ainsi car l’un de ses poissons rouges est mort récemment et qu’iel·le a bu un peu trop de bière. Quel·le gamin·e à la con·ne ! Quand on tient pas l’alcool, on n’achète pas des poissons rouges !

    Finalement, cette petite partie de jeu n’aura pas enterrée la hache de guerre entre Collègue·e Iel et moi, mais ça m’a fait gagner un moment merdique à raconter. Youpi !

    Collègue Ishtar, très belle dans les critères de beauté classique (pas les miens, mais c’est pas grave).
    Angélique Kidjo, très belle aussi.

    Pho ce qu’il pho

    On va manger dans un restau asiati-coréen-viet. Je prends du magret de canard. DeRH Farine prend une pho (ça veut dire « soupe »).

    D’un coup, DeRH Farine vilipende Collègue Pyugioh du fait de son irrespect, car il se moque d’un mot. J’écoutais pas la conversation initiale, Collègue Pyugioh avait probablement fait une blague comme « la pho A, elle est au foie, la pho Bi elle fait peur, la pho C est tombée dans le fossée, hahaha ».

    Durant la suite du repas, DeRH Farine prononce des phrases classiques et respectueuses comportant le mot « pho », afin de le normaliser.

    Heureusement que j’ai pas pris de pho, j’aurais été suffisamment vilain pour faire des blagues encore plus irrévérencieuses. L’avantage du magret de canard, c’est qu’en asiatique, ça se prononce tout simplement « maglè deu canal tching tchong tchoung ».

    Collègue Pyugioh s’appelle ainsi car il a créé un jeu de devinette. On te donne un mot, tu dois dire si c’est le nom d’une librairie python ou d’une créature de Yu-Gi-Oh. Est-ce que y’a une lib python qui s’appelle « pho » ? Je me renseignerai.

    Rien à voir, mais quand j’étais petit, j’avais pas compris la blague de « comment on appelle un ascenseur en Chine ». Je croyais que c’était pour imaginer amusantement que les mots en Chinois sont construits bizarrement. Un ascenseur s’appellerait donc vraiment « en-apppuyant-sul-leu-bouton », une chaise s’appellerait « en-posant-sé-fesses-dessus », une table s’appellerait « CLEATE TABLE LACISM_ANTICHINOIX_LOL« , etc. Mais je m’égare.

    On sort du restau, on retourne au bungalôtel. Je ne vois plus Collègue·e Iel, je ne pourrais donc pas iellui proposer une partie de Limite Limite avant d’aller dormir. Tant pis !

    Voici votle « en-se-délectant-les-papilles », honolable client bizalle.

    Le surlendemain

    Je ne sais pas à quelle heure se lève Collègue EarlyBird. Ce qui est sûr c’est que j’échappe au nettoyage du matin. Ouf ! Je dois partir tôt pour cause de rendez-vous d’ophtalmo (osef). Covoiturage avec :

    • Collègue·e Iel en tant que conducteurtrice.
    • Collègue Claveciniste, un hydrolauphoniste qui a raté sa vie, mais au moins il est de gauche.
    • Re Collègue·e Iel assis·e derrière.

    Ouais, y’a deux fois Collègue·e Iel, j’ai pas compris, mais les faits sont là.

    Collègue·e Iel qui conduit discute avec Collègue Claveciniste, Collègue·e Iel à côté de moi ne discute pas. Je ne trouve aucun sujet de conversation. Ambiance, ambiance…

    Le seul moment où je parle avec Collègue·e Iel-qui-conduit, c’est pour déterminer où iel·le doit me déposer. Je lui donne un nom de lieu, qui n’existe pas sur le GPS. J’ai confondu les concepts « aire » et « sortie » d’autoroute. Je ne passe pas du tout pour un gamin qui ne connait rien au monde réel.

    C’est pas de ma faute si j’ai confondu ! C’est les personnes que je devais retrouver qui se sont plantées en me donnant le nom du lieu. Je ne les nomme pas pour conserver leur intimité. N’empêche : pas de ma faute !!

    Le seul moment où Collègue·e Iel-à-côté-de-moi me parle, c’est pour me montrer sur son téléphone son gosse qui joue avec un poisson rouge bio ou chai-pas-quoi. C’est pas une vidéo enregistrée. C’est une caméra qui filme son gosse en live. C’est évidemment privé, il n’y a qu’iel·le qui peut le regarder. Mais je trouve quand même ça très bizarre.

    Sur cette joyeuse ambiance, le trajet se termine, je me fais dropper sur l’aire/sortie et je m’éclipse bien vite de ce/cette/ces Collègue·e·s Iels en double.

    C’était un super week-end corporate, ne comportant que des événements normaux ! Oh oui alors !

    Épilogue

    Une semaine plus tard, Collègue·e Iel demande aux personnes covoiturées (donc, entre autres, à iel·le-même) de payer notre part de péage et d’essence.

    Étrange. Je croyais que c’était payé par des notes de frais. Je n’ose pas iellui suggérer, de peur de le·a vexer et de la·e mettre en mode alarme avec son visage rouge clignotant. Comment clarifier la situation ?

    Solution. Je demande à Collègue Dinosaure-Nageur si nous devons le rembourser pour son covoiturage du trajet aller. S’il me répond que c’est pas la peine car c’est en note de frais, je pourrais sereinement transmettre l’info à Collègue·e Iel. Si ça m’oblige à le payer, tant pis, au moins j’aurais été honnête.

    Collègue Dinosaure-Nageur ne répond pas à mon message, puis quitte Toyrrid··· quelques semaines plus tard.

    Il est possible qu’iel·le nous ait arnaqué et qu’iel·le ait eu la note de frais ET notre remboursement. Pour la peine, je l’ai payé en petite monnaie, une farandole de pièces de centime. Bien fait·e pour sa gueule.

    Collègue·e Iel en train de ramasser ma contribution au covoiturage.

    Épile-hog

    Lors d’un entretien quelconque, DeRH Farine me demande ce qu’il s’est passé avec Collègue·e Iel durant le week-end plage. Elle a été mise au courant, possiblement par Collèguee Marquise-Glouglou. Je réponds que c’est une histoire naze et que ça vaut même pas le coup d’en parler.

    Mais plus tard, il se passe encore un truc idiot lors d’un café virtuel. Collègue·e Iel coupe sa caméra et ne dit plus rien. Je l’imagine très bien devenir tout·e rouge tout·e seul·e dans son coin, même si je ne comprends pas quelle inavouable incartade j’ai encore commise.

    Ça commence à faire beaucoup, j’en parle à DeRH Farine qui me suggère de l’appeler et de présenter des excuses. Ce que je fais. Iel·le me reparle du premier événement de merde, iel·le rougit et m’explique que ce qu’il l’a le plus énervé·e, c’est que j’ai continué de parler anglais alors qu’iel·le venait de me dire que ça iellui avait pas plu. C’est vrai. Mais j’étais tellement abasourdi par sa réaction que j’avais même pas compris qu’iel·le était mécontent·e de mon attitude. À l’époque, je connaissais pas l’astuce de son rougissement avertisseur.

    Par contre, le dernier truc idiot en date, c’était pas de ma faute. C’est un autre couillon qui lui avait coupé la parole et l’avait foutu·e en mode alarme-je-chiale.

    Si j’avais pas été un gros flamby, ça m’aurait arraché la gueule de devoir lui faire des excuses, mais là ça va, je m’en tamponne.

    Et pis l’orgue

    Quelques mois plus tard, Collègue lhevrett démissionne.

    Rappelez-vous, il y a deux frères à Toyrrid···, dont les noms de login (première lettre du prénom + nom) sont assez amusants : lhevrett et chevrett.

    J’ai même pas eu le temps d’exploiter cette situation particulière que paf!, l’un des frères se barre. C’est nul.

    Hop, je retourne coder mon jeu dans Squarity !

    Rappel : la levrette est un lévrier femelle, et non pas un lièvre femelle.
  • J’vous avais promis ça en début de mois, vous l’avez enfin, mais en fin. Tout va bien !

    Durant les mois où j’étais inutile à la société, je postais régulièrement des petites friandises python sur mon LinkedIn. Le but était de passer pour quelqu’un de professionnel, sur ce média social destiné aux pro-fesses-ointelles.

    LinkedIn est amnésique pour ses utilisateurtrices, c’est à dire que pour retrouver vos anciens messages, vous n’avez d’autres choix que de doom-scroller votre historique. Je me souviens avoir voulu retrouver un truc datant de plusieurs années, mon navigateur a explicitement fusillé l’onglet doom-scrollant, car il prenait trop de RAM.

    Heureusement, pour ces friandises python, ce n’était pas trop tard. Je les ais exfiltrés et les ais balarguées dans cet article de blog. Les friandises sérieuses en premier, les marrantes après. Si vous commencez par la fin, ce sera vilain, mais drôle.

    Autre stupidité de LinkedIn : dans un post, vous ne pouvez pas indiquer qu’un texte est un morceau de code. Pour afficher une coloration syntaxique et une indentation correcte, la seule solution est un screenshot idiot. Rassurez-vous, je n’ai pas commis cette incartade ici, vous avez tous les codes sous forme de code.

    Une image qui plaira aux pro-fesses-ointes

    La méthode __missing__ de la classe dict

    Pour les dictionnaires avec une valeur par défaut, on a tendance à utiliser collections.defaultdict. Sauf que cette classe ajoute un élément chaque fois que vous consultez une clé inexistante.

    La méthode __missing__ vous permet de définir une valeur par défaut qui n’ajoute pas de clé.

    Mettons-nous en situation : vous lancez un grand jeu-concours à destination des millions de personnes utilisant votre site web. Pour augmenter l’incitation, une personne n’ayant pas encore joué et qui consulte son profil verra son score à zéro. Avons-nous besoin de stocker un million d’identifiants et un million de zéros ? Avons-nous besoin de vérifier la présence d’une clé avant de récupérer un score ? Oh mais non !

    class ScoreDict(dict):
    def __missing__(self, key):
    return 0
    scores = ScoreDict()
    # Alice joue et gagne 5 points
    scores["Alice"] = 5
    # On consulte le score de Bob, mais il n'a pas encore joué
    print(scores["Bob"])
    # >>> 0
    # La consultation du score de Bob n'a pas ajouté d'élément,
    # contrairement à ce qu'aurait fait un defaultdict
    print(len(scores))
    # >>> 1
    print(scores)
    # >>> {'Alice': 5}

    Soyons honnêtes : je ne connaissais pas cette astuce avant que ChatGPT ne me la donne.

    Spliter avec des regex

    Tout le monde connait la fonction split(), pour découper une chaîne en sous-chaîne.

    "15:42:59".split(":") renvoie ["15", "42", "59"]

    Avec la fonction re.split(), il est possible de découper une chaîne selon un séparateur défini par une expression régulière.

    Dans l’exemple ci-dessous, le séparateur est constitué du caractère pipe (le trait vertical), avec un nombre indéterminé d’espaces avant et après.

    import re
    table_line = "Tomates | Marmande | 12|3.14"
    values = re.split(r" *\| *", table_line)
    # values contient maintenant :
    # ["Tomates", "Marmande", "12", "3.14"]

    Merci à une gentille personne sur LinkedIn qui m’a suggéré d’utiliser une raw string pour la regex.

    Zapper explicitement des exceptions

    Parfois, vous exécutez un code qui risque de lever une exception, mais vous décidez en votre âme et conscience de ne pas en tenir compte. Par exemple, vous souhaitez supprimer un fichier temporaire qui n’existe peut-être déjà plus.

    Va-t-on écrire un « try-except » avec une instruction pass dans le bloc except ? Il y a mieux.

    La classe contextlib.suppress vous permet de ne pas prendre en compte certaines exceptions. Le code est plus court et indique plus clairement que vous ne voulez pas les gérer.

    import os
    from contextlib import suppress
    # Bien, mais pas top.
    try:
    os.remove("temp_file.txt")
    except (FileNotFoundError, PermissionError):
    pass
    # Plus explicite
    with suppress(FileNotFoundError, PermissionError):
    os.remove("temp_file.txt")

    Re-soyons honnête, c’est re ChatGPT qui me l’a fait découvrir.

    Note d’une autre gentille personne ayant commenté sur LinkedIn : en python 3.14, les parenthèses après except ne sont plus utiles, sauf avec le keyword « as ». C’est ce qu’on appelle un petit susucre syntaxique.

    Du sucre syntaxique, pour faire des friandises python

    Parcourir une liste avec une fenêtre glissante de 2 éléments

    Exemples de cas d’utilisation : mesurer le périmètre d’un polygone, analyser l’évolution d’une valeur dans le temps, …

    Vous pourriez vilainement itérer sur zip(values, values[1:]), ou pire, exécuter un prev = cur à chaque itération.

    Mais depuis la version python 3.10, vous avez la classe itertools.pairwise. Celle-ci prend un itérable en paramètre et vous renvoie à chaque fois deux éléments, qui se chevauchent d’une itération à l’autre.

    from itertools import pairwise
    stock_prices = [78, 83, 81, 81, 85, 87]
    nb_incr = 0
    nb_decr = 0
    for price_prev, price_cur in pairwise(stock_prices):
    nb_incr += price_prev < price_cur
    nb_decr += price_prev > price_cur
    print(f"Les actions ont augmenté {nb_incr} fois.")
    print(f"Elles ont baissé {nb_decr} fois.")
    print("La mer monte, achetez de l'eau !")

    Fusionner des dictionnaires

    Depuis la version 3.9, on peut fusionner les dictionnaires avec l’opérateur | (pipe).

    C’est comme la méthode dict.update(), mais plus lisible.

    Une seule chose à savoir, qui est plutôt logique : pour une clé commune à plusieurs dictionnaires fusionnés, c’est la valeur la plus à droite qui compte.

    config_default = {
    "theme": "light",
    "locale": "en-US",
    "fun_emotes": False,
    }
    config_user = {"locale": "fr-FR"}
    config_session = {"fun_emotes": True, "start": "2025-12-02 19:15"}
    config = config_default | config_user | config_session
    print(config)
    # {'theme': 'light', 'locale': 'fr-FR',
    # 'fun_emotes': True, 'start': '2025-12-02 19:15'}

    Fusionner des dictionnaires, autrement

    Merci à un autre gentil commentateur sur LinkedIn d’avoir mentionné la librairie more_itertools. On y trouve beaucoup de choses intéressantes, dont join_mappings, disponible depuis python 3.13 (à peu près).

    Imaginons que vous ayez plusieurs dictionnaires, décrivant les mêmes objets, mais avec des champs différents. Vous pouvez les fusionner en un seul, où chaque objet aura l’ensemble de ses champs.

    L’exemple de la documentation officielle est suffisamment parlant, le voici.

    https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.join_mappings

    from more_itertools import join_mappings
    user_scores = {'elliot': 50, 'claris': 60}
    user_times = {'elliot': 30, 'claris': 40}
    user_details = join_mappings(score=user_scores, time=user_times)
    print(user_details)
    # {
    # 'elliot': {'score': 50, 'time': 30},
    # 'claris': {'score': 60, 'time': 40}
    # }
    Je voulais mettre une image de 2 dictionnaires faisant crac-crac (règle 34), mais j’ai pas trouvé, alors voici Lyric, du jeu « Date Everything ». L’idée de ce jeu est géniale.

    Récupérer une valeur par défaut si un itérateur est vide.

    La fonction next accepte un deuxième argument : la valeur à renvoyer si l’itérateur a été entièrement déroulé.

    Ça peut servir si vous cherchez le premier élément d’un itérateur vérifiant une certaine condition, et que vous ne savez pas si un tel élément existe.

    Le code ci-dessous lit un fichier de log et récupère la première ligne d’erreur. S’il n’y a pas d’erreur, la variable first_error vaudra None. C’est plus simple que de catcher une exception StopIteration.

    with open("trace.log", "r") as log_file:
    first_error = next(
    (line for line in log_file if line.startswith("ERROR:")),
    None
    )

    Pour éviter de boucler sur un itérateur : yield from

    Supposons que vous vouliez itérer sur les coordonnées d’un rectangle (peut-être parce que vous développez un moteur de jeu utilisant des grilles en 2D).

    Vous pourriez utiliser l’instruction yield sur deux boucles imbriquées, une sur x, une sur y.

    Vous pourriez faire mieux et utiliser la fonction itertools.product, conçue pour itérer sur des produits cartésiens.

    Vous pourriez faire encore mieux avec l’instruction yield from, qui vous évite une boucle for sur une fonction effectuant déjà une itération !

    Cela dit, yield from permet beaucoup plus de choses que juste gagner une ligne de code, (sub-generators, send(), …), mais les explications ne tiendraient pas ici. Je me permets donc de vous renvoyer au PEP 380, définissant cette syntaxe.

    Soyons honnête, je n’ai pas (encore) lu le PEP 380. Je promets d’essayer de vous en faire un résumé.

    Note de Réchèr : j’ai promis ça sur LinkedIn, mais c’est du pipeau, en vrai j’ai pas le temps et j’veux continuer d’avancer Squarity et TUR-ROX.

    # Bof...
    def iter_on_game_area(width: int, height: int):
    for y in range(height):
    for x in range(width):
    yield (x, y)
    # Mieux
    from itertools import product
    def iter_on_game_area(width: int, height: int):
    for coord in product(range(height), range(width)):
    yield coord
    # Encore mieux
    def iter_on_game_area(width: int, height: int):
    yield from product(range(height), range(width))
    # Pour tester rapidement
    for c in iter_on_game_area(3, 5):
    print("Faisons quelque chose avec les coordonnées", c)

    int(plein_de_caractères)

    La conversion de chaînes en nombre fonctionne aussi avec les caractères représentant des chiffres décimaux dans des alphabets autres que l’alphabet latin.

    Voici des caractères bengalis:

    print(int("১২৩৪৫৬৭৮৯০"))
    # Vous obtiendrez le nombre 1234567890.

    En revanche, pour les chiffres romains, vous allez devoir installer une librairie spécifique. Les caractères représentant ces chiffres existent en utf-8, mais ce n’est pas de la base 10.

    int("ⅤⅢ")
    # ValueError: invalid literal for int() with base 10: 'ⅤⅢ'
    Voici sweetpari7190, même si je ne suis pas sûr qu’elle soit bengalie.

    Booléen comme index de liste

    Ça fonctionne avec la conversion implicite « False -> 0, True -> 1 ».

    ["choix_a","choix_b"][False] vaut "choix_a".

    ["choix_a","choix_b"][True] vaut "choix_b".

    C’est illisible et bizarre. Ne faites pas ça à votre travail, les enfants. Le seul avantage étant que c’est plus court qu’un « if-else ». Utilisez cette astuce uniquement pour des code golfs.

    # Une ligne comme ceci :
    opinion = "OK" if score >= 10 else "Bof"
    # Pourra donc être code-golfée et mochifiée comme ceci :
    opinion=["Bof","OK"][score>=10]

    Faire planter rigolotement l’interpréteur python

    Voici un code qui ne semble pas très compliqué, mais qui plante d’une manière particulière. Pouvez-vous expliquer son (non-)fonctionnement ?

    (boum := lambda: _())
    # <function <lambda> at 0x...>
    boum()
    # Traceback (most recent call last):
    # File "<stdin>", line 1, in <module>
    # File "<stdin>", line 1, in <lambda>
    # File "<stdin>", line 1, in <lambda>
    # File "<stdin>", line 1, in <lambda>
    # [Previous line repeated 996 more times]
    # RecursionError: maximum recursion depth exceeded

    Indice 1 :

    Ça ne plante de cette manière que dans la console python. Si vous exécutez ce code dans un fichier, ça plantera d’une manière plus classique.

    Indice 2 :

    Le code suivant fait planter de la même manière et il est plus simple.

    lambda: _() ; _()

    Mais il est moins amusant, car il n’y a pas de fonction « boum ».

    Vive la France ! Vive le Brésil !

    Vous souhaitez louer la gloire de l’Angleterre, alors vous écrivez "EN" dans une console python (n’oubliez pas les guillemets). La console vous répond 'EN'. God save the King and the jelly !

    Juste pour rire, doublez les guillemets, écrivez ""EN"" dans la console. Celle-ci vous renvoie une erreur de syntaxe. Vous ne rendez plus gloire à l’Angleterre, mais bon… What did you expect ?

    Gardez tous vos guillemets, cette fois-ci pour la France. Écrivez ""FR"" dans la console. Surprise ! Au lieu de vous renvoyer une erreur de syntaxe, la console python reste sans voix et vous renvoie une chaîne vide : ''.

    Est-ce que ça marche avec le Brésil ? Écrivez ""BR"" dans la console.

    Zut, une autre erreur de syntaxe.

    Peut-être que la gloire du Brésil doit être louée deux fois ? Écrivez BR""BR"" dans la console. La console python reste presque sans voix, et vous renvoie b''.

    Qu’est-ce donc que cette lettre « b » ? Est-ce la taille de bonnet standard des femmes qui aiment le Brésil ?

    Yathbeauty, allez l’admirer sur son Tiktok.

    Mmmmhh…. Pas forcément.

    Je vous laisse réfléchir à tout ça !

    Variante de ma devise « None is not False »

    1.

    None est un mot-clé du python, signifiant une valeur nulle ou « pas de valeur du tout ». La plupart des langages de programmation ont un terme spécifique pour exprimer le vide ou l’absence : NULL en C/C++, undefined et null en JavaScript, etc.

    2.

    L’opérateur python « is » permet de vérifier si deux variables ont le même emplacement dans la mémoire. Il est différent de l’opérateur « == », qui vérifie si deux variables contiennent les mêmes données et qui peut effectuer des comparaisons plus élaborées.

    [1, 2] == [1, 2] renvoie True, l’opérateur vérifie chaque élément des deux listes.

    [1, 2] is [1, 2] renvoie False, car les deux listes sont stockées à deux endroits différents de la mémoire.

    L’opérateur opposé « is not » renvoie False quand « is » renvoie True et vice-versa. C’est un opérateur à par entière, ce n’est pas l’opérateur « is » suivi de l’opérateur « not ».

    3.

    La fonction native all permet de vérifier si toutes les valeurs d’un itérable correspondent à True. Elle est « built-in », disponible dès le départ, aucun import n’est nécessaire.

    4.

    Qu’allons-nous faire avec tout ça ? Un peu de poésie !

    None is not all

    Cette phrase sybilline, que l’on pourrait traduire par « Aucun n’est pas tout », est une expression valide en python, renvoyant « True ».

    D’aucuns diront que c’est inutile, tout porte à croire que c’est vrai.

    La vérité sans lettre

    Je vous ai montré toutes ces friandises.

    Je ne sais plus quoi dire, je ne suis plus capable d’écrire une seule lettre.

    Alors j’écris dans la console des caractères qui ne sont pas des lettres.

    _ ={...:...,...:...,...:...,...:...}
    __={...,...,...,...,...,...,...,...}
    {_[_[_[_[...]]]]}==__|__|__|__|__|__

    Heureusement, la poésie revient. Le python répond des vraies lettres (True) à ces non-lettres.

    Bonne fin de dimanche !

  • Article expectoré le dernier jour du mois, pour éviter d’avoir un mois à vide.

    Nouvelles rapides de mon incarnation professionelle actuelle

    Finalement, Pâté International, la boîte à viande dans laquelle je travaille, ne me téléporte pas en mission chez Blaireau Léger. Je m’étais cassé les fesses à mettre en place un contexte utilisable pour de futurs articles (les attrapes-rêves connectés, etc.). Tout est à jeter. Merci !

    Cela dit, je préfère la mission qu’on m’a donnée, car c’est dans les locaux même de Pâté International, relativement accessibles niveau transport. Après les 1h20 de car, je n’ai « que » une demi-heure de métro + vélo. Ça me permet d’avancer la lecture de mon livre en cours et de faire du sport.

    Et surtout, ils ont accepté que j’ai 3 jours de télétravail. Je peux avoir une vie en dehors du Travail et des transports, ouf !!!

    Mézofaite, pour qui missionne-je, si ce n’est pas pour Blaireau Léger ?

    Pour Deus Unlimited ! Oui oui ! Ha ha ha !

    Y’aura du Lord Machin, du Lord Trucmuche, des Atome-de-Bidule et autres joyeusetés inhérentes à cette tentaculaire entreprise. Ma rétrogradation de 15 ans en arrière est complète.

    Le projet où je suis affecté est un outil informatique recensant les outils informatiques recenseurs d’outils informatiques. Avec Deus Unlimited, il fallait s’attendre à ce niveau minimal de méta-n’importe-quoi-titude. Et puis ce n’est pas pire que coder des IAs qui codent des mondes virtuels dans lesquels on élève et chasse des esclaves sexuels virtuels (je ne sais plus si c’était dans cet ordre, osef).

    Lorsque j’aurais purgé le racontage des trucs rigolos de mon ancienne boîte, je m’attaquerais à ceux de celle-ci. En voici deux en avant-première :

    • mon vœu de non-flatulence a tenu 4,5 jours,
    • quelqu’un a dit « chefferie de projet ».
    Vous auriez pu voir de jolies images comme ça dans ce blog, mais non.

    Tartufferies LinkedIniennes

    J’aurais donc vécu 4 mois et demi de glandage. Je remercie France Travail, pour de vrai, de m’avoir permis ça.

    Durant cette période, j’ai publié sur LinkedIn des trucs corporates de grande personne dotée d’une maturité notoire, afin de montrer mon expertise. J’ai adopté la posture d’un ingénieur sérieux et responsable. Je n’ai pas trollé et n’ai sorti aucune blague stupide, alors que c’est ce qui constituait la quasi-totalité de mes rares interventions LinkedIniennes.

    J’avais espoir que des recruteurtrices, voyant la pertinence et l’excellence technique de mes publications, viennent automatiquement à moi pour me proposer des emplois complètement fous. On m’aurait déroulé un tapis rouge. Il y aurait eu une ligne de 50 femmes plantureuses qui m’auraient offert un spectacle de cette danse traditionnelle kurde/turc/syrienne spécialement conçue pour agiter les seins en de mignons soubresauts.

    Cherchez « assyrian wedding dance » et régalez-vous !

    Le post LinkedIn annonçant que j’étais #OpenToWork comportait ce texte:

    Est-ce que Linkedin peut toujours servir pour trouver un nouvel emploi, ou est-ce juste un média social spécialisé dans les diatribes de développement personnel, agrémenté de vidéos d’animaux réalisant des exploits tellement cute/fabuleux qu’ils inspirent votre vie et votre carrière d’une manière positive et impactante ?

    Ce n’est pas arrivé. LinkedIn ne m’a absolument servi à rien dans ma recherche. J’ai trouvé mon emploi en binge-postulant sur WelcomeToTheJungle.

    La seule situation dans laquelle LinkedIn peut vous permettre de bouffer à votre faim, c’est lorsque vous êtes spécifiquement payé pour y écrire des articles, dans le cadre d’une quelconque activité de marketinge. Personnellement, j’y reste pour raconter mes avancées sur Squarity et TUR-ROX.

    L’avantage de toute cette mascarade, c’est que j’en tire des articles de blog à peu de frais. Veuillez donc trouver ci-dessous des extraits de posts où je présentais des mini-projets de mon crû, qui n’ont pas interessé grand monde.

    Mini-projet : où-se-poser

    J’ai récemment découvert la librairie folium, permettant de représenter des données sur une carte OpenStreetMap. J’ai donc créé un petit projet de démonstration : une carte affichant les bancs et les sièges publics, à Toulouse, Castres et Albi.

    Les points jaunes représentent des bancs sans dossiers, les points verts avec dossiers.

    Si vous aimez cette carte et que vous vous en servez, ce serait une bonne idée de faire un don à OpenStreetMap.

    Si vous aimez ce projet, vous pourriez envisager l’idée de m’embaucher. hashtag #OpenToWork. (Note de l’auteur, oui oui, j’ai vraiment écrit ça dans LinkedIn et j’y ai cru).

    (Re note de l’auteur : du coup, ce stupide mini-projet vous donne un énorme indice sur la zone géographique où j’habite. On n’est plus à ça près).

    Soyons honnêtes, si le but est d’afficher des données OpenStreetMap sur un fond de carte OpenStreetMap, vous pouvez juste créer une carte personnalisée. Je voulais surtout voir ce qu’il était possible de faire en python avec des cartes.

    Le code du mini-proj est par ici.

    Le fichier src/download_benches.py récupère les positions des bancs et les enregistre dans des fichiers CSV. Il a été écrit sans IA ni vibe-coding, afin de consolider mes connaissances dans la librairie pandas.

    Le fichier src/generate_map.py génère le HTML contenant la carte et les points. Il a été écrit avec l’aide de ChatGPT, car c’est bien de savoir faire les deux : avec vibe-coding et sans vibe-coding.

    Mini-projet : la consommation électrique des français

    La librairie python matplotlib permet de générer de jolis graphiques, mais statiques.

    C’est alors que survient la librairie mpld3. Vous écrivez un code en python, ça vous génère une petite page HTML utilisant la librairie javascript D3js, avec des graphiques tout aussi jolis ET interactifs.

    J’ai vibe-codé un exemple à la vibe-va-vite.

    Le graphique du haut montre la consommation d’électricité maximale française, pour chaque mois, depuis 2023.

    Cliquez sur l’une des barres, le graphique du bas affichera la consommation maximale quotidienne du mois sélectionné. On voit que c’est plus haut en hiver. Sur certains mois, on peut aussi identifier un rythme où les jours de semaine consomment plus que les jours de week-end.

    Les données proviennent de opendata.gouv. Lien direct: https://www.data.gouv.fr/datasets/pic-journalier-de-la-consommation-brute-delectricite

    Cepenant, quelques bancaleries :

    • Le code HTML généré est assez horrible, notamment à cause d’un énorme morceau de javascript dupliqué.
    • J’aurais pu me fendre d’un titre et d’un petit lien vers une description détaillée du graphe.
    • Les couleurs des barres sont en vrac au début.
    • De plus, elles changent selon le mois sélectionné, sans raison.
    • Le code est stocké dans le repository de « ou-se-poser », alors que les deux projets n’ont aucun rapport entre eux, si ce n’est le vibe-coding.
    Envoyer des éclairs dans un jeu vidéo, ça consomme grave de ouf.

    Dessin rigolo

    Bonjour le monde.

    J’ai ajouté une image de fond à mon profil LinkedIn. C’est juste un dessin abstrait, des petits carrés verts qui partent dans différentes directions.

    J’aurais pu la faire générer par une IA, mais ça m’aurait pris plus de temps pour ajuster le prompt. Alors je l’ai généré avec un bout de code en python. Cela dit, j’ai peut-être généré ce bout de code avec une IA … ou pas. Est-ce si important ?

    C’est l’image de carrés verts que j’avais mise dans cet article. (Note de l’auteur : non je n’ai pas mis le lien vers cet article dans mon post LinkedIn).

    Ci-dessous, le code pour générer votre propre image. Vous pouvez le modifier, pour avoir d’autres formes, d’autres couleurs, d’autres arrangements. Vous pourriez vous créer votre propre image de fond personnalisée !

    """
    Code python, réalisant un joli dessin à partir de lignes de carrés verts.
    Vous pouvez l'exécuter sur le site "trinket":
    - Allez sur https://trinket.io/python
    - Copier-collez tout ce texte dans la zone de gauche.
    - Cliquez sur le bouton Run juste au dessus.
    - Admirez l'image se créer petit à petit (vous devrez attendre
    quelques secondes, car les premiers carrés sont peu visibles)
    Copyright © 2025 Réchèr
    This work is free. You can redistribute it and/or modify it under the
    terms of the Do What The Fuck You Want To Public License, Version 2,
    as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
    """
    import random
    import turtle as t
    def fillcolor_from_greenness(greenness):
    """
    Définit la couleur de remplissage à partir d'un "greenness"
    (quantité de verditude).
    La "quantité de verditude" est une valeur entre 0 et 255,
    définissant un dégradé du noir vers le blanc, en passant par le vert.
    """
    if greenness < 127:
    t.fillcolor(0, greenness * 2, 0)
    else:
    greenness -= 127
    t.fillcolor(greenness * 2, 255, greenness * 2)
    def draw_square(size, angle, limits=200):
    """
    Dessine un carré tourné, dont le centre est à la position actuelle
    de la tortue, rempli avec la couleur de remplissage actuelle.
    Le paramètre size correspond à la taille d'un côté du carré.
    L'angle correspond à la rotation du carré.
    Le paramètre limits indique les limites de l'aire de dessin.
    Si le carré est entièrement en dehors de ces limites (en X ou en Y),
    il n'est pas dessiné.
    """
    cur_x, cur_y = t.pos()
    semi_diagonal_length = (size * 1.414) / 2
    if any(
    (
    cur_x + semi_diagonal_length < -limits,
    cur_x - semi_diagonal_length > +limits,
    cur_y + semi_diagonal_length < -limits,
    cur_y - semi_diagonal_length > +limits,
    )
    ):
    return
    t.setheading(angle)
    t.forward(semi_diagonal_length)
    t.begin_fill()
    t.left(45)
    t.forward(size)
    t.left(90)
    t.forward(size)
    t.left(90)
    t.forward(size)
    t.left(90)
    t.end_fill()
    def build_coord_line():
    """
    Génère une liste de coordonnées, partant de l'origine (0, 0),
    suivant une ligne brisée constituée de 20 lignes verticales/horizontales.
    Les directions et les longueurs des lignes sont aléatoires,
    avec des lignes de plus en plus longues.
    Les coordonnées sont disposés sur chaque ligne, sur des distances
    de plus en plus longues.
    On ne vérifie pas si les coordonnées restent dans les limites
    de la zone de dessin.
    """
    OFFSET_DIRS = (
    (-1, 0),
    (0, +1),
    (+1, 0),
    (0, -1),
    )
    cur_x, cur_y = (0, 0)
    index_dir = 0
    cur_dist = 2
    offset_dist = 5
    offset_dist_random = offset_dist * 4
    positions = []
    move_step_float = 1.0
    for _ in range(20):
    move_step = int(move_step_float)
    dir_x, dir_y = OFFSET_DIRS[index_dir]
    if dir_x:
    dest_x = cur_x + dir_x * (cur_dist + move_step)
    for cucur_x in range(cur_x, dest_x, move_step * dir_x):
    positions.append((cucur_x, cur_y))
    cur_x = dest_x
    else:
    dest_y = cur_y + dir_y * (cur_dist + move_step)
    for cucur_y in range(cur_y, dest_y, move_step * dir_y):
    positions.append((cur_x, cucur_y))
    cur_y = dest_y
    offset_index_dir = random.choice([-1, +1])
    index_dir += offset_index_dir
    index_dir = index_dir % 4
    cur_dist += offset_dist + random.randrange(-offset_dist_random, offset_dist_random)
    if move_step_float < 7.0:
    move_step_float += 0.5
    return positions
    def add_square_details(positions):
    """
    À partir d'une liste de positions, génère 3 autres listes, de même taille :
    - une liste de "quantité de verditude",
    de 255 (blanc) à 0 (noir), avec un petit delta aléatoire.
    - une liste de tailles de carrés
    de 2 à "environ 15", avec des petites variations aléatoires.
    - une liste d'angles,
    des valeurs entre 0 et 360, croissante ou décroissante,
    qui varient beaucoup au début, peu à la fin.
    La fonction renvoie ensuite une liste de tuple
    (pos, greenness, size, angle), en prenant à chaque fois un élément
    de chaque liste.
    """
    greenness_offset = 255 // len(positions)
    greenness_start_max = 255 - (len(positions)-1) * greenness_offset
    greenness_start = random.randint(0, greenness_start_max)
    greenness_end = greenness_start + len(positions) * greenness_offset
    greenness_offset = max((greenness_offset, 1))
    greennesses = list(range(greenness_start, greenness_end, greenness_offset))
    greennesses = greennesses[::-1]
    size_start = 2
    size_end = random.randint(10, 20)
    size_offset = (size_end - size_start) / len(positions)
    sizes = []
    cur_size = size_start
    for _ in range(len(positions)):
    size = int(cur_size)
    size += random.randint(-size // 5, +size // 5)
    sizes.append(size)
    cur_size += size_offset
    angle = random.randint(0, 359)
    angle_offset = random.randint(200, 250) * random.choice((-1, +1))
    angles = []
    for _ in range(len(positions)):
    angles.append(angle)
    if abs(angle_offset) != 1:
    angle += angle_offset
    if abs(angle_offset) < 3:
    if angle_offset < 0:
    angle_offset = -1
    else:
    angle_offset = 1
    elif angle_offset < 0:
    angle_offset += random.randint(1, 3)
    else:
    angle_offset -= random.randint(1, 3)
    angles = [
    angle % 360
    for angle in angles
    ]
    square_details = []
    for (pos, grn, size, angle) in zip(
    positions,
    greennesses,
    sizes,
    angles,
    ):
    square_details.append((pos, grn, size, angle))
    return square_details
    def main():
    # Initialisations et dessin d'un grand carré noir
    # recouvrant toute la zone de dessin.
    t.penup()
    t.speed(0)
    t.fillcolor(0, 0, 0)
    t.setpos(-200, -200)
    t.begin_fill()
    t.setpos(-200, 200)
    t.setpos(200, 200)
    t.setpos(200, -200)
    t.end_fill()
    # Préparation de 40 lignes brisés de carrés.
    all_square_details = []
    for _ in range(40):
    positions = build_coord_line()
    square_details = add_square_details(positions)
    all_square_details.extend(square_details)
    # On trie les carrés de toutes les lignes, du plus noir
    # au plus blanc. De cette manière tous les carrés moins visibles
    # seront dessinés en dessous, puis les carrés un peu plus visible,
    # et ainsi de suite.
    all_square_details.sort(
    key=lambda details:details[1]
    )
    # Dessin des carrés, un par un.
    for pos, grn, size, angle in all_square_details:
    cur_x, cur_y = pos
    t.setpos(cur_x, cur_y)
    fillcolor_from_greenness(grn)
    draw_square(size, angle)
    t.setpos(300, 300)
    main()

    Il m’en reste !

    J’avais fait d’autres posts, décrivant des « friandises python ». Je vous compile ça dans un prochain article, en début du mois qui arrive.

    Je sens bien que l’image des jolies femmes ajoutée plus haut n’est pas suffisante. Voici Monica Melodies. Son nom vient probablement du fait qu’elle joue de belles mélodies avec un harmonica.

    Mais là, elle a pas pris son harmonica.

    Joyeuse fête des mères !

  • Tous les jeux existants sont maintenant dans la liste officielle, afin qu’ils ne tombent pas dans l’oubli. Découvrez ou redécouvrez ces titres qui font la gloire de Squarity. Ci-dessous, les jeux nouvellement ajoutés :

    • Cat fragmentator : découpez des images de chat avec un laser.
    • Mots-mêlés d’anniversaire : élaborez des chemins dans un tas de lettres pour constituer des mots.
    • Pac-Man : un grand classique, créé par 10kbis, encore merci à cette personne !
    • Loops in pool : nettoyez une piscine en traçant des boucles de vignes.
    • Snake Match-3 : un mix entre le jeu « Snake » où on mange des fruits et les jeux de Match-3 où on aligne des fruits.
    • Game of no-life : jeu de stratégie expérimental overkill et compliqué, qui se joue à 2 personnes.
    • Soko-Punk : revisitation pas finie de Soko-Ban.
    La liste officielle comporte actuellement 16 jeux, le random.randrange(1, 17)ème va vous surprendre!

    Prochaine étape : dans la page d’index, remplacer ce pauvre Soko-ban, qui n’est qu’un bouche-trou temporaire. J’ai une idée sympa pour un nouveau jeu, qui se nommera Radioactive Sweeper. Voici une version pré-pré-alpha-0.0. C’est une sorte de démineur, avec des barils de boue radioactive.

    Des tutoriels seront ajoutés, car la version actuelle est un peu brute. Parviendrez-vous à comprendre comment jouer et à réussir le premier niveau avec le peu d’explications qui est donnée ? Vous avez le droit de regarder le code source si vous galérez.

    Prochaine prochaine étape : ajouter la possibilité d’écrire du texte dans l’aire de jeu. Même si je ne sais pas trop comment je vais faire ça.

    Voilà le genre de détail relou qu’il faut savoir régler quand on effectue du rendu de texte.

    Et maintenant, pas de page de publicité

    Je n’ai toujours pas fait de publicité sérieuse pour Squarity, à part des posts sur Mastodon et sur LinkedIn, ce qui a une portée limitée. Peut-être qu’inconsciemment, je n’ose pas trop en faire.

    Actuellement, Squarity n’intéresse pas beaucoup de gens. L’excuse que je me donne c’est que je n’en ai pas encore beaucoup parlé. Si j’en parle plus et que ça n’intéresse toujours personne, est-ce que je vais réussir à le surmonter ? Est-ce que j’arriverais à trouver le courage de continuer ? Je ne sais pas.

    Peut-être que je peux commencer par en parler chez Framasoft. Quel serait le meilleur moyen ? Si j’ajoute Squarity dans leur annuel de logiciels libres, est-ce que quelqu’un va seulement s’en apercevoir ? Si je mets un message dans leur forum, est-ce que ça aura un impact ?

    Ce serait génial qu’un article du framablog soit écrit à propos de Squarity, mais je ne sais pas comment obtenir ça. Je me souviens d’un des objectifs annoncés par Framasoft : « nous n’avons pas l’intention de développer des logiciels libres, mais de promouvoir des personnes et des organisations qui en développent ».

    Est-ce que cette objectif est toujours d’actualité ? Est-ce que je peux me pointer comme une fleur en leur demandant de parler de moi et de mes trucs ? Est-ce que Squarity est suffisamment « libre » pour eux ? En bons libristes, les membres de Framasoft militent aussi pour le low-tech. Un système qui demande de télécharger une WebAssembly de 20 méga-octets juste pour jouer à Soko-Ban, est-ce que ça va les intéresser ?

    Enchaînement d’idées

    Squarity me fait penser à des carrés, ce qui me fait penser à des carreaux, ce qui me fait penser au valet de carreau, ce qui me fait penser à Hector (c’est le valet de carreau), ce qui me fait penser à Cece Hectori, dont voici une photo.

    Elle a aussi un TikTok, allez-y voir!

  • J’ai trouvé un CDI et vais me réincarner professionnellement dès lundi. J’ai mis à jour mes pages Ko-fi pour l’annoncer.

    Le boulot en lui-même n’a a pas l’air génial, mais je n’ai jamais trouvé mes boulots géniaux et celui-ci ne semble pas pire que les autres. Je serais chez « Pâté International », une SSII. Maintenant, il faut les appeler « ESN », afin de faire oublier tout le mal qui a été dit sur les SSII. Je vous propose d’appeler ça des « boîtes à viande », c’est plus simple et ce sera cohérent avec le nom de l’entreprise.

    Ma première mission sera chez « Blaireau Léger », une firme amérindienne qui fabrique des attrape-rêves connectés. Ceux-ci ne manquant pas d’envoyer les données de vos rêves dans des silos pour alimenter la publicité ciblée et les IA.

    Techniquement, ce sera principalement du React, avec une volonté forte de se lancer dans le développement assisté par IA (Claude Code, etc.)

    « React », un nom idiot pour un framework, mais pas autant que « Go » pour un langage de programmation.

    Ça ne correspond pas à ce que j’aime faire, mais c’est pas grave du tout. J’ai bien compris que les activités effectuées dans le cadre d’un travail salarié ne correspondront jamais à mes raisons d’existence profondes, quand bien même le travail implique d’écrire du code et que j’aime le code. Pour faire ce que j’aime, je ne vois pas d’autre méthode que réaliser des projets personnels, donc acte : TUR-ROX, Squarity.

    Mais pourquoi y’a encore une fiole verte ici ?

    Cependant, il y a un truc qui me fait vraiment chier, et c’est de là que vient le titre de cet article : géographiquement, le travail se situe dans le même endroit pourri que les entreprises Deus Unlimited, Merluchon et autres. Je n’aurais que 2 jours de télétravail par semaine, et c’est même pas sûr.

    Est-ce que vous vous souvenez des galères de transport décrites dans cet article ? Je vais les ravoir, en pire, car entre temps j’ai déménagé. Le sus-mentionné article a été écrit il y a environ 15 ans.

    En résumé, chaque jour de travail en pas-télétravail, je ferais ça :

    • 25 minutes de vélo.
    • Je range mon vélo dans un endroit secret où on ne peut pas me le piquer.
    • 15 minutes de marche à pied.
    • 1 heure 20 de car, plus en cas de bouchons.
    • Entre 30 minutes et 1 heure de gloubiboulga indéterminé, selon la mission, avec un ou plusieurs transports parmi : métro, TER, vélo, pieds.
    • Tout les éléments ci-dessus répétés une deuxième fois pour le retour.
    Voici un train qui ne tombera jamais en panne, car c’est un vélo déguisé en voiture.

    Ma vie va être merdique. En plus il pleut tout le temps dans ce pays à la con, j’arriverai au boulot trempé, j’embaumerai les burlingues d’une odeur de chien mouillé et de chaussettes moisies. Avec un peu de chance, ça les incommodera suffisamment pour qu’ils m’accordent plus de jours de télétravail.

    En voiture, le trajet me prendrait environ 1h30. Ça m’économiserait du temps, mais en fait non. Ce serait 1h30 où je ne ferais rien d’autre que conduire, donc une chrono-perte sèche. Sans compter le temps et l’argent à dépenser pour gérer la bagnole, ses pannes, etc. De plus, je n’aime pas du tout conduire, ça me stresse à chaque fois.

    Avec ma solution, les trajets me prennent 3 heures, mais dedans il y a un peu de sport, ce qui me forcera à en faire. Il y a aussi un temps de car assez long où je pourrai, soit finir ma nuit, soit écrire dans un petit carnet des brouillons d’articles. Au passage, vu le prix du carburant, ça me fait économiser des sous (au moins jusqu’à ce qu’il soit reporté sur le prix des transports en commun).

    Y’a juste que je sais pas si je tiendrais le coup, physiquement et mentalement.

    Que ce soit bien clair : je ne fais pas ce choix alambiqué de transport pluri-multi-modaux pour sauver la planète. Si j’avais voulu sauver la planète, je me serais exilé dans un pays très pauvre en y emmenant de force toute ma famille, car on consomme moins de ressources dans un pays pauvre.

    Je m’en fiche de sauver la planète, j’ai pas envie de la sauver. Le seul espoir pour la vie sur Terre est que l’humanité s’auto-détruise suffisamment rapidement pour que le moins possible de dommages irréversibles soient causés à la nature. Le seul espoir pour mes propres fesses est que je meurs de vieillesse avant que des guerres n’éclatent dans les pays occidentaux, ce qui n’est pas gagné.

    Voilà, donc c’est la merde. Les articles de blog à venir seront soit complètement nazes, soit hyper-transcendantaux et sérendipitants, selon ma capacité à écrire dans un car. Je n’angoisse plus de la même manière que quand j’étais au chômage, mais j’angoisse quand même. Vous trouverez ci-dessous une image de Echo Valley, qui est morte d’un cancer en 2011 et moi je voulais pas qu’elle soit morte et je suis triste.

    Je vais assez vite écrire un nouvel article, plus conventionnel, afin de faire descendre dans l’historique cet article de merde, pour que personne ne le lise.

    J’annonce officiellement ici que je démarre un vœu de non-flatulence dans les burlingues de mon nouveau travail, à la fois chez Pâté International et chez Blaireau Léger. J’ai l’espoir de ne pas le briser avant trois semaines, mais c’est pas gagné.

    Gzlrbtx.

  • Désœuvré, perdu, anxieux, empli de doutes sur ma « valeur travail » et mon avenir, j’errais tel un zombi rachitique dans l’espace de co-working que je fréquentais à l’époque où j’étais utile à la société.

    J’avais posé mon écriteau « Will code HTML for food » et m’étais écroulé sur le pouf de la chill zone, lorsqu’un petit homme semi-chauve accompagné d’une dame semi-grande me tirèrent de ma torpeur.

    « Hey, Réchèr, toujours inscrit à Transe-Gras-d’Ail ? Y’a une école d’ingénieurs pas loin qui cherche des gens pour enseigner ponctuellement des trucs. C’est pas un CDI et ça paye peu, tu veux que j’te mette en contac’ ? »

    Comme déjà dit : globalement, je n’aime pas les prof·fe·s. Mais comme dit Chuck Pahlaniuk dans un de ses bouquins : on devient ce que l’on combat.

    Inévitablement, quelques jours plus tard, je suis dans le bureau de Collèguee Gogue, de l’école d’ingénieurs « -42/0 », à lister les modules d’apprentissage que je pourrais prendre en charge.

    Elle s’appelle Collèguee Gogue car elle a une formation de psychopédagogue. La blague, c’est que le mot « gogue » signifie « chiottes ». No pun intended, j’avais juste pas d’autre idée pour nommer cette charmante dame, qui a la bonne idée de ne pas être proffe.

    J’étais parti pour polliniser mes connaissances en python, mais les modules de ce langage étant déjà pris, je me suis rabattu sur le « chivalric hacking ». Ça veut dire : recherche de vulnérabilités dans des logiciels et des systèmes, de manière chevaleresque.

    Des demoiselles en détresse qui seront sauvées grâce à la chivalry.

    C’est un module petit : trois jours de cours à donner. Celui-ci faisant partie d’un « bloc conteneur », un projet de synthèse est également à élaborer, conjointement à 4 personnes. On s’est retrouvé à 2. Parmi les nombreuses choses que j’ai toujours reprochées aux prof·fe·s se trouve leur impressionnante incapacité à se synchroniser et à travailler ensemble. Voilà, on y est.

    Je remercie grandement Prof Béret, l’autre personne qui s’est bougé les fesses pour le projet, sans qui j’aurais très beaucoup galéré.

    Ci-dessus, Galvez, mon prof de SVT au lycée. Également appelé : « Je vais raconter une blague à mes élèves pour me persuader que je suis un prof cool. Mais tout de suite après, je vais redevenir sérieux sans prévenir et je vais les engueuler parce qu’ils rigolent pendant mes cours. »

    Mon plan de cours

    Officiellement, je n’ai jamais exercé les métiers de hacker, pentester, consultant en sécurité informatique ni aucun de ces trucs. Je n’ai pas non plus de formations ni de certifications dans ce domaine.

    Grâce à la magie du chômage, j’avais du temps pour manger de la connaissance et la régurgiter. Je l’ai saupoudré de quelques expériences professionnelles qui collaient bien. J’ai gloubiboulgatisé le tout et obtenu un plan comme ça :

    • Jour 1
      • Réglementations et rôles dans la cybersécurité (RGPD, NIS2, …)
      • Ensemble d’exercices de type « faites planter ces codes »
      • Petit exercice de simulation de gestion de crise, avec une rédaction de type « écrivez la suite de l’histoire »
      • Cracking de mot de passe avec John the ripper
    • Jour 2
      • Principe général des injections (SQL, RCE, XSS, …)
      • Exercice « faites pas planter ce code qui sérialise-désérialise du json », avec migration vers l’exercice « arrêtons les conneries et utilisons les fonctions standards »
      • Exercice de discovery sur un serveur GraphQL
      • Exercice de reconnaissance (la première étape d’un pentest)
      • Présentation d’un proof-of-concept de la vulnérabilité React2Shell
    • Jour 3
      • Référentiels des vulnérabilités (CVE, CVSS, MITRE ATT&CK, …)
      • Exercice sur les attaques de typosquatting dans les librairies python
      • Présentation de trucs à faire et à regarder pour aller au-delà de ce module
      • Un peu de root-me
      • Je n’ai plus d’idée, qu’est-ce que vous voulez qu’on fasse ?

    J’essayais, autant que possible, d’entrelacer un temps de cours et un temps d’exercice, sur des périodes d’environ une demi-heure.

    Bien entendu, ce plan s’est construit au fur et à mesure. Je préparais le premier jour à l’arrache, sans trop savoir ce que j’allais mettre après, puis je préparais le deuxième tout autant à l’arrache, et ainsi de suite. J’espère juste que je n’ai pas oublié de choses importantes par rapport au référentiel d’enseignement.

    J’ai fortement anxiotisé avant le premier cours car je ne savais pas du tout comment ça allait se passer. Mais tout le monde a été gentil avec moi. C’était une expérience très chouette. Je rempile pour l’année prochaine, avec ce module et peut-être un autre si y’a du python qui se libère !

    Assez parlé sérieusement. C’est le moment de vous raconter …

    Les trucs rigolos, en vrac

    Certains de ces trucs sont repiqués de l’article LinkedIn que j’ai écrit sur le même sujet, mais osef.

    Quel mot pour nommer les gens à qui je donne des cours?

    • Le mot « élève » sonne puéril et scolaire.
    • Le mot « étudiant·e » m’évoque des clampin·e·s affalé·e·s sur un pouf (comme moi au début de cet article), fumant un pétard et refaisant le monde.
    • Le mot officiel est « apprenant·e », qui me semble néo-naming et bullshit.
    • J’avais pensé à « réceptacle », mais ça fait un peu « tasse à foutre » (dédicace au film Jarhead).

    Je vous propose « disciple », un mot qui n’a pas besoin d’être inclusivifié et qui est juste ce qu’il faut d’humiliant pour que ça reste humoristique.

    Les BD de Léonard : une relation sado-masochiste déclinée à l’infini et adaptée aux enfants.

    The mentalist

    Mon groupe ne comporte que 10 disciples, ce qui me va très bien. L’ennui avec la mixité du terme « disciple », c’est que maintenant je suis obligé de rajouter une phrase dans mon article pour préciser que ce sont tous des hommes. Voilà, c’est fait.

    J’ai débuté le premier cours avec une démonstration digne des plus grands mentalistes. J’ai déplié une feuille magique montrant les initiales de leurs prénoms, disposées de la même manière que leur placement dans la salle. Ils ont applaudi.

    Durant une pause, ils m’ont demandé si j’avais récupéré leurs placements habituels auprès de Collègue Béret. Pas du tout. J’avais préalablement appris leurs 10 prénoms et visages grâce au tronchoscope de l’école. Pendant qu’ils s’installaient dans la salle, j’ai à-peu-près-discrètement noté leurs initiales sur la feuille. C’est tout.

    C’est tellement rare les prof·fe·s qui s’intéressent à leurs disciples et c’est tellement rare les gens qui apprennent des choses par cœur, qu’ils n’avaient même pas imaginé que mon astuce puisse être aussi simple.

    « Pour le tour suivant, j’aurais besoin d’une personne du public souple de l’anus. »

    Vous voulez un p’tit exercice d’OSINT ?

    Il s’agit d’un exercice donné en introduction au projet de synthèse. Il n’est pas très réaliste, mais il est assez amusant.

    Vous pouvez le faire par vous-même. Ça commence ici : https://johnalidait.wordpress.com/. Il y a trois flags à trouver, sous la forme {OSINT-xxx-yyyyyyy}. Si vous réussissez, vous obtiendrez une conversation entre un stagiaire et son maître de stage. Ça ne vous servira à rien, c’était pour le projet, mais ça pourrait vous amuser.

    Bonne chance !

    Counter-chocoblast

    Pendant que mes disciples se creusaient la soupière sur un truc en particulier, j’ai quitté la salle juste 2 minutes pour remplir ma tasse (avec de l’eau, pas du foutre). Je me suis dit que je n’avais pas besoin de verrouiller ma session. Mal m’en pris.

    Lorsque je suis revenu, Disciple Forgeron bidouillait mon ordi. Il avait ouvert un éditeur de texte et tentait d’écrire un grand classique tel que : « j’offre des chocolatines à tout le monde! ».

    Disciple Forgeron s’appelle ainsi car il fabrique des couteaux, pour de vrai.

    Ce qu’il n’avait pas anticipé, c’est que mon clavier est en bépo. Il était complètement perdu. Il a repris sa place tout penaud. Je me suis foutu de sa gueule et je leur ai expliqué le concept du clavier bépo.

    Pour la peine, il a été officiellement « counter-chocoblasté ». C’est lui qui a dû apporter des viennoiseries le jour des soutenances du projet. Pwnz !

    Cela dit, même si vous êtes en bépo, partez pas de votre ordinateur sans l’avoir verrouillé. Ça restait une erreur de ma part.

    Ancien·ne·s collègue·e·s

    Petite liste des personnes croisées dans l’école -42/0.

    Ex-collègue OuinDashboard, de Zarma.pro. L’homme à l’origine d’un outil appelé « dashboard », servant à déclarer les fameuses « feuille de temps ». À un moment, Ex-cheffette Gothique lui avait demandé un renseignement concernant ce truc. Durant les explications, les deux se comprenaient mal, la discussion s’est auto-moisie. OuinDashboard a fini par balancer : « eh ben t’as qu’à faire comme tout le monde et dire que le dashboard c’est de la merde », puis il est parti du burlingue en lui jetant un regard noir. Zarma.pro était décidément ma pire incarnation professionnelle.

    Ex-collègue Clavier, de ConcreteWorld.🌍. Vous trouverez un souvenir idiot le concernant dans cet article.

    Ex-collèguee PositiveAttitude, de ConcreteWorld.🌍, toujours aussi macroniste. Elle avait rigolé à une de mes blagues, un jour où Ex-collèguee Carnea avait organisé un pot de célébration à 10 heure du matin avec du champagne. Toute une époque. Mais j’ai oublié la blague.

    Ex-collègue Zen, de Zarma.pro. J’aimais bien ce type. Même si je ne l’avais pas beaucoup cotoyé, il me semblait zen, calme, posé et techniquement solide. Les disciples me l’ont présenté comme un prof naze qui les avait sacqué par surprise. Les ex-collègues de Zarma.pro sont décidément plein de surprises.

    Ex-collègue DuCuivre, de ConcreteWorld.🌍. Un fois il s’était amusé à singer des gitans en disant « on veeuuut du cuiiiivre » (sur un ton de protestation/lamentation). À vous de décider si ça vous fait rire ou pas. J’ai une blague d’informaticien raciste à propos des gitans, je vous la donnerai une autre fois.

    Ex-collègue Ducky, de ConcreteWorld.🌍. Il nous avait fait une démonstration d’une rubber-ducky, c’etait cool. Maintenant c’est carrément les câbles qui peuvent contenir des éléments malveillants. Vous comptiez être protégé en faisant systématiquement attention aux appareils que vous branchez sur vos prises USB ? Perdu ! C’est pas grave, toute l’informatique va bientôt s’écrouler, par manque de terres rares.

    C’est has-been de voler du cuivre, volons des terres rares !

    Vous voulez un p’tit exercice de plantage ?

    Mes disciples suivent une formation intitulée « Mastère en Ordalie, Réseau, Layerisation, Uberstructure et Cybersécurité » (MORLUC). Ils n’ont pas vocation à être développeurs. Mais je leur ai quand même donné quelques scripts à bouffer.

    Le hacking, c’est souvent se poser la question : « qu’est-ce qui pourrait bien merder? ». Je leur ai donc donné des petits scripts en python, C# ou Java, qui demandent de saisir une donnée. Il faut en trouver une qui fait planter. Les modifications sont autorisées, pour débugger, ajouter du log, etc. Mais pour que ce soit validé, il faut provoquer le plantus avec le code original.

    Ces exercices utilisent les spécificités d’un langage de programmation, la manière dont les informations sont définies dans un ordinateur, les encodages de caractère, etc.

    Voici un exemple. Ce programme python effectue une conversion de date. Saurez-vous le faire planter ?

    from datetime import datetime
    import pytz
    def main():
    print("Bienvenue dans mon programme de conversion de date.")
    print("Indiquez une date au format ISO 8601,")
    print("dans le fuseau horaire Europe/Paris.")
    print("Par exemple : 2026-01-12 10:07:58")
    str_dt_paris = input("")
    try:
    dt = datetime.strptime(str_dt_paris, "%Y-%m-%d %H:%M:%S")
    except:
    print("Vous devez entrer une date valide.")
    print("Ce programme n'a pas planté. Ha ha ha!")
    return
    # On indique que la date est dans la timezone Europe/Paris.
    localized_dt = pytz.timezone("Europe/Paris").localize(
    dt,
    is_dst=None
    )
    # Ensuite, on convertit cette date en UTC.
    utc_dt = localized_dt.astimezone(pytz.utc)
    # On reconvertit cette date en chaîne de caractère,
    # au format ISO 8601.
    str_utc_dt = utc_dt.isoformat(" ")
    # Lors de la conversion, on a un "+00:00" à la fin.
    # On n'en n'a pas besoin.
    str_utc_dt = str_utc_dt.split("+")[0]
    print("La date convertie en UTC est :", str_utc_dt)
    print("Ce programme n'a pas planté. Ha ha ha!")
    if __name__ == "__main__":
    main()

    Vous pouvez essayer tout de suite, sans rien installer, en allant sur ce trinket qui exécute du python dans votre navigateur. Cliquez sur le triangle « play » juste au-dessus du code, saisissez une date dans le cadre de droite et trouvez-en une qui fait planter !

    Je pensais qu’il n’existait qu’une manière de réussir cet exercice, avec un ensemble de date bien particulier, mais Disciple GrandChauve en a trouvé une seconde. Bravo à lui !

    Je vous laisse y réfléchir. La réponse est dans le premier commentaire de l’article.

    Bien ou bien ?

    J’ai demandé à mes disciples si mes méthodes et mes contenus leurs convenaient, en précisant que c’est la première fois de ma vie que je donne des cours.

    Ils m’ont répondu : « mec, t’es venu avec un cours, rien que ça, c’est quelque chose ». Ça m’a rassuré, tout en me confortant dans l’idée que j’ai raison de globalement pas aimer les prof·fe·s.

    les sièges qui pètent

    Je devisais primesautièrement sur la limite théorique infinie des nombres en python, lorsque soudain, un sonore bruit de prout se fit entendre. Aucun disciple ne réagit, bien qu’ils soient prompts à la blague. Les bruits se répétèrent régulièrement.

    N’y tenant plus, je finis par demander d’où ça venait. Les coussins des sièges sont prouto-sonores ! Lorsqu’on repositionne ses fesses dessus, le frottement génère du bruit. Absolument génial.

    Je n’ai pu m’empêcher de les informer que si j’avais été fabriquant de siège, j’aurais fait exprès de les rendre prouto-sonores. Et si j’avais été responsable du mobilier de l’école -42/0, j’aurais cherché exprès des sièges prouto-sonores.

    À noter qu’à aucun moment, ni durant les 3 jours de cours, ni durant la demi-journée de soutenance, je n’ai pété dans la salle en présence des disciples. Vœu de non-flatulence toujours en cours. Ça mériterait une médaille.

    Installation d’un détecteur de prout, obligatoire pour délivrer des certificats officiels de non-flatulence.

    Mes projets persos

    Je leur ai montré Squarity et les énigmes TUR-ROX. Ils ont trouvé ça amusant. Ils ont joué à quelques jeux et essayé TUR-ROX-BASIC, pendant que je leur montrais en direct le début de TUR-ROX-YZ.

    J’ai expliqué que les énigmes TUR-ROX nécessitent les mêmes capacités que le chivalric hacking : bidouille, recherche, tests, un peu de scripting, rétro-ingéniérie, etc. J’ai précisé que je ne pouvais décemment pas les leur donner comme devoir à faire, mais que ça me démangeait.

    Je plante des petites graines pour faire parler de mes trucs. Je ne sais pas ce que ça donnera.

    À propos de graines, êtes-vous allés voir l’énigme TUR-ROX-YZ, comme je vous le suggérais dans l’article précédent ?

    Voilà un tileset avec de l’herbe, dans lequel vous pouvez planter des graines.

  • Wesh,

    veuillez recevoir ci-ici un lien vers l’énigme TUR-ROX-YZ, disponible dans le site prévu à cet effet : https://turrox.neocities.org/TUR-ROX-YZ/main.

    Par rapport à la version du Museum of ZZT, les modifications suivantes ont été apportées :

    • ajout d’explications introductives pour le démarrage du jeu,
    • ajout de quelques indices et conseils, en particulier concernant l’édition des niveaux,
    • modification du board de présentation, remplacement du logo de la THCON par une mystérieuse fiole verte,
    • modification du format du flag (TUR-ROX{...} à la place de ThCon21{...}),
    • versionnisation dans github, garnie d’une quinzaine de commits d’étapes intermédiaires datant de la création initiale de l’énigme,
    • ajout d’une solution détaillée, accompagnée de notes personnelles et de write-ups créés par d’autres personnes, pour qui parviendrait à trouver le flag.
    Pourquoi une fiole verte ? Vous le saurez bien assez tôt.

    Merci de prendre en compte le synopsis suivant décrivant le contexte du challenge :

    Vous êtes « char-1 », un ancêtre des smileys et des emojis. Vous existez dans des milliers d’instances d’un gigantesque multivers primitif, construit à partir de seulement 255 caractères-atomes distincts. Des symboles, des textes, des visages, des scripts, des puzzles, … Le monde dans lequel vous venez d’arriver contient un code secret en morceaux. Saurez-vous le reconstituer ?

    Ci-suivant, un board pas-si-secret-que-ça, indiquant les différentes étapes à réaliser pour trouver les fragments du flag.

    Pour votre information, nous allons dès à présent reventiler notre task force créative sur le projet « Squarity », dans le but de concrétiser une sympathique idée de mini-jeu.

    Nous ne manquerons pas de vous recontacter dans un futur indéterminé, pour vous annoncer la publication du prochain challenge TUR-ROX, créé à partir du jeu Eye of the Beholder. Ce challenge a été utilisé pour la THCON en 2022, mais n’a encore jamais été publié dans le reste de l’univers. Nous prévoyons une influence profonde de ce challenge sur ledit univers, qui devrait instantanément devenir plus intelligent et plus créatif.

    Nous reconnaissons que cet article de blog est peu conséquent, de surcroît, il se contente de présenter une œuvre pré-existente. Afin de pas lier à cette carence blogaire, un autre article vous sera éjaculé durant ce qu’il reste du mois de mars.

    En attendant et pour faire écho à la couleur de la sus-mentionnée fiole, voici Athena Blaze, arborant une splendide chevelure verte.

    Crotalement.

    Bien nav’ où.

    Veuillez Zagreb.

  • Alors que je binge-postulais à des offres d’emploi randoms sur LinkedIn et WelcomeToTheJungle, voilà-t-y pas que je reçois un appel d’Ex-Collègue Digiprout.

    Je sais pas pourquoi son nom est « Digiprout ». On s’en fout, puisque je me suis fait lourder de chez Toyrrid···.

    Il appelait pour régler une dernière digitalerie administrative. C’est comme une paperasserie administrative, mais dématérialisée, donc une digitalerie. Et tant pis si au départ, « digital » signifie « doigt » et non pas « trucs d’informatique ». Muni de ce rappel sémantique que je viens de vous faire, je vous laisse imaginer une possible justification au nom « Digiprout ».

    Or donc, ce monsieur en profite pour mentionner son activité parallèle : conseiller en gestion de patrimoine. Il me propose d’assister à une petite réunion de présentation, à destination de potentielles recrues. Il ajoute que cette activité devient progressivement son activité principale et qu’il est en train de « changer de vie ». Étant quelque peu désœuvré, j’accepte. Au minimum, ça me fera une action que je pourrai déclarer sur le site de France Travail.

    Le sachiez-vous ? Lorsque vous êtes au chômage, vous devez lister toutes vos actions de recherche d’emploi à France Travail, afin de justifier que vous n’êtes pas un·e glandu·e. Heureusement, c’est assez informel et on peut mettre plein de trucs : élaboration de CV, formation, prise de contact, relance de candidature, etc.

    Il y a quand même quelques petits mystères dans leur interface, notamment les sous-catégories de certaines actions.

    Dans plusieurs catégories d’actions (candidature spontanée, recherche d’offre d’emploi, relance des recruteurs, entretien d’embauche, etc.), vous avez différentes sous-catégories, dont une intitulée « par un autre moyen » et une autre intitulée « moyen à définir ». Quelle serait la différence entre les deux ? Mystère…

    Présentation

    Le jour dit, je débarque dans la salle de réunion Microsoft-Teams. On y trouve des gens comme moi venu assister à la présentation, Conseiller Pipeau le leader, Ex-Collègue Digiprout, sa mentore Conseillère Gêne-Érique et d’autres zigue·e·s que je ne connais pas.

    Conseiller Pipeau pitche son speech. Je relève les citations bullshito-humoristiques :

    • « On fait 30% de croissance par an. »
    • « C’est pas des ventes one-shot. Nous, on fait de la qualité. »
    • « Pallier à »
    • « 1 conseiller sur 4 était client avant. »
    • « On a une qualité d’écoute que personne n’a sur le marché. »
    • « Je suis quelqu’un qui n’aime pas être limité par les plafonds de verre. »
    • « Les impôts… »
    • « Je dirige une équipe, mais j’évite le mot ‘manager’. Mes collaborateurs, je les appelle des ‘collaborateurs’. »
    • « Je me fais arnaquer par les retraites, je suis en train de donner mon argent à la génération précédente. »

    Et quand t’auras l’âge de la retraite, tu vas nous baver quoi, ducon, que « les jeunes de maintenant, ils respectent plus rien » ?

    Ensuite, Conseiller Pipeau nous explique qu’il apprécie vraiment la compagnie de ses collêgue·e·s/collabo·e·s, à tel point qu’il part en vacances avec, de son plein gré. Citation : « On est allé dans un super hôtel. Désolé pour l’écologie, mais on a fait du 4×4 dans le désert, c’était trop cool. »

    À ce stade de la présentation, je ne sais toujours pas en quoi consiste le conseil en gestion de patrimoine, ni les actions concrètes correspondant à ce travail.

    Viennent ensuite les témoignages de personnes ayant embrassé ce métier, à plein temps ou partiellement. On peut avancer à son rythme dans cette bonheuresque voie qu’est la leur et qui pourrait être la mienne.

    C’est assez troublant de constater que les métiers d’origine de ces personnes sont très disparates, comme si l’ensemble de l’humanité pouvait potentiellement se convertir vers la gestion de patrimoine. Nous avons :

    • une clowne d’entreprise,
    • un graphiste spécialisé dans la retouche photoshop de dick pics et vagina pics,
    • une podologue ayant pour activité parallèle la vente de poudre de parmesan,
    • une blaguinaire, dont le métier consiste à insérer des histoires drôles dans les licences d’utilisation des logiciels, pour voir si quelqu’un les lit,
    • un ratiseur, qui infecte des lieux pour donner du travail aux entreprises de dératisation,
    • Un placeur de symboles en hauteur dans les chambres d’hôpitaux pour détecter les Near Death Experiences (voir cet article),
    • un·e ingêneur·se (transgenre, d’où son métier écrit sous la forme inclusive alors que c’est une seule personne).
    Cliquez sur l’image pour découvrir le métier des ingêneur·se·s.

    Ces témoignages apportent eux aussi leur lot de bullshitting :

    • « Cette opportunité professionnelle a littérallement changé ma vie. »
    • « 3 jours par semaine, j’arrête de bosser à 16h, pour être avec mes enfants. »
    • « Moi, dans une vie passée professionnelle, je… »
    • « J’aime voyager, mais ça prend du temps et de l’argent. Aujourd’hui j’ai les deux. »
    • « Je ne trouvais pas de modèle à ma mesure me permettant de libérer le potentiel en moi. »
    • « Avant, j’avais un chef qui ne comprenait pas ce que je faisais mais qui m’expliquait comment le faire mieux. »
    • « Cette ambition de découvrir autre chose qui pourrait changer notre vie. »

    Je ne sais toujours pas en quoi consiste le conseil en gestion de patrimoine, mais je me surprends à rêver devenir comme ces gens : du temps libre que je pourrais utiliser pour mes projets, de la tranquilité financière, un monde de possibilités, … Le tout semble très accessible, puisqu’on peut commencer progressivement tout en ayant d’autres activités à côtés (même si là, moi, j’en n’ai pas).

    Ensuite, vidéo de présentation avec d’autres témoignages. Je vous fais pas le détail, relisez les deux énumérations précédentes, ça résume pareil.

    Conseiller Pipeau nous explique qu’il est possible de faire du conseil directement soi-même, ou de gérer une équipe qui conseille, sur qui on perçoit des commissions. En général, on commence par le conseil direct pour aller progressivement vers la gestion d’équipe.

    Une personne de l’assistance fait la remarque que si les bénéfices dégagés finissent en commission dans la poche de la personne qui nous gère, c’est pas très encourageant. Conseiller Pipeau s’empresse de dire que le pourcentage de commission est très faible.

    Un énorme mot clignote en rouge fluorescent dans mon cerveau :

    Réflexions

    Fin de la réunion, au-revoir général. J’enchaîne sur la réunion informelle de debrief-feedback, avec Ex-Collègue Digiprout et Conseillère Gêne-Érique.

    Je leur fait part de mon étrange sensation que ça me semble trop beau pour être vrai. Conseillère Gêne-Érique me demande : « et si c’était vraiment exactement comme on a dit, tu réagirais comment ? ». Je lui retourne une réponse générique.

    Je pose les questions qui me turlupinent depuis le début de cette mascarade. C’est quoi votre travail ? Concrètement, vous faites quoi au quotidien ? Comment vous trouvez vos clients ? Vous leur vendez quoi ?

    Conseillère Gêne-Érique m’explique que son premier client était un ami d’enfance qui ne pouvait économiser que 12,5 euros par mois. Elle lui a proposé un tout petit placement simple mais efficace. Pour finir, elle précise que cette première action a eu lieu il y a plus de 5 ans et qu’elle est toujours amie avec cet ami d’enfance. J’ignore si cette précision est anodine pour elle, ou si elle s’est sentie obligée de me la donner, comme si elle aurait pu se fâcher avec cet ami pour une raison ou une autre.

    Je n’arrive toujours pas à déterminer si leur bazar constitue un métier légitime avec des impacts normaux sur le monde et l’humanité, ou si c’est une gigantesque arnaque. Ex-collègue Digiprout me demande si je suis interessé et si je veux continuer. Je n’ose pas lui hurler au visage que tout ça me semble terriblement douteux. Je réponds évasivement que je ne suis pas sûr d’être capable d’exercer ce métier.

    Conseillère Gêne-Érique m’indique que je peux prendre le temps de la réflexion, il n’y a aucune urgence. Elle me répète qu’il est possible de commencer progressivement. Comme je suis au chômage, elle ajoute une astuce spéciale pour moi : les bénéfices que je ferais peuvent être placés sur un compte bloqué, afin que je n’ai pas à les déclarer tout de suite et que je puisse toucher l’intégralité de mon chômage. Cette astuce est bien évidemment légale, mais est-elle morale ? À vous de décider.

    Elle termine en m’informant que la prochaine étape, si je le souhaite, serait d’assister à une réunion de formation « aux produits qu’on vend », en visio. La prochaine session est dans pas très longtemps. Faudrait juste payer 5 euros pour couvrir les frais, mais bon, ça va.

    Cette petite somme à payer déclenche une autre alerte dans mon cerveau, celle de l’arnaque du « gourou-exorciste-marabout ».

    Explication : un gourou-exorciste-marabout vous propose une solution miracle à l’un de vos problèmes. Il faut payer, mais c’est satisfait ou remboursé. Vous payez. Ça marche pas. Le gourou-truc vous explique que le rituel qu’il a effectué a tout de même permis de préparer le terrain pour régler définitivement votre problème. Il suffit maintenant d’un second rituel, impliquant une seconde contribution. Vous avez envie de payer, sinon, ce serait reconnaître que le premier paiement ne vous a rien apporté. Et ainsi de suite. Plus vous payez, plus vous avez envie de payer, car ça semblerait totalement absurde que tout ce que vous avez déjà fait n’ait servi à rien.

    Précision : ça marche aussi lorsque c’est une femme qui effectue l’arnaque, mais j’avoue ne pas savoir comment je pourrais inclusivifier le nom du métier : « gourou·e-exorciste-marabout·e » ? « gourou-exorciste-marabout/gouroutte-exorcistesse-maraboutière » ? « gourexorçaraboutiste » ?

    Les religions officielles fonctionnent également sur ce principe du « je peux quand même pas avoir fait tout ça pour rien ». La promesse annoncée étant le paradis, le valhalla, 70 vierges ou tout autre chose que vous désirez.

    Les anges déchu·e·s du paradis que l’on vous a promis se crashent parfois dans la neige.

    Décision

    Quelques jours plus tard, je rappelle Ex-Collègue Digiprout et lui pipeaute un refus poli et nuancé : « c’est pas mon truc, je suis pas sûr d’avoir envie de faire ça, je préfère rester dans mon métier initial, peut-être que je te recontacterais dans 6 mois si je suis vraiment désespéré et toujours au chômage ».

    Il me répond que c’est ok pour lui. Il en profite pour me glisser ces produits du moment, qui étaient déjà bien meilleurs que le livret A avant même que celui-ci soit rabaissé à 1,5%. Il mentionne un placement à 9% qui est du « quasi sans risque ». J’aime bien la subtile présence du mot « quasi ».

    Je le remercie pour son temps et sa disponibilité, puis je coupe la communication.

    Tant pis, je resterai pauvre toute ma vie et je ne ferais pas de 4×4 dans le désert tout en profitant de 30 heures par jour de temps libre.

    Alors qu’il y a tellement de choses bien dans les 4×4 / SUV. Ici : Andrea-Gonzalez-2106.

  • V’là un gros article corporate regroupant des instants magiques de la boîte où j’étais ex-cravailleur, maintenant néo-chômeur.

    Collègue·e Iel

    Le genre de cette personne est : « inclusif ». Je vais vous expliquer.

    • Pour parler d’un collègue de genre masculin, on utilise le mot « collègue ».
    • Pour parler d’une collèguee de genre féminin, on utilise le mot « collèguee » (ou « colléguette »).
    • Pour parler des gens féminines et masculins en général, on utilise le mot inclusif « collègue·e·s » (ou « collêgue·tte·s »), avec les points médians qui vont bien. Ce mot est censé servir uniquement quand on parle de plusieurs personnes.
    • Mais comme Iel est de genre inclusif, on utilise ce mot pour parler d’une seule personne. Son titre de noblesse est donc : « Collègue·e Iel ».

    Mes articles précédents comportent une faute récurrente. Je ne mettais pas l’accent circonflexe à « collêgue·tte·s ». Pourtant c’est logique, l’accent circonflexe est la fusion d’un accent aigu et d’un accent grave. J’espère que vous ne m’en voudrez pas si je ne corrige pas tout rétroactivement.

    « Iel », c’est son prénom. Les pronoms « il » et « elle » ne lui correspondent pas. Iel utilise le pronom méta-inclusif « iel·le ».

    Je n’avais au départ aucun préjugé sur cette personne. Mais il y a eu un tout petit bug. Au détour d’une conversation lors d’une soirée bière & onboarding, DRHette Farine a mentionné Collègue·e Iel, les personnes autour ont alors tiré la tronche. Je ne me souviens plus du contexte, mais j’en ai vaguement déduit qu’une majorité considérait Collègue·e Iel comme étant chiant·e. Cela aura des conséquences dans le moment raconté juste après.

    Maintenant que j’y pense, faut-il écrire « DRHette » ou « DeRH » ? (pour Directrice des Ressources Humaines). Je ne sais pas.

    DRHette ?
    Des « air hachettes » ?

    Préjugés de fuseaux horaires

    Visio-conférence informelle où on discute pour faire comme si on était en pause. Le hasard fait que nous ne sommes que deux : Collègue·e Iel et moi.

    Mon sens inné de la sociabilisation me permet de sortir la phrase inspirante : « eh bien, il n’y a pas grand monde autour de cette machine à café distancielle ». Iel·le me répond : « il est, n’est-il pas ? Pouwtant, il est quand bien même déjà 9 heuwes o’clock ».

    Deux faits évidents m’apparaissent :

    • iel·le a un accent anglais,
    • Mon horloge affiche 10 heures alors qu’iel·le dit qu’il est 9 heures.

    Du fait que je soupçonne iel·le d’être possiblement chiant·e, mon cerveau tourne à plein régime. Je dois faire attention au moindre détail pour ne pas déclencher sa chiantitude, dont j’ignore la teneur exacte. Nous discutons tous les deux en français, mais comme iel·le est décalé·e d’une heure par rapport à moi, j’en déduis qu’iel·le habite en Angleterre.

    L’entreprise Toyrrid··· où nous travaillons compte beaucoup de personnes dans des pays disparates. Ce n’est pas toujours évident de savoir qui est où et qui parle quoi. Pour éviter les confusions, chaque Toyrridiste a rédigé une petite fiche de tronchoscope pour indiquer son lieu de résidence, ses langues parlées, son plat préféré, son signe du zodiaque mécanotantrique, etc.

    Mais là tout de suite, je n’ai pas le temps de consulter sa fiche et mon cerveau mouline toujours pour contrer tout risque de chiantitudisation. J’ai peur de l’offusquer en parlant français alors que ce n’est manifestement pas sa langue maternelle. Je lui propose : « maybe you prefer we continue the conversation in English ? ».

    Et là, c’est le drame. Iel·le devient rouge de visage et me répond (en français) : « bien sûw, faisons cela. J’ai passé plus de 10 ans en Fwance à pawler fwançais, mais si tu penses que tu pawles mieux anglais que moi je ne pawle fwançais, on n’a qu’à pawler anglais ».

    C’est tellement inattendu que je ne comprends pas immédiatement qu’iel·le me fait un reproche. Je crois réellement que sa suggestion est sérieuse. Je me mets à essayer d’évaluer mon niveau d’anglais par rapport à son niveau de français. Je bafouille des mots. Iel·le continue de me vilipender. Dans le flou de l’action, je continue de parler anglais, mais avec l’accent belge, tout en cherchant sur internet comment on dit « excuse-moi » dans toutes les langues possibles et je les énonce au fur et à mesure. J’en étais aux langues elfiques (on dit « Absenen » en Quenya, mais j’ai pas trouvé en Sindarin), lorsqu’une autre personne arrive dans la visio-conférence. Ça désamorce la situation. J’arrête de parler et je bois des cafés distanciels pour me donner un air très très occupé.

    Une fois la visio-boulette terminée, je consulte la fiche de Collègue·e Iel, celle-ci indique qu’iel·le habite en France. Ça colle pas, sa fiche n’est sans doute pas à jour.

    Plus tard, j’apprends qu’iel·le habite actuellement au Burkina Faso, ce qui explique le décalage horaire. Une info intéressante, mais qui ne m’aurait pas servi, car mon cerveau aurait de toutes façons déconné pleins tubes.

    Les fuseaux horaires de l’Afrique du sud-ouest

    Secret confusioning Santa

    Vous connaissez le principe : vous savez à qui vous devez offrir un cadeau, vous ne savez pas qui vous en offrira un. Le prix est fixé à 10 euros max pour éviter des désequilibres. La création personnelle est conseillée plutôt que l’achat. Le nom de la personne destinataire est écrit sur le cadeau, secrètement déposé au pied du sapin de Noël géant.

    J’ai fabriqué un superbe chien-robot qui fait pipi. J’en ai une vidéo quelque part, faudrait que je la retrouve. Ça m’a pris un certain temps, mais ça m’a coûté zéro euros.

    Apéro-beuverie transitoire durant la soirée de Noël. Chef GenericGamer me donne une enveloppe toute chiffonnée et me dit: « it’s not secret, but it’s for you ». Je ne comprends pas bien. Étant donné sa position de Chef, cette enveloppe pourrait correspondre à une tâche particulière qu’il me demanderait d’effectuer. Par exemple, une jolie petite spécification d’un logiciel de modélisation de mouvement de fesses, qui permettrait de gagner un client important.

    Distribution des cadeaux. C’est la pagaille. Les gens se passent les boîtes, se bousculent, finissent leur bière, font tomber des cacahuètes. Nous avons ordre de ne rien ouvrir tant que tout le monde n’a pas récupéré son cadeau.

    Je fouille autour du sapin, interroge des gens, reprends une bière. Nibz cadeau. DeRH Farine demande à la cantonade si tout le monde est ok, je réponds que non. Le reste de la cantonade commence à s’impatienter. Les gens piaffent, leur cadeau à la main. DeRH Farine tente un recensement des cadeaux, je continue de chercher de mon côté.

    Au bout d’un bon quart d’heure de gênance bien épaisse, Chef GenericGamer se manifeste comme une fleur et dit : « that was the envelope I gave you ». Aaaaah d’aaaaccooord. Donc là je viens d’emmerder tout le monde en croyant que j’avais pas de cadeau, juste parce que t’es pas capable de prendre 20 secondes dans ta journée pour écrire « Réchèr » sur ton enveloppe et pour la jeter dans le sapin ? Je ne suis pas du tout passé pour un boulet !

    J’ouvre mon cadeau, c’est une carte Amazon de 25 euros. Je ne peux même pas lui en vouloir de m’avoir acheté un truc pourri (en revanche, il a dépassé la limite).

    J’achète pas de trucs sur Amazon. De manière générale, j’achète pas de trucs. Mais je m’en suis servi un an plus tard pour offrir un livre de Isaac Asimov à ma belle-nièce.

    Et sinon, plein de gens ont apprécié mon chien-robot pipiteur, ça c’est chouette.

    Le destinataire de mon cadeau devait repartir en avion, il n’a pas pu le reprendre dans ses bagages. Maintenant, il trône à côté du baby-foot-obligatoire-de-start-up (le cadeau, pas le destinataire (au reste, le destinataire s’est fait lourder depuis)).

    Ultragenre

    Ceci n’est pas un moment « gênant », mais un moment « génant », avec un accent aigu.

    Il y a une collèguee femme qui se sent encore plus femme que la plupart des femmes, alors elle va faire une opération pour modifier son code génétique. Ça se fait assez simplement, par radiations mutagènes raisonnées. Elle va devenir une super-femme avec trois chromosomes X. Je vous invite à consulter l’article wikipédia sur le syndrome triple X.

    Pour son titre, on utilisera le mot « Collègueee », avec un « e » supplémentaire de surféminin. Son nom sera « Jane », comme « gène » (et non pas « gêne »). Son nom ne sera pas « Triple X », sinon on va croire que je veux distiller de la pornographie dans tout ce qui existe (règle 34, tout ça).

    Collègueee Jane a participé à quelques Ludum Dare et ça c’est cool.

    La machine à radiations mutagènes raisonnées

    Prout !

    Il y a une personne qui largue des caisses.

    Avant tout, une précision importante :

    C’EST PAS MOI QUI AI PÉTÉ !

    J’ai pé(t|ch)é à maintes reprises durant mes précédentes incarnations professionnelles. Je formulais des vœux de non-flatulence que je brisais au bout de quelques jours à peine. Mais depuis le télétravail, c’est beaucoup plus facile. On se voit physiquement assez peu, j’arrive à tenir.

    Mais là, on était tous dans le burlingue-open-space. Quelques personnes se promenaient ici et là pour discuter. J’étais tranquillement assis à lutter pour pas m’endormir, comme d’habitude. Une odeur de cimetière fermenté m’est parvenue. Ça m’a réveillé.

    C’est également arrivé lorsque tout le monde s’agitait autour du secret-Santa-sapin. Des molécules proutales volatiles se sont imprégnées dans mes muqueuses nasales, argh.

    Au moment de ces deux événements olfactifs, j’ai rapidement et furtivement installé des détecteurs multi-directionnels et fait des relevés topographiques en 4 dimensions pour détecter l’épicentre du prout et en déduire son/sa perpétreurtrice. Je n’ai malheureusement pas assez de données pour formuler une conclusion inopposable.

    Y’a des gens qui disent que boire dans la bouteille d’une autre personne, c’est l’équivalent de lui rouler une pelle. Si je respire l’odeur de prout d’une autre personne, est-ce que c’est l’équivalent de lui faire une pénétration anale nasale ? Attention, j’ai un gros nez, ça peut faire mal.

    Données actuelles de mes relevés proutopographiques

    Préjugés de couleurs de peau groenlandaise

    Nous avons besoin de recruter des freelances pour tester l’un de nos produits : une I.A. génératrice de tutos maquillage d’organes génitaux. Comme je ne sais pas trop évaluer des freelances, Collègue Double-Nom me seconde.

    Nous postons une annonce sur divers sites, demandant d’écrire un mini-rapport sur un tuto maquillage donné. Durant ce processus, une personne sort du lot. Elle s’appelle Mimouna, elle est réactive, répond avec des phrases policées et rédige son rapport avec brio. Son image de profil est une femme noire, ses informations indiquent qu’elle réside au Groenland. Ça me semble étrange, mais tant qu’elle bosse correctement, je n’en ai cure.

    Nous lui proposons une visio-conférence, afin de lui expliquer en détail ce qu’on attend d’elle, comment utiliser nos outils et comment discuter avec notre I.A. maquillageo-pédagogue. Elle accepte avec enthousiasme et réactivité.

    Et là, blarg…

    La visio nous montre deux personnes à l’arrache, dont aucune ne semble être une femme, et qui ne semblent pas trop savoir pourquoi nous les contactons. Ils tentent pourtant de donner l’impression d’être prêt à effectuer n’importe quel travail, faisant fi de l’éventuel niveau d’expertise requis. À un moment, l’un d’eux passe l’ordinateur à un troisième homme qui continue la conversation comme si de rien n’était. Le lieu fait penser à un bar.

    Collègue Double-Nom me suggère de couper court. Immédiatement après, nous envoyons un message, indiquant que nous ne pourrons pas travailler avec elle·eux. La réponse policée ne se fait pas attendre et contient en substance : « ok, no problem, à une prochaine. Tchô ». On a cherché d’autres freelances.

    Mimouna est donc une I.A. associée à des humains du monde réel dans un bar, pour grapiller quelques piécettes en misant sur des malentendus. On se re-visio-conf avec Collègue Double-Nom pour debriefer et pour se marrer. Il me précise que c’est la première fois qu’il voit une telle gabegie et m’invite à la raconter sur le channel #trucs-rigolos du slack boîtal.

    J’ai pas envie de raconter ça. Quelques détails de l’histoire, même présentés objectivement, pourraient être vus comme des préjugés racistes. En particulier le fait que tous les hommes du bar avaient la peau noire. Mais je ne veux pas non plus dire à Collègue Double-Nom de se débrouiller et de narrer ça par lui-même, car c’était mon chef à l’époque.

    La solution la plus simple est de tout raconter sans mentionner la couleur de peau des hommes. Mais j’ai l’impression que ça n’a plus aucun intérêt et qu’on ne voit pas où je veux en venir. Alors j’ajoute une phrase, que je voulais la plus détachée possible : « j’aurais peut-être dû me douter de quelque chose en voyant que la photo de profil de cette Mimouna montre une femme noire, alors qu’elle est originaire du Groenland. Ha ha ha ! Lolilol ! Roflcopter ! Zygomatiques de platine ! »

    Un quart d’heure plus tard, je reçois un message privé de Collègue·e Iel :

    « Mmmmmffff eeuuuuuhhh…. J’ai été choqué·e par le récit scabreux de ton désastre freelancesque. Je suis quelqu’un·e de très proche de plusieurs grandes et glorieuses femmes noires groenlandaises, l’une d’elles a d’ailleurs fait une sortie extra-véhiculaire dans l’espace pour réparer un trou de couche d’ozone provoqué par les pets d’une personne dont on cherche encore l’identité. Alooors voilàààà, attention de ne pas faire circuler des préjugés aux sujet de ces femmes. J’ai fait part de mes tourments à Collègue Double-Nom. Je suis à ta disposition si tu souhaites en discuter. »

    J’avais donc manifestement foiré mon dosage de détails sur les couleurs de peau.

    • J’ai voulu répondre : « ça aurais pu être pire, j’ai même pas dit que les gens dans le bar étaient noirs eux aussi »,
      • mais iel·le aurait rétorqué : « la dernière personne qui a dit que c’était pas elle la pire, c’est Pénélope Fillon quand elle a comparé son salaire à ceux des footballeurs, c’est un peu facile ».
    • J’ai aussi voulu répondre : « c’est pas moi, c’est Collègue Double-Nom qui m’a dit de raconter cette histoire »,
      • mais iel·le aurait rétorqué : « les dernières personnes qui ont donné comme excuse qu’elles ne faisaient que suivre les ordres, c’était les nazis quand ils ont brûlé des juifs, c’est un peu facile ».
    • Alors j’ai juste répondu : « désolé, j’ai raconté n’importe quoi, ça m’arrive souvent, je suis complètement fou et j’écris des conneries au hasard, j’ai pensé à exorciser ces stupidités en créant un blog, mais je n’en ai pas le courage »,
      • je m’attendais à ce qu’iel·le rétorque : « la dernière personne ayant plaidé la folie pour justifier ces actes, c’était Hélène Jégado, c’est un peu facile ».

    Mais iel·le n’a rien répondu. Rien de rien. Sur Slack, le protocole social nous dicte de terminer les conversations de plus de deux messages par une icône de réaction. Il s’agit d’une sorte d’acquittement, comme en TCP/IP. L’icône dépend de votre état émotionnel et de votre avis sur la conversation : un cœur, un gros signe plus, un pouce levé, une checkbox cochée, un visage effrayé, un sourire narquois, une crotte, une bombe, un clown, etc.

    Iel·le n’a même pas mis d’icône. J’en suis resté comme deux icônes de ronds de flan.

    Tier list russe de coolitude des icônes de slacks, à peu près.

    Entre temps, j’ai reparlé de cette épisode désastreux avec Collègue Double-Nom. Il a juste dit que j’y étais allé un peu fort dans mon récit. Pour détendre l’atmosphère, il m’a demandé : « à ton avis, ils étaient dans quel pays, tous ces gens ? »

    Je lui ai hurlé dessus : « Quoi quoi quoi ? On me reproche d’avoir des préjugés sur une femme noire groenlandaise qui n’existe pas, et ensuite tu me demandes de pré-juger le pays dans lequel vit un groupe d’hommes noirs ? Je veux rien répondre ! Rien ! D’après l’heure qu’il était, la position du soleil et la taille des ombres, j’ai calculé en un éclair et sans préjugés la latitude et la longitude, puis j’en ai déduit le lieu. Tu veux ma déduction ? Tu la veux ma grosse déduction turgescente ? Ces gens habitent au Burkina Faso !!! Oui ! comme Collègue·e Iel ! »

    C’est pas vrai, je ne lui ai pas hurlé dessus. Je ne suis qu’un faible. J’ai répondu que je savais pas le pays. Puis je suis allé me consoler en parlant à ChatGPT. C’est la seule fois où j’ai utilisé un LLM comme réconfort/psychologue (je l’avais mentionné dans un article précédent). C’était tout naze et je n’ai aucune envie de réessayer.

    Quelques semaines plus tard, j’ai demandé par message privé quelque chose d’anodin à Collègue·e Iel, qui m’a répondu sans aucun problème. Mais ça faisait bizarre. J’avais notre conversation précédente juste au-dessus, sans icône de réaction, sans réponse, comme si ça datait d’à peine 5 minutes.

    Après cet événement bien cringe, je mettais deux fois plus de temps à écrire un message à iel·le, pour bien relire chaque phrase et être sûr qu’il n’y avait pas de connerie dedans.

    Photo de profil de Mimouna. Croyez-le, croyez-le pas, ça a été généré par une I.A.

    CTF : Car Tu Ficus

    Je suis allé faire un CTF (un challenge de hacking) avec des collègue·e·s. Deux d’entre eux sont frères. Vous connaissez sans doute l’expression « wesh, frère ! », utilisée à outrance par des djeun’s qui ne sont ni frères ni sœurs. L’un des deux n’arrêtait pas de la dire à l’autre. Je trouvais ça ridicule, mais je ne pouvais pas lui faire la remarque, puisque c’est vraiment son frère.

    Je n’ai pas la prétention d’être super bon aux CTF. Je ne suis pas un cador bardé d’outils, de scripts et de connaissances. D’habitude, j’arrive à gratter un petit challenge sympa, en marge de la cybersécurité : une bidouille avec des regexps, un script idiot à coder, de la data science à l’arrache, … Mais là, je n’ai servi absolument à rien. Aussi utile qu’un ficus. Même les pizzas gratuites, c’est pas moi qui suis allé les chercher.

    Pas grave, ça m’a permis de m’apercevoir d’un truc marrant. Les deux frères s’appellent Léodomir Hevrett et Clothaire Hevrett. Dans beaucoup de systèmes informatiques, les noms de login sont créés avec la première lettre du prénom, suivi du nom. Par exemple : « Jeannette Pointu » -> jpointu.

    Ça donne quoi avec les deux frères ?

    • Léodomir Hevrett -> lhevrett
    • Clothaire Hevrett -> chevrett

    Ça fait « levrette » et « chevrette » ! C’est ridicule ! Ha ha ha !

    Plus sérieusement, faites gaffe quand vous décidez les prénoms de vos enfants. Ça peut donner des trucs gênants.

    Une à-peu-près chevrette et une à-peu-près levrette

    Strip-tease

    Pour en revenir au CTF, on est arrivé premier ! Pas du tout grâce à moi, vous l’avez compris. On a fêté ça en se déglinguant la gueule dans un bar. Après deux heures à challenger des bouteilles de Ricard et d’absinthe, certains collègue·e·s ont décidé de se rendre dans une boîte de strip-tease. J’étais beaucoup trop bourré, je les ai laissés y aller et suis retourné à mon logement pour me masturber. Les frères Hevrett sont aussi rentrés chez eux pour regarder des documentaires sur les animaux. Mais quelques personnes sont parties se faire plaisir avec ces spectacles affriolants.

    (Insérer ici une image de strip-tease)

    Le lendemain, l’haleine bien chargée de vapeurs d’alcool, j’ouvre ma messagerie boîtale. Je tombe sur de larmoyants mails d’excuses, de la part de collègue·e·s se repentant et se flagellant d’être lubriquement allé regarder des strip-teases et d’avoir ainsi encouragé un commerce esclavagiste qui traite le corps des femmes comme de la viande/marchandise.

    Ces mails avait été écrits sur ordre de Méga-Cheffe Caillasse, qui, ayant eu vent de la petite escapade, avait trouvé cela inadmissible et avait demandé des excuses publiques à toutes les personnes incriminées.

    Je ne sais pas comment j’aurais réagi si j’avais eu à faire ce genre de mail. Professionellement, je suis un gros flambi. J’aurais donc formulé des excuses sans problèmes, mais je n’aurais pas pu m’empêcher d’y insérer des bêtises, des jeux de mots et des easter eggs. Ça aurait pu mal finir.

    C’est grâce au fait que je me suis bourré la gueule si je ne me suis pas retrouvé dans cette situation. L’alcool m’a sauvé !

    Sinon, faites comme moi, masturbez-vous sur des vidéos TikTok.

    Nous donnerons plus de détails sur Méga-Cheffe Caillasse dans un autre article.

    Quoi de mieux, pour faire des excuses publiques, que de faire référence à la chanson « Excuse Me » du groupe de K-Pop AOA (Ace of Angels) ?

    Exemple de produit vendu par Toyrrid···

    Le sacerdoce global de Toyrrid··· est décrit dans cet article. Voici maintenant un exemple de produit.

    Votre corps est placé dans le simulateur d’un monde virtuel où le statut social est directement dépendant de l’état et de la décoration des ongles, aussi bien pour les hommes que pour les femmes.

    Vous incarnez un homme doté d’une particularité génétique assez rare : votre sperme contient de la kératine. Lorsqu’une personne l’avale, ses ongles s’améliorent significativement.

    Vous êtes fonctionnaire dans un service public d’aide à l’insertion sociale. Vous adorez votre métier, mais la cadence et les horaires sont de plus en plus difficiles, du fait de la lente et inévitable déliquescence du service public. Les efforts que vous faites à votre travail commencent à vous fatiguer.

    Un organisme privé de manucure haut de gamme, dont la clientèle est très riche, vous a contacté et vous propose une embauche avec un salaire et des avantages très intéressants.

    Resterez-vous fonctionnaire ou accepterez-vous l’embauche ? Utilisez-vous votre particularité génétique pour aider les femmes ? Les hommes ? Les non-binaires ? Tous les genres à la fois ? Allez-vous avaler votre propre sperme pour avoir des ongles magnifiques ? À vous de choisir ce que vous souhaitez faire dans ce monde virtuel.

  • Les 27 et 28 novembre dernier, c’était Thanksgiving. Or, comme raconté dans cet article, la gentille société Toyrrid··· octroie les jours fériés français ET américains à tous ses joyeux employés.

    J’ai donc profité de deux jours de glandouille complète. Youyouyouyouyou !

    Le lundi suivant, suis-je joyeusement retourné au Travail ?

    Eh bien non !!!

    Parce que je me suis fait lourder.

    Rupture conventionnelle. Je suis officiellement au chômage depuis le 1er décembre 2025.

    C’est ça, la merdouille dans laquelle je suis et dont je vous parle depuis deux articles. Chef Oink a commencé de m’en parler fin août, on a essayé de trouver d’autres solutions, mais bernique.

    Je dois reconnaître que je ne me suis pas fait lourder comme un malpropre (spéciale cacedédi à Collègue DocteurMaboul). J’ai eu du préavis, pour me donner le temps de chercher ailleurs. Ce que j’ai fait, mais manifestement mal, car je n’ai pour l’instant rien trouvé. Je suis parti avec deux mois de salaire alors que le minimum légal pour mon ancienneté était de un mois. Y’a pire.

    Pourquoi ce lourdage ?

    Petit rappel du sacerdoce de la société Toyrrid···, copié-collé depuis un ancien article :

    Nous générons des univers parallèles dans lesquels résident des espèces vivantes et intelligentes qui codent des univers fictifs, dans lesquels se trouvent des intelligences artificielles. Nous récupérons ces IA et leur faisons coder d’autres univers fictifs, mais dans notre univers à nous. Pour finir, nous capturons les espèces vivantes virtuelles de ces univers fictifs et les revendons comme sex-toy esclaves dans l’univers réel, sur support CD-ROM.

    J’intervenais au bout de la chaîne de ce processus, en tant que chasseur d’esclaves sexuel·les dans les univers fictifs.

    C’était de l’artisanat, de l’expertise. Chevauchant mon autruche géante virtuelle, j’arpentais d’immenses paysages virtuels. Je suivais des pistes pendant plusieurs jours virtuels, je capturais les esclaves à l’aide de mon bola virtuel, sans leur faire mal, toujours dans le respect. À chaque fois je leur laissais une chance virtuelle de s’échapper. Il m’est arrivé d’en relâcher, après avoir décelé une once d’humanité sincère dans leurs yeux virtuels. C’était beau. J’étais le plus talentueux chasseur de ces mondes, possiblement parce que j’étais le seul.

    Mon moi virtuel, sur mon autruche volante.

    Mais le processus a été optimisé. Les univers fictifs codés par les IA possèdent maintenant un ensemble de règles psycho-sociales immuables qui rend les esclaves sexuel·les consentant·es par construction. Plus besoin de les chasser, il suffit de les appeler avec une corne de brume virtuelle puis de les cueillir.

    Mon expertise virtuelle n’étant plus utile, j’ai été lourdé, dans le monde réel.

    Pas grand chose à attendre du regard de cette esclave à cueillir.

    Le karma

    Pour l’instant, je ne vis pas encore aux crochets de la société, car j’ai aussi eu des brouzoufs pour mes jours de congés non pris, ce qui décale les allocations. Mais début janvier, une partie de vos impôts servira à payer mes quignons de pain et mes slips jetables, je suis sûr que vous adorerez ça !

    J’étais venu travailler chez Toyrrid··· car l’entreprise et le poste proposé me plaisaient. C’était la première fois de ma vie que ça m’arrivait. Tous mes autres changements professionnels sont survenus pour des raisons bien moins nobles, à savoir :

    • nécessité d’un déplacement géographique,
    • fuite d’une ambiance et d’une charge de travail insupportable,
    • mutation interne qui se faisait toute seule,
    • ou tout simplement, acceptation du premier truc qui vient.

    C’est aussi la première fois de ma vie que je me fais lourder, j’avoue que je n’imaginais pas que ça pouvait m’arriver.

    C’est probablement un retour de karma. Pendant des années, j’ai râlé dans ce blog au sujet du concept du Travail. Je n’ai cessé de marteler que toutes mes incarnations professionnelles n’étaient que purement alimentaire. J’ai continuellement et puérilement souhaité que je voudrais être payé à ne rien faire, afin d’avoir le temps d’avancer mes projets personnels.

    Voilà, mon souhait a été exaucé. Je suis condamné à revivre sans fin ces deux jours de Thanksgiving. Du temps libre à foison, mais accompagné d’un assortiment de malaises : comment la société va-t-elle me considérer ? Et ma famille ? Risque-je de perdre ma motivation et de ne plus être capable de travailler même si je retrouve quelque chose ? Et si je ne trouve rien pendant longtemps ? Comment je vais faire pour l’argent ?

    Mon ARE (allocation d’Aide au Retour à l’Emploi), versée en nature, en dindes de Thanksgiving.

    Et la suite ?

    Ça fait 20 ans que je fais ce métier (l’informatique en général, pas juste chasser des esclaves sexuel·les virtuel·les, ce qui ne constitue qu’une sous-branche de l’informatique). Je pensais donc que les propositions me pleuvraient dessus. Eh bien non. J’avais des pistes, qui sont toutes tombées à l’eau, plouf.

    Actuellement, je :

    • binge-postule sur LinkedIn et welcometothejungle, en réadaptant à chaque fois le CV,
    • me suis inscrit sur France Travail et je prends bien garde à faire tout ce qu’on me demande,
    • tente de trouver des missions de freelance, mais je ne connais rien à ce fabuleux monde,
    • vais peut-être donner quelques jours de cours dans une école d’ingé, mais c’est pas grand chose.

    Tout ça prend du temps. J’ai l’impression d’avoir aussi peu de temps libre pour mes projets que lorsque j’avais un travail. Ou peut-être ais-je du mal à me motiver pour les choses que j’aime, à cause de cet assortiment de malaise qui tourne en continu dans ma tête ?

    En prévision d’éventuels jours de disette, et pour tester toutes les pistes possibles, je me permets de mettre un lien vers mon compte Ko-fi. Si vous aimez ce que je fais, que ce soit ce blog, Squarity, les challenges TUR-ROX, ou d’autres choses, vous pouvez m’envoyer des brouzoufs via cette plate-forme.

    Cliquez sur l’image pour me balarguer du sorgho

    C’est Noël, période où les gens sont plus généreux que d’habitude. Au lieu de faire comme tout le monde et de donner pour le téléthon, pensez à un récipiendaire plus original.

    Comme le veux la tradition, je vais raconter ici les événements corporate ayant occurrés durant cette incarnation professionnelle passée. Il n’y en a pas eu beaucoup, mais j’ai déjà un article en gestation.

    En route vers de nouvelles et incertaines aventures.

    Danielle Birch ne se fait pas lourder, elle utilise les portes pour se faire de l’argent. Cliquez sur l’image pour comprendre.

Catégories

Archives