Webmentions Backup Tool

Last night I finally found some time to add the one thing my whole setup was lacking since the move: backups of incoming webmentions. As explained in the linked post, I decided to use webmention.io to process incoming webmentions so I don’t have to store them on my site. It all works nicely, and I like everything so far, but if there’s one thing that I’ve learned through the years spent online, that would be “no service stays online and functional forever”.


Способ решить проблемы с нестабильностью WiFi-подключения существует. К сожалению, такой способ только один. К счастью, он прост и стопроцентно надёжен.

Нужно всего лишь подключить проблемное устройство к роутеру проводом.

Переделал i18n

Выходные прошли с толком: сделал на сайт ещё одну кнопочку. Как это обычно бывает, кнопочка одна, а перелопачена огромная куча всего. Зато теперь у каждой страницы-списка (главная страница, список постов, страницы с постами для каждого тэга, и т.д.) есть четыре версии: на русском языке, но включая страницы на английском, если для них нет русского перевода; на русском языке без иноязычных страниц; на английском языке, но включая страницы на русском, если для них нет английского перевода; на английском языке без иноязычных страниц.


Бывает, функционал вроде несложный, а тесты не очень понятно как писать — ну и пишешь без тестов. Запускаешь — вроде работает… А потом спустя время напишешь всё-таки тест — а работает-то всё не совсем так, как должно, а местами и не работает вовсе!

TDD — великая сила. Но только если её практиковать.

Marking pages as deleted in Hugo

Sometimes you may want to delete some content you’ve published, for various reasons. Deleting your content in Hugo is really easy: you just delete1 the source files for the pages you no longer need and re-compile your site as usual. However, if you want to be a good IndieWeb citizen, you’d better be a little more graceful when removing content. First of all, for the content that used to be available but no longer is, the 404 Not Found that your Hugo site returns by default for any non-existent (also drafted out or expired) page is not the proper status code.