Bienvenue, thblog !

Publié le 22 mars 2025 par Thomas Touhey.

Après près de cinq ans à vouloir réorganiser mon blog en interne, et quelques rushes au fur et à mesure des années pour y parvenir, j'ai reconstruit tout mon blog en interne, et ai pimpé le design du blog pour que le changement puisse être ressenti par vous (deux fois plutôt qu'une !), chères lectrices et lecteurs.

Un petit historique

Tout commence fin 2016. À l'époque, je faisais déjà des projets web depuis au moins deux ou trois ans, le plus souvent en PHP. Ces sites sont partiellement archivés par la Wayback Machine, de la plus vieille version de touhey.fr, archivée en août 2014 à d'autres sites avec mon pseudo de joueur de l'époque sur le thème de Minecraft et de divers serveurs. Je venais également de me mettre à Linux sur mon PC principal à peine l'année précédente, lors d'un petit détour en BTS avant d'entrer à l'école 42, et je découvrais les sites statiques, me donnant envie de faire le mien.

Je fis alors un générateur que je voulais le plus basique possible, sous la forme d'un script bash avec pandoc, qui listait l'ensemble des posts, réalisait une page par post, ainsi qu'un index simple avec un header me présentant, le tout en HTML4 sans CSS, inspiré que j'étais par motherfuckingwebsite.com. Ainsi, mon blog naquit, avec déjà un premier post : fopencookie - faites vos propres flux !.

Cette période fut courte ; si courte qu'aucune archive du site de l'époque n'a pu être archivée par la Wayback Machine, sur laquelle le site passe du simple index de présentation style assembleur que j'avais à l'époque (mai 2016) à la version d'après, en 2017. Cela s'explique par le fait que je m'étais rapidement senti limité à la fois par bash qui n'était pas spécialement adapté à la tâche, et par le fait de devoir implémenter chaque modification que je souhaitais moi-même dans ce langage.

Après quelques recherches, je décidai donc de passer sur Jekyll, un générateur de site statique comprenant toutes les fonctionnalités attendues d'un tel outil généraliste, dont la gestion d'articles, le theming, les plugins, etc. Je repris alors un thème existant, à savoir Researcher, le modifiai un peu pour correspondre à un peu plus à mon style, rédigeai quelques articles en plus, ajoutai un système très basique de multi-langues puisque je voulais rédiger du contenu en anglais et en français, et hop, je me suis retrouvé avec un nouveau site !

Pendant presque huit ans, j'ai donc utilisé un générateur de sites statiques développé en Ruby avec un système d'extensions dans ce même langage. Durant cette période, j'ai réalisé quelques évolutions :

Ce thème était entièrement développé en Jekyll Liquid, le système de templating de Jekyll. Dans ce thème, j'avais également incorporé la gestion des éléments suivants :

* Des métadonnées correctes pour différents protocoles, notamment OpenGraph et Twitter Cards.

* Un système de présentation et de navigation multi-lingue bricolé avec les extensions de fichier (par exemple .fr.md pour les fichiers Markdown pour la variante française du blog).

À noter que le système multi-lingue a évolué entre 2017 / 2018 et 2024. En effet, entretemps, j'ai acquis le domaine de second niveau touhey.uk, et ai donc décidé de passer mon blog anglais sur thomas.touhey.uk, entraînant à l'époque la séparation du projet en deux dossiers distincts où le thème se répétait et les modifications sur celui-ci devaient être répercutés sur les deux.

Note

>

Les redirections de l'ancien système vers le nouveau étaient assurées par une configuration nginx spécifique :

>

```
location ~^(?<canonical_url>.+)\.fr\.(?<canonical_ext>[a-z]+)$ {
rewrite ^ https://thomas.touhey.fr$canonical_url.$canonical_ext; }
location ~^(?<canonical_url>.+)\.en\.(?<canonical_ext>[a-z]+)$ {
rewrite ^ https://thomas.touhey.uk$canonical_url.$canonical_ext; }
```

>

J'ai fini par retirer cette configuration à la première publication de thblog, puisque cela cassait avec certains assets, comme par exemple fr.svg.

De plus, bien que j'avais tenté de faire une navigation proposant la traduction de chaque page, le système se comportait bien mal lorsque la traduction n'existait pas.

Au final, je m'étais retrouvé avec un énorme système de bricolages pénible à maintenir et faire évoluer. J'ai choisi de ne pas apprendre le Ruby, puisque je connaissais déjà Python à côté.

À noter cependant que mon blog était le seul de mes sites statiques qui a terminé avec une telle complexité. J'ai fait beaucoup d'autres sites avec Jekyll, dont beaucoup de sites plus simples, par exemple touhey.pro qui est resté assez simple.

Parallèlement, à partir de 2020, j'ai commencé et appris à aimer écrire de la documentation sur certains projets avec Sphinx, en reStructuredText, dont par exemple thcolor, thox ou même, bien plus tard, Cahute. Cette syntaxe, bien qu'elle aie initialement constitué une barrière de par mon habitude au Markdown, m'a par la suite beaucoup séduite. Un article de l'époque avait beaucoup résonné en moi ; celui-ci mettait en valeur le fait que là où les différentes flavours de Markdown étaient incompatibles entre elles, le reStructuredText est clairement défini et designé pour être extensible à l'aide de directives et rôles personnalisés. Cet argument avait d'autant plus résonné en moi que sur mon blog, pour injecter des éléments à peine avancés, ou même du code, je devais ajouter du Liquid ou du HTML directement dans mon fichier Markdown, et bien que cela marchait, je restais inconfortable avec la méthode.

Aux alentours de 2021, j'ai fini par avoir marre de mon système, et me suis lancé dans différentes expérimentations pour sortir du tas de bidouillages et pouvoir enfin utiliser du reStructuredText sur mon blog. Cette expérience a finalement mené à l'outil que j'utilise aujourd'hui : thblog.

Premières envies et expérimentations

À partir de 2021, constatant ce que j'avais, j'ai progressivement défini la liste suivante de ce que je voulais, qui inclue les éléments suivants :

À l'époque, j'avais commencé à regarder les outils similaires en Python, typiquement Pelican et yozuch, mais ils ne m'avaient pas convaincus. J'avais également exploré le fait d'utiliser Sphinx directement, mais l'outil ne me semblait pas approprié pour l'utiliser avec mon blog. J'ai donc fini par décider de faire mon propre outil en Python, que j'ai appelé thblog.

Note

>

Ce nommage vient de la période où je nommais beaucoup de mes projets faisant référence à "Touhey" ou "Thomas Touhey", comme :

>

* thox (TouHey OS, modifié pour sonner comme "fox")

>

* thcolor (TouHey color management module)

>

* thembed (TouHey embed object extractor, abandonné)

>

* tein (TouHey Uno implementation, archivé pour le moment)

>

* thlk (TouHey shortLinKer)

>

Pour faire quelques expérimentations, j'ai donc commencé à rédiger mon blog pour mon outil de génération de site statique idéal, en supposant qu'il existait et en imaginant ce qu'il ferait. J'ai donc passé tous mes articles, mes pages, et même mes brouillons en reStructuredText, en organisant ces éléments ainsi que les autres fichiers tels que je voulais les voir organisés ; le résultat m'a plu, et j'ai donc voulu prendre des pas concrets vers un blog publié en reStructuredText.

Le cahier des charges pour l'outil était donc le suivant :

À noter que je ne supporte pas de theming à ce stade ; en effet, puisque je développe un outil spécifique à mes besoins, il n'a qu'un seul thème, celui que je réalise pour mon blog.

De plus, ce cahier des charges n'est que pour la version initiale. Beaucoup d'évolutions sont possibles à partir de celui-ci ; pour n'en citer que quelques-unes que je viserai probablement après :

Cela fonctionnerait avec un petit système externe, du fait de l'aspect statique du blog ; j'aimerais me diriger vers un petit système décentralisé type Isso.

On peut penser à des annonces stockées dans un cache textuel (e.g. sous format SafeYAML ou JSON) envoyées sur Mastodon, IRC, ou autres.

Dans ce même cache, l'on pourrait stocker des données concernant des tweets (pour l'inclusion des données du tweet sans que le navigateur aie à chercher l'information chez Twitter, tout en gardant un certain style), etc pour les petits contenus.

Cela peut cependant être une idée d'en envoyer également lorsque je cite un autre blog, avec une petite base de données dédiée, textuelle, qui serait aussi versionnée dans le dépôt pour éviter de les répéter à chaque publication. Cela dit, Isso n'en fait pas mention dans sa documentation...

J'aimerais essayer d'en intégrer davantage sur mon site, par exemple du Dublin Core.

Sphinx en inclue une avec un petit fichier JSON généré en même temps de la publication du site, pour que la recherche se fasse côté client.

Ceux-ci pourraient être soit placés dans l'en-tête des posts soit détectés par des rôles spécifiques dans le contenu des posts, pour trouver des articles traitant de sujets similaires.

Si le système fonctionne suffisamment, l'on peut commencer à envisager d'inclure davantage le thème dans le contenu du blog, et ainsi commencer à exporter le système vers d'autres projets.

thblog : l'outil qui rend ces ambitions possibles

La stack technologique que j'ai choisie pour cet outil est la suivante :

Le premier thème sous thblog (dont une trace est toujours trouvable sur la Wayback machine) était une expérimentation faite autour d'avril/mai 2024 ; le courant, réalisé en mars 2025, est inspiré de Lagrange, un navigateur pour Gemini, avec les polices d'écriture Atkinson Hyperlegible Next par le Braille Institute.

De la même façon que mon blog en Jekyll, ni l'outil ni le contenu source ne seront en source ouverte, bien que le contenu présent sur l'export HTML du site soit majoritairement sous CC BY-SA 4.0, bien que je suive le code et le contenu sous git dans un dépôt privé sur Gitlab.com. À ce sujet, je rejoins Josh Comeau sur la plupart des raisons qu'il exprime dans Why My Blog Is Closed-Source (pas sur la sécurité, cela dit.) :

Cela dit, le développement de cet outil et l'évolution de ce blog restent une expérience que je souhaiterais partager, possiblement dans d'autres posts ; en effet, bien que je ne souhaite pas donner le poisson, je trouve utile et satisfaisant de partager un morceau de la canne à pêche qui m'a servi à le pêcher.

Qu'est-ce que tout cela veut dire pour l'avenir du blog ?

Ce blog reste quelque chose que j'alimente sur mon temps libre, sans aucune obligation de production et lorsque j'ai envie de développer mes talents d'écriture. Cette transition technologique, bien que ne transparaissant pas directement sur le résultat, me permet d'obtenir une plus grande satisfaction dans l'alimentation de ce blog ; je n'exclus pas de sortir plus d'articles que ces sept dernières années.

Cependant, au fil des années, j'ai développé un bon nombre d'idées de sujets que j'aimerais bien traiter dans des billets pour ce blog. Parmi la quinzaine de brouillons que j'ai, l'on trouve parmi les plus aboutis :

Globalement, je fais ma veille assez régulièrement et enquête sur beaucoup de sujets dans le cadre de mes projets personnels et professionnels, de mes cours, de mes discussions loin du clavier et sur différents réseaux. Je vous conseille donc de vous abonner aux flux RSS de ce blog ; il y en a un par langue proposée, et j'essaye de traduire les articles après leur publication dans la langue originelle dans laquelle je les ai écrit.

À toutes dans mes prochains articles !

touhey.fr en 2014
pandoc
motherfuckingwebsite.com
fopencookie - faites vos propres flux !
Jekyll
Researcher
thomas.touhey.fr en mai 2017
Jekyll Liquid
OpenGraph
Twitter Cards
jekyll-assets
myage.rb
touhey.uk
thomas.touhey.uk
touhey.pro
Sphinx
reStructuredText
thcolor
thox
Cahute
Syntax Highlighting in Jekyll
/avatars/sili.png
/resume.pdf
Pelican
yozuch
thlk
linkcheck
sphinx-autobuild
Cool URIs don't change
Isso
Pingback
Webmention
Dublin Core
Gemini specification
WML
docutils
jinja2
babel
pygments
click
sur la Wayback machine
Lagrange
Gemini
Atkinson Hyperlegible Next
Braille Institute
CC BY-SA 4.0
git
Gitlab.com
Why My Blog Is Closed-Source

Navigation

À propos de moi
Mon blog
Mes projets
Ma présence en ligne