Le système de commentaires de jvalol a un serveur, des comptes, de l’anti-spam et des notifications. Pourtant, quand quelqu’un lit un commentaire sur le blog, aucun de ces services n’a besoin de répondre.1
Le site est généré avec Hugo. Les discussions vivent sur un petit serveur Phoenix appelé Popsicle Boat. À chaque publication, le billet reçoit l’URL de sa discussion associée. Puis, pendant le build, Hugo récupère les réponses en JSON et les transforme en HTML ordinaire dans la page.1

Le principe tient en une phrase : lecture statique, écriture dynamique.
Pour poster, un formulaire HTML envoie la réponse vers Popsicle Boat. Le serveur gère l’identité, les limites de débit et les protections anti-spam, puis déclenche un nouveau build. Environ une minute plus tard sur ce site, le commentaire rejoint le HTML publié.1
Le compromis est assumé. Un commentaire n’apparaît pas instantanément. Il faut un compte. Si Popsicle Boat tombe au mauvais moment, un build peut sortir sans les nouveaux commentaires.1
Mais la panne ne casse pas la lecture. Le build continue, et les commentaires déjà intégrés restent avec les pages générées. Dans des étapes précédentes de cette expérimentation, l’auteur cherchait justement à éviter qu’un blog « emprunte » sa conversation à un widget externe à chaque affichage.23
Cette architecture inverse une habitude du web : le morceau fréquent et public, lire, devient la partie la moins dépendante. Le morceau rare et difficile, écrire sans se faire envahir par le spam, garde le serveur.
Ce n’est pas la meilleure architecture pour toutes les conversations. Une grosse communauté en temps réel trouverait la minute de délai franchement préhistorique. Pour un petit blog personnel, le choix produit autre chose : le commentaire devient une partie du document publié, pas un rectangle distant qui doit encore exister dix ans plus tard pour que la page garde sa conversation.
