Jeremy Herve: Recent Episodes

None

That's me. And my blog. In English and in French.

View Details

Today’s trip through movie soundtracks brought me to V for Vendetta for some reason. The song’s progression of long strings never fails to give me goosebumps. Enjoy!

I must admit I spent some time wondering where else I had heard that song. It turns out it was part of a trailer for Interstellar!

View Details

Récolte de ce soir : fraises, framboises, cassis, et groseilles. Au menu (parce qu’après une douzaine de pots de confiture, je vais changer un peu) : crumble de cassis demain, framboises au congélo pour faire des smoothies cet hiver, et… ? Je ne sais pas encore quoi faire avec les fraises !

View Details

Post by @cdevroe@mastodon.social View on Mastodon

I would recommend against setting up your own Mastodon instance. Mastodon is really resource-heavy for a single account. There are now quite a few alternatives out there, much lighter and with about the same features as Mastodon. GoToSocial is a great example of that.

WordPress can be your home on the Fediverse (I’m replying to you from my WordPress site), but it’s not yet as feature-full as tools like Mastodon or GoToSocial. I cannot participate in polls for example.

But I’m sure we’ll get there one day

@rickscully @pfefferle @colin

View Details

Aujourd’hui je découvre qu’un croissant « ordinaire » c’est fait avec de la margarine.

Mais. Mais non ? Un croissant c’est fait avec du beurre, c’est celui à la margarine qui devrait être « pas ordinaire » !

Alors maintenant je vais être curieux et je regarderai comment les croissants sont vendus dans mes boulangeries : « ordinaire » ou « au beurre ».

Ne parlons même pas du faux beurre (huile de palme + huile de tournesol + conservateurs + colorants + arômes) dont ce reportage parle :

View Details

 ploum @ploum@mamot.fr    Celleux qui ont un clavier ergo, vous avez des conseils pour la config des touches de pouce ?

Sur mon Defy, j’ai mis :

– Enter (click)/ctrl (hold) sur la grosse centrale
– Espace sous les ergots
– Alt gr entre les deux (des deux côtés, je vois pas l’intérêt du alt simple)
– backspace avant l’espace (le pouce doit se replier)
– win en dessous (contrôle de sway)
– esc sous le backspace
– layer 2 tout à l’intérieur (accès à la vim layer inspirée par @fabi1cazenave )

Et vous ?

ergol

2025-06-16, 08:29 2 boosts 3 favoris Sur mon Voyager, avec un layout Colemak, j’ai :

À gauche :

  1. Backspace (click) ou Cmd (hold) sur la touche directement sous mon pouce.
  2. Ctrl sur la touche où je dois bouger mon pouce.

À droite :

  • Espace sur la touche sous mon pouce.
  • Enter sur l’autre.

J’ai essayé d’y mettre d’autres fonctions en hold, mais ce sont des touches que j’utilise tellement souvent que j’avais trop d’accidents.

-> Lien vers ma config

View Details

 Tonton Fred :verified: @fredericbezies@mamot.fr    Mastodon, j'en appelle à ta magie. J'ai envie de découvrir une saga de SF, maximum 4 ou 5 volumes, que je pourrais emprunter à ma médiathèque locale.

Je suis preneur de toute proposition.

Le repouet est bienvenu

2025-06-14, 19:09 12 boosts 3 favoris * La Saga du Commonwealth de Peter F. Hamilton, pour de la SF pure et dure, avec des trous de vers et de nouvelles civilisations. * Silo de Hugh Howey (les bouquins à l’origine de la série TV)

J’aurais bien d’autres idées, mais c’est dur de trouver quelque chose qui se limite à 4-5 volumes maximum

View Details

Post by @fabi1cazenave@mastodon.social View on Mastodon

Vu que tu poses la question sur le Fediverse, j’ai peur que tu reçoives des réponses peut-être un peu plus techos que les nouveaux arrivants dans la communauté Ergo-L. Au final, si c’est pour poser des questions avant ou au démarrage avec Ergo-L, peut-être que les gens iront naturellement vers la solution où il n’y a pas trop besoin de taper ?

Pour ça, Discourse est peut-être bien adapté, avec un bon outil de recherche et une interface simple à prendre en main à mon avis.

View Details

 Snoopy @snoopy@peculiar.florist    @fabi1cazenave @AntoineD @lord

Nous avons une commu dédiée au clavier :
– @Claviers (pour y accèder depuis mastodon)
– Sur jlai.lu : jlai.lu/c/claviers

Jlai.lu utilise pour le moment Lemmy. À savoir, ya déjà 2 instances francophones qui tournent sur PieFed :
feddit.fr
tarte.nuage-libre.fr

Allez sur tarte.nuage-libre.fr/c/artsdufil@jlai.lu pour voir ce que ça donnerait jlai.lu sur piefed avec les flairs et tags.

Peut-etre qu’on va fusionner ces 3 serveurs, pour éviter de disperser nos utilisateur.ices et garder nos commu actives. On en a pas encore discuté.

À terme, jlai.lu va changer de logiciel et passera à piefed. On essaye d’ouvrir une discussion avec nos sysadmin : tournesol (peculiar.florist), anansi (jlai.lu), destructeurdemonde (tarte.nuage-libre.fr) et peut-etre que nous mettrons en commun nos serveurs.

Plusieurs raisons motivent ce choix de passer à PieFed :
– Le support des devs de Lemmy à des régimes autoritaires
– les multi-communautés. Imagine une commu clavier sur jlai.lu, une sur feddit.fr, et bien on peut les grouper et avoir accès aux 2 commu sans avoir à changer de fil.
– De meilleures outils de modération et les tags/flairs pour catégoriser le contenu.
– et dernier point, le support de mastodon, mobilizon est prévu.

Pour jlai.lu ce sera intéressant d’avoir le support de mastodon car nous sommes bloqué dans le lemmyverse et cela amènera de nouvelles interactions. Nos commu seront plus vivantes.

2025-06-13, 12:29 Lemmy c’est génial, mais j’ai peur que les premiers pas soient encore compliqués à expliquer au plus grand nombre. Comment vous gérez cette partie « onboarding » avec les nouvelles communautés qui se créent, pour que les gens comprennent ce qu’est un compte sur le Fediverse, où aller pour s’en créer un, comment choisir son instance, comment publier dans la communauté… Ça donne toujours l’impression de faire beaucoup de questions, et donc un vrai frein pour les gens qui veulent juste poser une question, et qui sont donc déjà dans une position d’inconfort.

@fabi1cazenave @AntoineD @lord

View Details

Ça m’arrive de me plaindre de l’infrastructure vélo. Mais je dois quand même souligner quand quelque chose est sympa !

Ma ville (Lamballe-Armor) a récemment fini de ré-aménager un carrefour pour y installer un rond point hollandais. C’est vraiment pas mal comme expérience à vélo !

Bon les conducteurs ne sont pas encore tous habitués donc il faut faire attention, et les sorties du rond-point ne sont pas toutes terminées. Je suis sorti du rond point en empruntant un double sens cyclable, mais la signalisation a disparu 500 mètres plus loin, et je me suis retrouvé face à face avec une voiture

Tout de même, c’est un super début !

View Details

Post by @fabi1cazenave@mastodon.social View on Mastodon

@meriem @vjousse @ploum @ergol C’est intéressant comme discussion. Comme plusieurs d’entre nous ici je pense que je suis plus attiré par des outils forums ouverts comme Discourse, phpBB, ou bbPress, mais je comprends tout à fait que la communauté existante ne soit pas forcément partante, et c’est du boulot d’animer tout ça.

Je me demande en fait si votre communauté vous avait proposé Reddit ? C’est une plateforme qui a son lot de problèmes, mais le contenu serait au moins indexé, et les communautés autour des claviers / ergonomie sont déjà très présentes sur ces plateformes (r/ErgoMechKeyboards par exemple).

Je ne mentionne pas Lemmy, qui est forcément beaucoup moins fréquenté pour le moment.

View Details

↬m.tzyl.eu/@ton/114669477559395530

The plugin does offer federation options for each post ; if you don’t want a post to be federated, you can toggle this off as you write your post.

Or did you have something else in mind entirely?

To publish as a different actor, however, I think the best work-around today is probably to create different users, and to change the post author based on where you want your post to be federated. This way your readers can subscribe to @photos@you, or @videos@you, or @name@you, or to your site’s main actor (e.g. @blog@you) which automatically reposts all the posts from all users on the site.

View Details

Adri and I have enjoyed The Crown series on Netflix. It’s drama at its finest, with great actors. And, as with many good shows in the past few years, the score was really nice! I’ve enjoyed the music for the whole 6 seasons. It was often used to anchor the viewer in the right time, and although the themes could be repetitive, they had to given that we were following the same characters for decades :)

Most of you who have watched the show would recognize and expect me to post the main theme. Instead, I chose the last track and ended up listening to it on repat today. It’s a rendition of “Sleep Dearie Sleep”, the traditional Scottish lament that was played at the Queen’s funeral.

Enjoy!

Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ♥️

View Details

Today’s song on repeat is by a scottish DJ, Barry Can’t Swim. Enjoy!

I realize that’s one more Ninja Tune artist on my list of songs on repeat. I don’t do it on purpose I swear :)

Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ♥️

View Details

Another day, another track on repeat! Today is “Dive”, by Tycho. I have been listening to other tracks by Tycho, but I think this one is a good one to start with :)

Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ♥️

View Details

I just stumbled across this nice little message at the bottom of all posts on @kev ‘s blog:

I do want to encourage folks to use RSS more on my site, but this little message made me realize I don’t actually acknowledge my RSS readers. I should, and that little message is a nice way to do just that!

I then took a closer look at some of the other feeds in my reader. Turns out others do this! Manu Moreale, for example, displays this message:

I’ll implement something like this on my site! Instead of a single message, I figured I would create a list of different welcome messages, including Kev’s and Manu’s. You then get a random message for each post.

If your site uses WordPress, you can do it too. Paste the following snippet in a functionality plugin or in your theme’s functions.php:

/** * Display a nice welcoming message to folks reading posts via RSS. * * Kudos Kev Quirk for the idea! * * @param string $content The current post content. * * @return string */function jeherve_welcome_rss_readers( $content ) {$welcome_messages = array('Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ','Congratulations on being an RSS reader! You are part of an elite group of people who know how to stay updated in style.','Hey there, RSS reader! You’re one of a special few, choosing this old-school yet awesome way of staying informed. Kudos!','You are a true RSS aficionado! While others are drowning in social media noise, you enjoy the simplicity and control of RSS. Congrats!','RSS readers like you are the unsung heroes of the internet. Keep up the good work!','You are a master of efficiency! By using RSS, you save time and avoid distractions. ','RSS readers like you are the secret sauce of the internet. Keep rocking and staying informed!','Hey there, RSS reader! You’re cool. Keep being awesome! ',);$welcome_message = $welcome_messages[ wp_rand( 0, count( $welcome_messages ) - 1 ) ];return sprintf('%1$s<p>%2$s</p>',$content,$welcome_message);}add_filter( 'the_content_feed', 'jeherve_welcome_rss_readers' ); If you have suggestions for other messages that I can add to my array, please let me know!

Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ♥️

View Details

After 18 years, it’s time to update to a new profile picture! I avoided changing until now because I wanted people to easily recognize me online. I figured the flashy green background and the picture’s point of view would help people quickly place me whenever they would see the picture in their Slack / forum / Twitter / Fediverse feed.

I couldn’t keep that old picture from 2006 forever though! Folks in the French WordPress community have been suggesting that I change to a more recent picture for a little while now.

So here we go! Jeremy in 2024! I’ve tried to stay close to the original but hey, a bit of grey hair is bound to happen at some point. :)

I guess we’re good to go for another 18 years now!

View Details

I’m cheating a bit with this one. Yes, I have it on repeat, but it’s a 2-hour long video with multiple tracks! :)

I would take that opportunity to recommend No Man’s Sky if you’re looking to try a new video game.

View Details

YouTube Music seems to be in a nostalgic mood today, it’s serving me some older songs that I really liked… 20 years ago :)

I chose to stop and start looping on this old Placebo song. Enjoy!

View Details

In 2012, I bought a Logitech Performance MX. It was my first wireless mouse. My first expensive mouse. I was really happy with my purchase. It held its charge for a long time. It was heavy but easy to move around, it was sturdy, its arch design perfectly fit in my hand, and I immediately fell in love with that famous “free-spinning” scroll wheel.

5 years later, it was starting to show its age: it still worked but it had basically become a wired mouse, the battery had run its course. Most annoyingly, the right click was not reliable anymore; it would misclick quite often and that became quite frustrating. So I bought its replacement, the Logitech MX Master. Basically the same mouse, just new :)

And now, after 7 years, it’s time for a new mouse. The plastic on the MX Master’s thumb button is dead, and ended up cracking so the button stays actuated. Guess what mouse I got? The same, but new: say hello to the Logitech MX Master 3S :)

The 3 Logitech mice I’ve owned in the past 18 years: Performance MX, MX Master, MX Master 3SHopefully this one will last me about as long as the others! 5 to 7 years for a tool I use every day for at least 8 hours, that’s not too bad!

View Details

I’ve mentioned Boulet on this blog before. Here is one of his latest creations: Coco. This started as a short poem written by a 6-year old. He turned it into a comic strip on his blog, turned into a book, then a short film.

Le Joli Coco
Qu’il est beau,
Qu’il est gentil le Coco,
Tout rose comme une rose,
Tout rond, et tout mignon.
C’est le plus beau.

Capucine (6 ans)

Pretty Coco
He is so handsome,
He is so nice, Coco,
All pink like a rose,
All round and all cute.
He’s the most beautful.

Capucine (age 6)

Enjoy! For the non-French speakers, turn on the subtitles!

View Details

A couple of weeks ago, my colleagues talked about some of our favorite YouTube channels. I spend a lot of time on YouTube, so I had a few channels to recommend :)

In fact, quite a few of the channels I subscribe to are cooking channels. Not because I’m looking for ideas, but because I enjoy the positivity of those channels and the spin they bring to something quite common (cooking recipes).

So here you go, in no particular order, my recommendations for cooking channels on YouTube:

  • I’ve really enjoyed the “Burger Scholar” series from First We Feast. I discovered quite a few interesting burger ideas on that show.
  • Jamie for his takes on recipes from famous chefs (I discovered him with his Jamie & Julia videos).
  • Joshua Weissman
  • I don’t follow the content from Mythical Kitchen, but I like their “Last Meal” series.
  • Babish Culinary Universe for a wide variety of videos, with some tidbits of useful info in there.
  • Alex for deep investigations into specific meals.
  • Chef Michel Dumas for funny simple cooking videos.
  • You Suck At Cooking for a unique take on cooking videos, but still some good tips at times!

Do you have any recommendations for me? Let me know!

View Details

I’ll assume we all agree that owning your own website is a good thing, and we all want more people to do it.

But here’s the thing: we need more tools for it. We need simpler tools for it. And we need to make installing and using them trivially simple.

We need more self-hosted platforms for personal publishing that aren’t WordPress.

Let’s make the indie web easier, Giles Turnbull

I came across Giles’ post thanks to Kev Quirk. I encourage you to read both of their posts.

I agree with that premise. Owning your little piece of the web is really complex. It’s a simple notion: own your content, control your image. Yet it comes with so many underlying concepts:

  • You must register a domain name. Yes, you buy a domain. Actually it’s more like renting. Yes, there is a central authority, but there is no single place where you can go to register your own domain name.
  • You must get a hosting plan. It’s like renting a computer. No you cannot easily use your own computer for that, even though most tools tell you about “installing locally” at some point in their docs.
  • You must choose a tool to manage your content. No it’s not an app on your phone, although you may be able to use an app to use that tool later on.
  • And the list goes on and on…

This is one of the reasons why centralized platforms are still so popular, whether we’re talking about online publishing (e.g. photo blogging vs. Instagram) or social media (Bluesky vs. hosting your own Mastodon instance). Centralized platforms can focus on more than just the publishing tools. They can work on onboarding flows that will get you to your goal (be online) quicker. They can afford to teach you concepts after you’ve published your first piece of content. They do not need to explain how things work behind the scenes.

This is why the IndieWeb is so hard. It needs to be simpler.

Take one of Giles’ ideas, for example:

Why not build static website generators that people can just unzip, upload to the shared hosting they’ve just paid for, and start using via a browser?

The minute we’re talking about “unzip”, “upload”, we’ve already lost folks. And we haven’t even talked about domain names yet!

This is why tools like cPanel, Plesk, Softaculous became more and more popular in the last decade. You should be able to click a button and have everything installed for you.

This is actually how most new site owners experience WordPress these days: they do not download, unzip, upload. They do not know about the once famous 5-minute WordPress install. They may not even know they will be using WordPress. They “only” follow an onboarding flow that registers a domain and installs WordPress for them.

These existing onboarding flows could and should of course be simplified further. Imagine a big hosting provider like GoDaddy offering an “IndieWeb” vertical:

  1. A Google Ad on the “own your digital identity” search, promising to help you build your own home on the web, that only you control, and where you’ll be able to publish content and interact with others.
  2. That link leads you to a custom onboarding flow on their site.
  3. You fill in your name, it offers different domain names matching your name.
  4. You pick a look from a Live Preview screen.
  5. You enter your credit card info, and voilà ; you’re done. Behind the scenes a domain was registered, a tool was installed (Eleventy, WordPress, writefreely, Ghost, …), extensions were enabled and configured so things like webmentions and Fediverse integration work.

The onboarding experience matters more than the tool.

Does the tool matter at that point? I don’t think so. It should, of course, offer some basic things like automated updates and easy editing on the go, but most good online publishing platforms offer that today. I do not think most people would care about the name of the tool if it’s been installed for them.

That’s what I would hope for: better onboarding flows to help people get online within a few clicks.

Of course the next question becomes what’s the incentive for companies to focus on IndieWeb verticals? That part of the web is already dominated by Facebook et al.. If you’re a hosting company looking to build custom verticals, targeting small businesses probably represents a better ROI.

Maybe this means there is room for a few small companies in that IndieWeb niche though! :)

View Details

Enjoy a warm and groovy single today, courtesy of Dwig, aka Ludwig Völker, a DJ from Berlin, Germany. Enjoy

View Details

Another Blockhead hit today! Enjoy!

View Details

Thinking about my death is always an interesting thought exercise. :)

View Details

Here is a little code snippet to automatically append hashtags to the posts you share on Mastodon via Jetpack Social.

View Details

More electronic music on repeat for me today! Enjoy!

View Details

Conversation is hard. Good, enjoyable conversation is even harder. It takes some skill, and some practice. Two things that don't come easy to an introvert like me.

View Details

More electronic music for y'all today, including a live version with a big pipe organ. Enjoy!

View Details

My wife and I played all 5 chapters of Legends of Andor, a really nice coop adventure board game.

View Details

A few weeks ago, I posted the following message on the Fediverse:

I’m looking for book recommendations.

I am interested in Sci-Fi, with great world building. Possibly a series, something I could enjoy for a few books.

To give you some examples, I really enjoyed The Expanse, and The Dresden Files for example. I like the universe built by William Gibson (e.g Neuromancer, Count Zero, Mona Lisa Overdrive, The Peripheral), but I find him very hard to read in English.

https://fedi.jeremy.hu/@jeremy/statuses/01GXKX3PGWEFTMKS2ZNDNB8KMB

I didn’t expect many replies. Boy was I wrong! I woke up the next day to close to 40 replies, with multiple recommendations!

I now have enough reading material to last me for the rest of the year, and more! As a thank you to every one of you who commented, here is the full list of the recommendations I received.

Shout out to authors on the Fediverse2 authors reached out to me directly to suggest some of their work. Thank you both!

  • Blaze Ward (multiple series)
  • Bob Freeman

SeriesHere are all the series that were recommended to me. I’m currently making my way through the Commonwealth Saga, by Peter Hamilton. It’s really great so far, just what I was looking for!

This list is in no particular order, but I did place the books that were recommended by multiple people at the top.

  • Adrian Tchaikovsky – Children of Time
  • Iain M Banks – Culture
  • Seanan McGuire – October Daye
  • Alastair Reynolds – Revelation Space (recommended reading order)
  • Ann Leckie – Imperial Radch (space opera)
  • Charles Stross – The Laundry Files
  • Charles Stross – The Merchant Princes
  • Peter Hamilton – Commonwealth Saga
  • Dan Simmons – Hyperion Cantos (Jesuits in space, apparently!)
  • Annalee Newitz – The Terraformers
  • Dennis E. Taylor’s Bobiverse
  • Martha Wells – Murderbot Diaries
  • John Scalzi – Old Man’s War
  • Ben Aaronovitch’s Rivers of London
  • Daniel Suarez’s Daemon
  • John Shirley’s Eclipse
  • Elizabeth Moon – Serrano Legacy
  • Elizabeth Moon – Vatta’s War
  • NK Jemesin – Broken Earth
  • Frank Herbert – Dune
  • Isaac Asimov – Foundation
  • Edgar Rice Burroughs – Barsoom
  • Steve McHugh – Hellequin Chronicles
  • Kim Stanley Robinson – Mars Trilogy
  • C. J. Cherryh – Alliance–Union
  • Phillip K Dick – Valis
  • Philip José Farmer – Riverworld
  • Nathan Lowell – Solar Clipper (Hopeful, charming space opera in very clear and simple English prose)
  • Richard Kadrey – Sandman Slim (pulpy romp)
  • Mary Robinette Kowal – The Lady Astronaut (alt-history space race)
  • Tanya Huff – Valor Confederation
  • Tanya Huff – Blood Books
  • Elizabeth Bear – White Space
  • Pierce Brown – Red Rising
  • Neal Asher – Agent Cormac (James Bond super space agent Forrest Gumping his way through galaxy consequential space events)
  • Rebecca Roanhorse – Between Earth and Sky
  • Yoon Ha Lee – The machineries of Empire
  • Arkady Martine – Teixcalaan
  • Cixin Liu – The Three-Body Problem
  • Steven Erikson – Malazan Book of the Fallen (Fantasy, if you like Dune)
  • Becky Chambers – Wayfarers
  • Ursula K. Le Guin – Earthsea
  • Larry Niven – Ringworld

BooksThose are not book series, but single novels.

  • David Marusek – Counting Heads
  • Charles Stross – Halting State
  • Elizabeth Moon – The Speed of Dark
  • Elizabeth Moon – Remnant Population
  • Bruce Sterling – The Artificial Kid

AuthorsThe following authors have multiple books that may be interesting.

  • Neal Stephenson
  • Greg Bear

Should I start posting reviews of the books I read? Should I add links to that list so you can read more about each option? Let me know.

View Details

More electro, funk, and hip-hop for me today with Marc Rebillet. Enjoy!

Here is the full set, for when you’re done with this track and want more :)

View Details

WordPress is turning 20 this week. WordPress is such a big part of my life, I must join in and celebrate.

It’s crazy to think that I owe so much of my life to a single piece of software. It opened up opportunities that shaped my life, where I live, how I live. Let me share my “origin story”, just like others in the community have done here.

  • Forum signatures and web design
  • Publishing WordPress News
  • Helping in the forums
  • WordPress at work
  • A meetup that changed everything
  • Automattic
  • Bonus music

Forum signatures and web designI first discovered WordPress in 2006. My studies had brought me to The Netherlands where I spent a lot of my free time learning new things online. I had joined an online community of “graphic designers”: in our forums we answered requests from random internet users who wanted forum signatures to use in other forums. Do you remember forum signatures? I became a Photoshop expert, cutting anime and video game characters, applying brushes, creating “beautiful” bezels and shadows. I remember us doing contests and battles to see who would create the best signatures.

A few of the folks were asking for more than just a signature: some needed design elements for their own Invision Power Board or phpBB forums, others wanted a whole website designed for them. I would deliver Photoshop files and phpBB themes that folks would use to build their own site.

Naturally, after doing a few of those I had to create my own site to show off my work. :) In 2007, I built a first version of my personal site using Joomla, but it felt really complex. I quickly moved to WordPress, and loved it. It was easier to set up and there were a lot of resources online. I lurked in the forums at first, asked a few questions, and ended up building my own theme from scratch after a few months. It was so rewarding!

Publishing WordPress NewsGoogle Reader was all the rage back then, and I found myself following a number of WordPress sites to learn more about the community. I remember SmallPotato, a prolific theme author at the time, WPhacks where you could read about WordPress news, Justin Tadlock who published great tutorials that taught me a lot about WordPress, Jean-Baptiste Jung posted code snippets on his CatsWhoCode site, and many more. I was falling down a very deep rabbit hole. :)

There was so much to read that I started using del.icio.us to bookmark the most interesting things.

At that point I wanted to start contributing back, and helping others like I had done earlier while learning Photoshop. I created a brand new site to publish my own curated WordPress news, based off my del.icio.us bookmarks. In October 2008, WereWP.com was born (“We’re WP”, yes I thought that was a clever name at the time).

I blogged a lot about themes at first. There was a lot happening in the community at the time. I remember Adii Pienaar, Brian Gardner, Jason Schuller coming out with the first very popular commercial WordPress themes. A few months later, WPTavern.com was born, and things kept getting more lively and interesting.

Helping in the forumsI continued to learn about WordPress; I started answering questions in the WordPress forums, I was more and more active in the community. Some folks started reaching out for help with infected sites and I spent a few evenings cleaning and updating sites. These were my first paid WordPress gigs! WordPress was still very much a hobby though, something I played with in the evening. I was working in customer support for a furnitures company at the time, while living in Budapest, Hungary.

WordPress at workAll this tinkering on the web gave me an opening: in March 2009 I joined a French startup. We didn’t use WordPress yet (my daily tools were Eclipse and CVS), but I learned a lot about the web. Over the next 3 years, I continued to play with WordPress during my free time, and then at work where I became the resident WordPress expert among our team of Java developers. We started using WP for our company blogs and newsletters, using themes and plugins I had developed.

A meetup that changed everythingThe next turning point changed my life. In October 2011, Automattic held their yearly Grand Meetup in Budapest, Hungary. On one of the nights, they organized an informal meetup at a bar, where members of the local WordPress community could meet with Automatticians.

I had to go! I wanted to meet the people I admired and followed online! I quickly put together a small WordPress site; the home page displayed one post, picked randomly among about 15 posts I had created. Each post was a different ice-breaker. I then printed a t-shirt with a big QR code that led to the site:

Do not bother scanning this, the site doesn’t exist anymore and I let the domain expire… :(Does this sound way too elaborate for a simple meetup at a bar? Is is. It definitely was. I figured it would help me making the first steps and would force me to start chatting with people instead of staying alone at the bar all night. Can you tell I’m a nerd struggling in social settings? :)

It turned out to be completely unnecessary: Automatticians were all very nice, welcoming, came to me to chat, made me feel at ease all night. And of course, almost no one scanned the QR code because it was 2011 and no one really used QR codes for anything useful back then.

It was a great evening! What’s more, a few of them told me that I would fit right in at Automattic and that I should apply. I kept telling them I didn’t have the skills, but they kept insisting. One of them even told me: “You know what, the person who would be your lead is right there; why don’t we go see her, she can interview you and she’ll tell you if you have the skills!”

uh oh.

There was no going back! I did my first interview right there with Hanni, a beer in my hand. She was lovely and after chatting, gave me her email address. Fast-forward a few weeks later, I was offered to start a trial as Happiness Engineer at Automattic!

AutomatticIn January 2012, I started my trial at Automattic. I was hired a few months later, and have been an Automattician for the past 11 years.

My life at Automattic would probably deserve its own post. I’ve learned a lot. I’ve worked on lots of interesting projects, in different roles, I’ve met lots of amazing people, I’ve traveled to lots of places.

I also lived in 3 different countries, got married, became a father of 2 little devils, pictured below in WordPress gear! :)

My life would be very different today if I hadn’t turned to WordPress all those years ago.

I continue to learn every day, and I’m thankful for everything that has happened to me in the past 17 years.


Thank you WordPress, thank you WordPress Community!


Bonus musicFor those of you using YouTube Music, here is a playlist of 20 years of jazz, with tracks from all the artists that WordPress releases were named after:

Listen on YouTube MusicIf you’d rather listen to it on Spotify, check the original post on the #WP20 website.

View Details

There is a lot of talk about decentralized networks these days. Twitter’s ongoing implosion probably contributes a lot to that.

I’ve talked about the Fediverse on this blog in the past few months, and like many others, I created a Bluesky account to give the AT protocol a try.

I wanted to give Nostr a try as well, and signed up for an account. I still have a lot of reading to do on the topic. I am not sure I’m fully onboard with “another decentralized protocol” (yes, another standard), especially one that seems to tie in closely with cryptocurrencies, but I wanted to take a closer look at it anyway to make up my own mind.

One of the first things I wanted to do was to verify my account. I am @jeremy@jeremy.hu and @jeremy@fedi.jeremy.hu on the Fediverse, I am @jeremy.hu on Bluesky, it made sense for me to be jeremy@jeremy.hu on Nostr.

The verification process is detailed on this page. While ActivityPub (and thus everyone on the Fediverse) relies on Webfinger, Nostr decided to go with its own NIP-05. When I saw that, my first reaction was to wonder why they didn’t go with something that already existed, but again…

xkcd: StandardsI consequently created a WordPress plugin (soon to be available in the WordPress.org plugin directory as well) to add the necessary .well-known entry point to my own site:

https://jeremy.hu/.well-known/nostr.json

Feel free to use the plugin if you need it too!

Props to @pfefferle for his work on the Webfinger plugin. It sped things up a lot to look at how Webfinger did things to create my own .well-known response. :)

View Details

This came up on the Fediverse: @kev@log.kevquirk.com wanted to automatically add titles to the posts on his microblog.

This automation would have to be compatible with all the editors, including the mobile app.

I think may be a fairly common request when one uses their WordPress site as microblogging platform. When you share quick updates with your friends, be it a picture, a video, a sentence or two, you don’t really want to have to think of a title for that update. The editor should enable you to share, not get in the way.

I gave this a try with the following code snippet:

add_action('save_post_post','jeherve_add_default_title',10,3);/** * Automatically add today's date and time to all posts * that do not already have a title. * This is triggered when a post is saved, regardless of where you are saving. * * @param int $post_id Post ID. * @param WP_Post Post object. * @param bool $updated Whether this is an existing post being updated. */function jeherve_add_default_title( $post_id, $post, $updated ) {// If we already have a post title, bail.if ( ! empty( $post->post_title ) ) {return;}// Build our title.$today = new DateTime();$default_title = $today->format('j F Y H:i');// unhook this function so it doesn't get triggered when we will save a hew version of the post with a new title. remove_action( 'save_post_post', 'jeherve_add_default_title', 10, 3 ); // Update post. wp_update_post(array('ID' => $post_id,'post_title' => $default_title,)); // Re-hook function. add_action( 'save_post_post', 'jeherve_add_default_title', 10, 3 );} It appears to work well for me, including in the mobile app:

Funny enough, this was a full mobile experience for me: I found the toot, created a site, added a functionality plugin, wrote the code snippet, tested it in my browser, added the site to the mobile app, tested the snippet in there, switched to this site, wrote this post, switched back to the browser to add a code block to the post with the snippet, and published. All from my daughter’s bed :)

I wouldn’t call the experience smooth, it took a few detours, but the Internet is still a pretty magic experience in the palm of our hands, when you think about it :)

View Details

GitHub’s API is really handy when you want to get stats about one of your repositories. Its GraphQL API in particular is really powerful. I’ve shown how it could be used to fetch project information in my GitHub Actions tutorial.

While working on another project, I ran into a limitation that had me scratch my head for quite a bit. I wanted to share my workaround for anyone who may run into this problem in the future.

tl;dr: the GitHub REST API returns a maximum of 1,000 results for the search endpoint.

You can use the GraphQL API and the search endpoint to search for specific items in your repo. In the example below, I’m searching for all Pull Requests merged in the past 6 months in the “Automattic/jetpack” repository, and returning the total number of PRs (issueCount) as well as each PR’s title.

query { search( first: 100, query: "repo:automattic/jetpack is:pr is:merged merged:2022-10-05..2023-04-05 sort:updated-asc", type: ISSUE, after: $cursor ) { issueCount, nodes { ... on PullRequest { title } } pageInfo { hasNextPage endCursor } }} By providing hasNextPage and endCursor, I can paginate through the results. I can provide the cursor query variable to fetch another page of 100 results, and then another, until hasNextPage returns false. You can read more about this cursor-based pagination in the GraphQL docs.

This worked well enough, but I was only getting 1,000 Pull Requests. This was odd since there were more than 1,000 results in total; issueCount returned 2,129 results for that query.

I realized, after way too much time spent debugging, that I wasn’t getting new results after the 10th page (i.e. 10 times 100 results, since we have 100 results per page).

It turns out, GitHub’s API limits the number of results to 1,000 for the Search endpoint!

My next stop was repository.pullRequests. It provides “a list of pull requests that have been opened in the repository.” That seemed like my best bet, and the documentation didn’t mention a limit.

query { repository( owner:"automattic", name:"jetpack" ) { pullRequests( states: MERGED, first: 100, after: $cursor, orderBy: { direction:DESC, field: UPDATED_AT } ) { totalCount nodes { ... on PullRequest { mergedAt createdAt title } } pageInfo { hasNextPage, endCursor } } }} This isn’t quite enough though:

  • We’ll get all the merged Pull Requests in the repository, with no specific time frame.
  • orderBy.field does not offer a way to sort by mergedAt, which would be useful for me here. I cannot just loop through all the PRs while looking at pullRequests.nodes.mergedAt, and stop my query when I start seeing PRs that were merged more than 6 months ago. This may miss some recent PRs since a PR can be edited after it’s been merged.

My solution was to use both endpoints:

query {search(query: "repo:automattic/jetpack" is:pr is:merged merged:2022-10-05..2023-04-05",type: ISSUE,first: 100,) {issueCount}repository(owner: "automattic",name: "jetpack") {pullRequests(states: MERGED,first: 100,after: $cursor,orderBy: {field: UPDATED_AT, direction: DESC}) {pageInfo {hasNextPageendCursor}nodes {author {login}labels(first: 100) {edges {node {name}}}createdAtmergedAt}}}} In my logic, I build an array of Pull Requests from scratch, adding new Pull Requests as they are returned by repository.pullRequests. I stop adding to my array when it’s the same size as the total reported by search.issueCount.

It’s not perfect, but it does the trick for my needs. :) Hopefully in the future we can order pull requests by merge date and all thir will be easier. I’ll go open an issue to make that suggestion in a bit.

Hopefully this can help you if you also ran into that limitation.

View Details

Another British DJ today. If you like Bonobo, or Massive Attack to some extent, you’re going to love Burial!

View Details

Grendizer may not have been a worldwide phenomenon, but it was super popular in France when I was a kid. I watched a lot of the episodes, and I have fond memories of it. So when I saw this Goldorak graphic novel in my local library, I had to check it out!

It didn’t disappoint! The artwork is beautiful, the colors are perfect. The plot is very much in line with the original TV show; it’s a sequel of the show, with the same characters, and of course Actarus and the team.

Check it out if you get the chance!

View Details

A few weeks ago, I wrote about a new feature we added to the Jetpack plugin: a “Share to Mastodon” button.

Nice, right? Mastodon is getting more and more popular, and it makes sense to let your readers easily share your content with their community of friends, wherever that community may live.

Here is the thing though: Mastodon is just one service among many, a software used to host a decentralized social network. That network, also known as the Fediverse, isn’t just a group of Mastodon servers: it’s a federated network of hundreds of servers. Each one of those servers may pick their own software, among the dozens of solutions currently available to interact with the federated network.

That diversity is a very important concept for the overall idea of a Fediverse. It allows for a wide variety of communities to thrive. Different software can cater to different interests, integrating features needed by each community. If video is your media of choice, a video platform can be born. If your community wants to communicate by sharing pictures, a new Instagram can rise. If you prefer to be part of a smaller community, software with adapted moderation tools can be built.

Ideally, I would have wanted to develop a “Share to the Fediverse” button and not a “Share to Mastodon” button; that would have been useful to more people.

Unfortunately (or fortunately, depending on what you’re looking for), each Fediverse service is different, and each one comes with a different feature set.

Some, like Mastodon, include a fully-fledged web interface. This is why it is possible to implement a “Share to Mastodon” button. Its interface includes a /share route that allows you to pre-fill a message input from.

Others, like GoToSocial (that’s the service I personally use) are mostly headless services; the only way to compose your toots is to use a third-party client like Tusky, elk.zone, or Semaphore.

That stops us from easily implementing a “Share to Fediverse” button, since there is no single common way to post something to the Fediverse.

What if such an option existed?

I dream of a future where we can all come together: the ActivityPub protocol for ideas, and web browsers for the implementation.

Each web browser could support a new activitypub: URI scheme, followed by each one of the actions available with the protocol. Web browsers and apps would recognize that URI scheme and build on top of it.

Think of it as a new mailto, but for the Fediverse!

On the web, you can write <a href="mailto:email@address.com">Send me an email</a>. Clicking such a line will open your email client of choice, be it on the web or in an app on your computer or smartphone. You can even add extra details like the email subject.

Let’s apply this to ActivityPub events:

<ahref="activitypub:share"data-url="https://jeremy.hu/the-case-for-native-handling-of-fediverse-actions"data-text="Check this interesting post I just read!">Share to the Fediverse</a> What would you expect this to do?

Ideally, clicking on such a link would open whatever your Fediverse client of choice is: maybe it’s the Mastodon app if you’re on a smartphone; maybe it’s the Mastodon web UI for your instance; maybe it’s a desktop app.

How about this one:

<a href="activitypub:follow">@jeremy@fedi.jeremy.hu</a> This should avoid all the copy and paste one has to do today whenever they want to follow someone that’s not on the same instance: click the link, and your Fediverse client opens with a prompt to follow.

How about Liking?

<ahref="activitypub:like"data-url="https://jeremy.hu/the-case-for-native-handling-of-fediverse-actions">Like on the Fediverse</a> Now, I can’t be the first one to think about this, so I’m sure there have been proposals to make this a reality, proposals that are a lot more thought out than mine. :)

Does anyone know about such a proposal, and where we could join the discussion, show support, and help? I browsed socialhub.activitypub.rocks, but couldn’t find a related discussion.

View Details

Here is a nice 8 minutes of downtempo for your Friday afternoon. Enjoy!

View Details

A few months, I published The Power of a Conversational Code Review Culture. I talked about the importance of being generous with your code examples. Using GitHub’s built-in suggestions or posting diffs with the changes you have in mind go a long way towards helping the Pull Request’s author. It makes it easier for them to understand your suggestion, and include it in their code.

If you’re the reviewer and you already do this, kudos to you! Today I’d like to focus on the point of view of the Pull Request author.


So you’ve just received suggestions alongside your last code review. Lucky you! Here are a few things you can do next.

Thank the reviewer for their suggestionIt makes your job easier, let them know that!

Use the GitHub’s built-in tools to commit their suggestions to your branchYou can do that right from the GitHub interface. It’s quick and easy.

Apply their changes to your local copy and commit themCopy the diff they posted, create a new xx.diff file in your local checkout, and git apply xx.diff. You’ll be able to test the changes on your machine right away, just like the reviewer intended.

When the time comes to commit those changes, you have 2 options:

Commit their changes in their nameIf you are committing the changes exactly as they were suggested by the reviewer, use git’s author flag to change the author of your commit: git commit --author Name. Name is the git information (name and email address) of the PR reviewer. If you don’t know that information, you can find one of their commits in your codebase and examine it to find the author info:

Another solution is to find one of their commits on the GitHub website, and add .patch to the end of the URL. You’ll find the exact same info as above:

Commit the changes with multiple authorsIf you’ve made some changes to the reviewer’s suggestion, you can still credit them when the time comes for you to commit, thanks to Co-authored-by:.

GitHub has a support document to introduce that option, but in short, you’ll want to add the following on the last line of your commit message:

Co-authored-by: Name


Now I can hear you say: why would you go through the trouble of doing all that? It’s not a particularly straight-forward process and takes a minute. Nevertheless, I think giving props is a really important part of working as a team. It only has advantages:

  • It clearly marks the reviewer as the author of those changes. If someone has questions about those specific changes in the future, they’ll know who to turn to.
  • It gives pointers to future contributors; they’ll know who in the team is knowledgeable about that part of the codebase.
  • It shows the reviewer that you appreciate the time they spent helping you, by giving credit where credit is due.
  • It encourages others to chime in with their own reviews. Folks in your team and other passersby in your repository will see that contributions are encouraged and rewarded.

In short:

Invite reviews and contributions Healthier codebase Happier team

View Details

My wife and I are big Splendor fans, so we wanted to try the Marvel themed spinoff. I’m a Marvel fan so that seemed like a no-brainer.

After playing, we were not impressed. The original is better.

In Splendor, you’re a renaissance merchant, collecting gems to earn points, and eventually having enough gems to attract nobles. You build a deck to buy more and more high value cards.

Splendor Marvel takes us from renaissance gems to Infinity stones. It fits the theme well. Instead of collecting gems, you collect Infinity stones to buy cards with different Marvel superheroes on them. That… makes a little less sense, but we’ll go with it.

In truth, the update doesn’t bring a lot of new mechanisms to the game. It’s 95% the same game.

The visuals are different, but I personally preferred the original design. Both the Marvel hero cards and the infinity stone chips are too flashy, too noisy. You can’t quickly distinguish between the different gem colors.

I thought I’d like looking at the cards, reading the heroes’ names. I didn’t do any of that until the game ended. Unlike in other games like Wingspan, you can’t really appreciate the artwork while playing, you must pay attention to the colors more than the characters.

It was fun looking at the cards after the game ended, but it made me realize the heroes were sorted in a weird way. I expected the Marvel heroes to be sorted logically into the 3 different levels of the game. Level 1 heroes would be ones I rarely heard about, Level 3 would be the OG Avengers. It seems that they did start with that idea, but for some reason mixed it up at the last minute. I’m not sure why.

All in all, I would really recommend the original game over Splendor Marvel. Even as a Marvel fan, I think you’ll appreciate the original design more.

Next, we must try the Splendor Duel variant!

View Details

Following yesterday’s post, I’d like to do a bit of a follow-up. Sometimes you “just” want to add a Mastodon icon to your site, linking to your Mastodon profile:

  • My Fediverse profile (not really on Mastodon )

I have one just like that on my home page, alongside my other Social Media links.

In this post, I’ll cover 3 different ways to add such an icon to your site.

Use the Social Icons blockIn the example above, I used the Social Icons block that comes with WordPress itself. The block can be inserted in any post or page. If you use a Block theme, you can add it anywhere on your site:

This is probably the easiest way to go about it; you do not even need a plugin!

However, you may not be using a Block theme yet. You could still use the Social Icons block in a widget:


The next 2 options are useful if you use classic themes and need multiple social media icons.

Use a legacy widget with classic widgetsMaybe you’re not quite ready to use blocks in your widget areas. If you use the Classic Widgets plugin and the Jetpack plugin, you’ll have access to the Social Icons Widget:

This works well, but it only supports the most popular Mastodon instances by default. If you’d like it to support your custom instance as well, you’ll want to add the following to your theme’s functions.php file:

add_filter('jetpack_mastodon_instance_list',function ( $mastodon_instance_list ) {$mastodon_instance_list[] = 'fedi.jeremy.hu';return $mastodon_instance_list;}); Of course, you’ll want to use your own instance host in there instead of mine. :) This snippet will also be useful for the next method as well:

Use a Social MenuSometimes a widget area may not be the right place for your social media icons. You may just need a list of icons to appear in a menu in your footer or header, for example.

If you use the Jetpack plugin, you can use its Social Menu feature.

Start by declaring support for the feature by adding the following to your theme’s functions.php file:

/** * Add support for Jetpack's Social Menu feature. * * @see https://jetpack.com/support/social-menu/ */add_action('after_setup_theme',function () {add_theme_support( 'jetpack-social-menu', 'svg' );}); Once you’ve added this, you will be able to go to Appearance > Menus and create a new menu:

At this point, all what’s left is displaying that menu in our theme. You can edit your theme files and add the following anywhere you’d like:

```

``` That’s all we need to have a menu on the frontend of our site:


There are of course dozens of other ways to do this, from other plugins to image blocks, but those were 3. Let me know if you have other ideas / comments! :)

View Details

After dipping my toes into the Fediverse for the past few months, I wanted the Jetpack plugin to be there to help bloggers who wanted to interact more with the Fediverse on their sites.

Jetpack includes Sharing buttons that can be handy for your readers to quickly share your posts to their Social Network of choice ; adding a Mastodon button seemed like a no-brainer!

Now, Mastodon isn’t the Fediverse: I don’t use Mastodon myself, and WordPress itself can be used to publish to the Fediverse. Still, Mastodon is the most common implementation used today:

Number of Fediverse users per software. Mastodon is the most used software by far. Data from Fediverse ObserverMastodon also happens to offer a common way to build share URLs on all instances. Simply add /share?text= to any Mastodon instance URL while logged in, and you’ll be able to type in a message and share it on your account.

Some services like Toot Proxy already build on top of that share parameter, and folks have been using this to add custom Jetpack Mastodon buttons to their sites. This works well, but requires a bit of setup. Until today! Jetpack 11.9, which will be released later today, will include a Mastodon sharing button.

Once you’ve activated the Sharing feature under Jetpack > Settings > Sharing in your dashboard, head over to Settings > Sharing and enable the button:

As you can see in the video above, the button does a few things:

  1. You can pick between just the icon, icon + text, text only, or a button with the colorful logo and the text.
  2. When sharing, your visitors will first have to enter the Mastodon instance where they’d like to share the post.
  3. By default, the message will include the post title, the post URL, or tags will be added as hashtags at the end. That message can of course be edited.

As site owner, you also have the option to customize that default sharing message. To do so, you’ll need to add some PHP code to your theme’s functions.php file, or use a functionality plugin to add the code snippet.

In the example below, I’ll add a custom message (“I came across … Here is an excerpt: … Read more at …”), the post title, the post excerpt, the post link, and the post tags:

/** * Customize the default Mastodon sharing message. * * @param string $message The default message that gets posted to Mastodon. * @param WP_Post $post The post object. * * @return string The customized message. */function jeherve_custom_mastodon_message( $message, $post ) {/* * Let's build some basic information about the post. * Post title, link, excerpt. */$post_title = get_the_title( $post );$post_link = get_permalink( $post );$post_excerpt = get_the_excerpt( $post );/* * Let's build an array of tags. * We'll massage the output a bit to add hashtags in front of each tag. * We'll capitalize the first letter of each word, for better accessibility. */$post_tags_array = get_the_tags( $post );if ( ! $post_tags_array ) {$post_tags_array = array();} else {$post_tags_array = array_map(function ( $tag ) {// Camel case the tag name and remove spaces as well as apostrophes.$tag = preg_replace( '/\s+|\'/', '', ucwords( $tag->name ) );// Return with a '#' prepended.return '#' . $tag;},$post_tags_array);}// Build a string of tags.$post_tags = implode( ', ', $post_tags_array );/* * And now we build our final message. * This is of course just an example, you can build any output you want. * * For example, once Mastodon supports Markdown, * you could use Markdown to build a really fancy-looking message. * @see https://github.com/mastodon/mastodon/issues/18958 */return sprintf('I just came across %1$s. Here is an excerpt: %2$s -- Read more at %3$s %4$s',esc_html( $post_title ),esc_html( $post_excerpt ),esc_url( $post_link ),esc_html( $post_tags ));}add_filter( 'jetpack_sharing_mastodon_default_message', 'jeherve_custom_mastodon_message', 10, 2 ); Here is the result:

That’s a bit much for a single message, but that gives you an idea of the things you can add in there. You could have added the blog title as well for example!

I’m looking forward to the day when Mastodon will fully support Markdown, so we can use Markdown to create better looking messages right out of the box.


I hope you’ll have fun with this new sharing button! If you have any feedback, do not hesitate to let us know, either here in the comments, on GitHub, or by contacting support directly.


If you’d rather see auto-sharing of your posts to Mastodon instead of sharing buttons, this is something that may still come to Jetpack in the near future. Keep an eye on this GitHub issue! Until then, why not install the ActivityPub plugin so your blog can get its own handle on the Fediverse?

View Details

My oldest kid is an avid reader: she reads at school obviously, but also in the evening after school, and under the covers at night :). I try to encourage that as much as I can.

As part of our evening rituals, my wife and I each read a chapter of a book to both of our kids. It may be a bit of a long evening routine, but it’s an opportunity to be together, to hear French and Hungarian, to learn new words, to hear us read and thus learn to read aloud.

I enjoy that ritual. It’s especially good when reading for my 9 y-o, because we can read bigger novels and suspenseful stories.

A few months ago, I dug through some of my old stuff and found some of my childhood books. Among those, Lassie Come-Home and several Famous Five novels. I remembered loving those as a kid: a series of books about young children who go on adventures, discover secret tunnels and hidden treasures. That was perfect reading material for our evening stories!

After reading a few, it turns out it wasn’t perfect. We still read them all, but we regularly had to stop and talk about some of the details.

The Famous Five books were written between the 40s and the 60s, and it shows. Gender, class, race,… Lots of things to explain and discuss.

  • The 2 girls of the group, Annie and Claude, are viewed very differently. Annie is a girl, she is weak and easily frightened, she plays with tools, helps her aunt cook and clean up. Claude is a tomboy. She is strong, spends her time with the boys. When she does something good, she is rewarded by being compared to a boy. When she does wrong, she is a girl.
  • The kids’ parents are middle class. They have a maid / housekeeper. Other kids they meet in their adventures are always of working class, call the kids “monsieur” or “maître”, just like the maid does. The villains are also almost always of lower class.
  • You also get some pretty bad racial stereotypes. Romani are part of multiple stories, and often pictured as the villains, robbers, …

It’s not all bad of course. Lili really enjoyed the books, and they were an opportunity to talk about how the world changed. We even got to read re-editions of some of the books in the series, thanks to our local library. Just like the works of Roald Dahl, the Famous Five books were also changed a bit over the years.

Overall, if you get the chance I’d still recommend those books, as long as you don’t let your kids read them on their own.

We also read Lassie Come-Home, another book from my childhood. Another old book, not without its faults, but really good nonetheless. It’s not just the journey of a dog: it’s a powerful emotional story about family, friendship, loyalty. The hardships the parents had to go through and their reactions really touched me, and I found myself crying uncontrollably in front of the kids at the end of the book! I had to explain that sometimes people cry out of happiness.

I thought I remembered that book, but clearly I had missed a lot of the story when reading it as a kid! I am glad I got to read it again with the kids.

And now, we’re back to reading more recent stories. This week, we’re reading L’herboriste de Hoteforais, from Nathalie Somers!

Happy reading!

View Details

Adri and I have been playing a lot of Wingspan in the past few weeks. After more than 15 games, here is my take on the game.

I should start with the obvious: the build quality. It’s a beautiful game. The graphics are great, the elements do not feel cheap. It’s an expensive game, but you get what you pay for!

The different elements were well designed, and it’s always a pleasant experience to take everything out of the box, build the bird feeder dice tower, and set up everything for a game.

The bird cards themselves are lovely:

  • There are a lot of cards (150+), each with a unique bird. You won’t get bored from looking at those cards.
  • Each card comes with some info about the bird and a beautiful picture.
  • Get the Wingsong app on Android or iOS, and you can hear the matching sounds for each bird / card!
  • The game abilities of each card are a good match with the behavior of the bird.

By default, you only get American birds. That’s a pity for everybody else, I would have expected birds from all around the world. There are expansions with more birds though!

Game mechanicsIt’s a fun game to play. It is easy to learn. It is a bit harder to master though.

There are many ways to score points in Wingspan, many things to keep an eye on as you play. In the first few games, it is hard to develop a strategy that maximizes every way you have to score points. You’ll find yourself missing out on points by focussing too much on one objective.

As I get more and more familiar with the game, I find myself taking a different approach depending on my mood:

  • Sometimes I’ll focus more on the objectives and the competitive site of the game. The “birds” theme becomes less important. It doesn’t completely disappear though: I still find myself reading the birds’ cards and learning new things.
  • Sometimes I’ll give up on some extra points at the end of the game, just to get the satisfaction of getting more birds on my board. It may be smarter to spend the last couple of rounds laying eggs and making the engine you’ve built work for you, but somehow that doesn’t always feel rewarding. Seeing more beautiful unique birds, however, is always nice.

ReplayabilityThis is a great game to play over and over. Every Wingspan game is different. There are so many bird cards, so many bonus cards, that you will need to develop a new strategy every time you start a new game.

This, in turn, can be a bit frustrating at times. Your game’s output can vary a lot depending on luck: your starting hand, your opponent’s starting hand, the 3 birds on deck, and the food in the feeder are all things that are entirely out of your control. You’ll have to work with what you have.

Once you understand the game mechanics, this won’t have that big of an impact on your end score; you’ll find a way to build an engine that works for you. This may, however, have an impact on how you enjoy the game. Some engines can be boring to play, especially in the end game. This is when I sometimes forget about the competitive side of things, and just enjoy the game instead.

Overall, I would really recommend this game to everyone. It’s good for couples, you can finish a game in 50 minutes or so, and it’s a positive experience.

View Details

After Schotten Totten, we got to play Lost Cities.

That’s a fun, short game (about 20 minutes), perfect for nights when you don’t have too much free time. It’s also really easy to understand the concept and get playing.

In Lost Cities, you’re an adventurer, planning trips to 5 different lands. When you put down cards on a specific land, you effectively start your trip, and earn points equivalent to the number on the card.

Careful though: when you start a trip, you start by spending 20 points to fund it. You consequently have to choose your trips carefully ; only start a trip when you’re sure you will at least recoup your costs for funding that expedition.

Then comes hand management. You can draw new cards from the draw pile, or from the top of the discard pile on each land. To draw, you must first play one of the cards in your hand, or discard a card. Your opponent can then pick that card up if they want to.

It can be tough to decide whether to hold onto cards so your opponent doesn’t get them, or discard them to make room for new cards for your own trips.

Suddenly the game got a lot more competitive, didn’t it?

To add to that, halfway through your first game you will realize that the end of the game (when the draw pile is empty) is coming much faster than you thought. You will end up struggling to complete your trips before there are no more cards to pick. I must admit it took us a few games before it all clicked.

It was a fun game, one that I would recommend. It’s simple to understand, quick to set up and play, yet involves some strategy and competition.

Give it a try if it’s available in your local gameshop, and let me know what you thought about it!

View Details

This is just some great sampling! What more do you need?

View Details

If you’re actively blogging on WordPress and have been playing with Mastodon et al. in the past few months, you probably came across the ActivityPub plugin for WordPress.

The plugin implements the ActivityPub protocol for your site. It allows others to follow your blog from their Mastodon / Pleroma / GoToSocial account. If they reply to one of your blog’s posts there, their reply will be posted as a comment on your blog.

This is already pretty neat! But starting today with the release of version 0.16.1 of the plugin, you can even mention other ActivityPub users in your posts. When you hit Publish, they’ll be notified of your post inside their client of choice.

This is all happening thanks to @pfefferle, developer of the ActivityPub plugin, and @alex who suggested and implemented the feature in this Pull Request.

A big thank you to those 2 people for their work on this!

The 2 links above are examples of what you can do. I added the ActivityPub handles of those 2 fine people in my post, and in return they received a mention in their ActivityPub clients, and you get to see a link to their ActivityPub profile!

If you were looking for a reason to give the ActivityPub plugin a try, this is a great day to start! :)

By the way, you can follow my blog on the Fediverse by searching for @jeremy@jeremy.hu in your Mastodon / ActivityPub client ;)

View Details

Do you play games with your significant other? Do you have recommendations for us?

Forbidden Desert is one of the only cooperative games we own. We enjoy playing it from time to time, and I’d love to find other games we could play together as a team.

We recently discovered Pandemic (thanks Steve for the tip!) and enjoyed playing it too, but I prefer the desert theme to the global pandemic theme that feels like it hits a bit too close to home. :)

We also enjoy the “Unlock” game series and will be playing more of that. We may also try Codenames: Duet soon. Beyond that I don’t really know where to start.

When looking for recommendations, online threads and blog posts often reference big games like Gloomhaven, Gloomhaven: Jaws of the Lion, or Spirit Island. Those seem interesting, but quite complex too! The Gloomhaven games also seem to be great dungeon crawlers, but my wife and I have never played dungeon crawlers before. I would love to give the genre a try, but I think we would prefer to start with something that’s more oriented towards solving puzzles / exploration, instead of combat. That said, I’ve never played dungeon crawlers so what do I know? :)

All this to say, if you have any recommendations for cooperative board games for two, let me know!

View Details

“La Guerre des moutons”, or “Wooly Wars”, is way more fun than it has any right to be!

The drawings are cute, the game is funny, you can build nice little fields and villages. It’s also a very strategic game! You have to strategize to get as many tiles in your hand as possible, plan your endgame, stop your opponents from closing big fields, all the while building pretty things!

We borrowed that game from the local library, but we may actually buy our own now. I’d definitely recommend it.

If you know of similar tile games that you’d recommend, let me know. I think we may try Carcassonne soon.

View Details

I should start with a warning: I’m new to this and learning as I go. These are my feelings as I discover this new (to me) part of the Internet.

When I joined the Fediverse a few weeks ago, I took it as an opportunity to expand my social bubble. Instead of only looking for the people I previously followed on Twitter, I started following new people to learn new things.

This is changing as more and more people join, but the Fediverse is still a bubble, or a group of interlinked bubbles. This time however, it’s not just WordPress professionals for me. :) I started following people from different circles; folks talking about the IndieWeb, the Fediverse itself, and by extension Mastodon.

In theory, the Fediverse is a great idea. As a supporter of the open web, I love the idea of a web of small independent servers talking to each other.

In practice, it seems to present some unique challenges.

It isn’t easyEven as the different tools continue to evolve, as new ones appear every week, the concept of the Fediverse remains more difficult to grasp than your standard centralized social network. It will turn some people away.

Picking a tool and picking an instance will get better with time. Specialized tools like Pixelfed will rise and become more and more user-friendly for the masses, for their niche use.

The underlying ActivityPub protocol, however, will remain. For better and for worse. The distribution method that brought us more security, more privacy, also comes with technical aspects that make the protocol more complex and less user-friendly. ActivityPub aims to please everyone: folks aiming for a true person-to-person more private connection (think Facebook) as well as public timelines (think Twitter). I don’t know if it manages to do both.

In the end, it will leave some folks asking why they can’t get a clear / exhaustive view of someone’s profile depending on the instance they’re on, for example. The technology itself excludes some people from even experiencing it.

Some of those technical issues, in time, may be mitigated. One problem will remain in my opinion.

It won’t be truly decentralizedWhile the Fediverse is built to be truly decentralized, in practice it won’t be.

I would love for everyone to run their own small instance, to control their own little home on the web. In practice, most don’t have the technical chops, the time, the money, the envy to deal with it.

It’s far easier to join an existing instance. Instead of having your own little country house, you’ll have an apartment. You may pick one of the big, “official” ones. You may pick a big instance managed by a company, like Medium. You may pick a fun one administrated by like-minded folks.

In any case, by choosing you put your trust into someone else’s hands.

  • Trust that they’ll stick around and maintain that new apartment of yours.
  • Trust that they will uphold the values that made you choose that instance in the first place. You would not want bad neighbors to move in right next door.
  • Trust to moderate and filter what you see. Your landlord decides who gets to live next door. That can be a good and a bad thing.

None of this should be taken lightly.

Yes, you can move to a new home later. If you’re savvy enough. Depending on your technical skills, you’ll leave more or less things behind.

So you choose, carefully. You hope the instance admins won’t burn out with all the extra work that comes along with the influx of new users and content that comes with “the Great Twitter Migration”. You hope the tools will improve to help them cope. You hope they can afford the financial burden that comes with running an instance. You hope they make the right decisions, again and again, when new events come along that require (or not) action.

One of those decisions they will need to make is moderation. They will need to decide what content they don’t want any of their users to see. Some of those decisions are easy. Some are more difficult, especially as your instance gets bigger. In any case, this may be a big time, energy, morale sink.

One way to lighten the load is to help each other. That’s already happening with Fediblock: it’s a great way for instance admins to share recommendations. It’s also a somewhat centralized approach, on a decentralized social network. It gives significant powers to bigger instances, as outlined in this post about the recent Raspberry Pi controversy.


Overall, I think this is worrisome. I worry this quick growth is pushing the Fediverse towards centralized solutions that go against its core principles: centralized servers, centralized tools run by big companies like CloudFlare, centralized blocks and rules, centralized ethos.

That may go against a more diverse Fediverse. It may foster a single bubble where everyone must conform or run the risk of becoming invisible, because they’re not using the right tool or not on the right server.

I hope I’m wrong. I hope the Fediverse will mature fast enough to accommodate all the newcomers, all the while without forgetting its core principles.

View Details

Back to Blockhead after a few years hiatus. Somehow it fell off my recommended lists even though I’ve listened to a lot of their albums on repeat over the years.

Lucky for me, my oldest kid is now building her own recommended songs list, sometimes based off tracks I made her discover. She got Blockhead recommended to her after listening to You Wish, Nightmares on Wax. That itself is a great On-Repeat track, for another day :)

View Details

I’m re-publishing a conversation I had a few days ago on the Fediverse, following an excellent question from Phil Johnston:

If you’re a WordPress person who publishes more on social media than on your WP site (sadly this is still currently me), does that say anything about WordPress?

Phil Johnston (@johnstonphilip@mstdn.social)

I felt compelled to reply, as I’ve struggled with some version of this question myself for years. Fair warning, I’m heavily involved with WordPress, so my answer is quite biased :)

I am heavily involved with WordPress, yet I don’t post that often on this site.

What does this say about WordPress?

Personally, I see Social Media as a tool fulfilling 2 different roles:

  • Feeding your ego, seeking validation from others.
  • Exchanging ideas.

The above is in no particular order :)

To get there, it needs 3 things:

  1. It should be easy to use; you need to be able to publish your idea / picture / link in seconds.
  2. It should be easy to react on content, to engage with others: Like, Share, RT, Boost, QT, upvote.
  3. It should be easy to get that validation from others, through mentions, notifications.

WordPress doesn’t do any of those things very well by default. It wasn’t built for it.

  1. WordPress is better for long-form content. Its interface is more complex, has more options, too many when you just want to post an image or a link. In those situations, the interface gets in the way. “What title do I give? Do I add tags? What about a featured image?”
  2. It isn’t easy to react to content. We have comments, threaded comments even, but they lack the tools you find with Social Media: upvotes, likes, … And again, the interface can get in the way, you need to fill in a name, an email address.
  3. There are no comment notifications available in default WordPress.

You can get WordPress half way there with plugins:

  • Some plugins give you Reactions, Likes, Comment Likes, upvotes.
  • Others will give you webmentions.
  • Some platforms give you better notifications.

Yet none of it is as polished as most of the Social Media platforms out there. None of it is as effective. None of it is as addictive.

And that’s okay I think. WordPress doesn’t have to be the endgame, the one tool we must use for everything. :)

Yet we can ask ourselves:

Should WordPress evolve, go in that direction?Lately, I have been looking into making my this very blog more social, more interactive. It is a work in progress, it involves multiple plugins, some technical knowledge, and it’s still not as interactive as platforms like Twitter or Mastodon.

I would love if it were as easy as toggling a switch, for anyone running a personal blog.

I don’t know if this should happen in WordPress Core itself, or via a plugin. It’s a tricky question. WordPress has grown to be so much more than just a blogging platform. It may not make sense to add all those features to the core software when they wouldn’t be used by all the folks using WordPress for another purpose, like building an online presence for their small business.

Why should we continue using WordPress for blogging when there are so many more interactive platforms out there?As I mentioned above, I am biased. Still, I there are 2 important reasons to consider when thinking about ditching WordPress:

  1. Having your own little home on the internet.
  2. Ensuring that that home will not fall into ruins after a few years.

It’s very important to me to own my content, have my own little home on the Internet. The most popular Social Media services are still walled gardens, so I would still advocate for using WordPress just so I can own my content, and only I get to decide what will happen with it in 2, 5, or 10 years.

Owning my content has allowed me to try new things over the years. This very blog has gone through many iterations: Blogger, Joomla, WordPress, Jekyll, WordPress.com, Ghost, back to WordPress, … This could never have happened on a closed platform that does not give me that flexibility.

Now, if an open-source tool comes along and becomes better than WordPress at long-form content, … Well I may ditch WordPress on my personal blog. But before I do so, I would make sure that new tool is mature enough to still be supported and maintained on the long term.

I don’t think we’re quite there just yet, but we’ll see if this blog still runs on WordPress in 5 years :)

View Details

It’s the end of the day. Done with work, kids are asleep. What now?

I think I’m supposed to read a good book. Catch up on the news. Watch a good movie or tonight’s episode of a TV show everyone is talking about. Chat about our day with my significant other. Write a blog post. Do some budgeting, some accounting. Answer emails and messages from friends. Meet friends. Go to meetups, meetings, stay involved with my local community. Go to bed early because it’s healthy. Play some games. Do some learning by taking an online course for work. Meditate, reflect on the day. Clean around the house. Plan the next weekend with the family. Work on that side-project I started last year. Work on that other side-project I started after abandoning the first one.

I don’t know how everyone else does it.

I think I’ll just crash on the couch, watch a tv show, go to bed way too late, and do it all again tomorrow.

View Details

I find myself thinking about the Fediverse a lot these days. Probably a lot more than I should. I’m probably just easily influenced by all the chatter going on, and excited to tinker with something new.

tl;dr: I’m now on the Fediverse, at @jeremy@fedi.jeremy.hu.

I didn’t want to sign up for an account on an existing Mastodon instance though, for 2 main reasons.

For once, I’m more interested in the tinkering than actually posting; reminds me of all the time I have spent tweaking my different sites instead of actually writing blog posts.

Most importantly, I don’t want to sign up for yet another service, on yet another site that may or may not exist in 2 / 5 / 10 years. I want control over my data, on my domain.

I want my content to be in my home on the Internet.

As the years go by and the content piles up, I’ve realized how I enjoy going down memory lane on our private family blog to look at pictures from years ago. I want to be able to do that with all the content I publish online.

So I tinkered. I started by setting up my own Mastodon instance. I gave up after a day, seeing how heavy the app was, even for a single-user instance like mine.

I will let you guess when I set up Mastodon on that server :)After that failure, I went back to WordPress. It is still a great tool for producing content, and with a few plugins (ActivityPub, Friends, WebFinger, Webmention), it can be a great place to publish and interact with others that have their own WordPress sites. It is limited to WordPress though. While you can easily write, read, comment, reply in your post, it is not the best tool for quick conversations, or answers to small questions.

Mastodon does this well, just like Twitter did, but wasn’t an option without setting up a new VPS. I looked at more lightweight alternatives and found a few:

  • Misskey seems good but not all documentation is translated to English yet, so not for me yet.
  • Friendica seemed like a good option for me, given that it’s developed with PHP. It does a lot more than what I need though.
  • Pleroma seemed interesting and lightweight enough, but was harder to set up for me (I know nothing about Elixir).
  • I looked into Hubzilla but it seems very different from Mastodon, so not what I need.
  • And more. There are dozens of options right there!

I picked GoToSocial.

It’s lightweight, easy to run, it doesn’t seem very resource-heavy so far. It doesn’t have all the bells and whistles you would find on Mastodon, but I see this as an advantage. It is mostly headless (it has a simple timeline view) but you can use apps and clients like Tusky or Pinafore and you get an experience that’s close to what you would get on a Mastodon instance.

It’s also under active development, and the team behind the tool seems like good folks!

All this to say, I am now on the Fediverse :) You can find me at @jeremy@fedi.jeremy.hu, and the timeline I was talking about above is available here, for those of you not on an instance yet.

I’ll keep playing. Overall, I’m really happy with what seems like a step forward for the open web. I’m looking forward to what the future will bring us!

View Details

It’s been a very long time since I’ve listened to La Rue Ketanou, but it never fails to give me goosebumps. Especially their live music! Here is maybe one of their most famous songs, but you can listen to the whole “Ouvert à double tour” album!

Kudos to Stephane who posted a few of their songs in the past few days and put this back in my head :)

View Details

Build your own GitHub Action to automatically add PRs to specific columns on a GitHub Project board. This is part 3 of a series of posts on the topic.

View Details

I’ve posted about ODESZA before; here is another one of their remixes. Enjoy! Discover more of their work on their SoundCloud page.

View Details

In a style somewhat similar to my last post… Enjoy this rework of a cover :) Original track by Venezuelan American singer-songwriter Devendra Banhart Cover by France-based Argentinian singer and musician Natalia Doco Rework by 10 Ton Obsidian and Spin Alonga, 2 swiss DJs

View Details

Leverage GitHub Issue forms and build your own GitHub Action to automate priority assignment on your issues. This is part 2 of a series of posts on the topic.

View Details

An intro to GitHub JavaScript Actions, with an example of how to automatically add labels to newly opened issues. This is part 1 of a series of posts on the topic.

View Details

Here is a nice remix to start your day! The rhythms and the vocals are just superb!

View Details

I can’t get this one out of my head today. You’ll most likely recognize it, as it’s often used as background music in videos. That’s definitely some good music to have on a loop. (Yes, I do realize that most of my past songs of choice are kind of the same earworms: “Look Look“, “Zoom […]

View Details

Enjoy today’s house / electro selection: If you like the style but are not into listening to the same song on loop, you could also try one of their sets!

View Details

If you’re a fan of MPC, and older classic beats… Enjoy! Also make sure to check his SoundCloud, where he’s got other great mixes.

View Details

As I’ve been repeating all day, “look look”. Enjoy.

View Details

Another recap of everything we've watched last year.

View Details

I’ve posted about Apparat before. Moderat is a collaboration between Apparat and Modeselektor, and it’s just as good. Enjoy!

View Details

Code reviews: my take on an important part of a developer's job. In short: a code review is a conversation!

View Details

I’m a fan of The Expanse, and today I’m listening to the soundtrack on a loop. :) Just like the show, the soundtrack really grew on me over time. This track in particular was really nice: If you watched the show’s second season, you’ll remember this part: this was the song playing when Bobbie was […]

View Details

The Jetpack plugin comes with a number of blocks and editor extensions. One of those features extends the existing Media blocks, and adds an option to find and upload images from Google Photos or Pexels: While this can be super useful when you use Google Photos or need to find free stock photos for your […]

View Details

Playing with time intervals in WordPress is fun. Here are some tests I ran to calculate the amount of time left in the day until midnight.

View Details

It’s been a while since I posted. :) Here is what I’m listening to today, a bit of nostalgia: Just breathe! :)

View Details

Another year, another recap of all the great (and not so great) shows we’ve watched in the past year.

View Details

Learning is fun! We're learning new things by following the Vendee Globe Race at home with the kids.

View Details

Everything is a bit different this year, isn’t it? My oldest started first grade last year, and we were all super excited about it. The first day of school was something we all looked forward to. This year, we’re once again stressed about her first day in school, but for all the wrong reasons. These […]

View Details

What does your office look like these days? Here is mine. Say hi to my coworker!