summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore37
-rw-r--r--Makefile166
-rw-r--r--TODOs.md164
-rw-r--r--deps.mk2158
-rw-r--r--meta.capim11
-rw-r--r--meta.json5
-rwxr-xr-xmkdeps.sh106
-rw-r--r--po/de.po161
-rw-r--r--po/en.po171
-rw-r--r--po/eo.po161
-rw-r--r--po/es.po161
-rw-r--r--po/euandre.org.pot161
-rw-r--r--po/fr.po161
-rw-r--r--po/note.txt5
-rw-r--r--po/po4a.cfg12
-rw-r--r--po/pt.po190
-rwxr-xr-xsrc/bin/pb2
l---------src/collections/blog1
l---------src/collections/en/blog1
l---------src/collections/en/pastebin1
l---------src/collections/en/podcast1
l---------src/collections/en/screencast1
l---------src/collections/en/til1
l---------src/collections/pastebins1
l---------src/collections/podcasts1
l---------src/collections/pt/hea1
l---------src/collections/screencasts1
l---------src/collections/tils1
-rw-r--r--src/content/en/about.adoc (renamed from src/content/about.adoc)2
-rw-r--r--src/content/en/blog/2018/07/17/guix-nixos.adoc (renamed from src/content/blog/2018/07/17/guix-nixos.adoc)0
-rw-r--r--src/content/en/blog/2018/08/01/npm-ci-reproducibility.adoc (renamed from src/content/blog/2018/08/01/npm-ci-reproducibility.adoc)0
-rw-r--r--src/content/en/blog/2018/12/21/ytdl-subs.adoc (renamed from src/content/blog/2018/12/21/ytdl-subs.adoc)0
-rw-r--r--src/content/en/blog/2019/06/02/nixos-stateless-workstation.adoc (renamed from src/content/blog/2019/06/02/nixos-stateless-workstation.adoc)0
-rw-r--r--src/content/en/blog/2020/08/10/guix-srht.adoc (renamed from src/content/blog/2020/08/10/guix-srht.adoc)0
-rw-r--r--src/content/en/blog/2020/08/31/database-i-wish-i-had.adoc (renamed from src/content/blog/2020/08/31/database-i-wish-i-had.adoc)0
-rw-r--r--src/content/en/blog/2020/10/05/cargo2nix-demo.tar.gz (renamed from src/content/blog/2020/10/05/cargo2nix-demo.tar.gz)bin59565 -> 59565 bytes
-rw-r--r--src/content/en/blog/2020/10/05/cargo2nix.adoc (renamed from src/content/blog/2020/10/05/cargo2nix.adoc)0
-rw-r--r--src/content/en/blog/2020/10/05/cargo2nix.tar.gz (renamed from src/content/blog/2020/10/05/cargo2nix.tar.gz)bin53327 -> 53327 bytes
-rw-r--r--src/content/en/blog/2020/10/05/swift2nix-demo.tar.gz (renamed from src/content/blog/2020/10/05/swift2nix-demo.tar.gz)bin61691 -> 61691 bytes
-rw-r--r--src/content/en/blog/2020/10/05/swift2nix.adoc (renamed from src/content/blog/2020/10/05/swift2nix.adoc)0
-rw-r--r--src/content/en/blog/2020/10/05/swift2nix.tar.gz (renamed from src/content/blog/2020/10/05/swift2nix.tar.gz)bin57917 -> 57917 bytes
-rw-r--r--src/content/en/blog/2020/10/19/feature-flags.adoc (renamed from src/content/blog/2020/10/19/feature-flags.adoc)2
-rw-r--r--src/content/en/blog/2020/10/20/wrong-interviewing.adoc (renamed from src/content/blog/2020/10/20/wrong-interviewing.adoc)0
-rw-r--r--src/content/en/blog/2020/11/07/diy-bugs.adoc (renamed from src/content/blog/2020/11/07/diy-bugs.adoc)2
-rw-r--r--src/content/en/blog/2020/11/08/paradigm-shift-review.adoc (renamed from src/content/blog/2020/11/08/paradigm-shift-review.adoc)0
-rw-r--r--src/content/en/blog/2020/11/12/database-parsers-trees.adoc (renamed from src/content/blog/2020/11/12/database-parsers-trees.adoc)0
-rw-r--r--src/content/en/blog/2020/11/14/local-first-review.adoc (renamed from src/content/blog/2020/11/14/local-first-review.adoc)2
-rw-r--r--src/content/en/blog/2021/01/26/remembering-ann.adoc (renamed from src/content/blog/2021/01/26/remembering-ann.adoc)0
-rw-r--r--src/content/en/blog/2021/02/17/fallible.adoc (renamed from src/content/blog/2021/02/17/fallible.adoc)0
-rw-r--r--src/content/en/blog/2021/02/17/fallible.tar.gz (renamed from src/content/blog/2021/02/17/fallible.tar.gz)bin1915439 -> 1915439 bytes
-rw-r--r--src/content/en/blog/2021/04/29/relational-review.adoc (renamed from src/content/blog/2021/04/29/relational-review.adoc)0
-rw-r--r--src/content/en/blog/categories.adoc (renamed from src/content/blog/categories.adoc)1
-rw-r--r--src/content/en/blog/index.adoc (renamed from src/content/blog/index.adoc)0
-rw-r--r--src/content/en/index.adoc (renamed from src/content/index.adoc)0
-rw-r--r--src/content/en/pastebin/2016/04/05/rpn.adoc (renamed from src/content/pastebins/2016/04/05/rpn.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/11/nix-pinning.adoc (renamed from src/content/pastebins/2018/07/11/nix-pinning.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/13/guix-nixos-systemd.adoc (renamed from src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/13/guixbuilder-nixos.adoc (renamed from src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/13/guixbuilder.adoc (renamed from src/content/pastebins/2018/07/13/guixbuilder.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/13/nix-strpad.adoc (renamed from src/content/pastebins/2018/07/13/nix-strpad.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/25/nix-exps.adoc (renamed from src/content/pastebins/2018/07/25/nix-exps.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/25/nix-showdrv.adoc (renamed from src/content/pastebins/2018/07/25/nix-showdrv.adoc)0
-rw-r--r--src/content/en/pastebin/2019/06/08/inconsistent-hash.adoc (renamed from src/content/pastebins/2019/06/08/inconsistent-hash.adoc)0
-rw-r--r--src/content/en/pastebin/2019/12/29/raku-tuple-type.adoc (renamed from src/content/pastebins/2019/12/29/raku-tuple-type.adoc)0
-rw-r--r--src/content/en/pastebin/2020/01/04/guix-import-failure.adoc (renamed from src/content/pastebins/2020/01/04/guix-import-failure.adoc)0
-rw-r--r--src/content/en/pastebin/2020/02/14/guix-shebang.adoc (renamed from src/content/pastebins/2020/02/14/guix-shebang.adoc)0
-rw-r--r--src/content/en/pastebin/2020/11/27/guix-build-local.adoc (renamed from src/content/pastebins/2020/11/27/guix-build-local.adoc)0
-rw-r--r--src/content/en/pastebin/2020/12/15/guix-pack-fail.adoc (renamed from src/content/pastebins/2020/12/15/guix-pack-fail.adoc)0
-rw-r--r--src/content/en/pastebin/2021/04/03/naive-slugify-js.adoc (renamed from src/content/pastebins/2021/04/03/naive-slugify-js.adoc)0
-rw-r--r--src/content/en/pastebin/2021/06/08/reading-session-pt1.adoc (renamed from src/content/pastebins/2021/06/08/reading-session-pt1.adoc)0
-rw-r--r--src/content/en/pastebin/2021/06/22/curl-wget.adoc (renamed from src/content/pastebins/2021/06/22/curl-wget.adoc)0
-rw-r--r--src/content/en/pastebin/2021/08/11/h1-spacing.adoc (renamed from src/content/pastebins/2021/08/11/h1-spacing.adoc)0
-rw-r--r--src/content/en/pastebin/2021/09/02/sicp-3-19.adoc (renamed from src/content/pastebins/2021/09/02/sicp-3-19.adoc)0
-rw-r--r--src/content/en/pastebin/2021/09/03/sicp-persistent-queue.adoc (renamed from src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc)0
-rw-r--r--src/content/en/pastebin/2022/07/14/git-cleanup.adoc (renamed from src/content/pastebins/2022/07/14/git-cleanup.adoc)0
-rw-r--r--src/content/en/pastebin/2023/07/22/funcallable-amop.adoc (renamed from src/content/pastebins/2023/07/22/funcallable-amop.adoc)0
-rw-r--r--src/content/en/pastebin/categories.adoc (renamed from src/content/pastebins/categories.adoc)1
-rw-r--r--src/content/en/pastebin/index.adoc (renamed from src/content/pastebins/index.adoc)0
-rw-r--r--src/content/en/podcast/2020/12/19/test-entry.adoc (renamed from src/content/podcasts/2020/12/19/test-entry.adoc)0
-rw-r--r--src/content/en/podcast/2020/12/19/test-entry.flac (renamed from src/content/podcasts/2020/12/19/test-entry.flac)bin462864 -> 462864 bytes
-rw-r--r--src/content/en/podcast/2020/12/19/test-entry.oggbin0 -> 97060 bytes
-rw-r--r--src/content/en/podcast/categories.adoc (renamed from src/content/podcasts/categories.adoc)1
-rw-r--r--src/content/en/podcast/index.adoc (renamed from src/content/podcasts/index.adoc)0
-rw-r--r--src/content/en/screencast/2021/02/07/autoqemu.adoc (renamed from src/content/screencasts/2021/02/07/autoqemu.adoc)0
-rw-r--r--src/content/en/screencast/2021/02/07/autoqemu.tar.gz (renamed from src/content/screencasts/2021/02/07/autoqemu.tar.gz)bin506213 -> 506213 bytes
-rw-r--r--src/content/en/screencast/2021/02/07/autoqemu.webm (renamed from src/content/screencasts/2021/02/07/autoqemu.webm)bin12103021 -> 12103021 bytes
-rw-r--r--src/content/en/screencast/categories.adoc (renamed from src/content/screencasts/categories.adoc)1
-rw-r--r--src/content/en/screencast/index.adoc (renamed from src/content/screencasts/index.adoc)0
-rw-r--r--src/content/en/slide/2020/10/19/feature-flags.adoc230
-rw-r--r--src/content/en/slide/2020/11/14/local-first-hype.adoc204
-rw-r--r--src/content/en/til/2020/08/12/filename-timestamp.adoc (renamed from src/content/tils/2020/08/12/filename-timestamp.adoc)0
-rw-r--r--src/content/en/til/2020/08/13/code-jekyll.adoc (renamed from src/content/tils/2020/08/13/code-jekyll.adoc)0
-rw-r--r--src/content/en/til/2020/08/14/browse-git.adoc (renamed from src/content/tils/2020/08/14/browse-git.adoc)0
-rw-r--r--src/content/en/til/2020/08/16/git-search.adoc (renamed from src/content/tils/2020/08/16/git-search.adoc)0
-rw-r--r--src/content/en/til/2020/08/28/grep-online.adoc (renamed from src/content/tils/2020/08/28/grep-online.adoc)0
-rw-r--r--src/content/en/til/2020/09/04/cli-email-fun-profit.adoc (renamed from src/content/tils/2020/09/04/cli-email-fun-profit.adoc)0
-rw-r--r--src/content/en/til/2020/09/05/oldschool-pr.adoc (renamed from src/content/tils/2020/09/05/oldschool-pr.adoc)0
-rw-r--r--src/content/en/til/2020/10/11/search-git-history.adoc (renamed from src/content/tils/2020/10/11/search-git-history.adoc)0
-rw-r--r--src/content/en/til/2020/11/08/find-broken-symlink.adoc (renamed from src/content/tils/2020/11/08/find-broken-symlink.adoc)0
-rw-r--r--src/content/en/til/2020/11/12/diy-nix-bash-ci.adoc (renamed from src/content/tils/2020/11/12/diy-nix-bash-ci.adoc)0
-rw-r--r--src/content/en/til/2020/11/12/git-bisect-automation.adoc (renamed from src/content/tils/2020/11/12/git-bisect-automation.adoc)0
-rw-r--r--src/content/en/til/2020/11/12/useful-bashvars.adoc (renamed from src/content/tils/2020/11/12/useful-bashvars.adoc)0
-rw-r--r--src/content/en/til/2020/11/14/gpodder-media.adoc (renamed from src/content/tils/2020/11/14/gpodder-media.adoc)0
-rw-r--r--src/content/en/til/2020/11/30/git-notes-ci.adoc (renamed from src/content/tils/2020/11/30/git-notes-ci.adoc)0
-rw-r--r--src/content/en/til/2020/12/15/shellcheck-repo.adoc (renamed from src/content/tils/2020/12/15/shellcheck-repo.adoc)0
-rw-r--r--src/content/en/til/2020/12/29/svg.adoc (renamed from src/content/tils/2020/12/29/svg.adoc)2
-rw-r--r--src/content/en/til/2021/01/12/curl-awk-emails.adoc (renamed from src/content/tils/2021/01/12/curl-awk-emails.adoc)0
-rw-r--r--src/content/en/til/2021/01/17/posix-shebang.adoc (renamed from src/content/tils/2021/01/17/posix-shebang.adoc)0
-rw-r--r--src/content/en/til/2021/04/24/cl-generic-precedence.adoc (renamed from src/content/tils/2021/04/24/cl-generic-precedence.adoc)0
-rw-r--r--src/content/en/til/2021/04/24/clojure-autocurry.adoc (renamed from src/content/tils/2021/04/24/clojure-autocurry.adoc)0
-rw-r--r--src/content/en/til/2021/04/24/scm-nif.adoc (renamed from src/content/tils/2021/04/24/scm-nif.adoc)0
-rw-r--r--src/content/en/til/2021/07/23/git-tls-gpg.adoc (renamed from src/content/tils/2021/07/23/git-tls-gpg.adoc)0
-rw-r--r--src/content/en/til/2021/08/11/js-bigint-reviver.adoc (renamed from src/content/tils/2021/08/11/js-bigint-reviver.adoc)0
-rw-r--r--src/content/en/til/categories.adoc2
-rw-r--r--src/content/en/til/index.adoc7
-rw-r--r--src/content/favicon.pngbin0 -> 103 bytes
-rw-r--r--src/content/img/atom.svg6
l---------src/content/img/atom/dark.svg1
-rw-r--r--src/content/img/atom/light.svg5
-rw-r--r--[l---------]src/content/img/envelope/dark.svg7
-rw-r--r--src/content/img/envelope/light.svg4
-rw-r--r--[l---------]src/content/img/link/dark.svg8
-rw-r--r--src/content/img/link/light.svg6
-rw-r--r--[l---------]src/content/img/lock/dark.svg7
-rw-r--r--src/content/img/lock/light.svg4
-rw-r--r--[l---------]src/content/img/logo/dark.svg63
-rw-r--r--src/content/img/logo/light.svg118
-rw-r--r--src/content/pt/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md45
-rw-r--r--src/content/pt/hea/2020/08/12/arquivo-datado.adoc29
-rw-r--r--src/content/pt/hea/categorias.adoc6
-rw-r--r--src/content/pt/hea/index.adoc11
-rw-r--r--src/content/pt/sobre.adoc12
-rw-r--r--src/content/public.asc86
-rw-r--r--src/content/public.asc.txt99
-rw-r--r--src/content/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides343
-rw-r--r--src/content/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides266
-rw-r--r--src/content/style.css6
-rw-r--r--src/content/tils/categories.adoc1
-rw-r--r--src/content/tils/index.adoc1
-rw-r--r--src/headers.txt6
-rw-r--r--src/headers/de.txt13
-rw-r--r--src/headers/en.txt13
-rw-r--r--src/headers/eo.txt13
-rw-r--r--src/headers/es.txt13
-rw-r--r--src/headers/fr.txt13
-rw-r--r--src/headers/pt.txt13
-rw-r--r--src/headers/ref.txt13
-rw-r--r--src/linkonly-dirs.txt5
-rw-r--r--src/names/categories/de.txt1
-rw-r--r--src/names/categories/en.txt1
-rw-r--r--src/names/categories/eo.txt1
-rw-r--r--src/names/categories/es.txt1
-rw-r--r--src/names/categories/fr.txt1
-rw-r--r--src/names/categories/pt.txt1
-rw-r--r--src/names/categories/ref.txt1
-rw-r--r--src/names/category/de.txt1
-rw-r--r--src/names/category/en.txt1
-rw-r--r--src/names/category/eo.txt1
-rw-r--r--src/names/category/es.txt1
-rw-r--r--src/names/category/fr.txt1
-rw-r--r--src/names/category/pt.txt1
-rw-r--r--src/names/category/ref.txt1
l---------src/pages/en1
l---------src/pages/pt1
l---------src/pages/root1
l---------src/slides/en1
-rw-r--r--src/static.conf3
-rw-r--r--src/symlinks.txt74
168 files changed, 3508 insertions, 2123 deletions
diff --git a/.gitignore b/.gitignore
index c7f4b9e..874fc80 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,34 +5,19 @@
*.links
*.caslinks
*.html
-*.html.*.txt
*.indexentry
*.feedentry
+*.mapentry
*.sortdata
*.categorydata
-sortdata.txt
-categories.txt
-categories.xml
-categories.htmlheader
-categories.htmlfooter
-categories.htmllisting
-index.htmlheader
-index.htmlfooter
-index.htmllisting
-feed.xml
-feed.*.xml
+*.txt
+*.xml
+*.htmlheader
+*.htmlfooter
+*.htmllisting
+*.ps
+*.pdf
*.gz
-/src/sources.txt
-/src/all-contents.txt
-/src/all-filelists.txt
-/src/install.txt
-/src/sort-expected.txt
-/src/sort-given.txt
-/sources.txt
-/install.txt
-/email.txt
-/baseurl.txt
-/fingerprint.txt
-/expiry.txt
-/src/content/security.txt
-/src/content/.well-known/security.txt
+*.sentinel
+*.torrent
+/src/content/.gitignore
diff --git a/Makefile b/Makefile
index 2c5f2bf..518ac92 100644
--- a/Makefile
+++ b/Makefile
@@ -19,14 +19,16 @@ EXEC = ./
## Where to store the installation. Empty by default.
DESTDIR =
LDLIBS =
-PUBURL = public.asc
+PUBURL = public.asc.txt
+FFMFLAGS = -y -hide_banner -loglevel warning
+BASEURL = /
.SUFFIXES:
-.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml .txt
+.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .mapentry .sortdata .xml
.SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html .links .caslinks
-.SUFFIXES: .categorydata .gz
+.SUFFIXES: .txt .categorydata .gz .torrent .flac .ogg .ps .pdf .sentinel
.adoc.conf:
mkwb conf src/global.conf $< > $@
@@ -52,6 +54,9 @@ PUBURL = public.asc
.htmlbody.feedentry:
mkwb feedentry $< > $@
+.conf.mapentry:
+ mkwb mapentry $< > $@
+
.conf.sortdata:
mkwb sortdata $< > $@
@@ -66,6 +71,15 @@ PUBURL = public.asc
printf "%s\n" "_" | sha256sum | \
printf "%s\t%s\n" "`cut -d" " -f1`" "_"' > $@
+.flac.ogg:
+ ffmpeg $(FFMFLAGS) -i $< -ar 48000 -vn -c:a libvorbis -b:a 320k $@
+
+.adoc.ps:
+ eslaides < $< > $@
+
+.ps.pdf:
+ ps2pdf - < $< > $@
+
all:
@@ -81,6 +95,7 @@ sources.snippets.gz = $(sources.adoc:.adoc=.snippets.gz)
sources.conf = $(sources.adoc:.adoc=.conf)
sources.links = $(sources.adoc:.adoc=.links)
sources.caslinks = $(sources.adoc:.adoc=.caslinks)
+sources.mapentry = $(sources.adoc:.adoc=.mapentry)
articles.indexentry = $(articles.adoc:.adoc=.indexentry)
articles.feedentry = $(articles.adoc:.adoc=.feedentry)
articles.sortdata = $(articles.adoc:.adoc=.sortdata)
@@ -93,23 +108,31 @@ categories.htmllisting = $(categories.adoc:.adoc=.htmllisting)
categories.txt = $(categories.adoc:.adoc=.txt)
categories.xml = $(categories.adoc:.adoc=.xml)
categories.xml.gz = $(categories.adoc:.adoc=.xml.gz)
+sources.media.torrent = $(sources.media:=.torrent)
+slides.ps = $(slides.adoc:.adoc=.ps)
+slides.pdf = $(slides.adoc:.adoc=.pdf)
sources = \
$(sources.adoc) \
$(sources.extras) \
$(images.svg) \
src/content/favicon.ico \
+ src/content/favicon.png \
src/content/style.css \
src/content/$(PUBURL) \
dynamic-contents = \
$(sources.html) \
+ $(slides.pdf) \
$(feeds.xml) \
+ $(sources.media.torrent) \
+ src/content/sitemap.xml \
static-contents = \
$(sources.extras) \
$(images.svg) \
src/content/favicon.ico \
+ src/content/favicon.png \
src/content/style.css \
src/content/$(PUBURL) \
src/content/.well-known/security.txt \
@@ -130,8 +153,6 @@ contents.gz = \
contents = \
$(dynamic-contents) \
$(static-contents) \
- src/content/security.txt \
- src/content/security.txt.gz \
all-filelists = \
$(sources.snippets) \
@@ -143,6 +164,13 @@ all-contents = \
$(contents) \
$(contents.gz) \
+captured-assets = \
+ src/content/$(PUBURL) \
+ src/content/favicon.ico \
+ src/content/favicon.png \
+
+captured-assets.sentinel = $(captured-assets:=.sentinel)
+
derived-assets = \
$(dynamic-contents) \
@@ -151,9 +179,10 @@ derived-assets = \
$(sources.htmlbody) \
$(sources.snippets) \
$(sources.snippets.gz) \
+ $(sources.conf) \
$(sources.links) \
$(sources.caslinks) \
- $(sources.conf) \
+ $(sources.mapentry) \
src/dyn.conf \
src/base.conf \
src/global.conf \
@@ -169,44 +198,54 @@ derived-assets = \
$(categories.txt) \
$(categories.xml) \
$(categories.xml.gz) \
+ $(slides.ps) \
+ $(slides.pdf) \
email.txt \
baseurl.txt \
fingerprint.txt \
expiry.txt \
- src/content/security.txt \
- src/content/security.txt.gz \
+ expiry-epoch.txt \
+ now.txt \
src/content/.well-known/security.txt \
src/all-contents.txt \
src/all-filelists.txt \
+ src/all-symlinks.txt \
src/install.txt \
src/sort-expected.txt \
src/sort-given.txt \
src/sources.txt \
install.txt \
sources.txt \
+ src/content/.gitignore \
+ $(captured-assets.sentinel) \
side-assets = \
- src/collections/*/*/*/*/*.html.*.txt \
- src/collections/*/*/*/*/*.html.*.txt.gz \
- src/collections/*/index.html.*.txt \
- src/collections/*/sortdata.txt \
- src/collections/*/feed.*.xml \
- src/collections/*/feed.*.xml.gz \
- src/collections/*/*.sortdata \
+ src/collections/*/*/*/*/*/*.html.*.txt \
+ src/collections/*/*/*/*/*/*.txt.gz \
+ src/collections/*/*/index.html.*.txt \
+ src/collections/*/*/sortdata.txt \
+ src/collections/*/*/feed.*.xml \
+ src/collections/*/*/feed.*.xml.gz \
+ src/collections/*/*/*.sortdata \
src/pages/*/*.html.*.txt \
src/content/.well-known/ \
+ `cat src/all-symlinks.txt 2>/dev/null` \
+ `cat src/linkonly-dirs.txt 2>/dev/null` \
## Default target. Builds all artifacts required for testing
## and installation.
all: $(derived-assets)
-all: src/content/$(PUBURL) src/content/favicon.ico
+all: $(captured-assets)
$(derived-assets): Makefile deps.mk
-$(sources.conf): src/global.conf src/headers.txt
+$(sources.conf): src/global.conf
+
+src/content/.gitignore: src/symlinks.txt
+ cd src/content/ && mkwb symlinks ../symlinks.txt > $(@F)
src/dyn.conf: email.txt baseurl.txt fingerprint.txt
printf "export url_pre='%s'\n" "`cat baseurl.txt`" > $@
@@ -222,7 +261,7 @@ src/global.conf: src/base.conf
mkwb conf -G src/base.conf > $@
$(listings.html):
- cat $*.htmlheader $*.htmllisting $*.htmlbody $*.htmlfooter > $@
+ cat $*.htmlheader $*.htmlbody $*.htmllisting $*.htmlfooter > $@
$(indexes.htmllisting):
mkwb indexbody $*.conf > $@
@@ -230,8 +269,8 @@ $(indexes.htmllisting):
$(categories.htmllisting):
mkwb categoriesbody $*.conf > $@
-$(categories.txt):
- mkwb categories $(@D) > $@
+$(categories.txt): src/global.conf
+ mkwb categories src/global.conf $(@D) > $@
$(categories.xml):
for f in `cat $*.txt`; do \
@@ -251,19 +290,33 @@ $(sources.snippets.gz) $(categories.xml.gz):
if [ -s $* ]; then gzip -9fk `cat $*`; fi
sed 's/$$/.gz/' $* > $@
-src/content/$(PUBURL).gz: src/content/$(PUBURL)
-src/content/$(PUBURL):
- gpg --export --armour "`jq -r '.email' < meta.json`" > $@
+src/content/$(PUBURL).gz: src/content/$(PUBURL).sentinel
+src/content/$(PUBURL).sentinel: email.txt
+ gpg --export --armour "`cat email.txt`" | ifne ifnew $*
+ touch $@
+
+src/content/favicon.ico.gz: src/content/favicon.ico.sentinel
+src/content/favicon.ico.sentinel: src/content/img/favicon.svg
+ convert src/content/img/favicon.svg -strip ico:- | ifnew $*
+ touch $@
+
+src/content/favicon.png.sentinel: src/content/img/favicon.svg
+ convert src/content/img/favicon.svg -strip png:- | ifnew $*
+ touch $@
-src/content/favicon.ico.gz: src/content/favicon.ico
-src/content/favicon.ico: src/content/img/favicon.svg
- convert src/content/img/favicon.svg $@
+$(sources.media.torrent):
+ F="`printf '%s\n' $* | cut -d/ -f3-`" && \
+ mktorrent -xfd -n $(*F) -o $@ -w "https://$(NAME)$(BASEURL)$${F}" $*
-email.txt: meta.json
- jq -r '.email' < meta.json > $@
+src/content/sitemap.xml.gz: src/content/sitemap.xml
+src/content/sitemap.xml: $(sources.mapentry)
+ mkwb sitemap $(sources.mapentry) > $@
-baseurl.txt: meta.json
- jq -r '.baseurl' < meta.json > $@
+email.txt: meta.capim
+ cat meta.capim | awk '$$1 == ":email" && $$0=$$2' | tr -d '"' > $@
+
+baseurl.txt: meta.capim
+ cat meta.capim | awk '$$1 == ":baseurl" && $$0=$$2' | tr -d '"' > $@
fingerprint.txt: src/content/$(PUBURL)
gpg --always-trust --no-keyring --show-key --with-colons \
@@ -276,10 +329,11 @@ expiry.txt: src/content/$(PUBURL)
awk -F: '/^pub:/ { print $$7 }' | \
xargs -I% date -Is -d@% > $@
-src/content/security.txt.gz: src/content/.well-known/security.txt.gz
-src/content/security.txt: src/content/.well-known/security.txt
-src/content/security.txt src/content/security.txt.gz:
- ln -fs .well-known/$(@F) $@
+expiry-epoch.txt: expiry.txt
+ date -d "`cat expiry.txt`" '+%s' > $@
+
+now.txt:
+ now > $@
src/content/.well-known/security.txt.gz: src/content/.well-known/security.txt
src/content/.well-known/security.txt: email.txt baseurl.txt expiry.txt
@@ -287,7 +341,7 @@ src/content/.well-known/security.txt: email.txt baseurl.txt expiry.txt
printf 'Contact: mailto:%s\n' "`cat email.txt`" > $@
printf 'Expires: %s\n' "`cat expiry.txt`" >> $@
printf 'Encryption: %s/$(PUBURL)\n' "`cat baseurl.txt`" >> $@
- printf 'Preferred-Languages: en, pt, fr, eo, es\n' >> $@
+ printf 'Preferred-Languages: en, pt, fr, eo, es, de\n' >> $@
src/sources.txt:
printf '%s\n' $(sources) > $@
@@ -295,8 +349,11 @@ src/sources.txt:
src/all-contents.txt:
printf '%s\n' $(all-contents) > $@
-src/all-filelists.txt:
- printf '%s\n' $(all-filelists) > $@
+src/all-filelists.txt: src/all-symlinks.txt
+ printf '%s\n' $(all-filelists) src/all-symlinks.txt > $@
+
+src/all-symlinks.txt: src/content/.gitignore
+ sed 's|^|src/content|' src/content/.gitignore > $@
src/install.txt: src/all-contents.txt src/all-filelists.txt $(all-filelists)
cat src/all-contents.txt `cat src/all-filelists.txt` > $@
@@ -333,7 +390,7 @@ check-unit-updatedat: $(sources.updatedat-check)
.SUFFIXES: .links-internal-check
sources.links-internal-check = $(sources.adoc:.adoc=.links-internal-check)
-$(sources.links-internal-check): $(sources.html)
+$(sources.links-internal-check): $(sources.html) $(slides.pdf)
grep -E '^(link|image):' $*.links | cut -d: -f2- | \
xargs -I% test -e $(*D)/%
@@ -343,9 +400,37 @@ check-unit-links-internal: $(sources.links-internal-check)
check-unit-links-external:
+symlink-deps = \
+ $(sources.html) \
+ $(feeds.xml) \
+ $(categories.xml) \
+ src/content/.well-known/security.txt \
+ $(sources.media.torrent) \
+
+check-unit-links-symlinks: src/all-symlinks.txt $(symlink-deps)
+ find `cat src/all-symlinks.txt` | xargs -n1 test -e
+
+
check-unit-links: check-unit-links-internal check-unit-links-external
+check-unit-links: check-unit-links-symlinks
+
+
+MAXSIZE = 52428800 # from spec: https://www.sitemaps.org/protocol.html
+check-unit-sitemap-size: src/content/sitemap.xml
+ test "`stat --printf='%s' src/content/sitemap.xml`" -le $(MAXSIZE)
+
+check-unit-sitemap-count: src/content/sitemap.xml
+ test "`grep -cF '</url>' src/content/sitemap.xml`" -le 50000
+
+check-unit-sitemap: check-unit-sitemap-count check-unit-sitemap-size
+
+
+check-unit-expiry: expiry-epoch.txt now.txt
+ test "`cat expiry-epoch.txt`" -gt "`cat now.txt`"
+
check-unit: check-unit-sorting check-unit-updatedat check-unit-links
+check-unit: check-unit-sitemap check-unit-expiry
integration-tests = \
@@ -364,6 +449,11 @@ check: check-unit check-integration
+i18n:
+ po4a po/po4a.cfg
+
+
+
## Remove *all* derived artifacts produced during the build.
## A dedicated test asserts that this is always true.
clean:
diff --git a/TODOs.md b/TODOs.md
index 45b0364..1797ebc 100644
--- a/TODOs.md
+++ b/TODOs.md
@@ -3,56 +3,12 @@
## TODO Hand pick trackers for the generated torrents {#td-5cab66be-9f82-4d25-de87-fc6392c3b26f}
- TODO in 2022-06-04
-## TODO Use Opus over Ogg for podcasts {#td-2de2f57c-0773-530f-f6cf-70836080f46f}
-- TODO in 2022-06-01
-
## TODO Assert code blocks stick to atmost 80 columns {#td-75506021-884a-af77-ffbe-448816f70cc5}
- TODO in 2022-04-20
## TODO Detect linkrot {#td-dba2ff82-59b3-dd17-06a9-edbc9cffb264}
- TODO in 2022-04-13
-## TODO Revisit favicon references without links in articles {#td-3996432b-c5b8-a003-db82-c684035f58d5}
-- TODO in 2022-04-12
-
-## TODO Revisit `README.md` {#td-181014da-abbd-fbc3-ed42-a2c2d89f12a7}
-- TODO in 2022-03-25
-
-## TODO Rename pkgs.{nologin => shadow} {#td-db77b6f1-3044-e457-1672-5cf4314b47b2}
-- TODO in 2022-03-14
-
-## DOING Add `security.txt` {#td-a84b65c4-686c-c098-aa4b-cfba06a84825}
-- DOING in 2022-04-12
-
- Add the `.well-known/security.txt` file, with a `security.txt` symlink.
-
- Done in
- [`764b6f4d312ed6a68d8591447bbcc1ba1e13f272`](https://euandre.org/git/euandre.org/commit/?id=764b6f4d312ed6a68d8591447bbcc1ba1e13f272).
-- TODO in 2022-03-06
-
----
-
-Add check to ensure that its `Expires` field is in sync with the refreshed GPG
-key, and that this file in `euandre.org` is also in sync with `euandreh.xyz` and
-other domains.
-
-Probably just:
-```
-Contact: mailto:eu@euandre.org
-Expires: 2022-07-12T03:00:00.000Z
-Encryption: https://euandre.org/public-key.txt
-Preferred-Languages: en, pt, fr, eo, es
-```
-
-## TODO Replace Jekyll with a Makefile {#td-e795e852-a836-edae-0f95-48b28096ea9a}
-- TODO in 2022-03-06
-
----
-
-Consider using [m4] for templating.
-
-[m4]: http://mbreen.com/m4.html
-
## TODO Test robustness and responsiveness of HTML/CSS {#td-c76a7c83-20d2-a2cc-b48a-8499c6ca5b69}
- TODO in 2022-03-06
@@ -103,14 +59,6 @@ cp a/b.x a/b.y
This impacts the upcoming `lilypond -o $name` command in the Makefile.
-
-## TODO Use PostScript instead of Reveal.js {#td-6449803d-5774-b345-fde8-ad734af43e36}
-- TODO in 2021-10-12
-
----
-
-<i>À la</i> <https://github.com/jroimartin/ssg/>.
-
## TODO Remove `alt` from some icons {#td-d01a98aa-ef1e-cb21-8cba-7325d98b3db0}
- TODO in 2021-10-12
@@ -121,24 +69,15 @@ This impacts the upcoming `lilypond -o $name` command in the Makefile.
<https://jigsaw.w3.org/css-validator/>
-## TODO Reduce size of container image {#td-826dd92f-ba91-b7b4-1fcc-e5240f920e99}
-- TODO in 2021-10-12
-
## TODO Add JID alongside email {#task-089dca19-14e2-e1c1-6a47-9af6ab8eb42a}
- TODO in 2021-09-05
## TODO Generate Opus for podcast {#task-93510453-111f-9b1f-575f-ca8c7c05883c}
- TODO in 2021-06-07
-## TODO Generate PDFs for slides {#task-d2ef646f-6232-d82f-dd77-507c6981ee80}
-- TODO in 2021-06-07
-
## TODO Podcast metadata: copy GNU World Order {#task-7b0aeb8d-282b-7ebf-4c5f-65c6cac1f0a1}
- TODO in 2021-06-07
-## TODO Publish over Gemini {#task-319021df-ebdb-40cd-8330-329e8d01b747}
-- TODO in 2021-02-22
-
## TODO Improve CSS of navigation bar {#task-ddd3795b-fd89-4d68-a78b-6adcb4702f92}
- TODO in 2021-02-21
@@ -146,7 +85,7 @@ This impacts the upcoming `lilypond -o $name` command in the Makefile.
It doesn't resize well for small screens, and links are too small and close to each other.
-## TODO Screnncasts: Use scriptreplay and asciinema {#task-98a68a93-1294-4283-a78f-9b7f1150c729}
+## TODO Screencasts: Use scriptreplay and asciinema {#task-98a68a93-1294-4283-a78f-9b7f1150c729}
- TODO in 2021-02-11
## TODO Add hunspell dictionaries {#task-67783646-ef33-488b-a1d2-3ecd0b12dbb3}
@@ -155,68 +94,9 @@ It doesn't resize well for small screens, and links are too small and close to e
## TODO Shrink size of links at the end of slides {#task-7a53af07-57bf-4684-97c5-af43279848c0}
- TODO in 2021-02-11
-## DONE `dengoso.ly` [9/9] {#task-95ac1eec-1a56-47cb-b7ad-8cadf5737323}
-- DONE in 2021-01-03
-- TODO in 2021-01-01
-
----
-
-- [X] use "<quarter> = 100" over "Andante moderato for `meter`
-- [X] turn `cWithSlash` into a function
-- [X] move `pestana=` into shared `pestana.ly`
-- [X] ~~use fret-number over roman string on `pestana #"II" { }`~~
-- [X] `6 to D` on beginning of the song
-- [X] share notes between voices
-- [X] add string markers
-- [X] pestana over rests (measure 42)
-- [X] handle optional sharp on measure 77
-
-## TODO `choro-da-saudade.ly` [0/2] {#task-04afbdc0-4e2c-4176-b7c3-0c04087c09a8}
-- TODO in 2021-01-03
-
----
-
-- [ ] Make `D.S. al Coda` appear in MIDI
-
- ```lilypond
- bar ".."^markup { D.S. al Coda }
- cadenzaOn
- stopStaff
- once override TextScript.extra-offset = #'(0 . -3)
- <>^markup { D.S. al Coda }
- repeat unfold 3 {
- s1
- bar ""
- }
- cadenzaOff
- startStaff
- ```
-
-## TODO `marcha-dos-marinheiros.ly` {#task-bbc19f19-ca4f-4cbf-bc4d-e119ad06deef}
-- TODO in 2021-01-03
-
-## DONE Embed LilyPond source code in PDF and audio {#task-340da973-622c-45d6-8d3c-7db839586517}
-- DONE in 2021-01-03
-
- Done in
- [`bff2b07922272fd4c8f9ee0a7129d0a7c134dd38`](https://euandre.org/git/euandre.org/commit/?id=bff2b07922272fd4c8f9ee0a7129d0a7c134dd38).
-- TODO in 2021-01-03
-
----
-
-Use the `embed-source-code` options:
-
-```scheme
-#(ly:set-option 'embed-source-code #t)
-```
-
## TODO Add torrent for audio in `music-listing.html` {#task-aa314475-6a19-48fe-a752-7c479ad26be2}
- TODO in 2021-01-03
----
-
-Torrent for PDF, too?
-
## TODO Investigate the ICE STUN/TURN servers used by WebTorrent {#task-c7e75b41-d86e-423b-b4a1-7d193c3a6ef1}
- TODO in 2021-01-07
@@ -225,15 +105,7 @@ Torrent for PDF, too?
Depending on the provider, maybe host my own, like
[coturn](https://github.com/coturn/coturn).
-## DONE Generate `favicon.ico` from `favicon.svg` {#task-720e79b4-9e38-41c6-9958-cdadd67d2298}
-- DONE in 2021-01-03
-
- Done in
- [`433428cf6b4ef8a653f349e0a0d1fa0d10aab1e7`](https://euandre.org/git/euandre.org/commit/?id=bff2b07922272fd4c8f9ee0a7129d0a7c134dd38).
-- TODO in 2021-01-01
-
## DONE Add page to listen an watch files with WebTorrent {#task-e5d2be9d-6471-40ba-a2d3-c7bc482bfaba}
-- DONE in 2020-12-24
- TODO in 2020-12-23
## DONE Use SVG favicon {#task-29f1bded-3a56-410b-933d-e6a11f47656a}
@@ -252,10 +124,6 @@ $ inkscape -o icon-48x48.png -w 48 -h 48 icon.svg
$ convert icon-48x48.png favicon.ico
```
-## DONE Create screencasts collection {#task-fb8e4ad8-7c8b-4b62-a4f2-5f16f84ec7e6}
-- DONE in 2020-12-24
-- TODO in 2020-12-24
-
## DONE Add webtorrent-hybrid daemon {#task-1a2f5619-5d55-449f-a401-8c87afd5bea9}
- DONE in 2020-12-28
@@ -315,31 +183,8 @@ $ git revert 2beab5441b4fcddc849cfc44b99547d49593691d
# Improvements
-## TODO `dengoso.ly` [0/1] {#improvement-fd989cc2-b638-4943-8109-b8e3cac0aae1}
-- TODO in 2021-01-03
-
----
-
-- [ ] measures 21~24: map previous notes, removing fingering notation instead of repeating notes
-
-## TODO Music sources {#improvement-610ed926-cc5e-418a-b046-27f4c4862d0d}
-- TODO in 2021-01-04
-
-[Barrios](https://imslp.org/wiki/Category:Barrios_Mangor%C3%A9,_Agust%C3%ADn)
-(public domain),
-[Villa-Lobos](https://imslp.org/wiki/Category:Villa-Lobos,_Heitor)
-(public domain in 2030) and Garoto (public domain in 2026)
-
# Questions
-## DONE Why insist on having `.ogg` files, but not the same for video? {#question-8203fbce-be76-4cc3-a62a-15f91bf22051}
-- DONE in 2020-12-24
-- TODO in 2020-12-24
-
----
-
-Because of subtitle embedding.
-
# Resources
## For bitmat images compression:
@@ -352,17 +197,11 @@ Because of subtitle embedding.
Future-proof wesite (and also later software):
- commit directly most derived data, such as torrent files, ogg media, SVG from graphviz input, etc., so that the absence of those tools don't impede the generation of existing pages of the website.
-
-
FIXMEs:
- `date -d` isn't POSIX: simple replacement
- translation not coming from english (like pt -> fr)
-- po4a for markdown...
-- render slides
- shrink CSS
-
-
Mobile-friendly tables:
https://many.pw/
@@ -372,4 +211,3 @@ https://news.ycombinator.com/item?id=36739920
CSS from https://news.ycombinator.com/item?id=32972004
add link to archived versions
-fnback is the number over the arrow
diff --git a/deps.mk b/deps.mk
index 9ca83f5..43a93e9 100644
--- a/deps.mk
+++ b/deps.mk
@@ -1,97 +1,105 @@
pages.adoc = \
- src/content/about.adoc \
- src/content/index.adoc \
+ src/content/en/about.adoc \
+ src/content/en/index.adoc \
+ src/content/pt/sobre.adoc \
articles.adoc = \
- src/content/blog/2018/07/17/guix-nixos.adoc \
- src/content/blog/2018/08/01/npm-ci-reproducibility.adoc \
- src/content/blog/2018/12/21/ytdl-subs.adoc \
- src/content/blog/2019/06/02/nixos-stateless-workstation.adoc \
- src/content/blog/2020/08/10/guix-srht.adoc \
- src/content/blog/2020/08/31/database-i-wish-i-had.adoc \
- src/content/blog/2020/10/05/cargo2nix.adoc \
- src/content/blog/2020/10/05/swift2nix.adoc \
- src/content/blog/2020/10/19/feature-flags.adoc \
- src/content/blog/2020/10/20/wrong-interviewing.adoc \
- src/content/blog/2020/11/07/diy-bugs.adoc \
- src/content/blog/2020/11/08/paradigm-shift-review.adoc \
- src/content/blog/2020/11/12/database-parsers-trees.adoc \
- src/content/blog/2020/11/14/local-first-review.adoc \
- src/content/blog/2021/01/26/remembering-ann.adoc \
- src/content/blog/2021/02/17/fallible.adoc \
- src/content/blog/2021/04/29/relational-review.adoc \
- src/content/pastebins/2016/04/05/rpn.adoc \
- src/content/pastebins/2018/07/11/nix-pinning.adoc \
- src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc \
- src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc \
- src/content/pastebins/2018/07/13/guixbuilder.adoc \
- src/content/pastebins/2018/07/13/nix-strpad.adoc \
- src/content/pastebins/2018/07/25/nix-exps.adoc \
- src/content/pastebins/2018/07/25/nix-showdrv.adoc \
- src/content/pastebins/2019/06/08/inconsistent-hash.adoc \
- src/content/pastebins/2019/12/29/raku-tuple-type.adoc \
- src/content/pastebins/2020/01/04/guix-import-failure.adoc \
- src/content/pastebins/2020/02/14/guix-shebang.adoc \
- src/content/pastebins/2020/11/27/guix-build-local.adoc \
- src/content/pastebins/2020/12/15/guix-pack-fail.adoc \
- src/content/pastebins/2021/04/03/naive-slugify-js.adoc \
- src/content/pastebins/2021/06/08/reading-session-pt1.adoc \
- src/content/pastebins/2021/06/22/curl-wget.adoc \
- src/content/pastebins/2021/08/11/h1-spacing.adoc \
- src/content/pastebins/2021/09/02/sicp-3-19.adoc \
- src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc \
- src/content/pastebins/2022/07/14/git-cleanup.adoc \
- src/content/pastebins/2023/07/22/funcallable-amop.adoc \
- src/content/podcasts/2020/12/19/test-entry.adoc \
- src/content/screencasts/2021/02/07/autoqemu.adoc \
- src/content/tils/2020/08/12/filename-timestamp.adoc \
- src/content/tils/2020/08/13/code-jekyll.adoc \
- src/content/tils/2020/08/14/browse-git.adoc \
- src/content/tils/2020/08/16/git-search.adoc \
- src/content/tils/2020/08/28/grep-online.adoc \
- src/content/tils/2020/09/04/cli-email-fun-profit.adoc \
- src/content/tils/2020/09/05/oldschool-pr.adoc \
- src/content/tils/2020/10/11/search-git-history.adoc \
- src/content/tils/2020/11/08/find-broken-symlink.adoc \
- src/content/tils/2020/11/12/diy-nix-bash-ci.adoc \
- src/content/tils/2020/11/12/git-bisect-automation.adoc \
- src/content/tils/2020/11/12/useful-bashvars.adoc \
- src/content/tils/2020/11/14/gpodder-media.adoc \
- src/content/tils/2020/11/30/git-notes-ci.adoc \
- src/content/tils/2020/12/15/shellcheck-repo.adoc \
- src/content/tils/2020/12/29/svg.adoc \
- src/content/tils/2021/01/12/curl-awk-emails.adoc \
- src/content/tils/2021/01/17/posix-shebang.adoc \
- src/content/tils/2021/04/24/cl-generic-precedence.adoc \
- src/content/tils/2021/04/24/clojure-autocurry.adoc \
- src/content/tils/2021/04/24/scm-nif.adoc \
- src/content/tils/2021/07/23/git-tls-gpg.adoc \
- src/content/tils/2021/08/11/js-bigint-reviver.adoc \
+ src/content/en/blog/2018/07/17/guix-nixos.adoc \
+ src/content/en/blog/2018/08/01/npm-ci-reproducibility.adoc \
+ src/content/en/blog/2018/12/21/ytdl-subs.adoc \
+ src/content/en/blog/2019/06/02/nixos-stateless-workstation.adoc \
+ src/content/en/blog/2020/08/10/guix-srht.adoc \
+ src/content/en/blog/2020/08/31/database-i-wish-i-had.adoc \
+ src/content/en/blog/2020/10/05/cargo2nix.adoc \
+ src/content/en/blog/2020/10/05/swift2nix.adoc \
+ src/content/en/blog/2020/10/19/feature-flags.adoc \
+ src/content/en/blog/2020/10/20/wrong-interviewing.adoc \
+ src/content/en/blog/2020/11/07/diy-bugs.adoc \
+ src/content/en/blog/2020/11/08/paradigm-shift-review.adoc \
+ src/content/en/blog/2020/11/12/database-parsers-trees.adoc \
+ src/content/en/blog/2020/11/14/local-first-review.adoc \
+ src/content/en/blog/2021/01/26/remembering-ann.adoc \
+ src/content/en/blog/2021/02/17/fallible.adoc \
+ src/content/en/blog/2021/04/29/relational-review.adoc \
+ src/content/en/pastebin/2016/04/05/rpn.adoc \
+ src/content/en/pastebin/2018/07/11/nix-pinning.adoc \
+ src/content/en/pastebin/2018/07/13/guix-nixos-systemd.adoc \
+ src/content/en/pastebin/2018/07/13/guixbuilder-nixos.adoc \
+ src/content/en/pastebin/2018/07/13/guixbuilder.adoc \
+ src/content/en/pastebin/2018/07/13/nix-strpad.adoc \
+ src/content/en/pastebin/2018/07/25/nix-exps.adoc \
+ src/content/en/pastebin/2018/07/25/nix-showdrv.adoc \
+ src/content/en/pastebin/2019/06/08/inconsistent-hash.adoc \
+ src/content/en/pastebin/2019/12/29/raku-tuple-type.adoc \
+ src/content/en/pastebin/2020/01/04/guix-import-failure.adoc \
+ src/content/en/pastebin/2020/02/14/guix-shebang.adoc \
+ src/content/en/pastebin/2020/11/27/guix-build-local.adoc \
+ src/content/en/pastebin/2020/12/15/guix-pack-fail.adoc \
+ src/content/en/pastebin/2021/04/03/naive-slugify-js.adoc \
+ src/content/en/pastebin/2021/06/08/reading-session-pt1.adoc \
+ src/content/en/pastebin/2021/06/22/curl-wget.adoc \
+ src/content/en/pastebin/2021/08/11/h1-spacing.adoc \
+ src/content/en/pastebin/2021/09/02/sicp-3-19.adoc \
+ src/content/en/pastebin/2021/09/03/sicp-persistent-queue.adoc \
+ src/content/en/pastebin/2022/07/14/git-cleanup.adoc \
+ src/content/en/pastebin/2023/07/22/funcallable-amop.adoc \
+ src/content/en/podcast/2020/12/19/test-entry.adoc \
+ src/content/en/screencast/2021/02/07/autoqemu.adoc \
+ src/content/en/til/2020/08/12/filename-timestamp.adoc \
+ src/content/en/til/2020/08/13/code-jekyll.adoc \
+ src/content/en/til/2020/08/14/browse-git.adoc \
+ src/content/en/til/2020/08/16/git-search.adoc \
+ src/content/en/til/2020/08/28/grep-online.adoc \
+ src/content/en/til/2020/09/04/cli-email-fun-profit.adoc \
+ src/content/en/til/2020/09/05/oldschool-pr.adoc \
+ src/content/en/til/2020/10/11/search-git-history.adoc \
+ src/content/en/til/2020/11/08/find-broken-symlink.adoc \
+ src/content/en/til/2020/11/12/diy-nix-bash-ci.adoc \
+ src/content/en/til/2020/11/12/git-bisect-automation.adoc \
+ src/content/en/til/2020/11/12/useful-bashvars.adoc \
+ src/content/en/til/2020/11/14/gpodder-media.adoc \
+ src/content/en/til/2020/11/30/git-notes-ci.adoc \
+ src/content/en/til/2020/12/15/shellcheck-repo.adoc \
+ src/content/en/til/2020/12/29/svg.adoc \
+ src/content/en/til/2021/01/12/curl-awk-emails.adoc \
+ src/content/en/til/2021/01/17/posix-shebang.adoc \
+ src/content/en/til/2021/04/24/cl-generic-precedence.adoc \
+ src/content/en/til/2021/04/24/clojure-autocurry.adoc \
+ src/content/en/til/2021/04/24/scm-nif.adoc \
+ src/content/en/til/2021/07/23/git-tls-gpg.adoc \
+ src/content/en/til/2021/08/11/js-bigint-reviver.adoc \
+ src/content/pt/hea/2020/08/12/arquivo-datado.adoc \
+
+slides.adoc = \
+ src/content/en/slide/2020/10/19/feature-flags.adoc \
+ src/content/en/slide/2020/11/14/local-first-hype.adoc \
categories.adoc = \
- src/content/blog/categories.adoc \
- src/content/pastebins/categories.adoc \
- src/content/podcasts/categories.adoc \
- src/content/screencasts/categories.adoc \
- src/content/tils/categories.adoc \
+ src/content/en/blog/categories.adoc \
+ src/content/en/pastebin/categories.adoc \
+ src/content/en/podcast/categories.adoc \
+ src/content/en/screencast/categories.adoc \
+ src/content/en/til/categories.adoc \
+ src/content/pt/hea/categorias.adoc \
indexes.adoc = \
- src/content/blog/index.adoc \
- src/content/pastebins/index.adoc \
- src/content/podcasts/index.adoc \
- src/content/screencasts/index.adoc \
- src/content/tils/index.adoc \
+ src/content/en/blog/index.adoc \
+ src/content/en/pastebin/index.adoc \
+ src/content/en/podcast/index.adoc \
+ src/content/en/screencast/index.adoc \
+ src/content/en/til/index.adoc \
+ src/content/pt/hea/index.adoc \
feeds.xml = \
- src/content/blog/feed.xml \
- src/content/pastebins/feed.xml \
- src/content/podcasts/feed.xml \
- src/content/screencasts/feed.xml \
- src/content/tils/feed.xml \
+ src/content/en/blog/feed.xml \
+ src/content/en/pastebin/feed.xml \
+ src/content/en/podcast/feed.xml \
+ src/content/en/screencast/feed.xml \
+ src/content/en/til/feed.xml \
+ src/content/pt/hea/feed.xml \
images.svg = \
- src/content/img/atom/dark.svg \
- src/content/img/atom/light.svg \
+ src/content/img/atom.svg \
src/content/img/envelope/dark.svg \
src/content/img/envelope/light.svg \
src/content/img/favicon.svg \
@@ -102,971 +110,1073 @@ images.svg = \
src/content/img/logo/dark.svg \
src/content/img/logo/light.svg \
+sources.media = \
+ src/content/en/podcast/2020/12/19/test-entry.flac \
+ src/content/en/podcast/2020/12/19/test-entry.ogg \
+ src/content/en/screencast/2021/02/07/autoqemu.webm \
+
+sources.tarballs = \
+ src/content/en/blog/2020/10/05/cargo2nix-demo.tar.gz \
+ src/content/en/blog/2020/10/05/cargo2nix.tar.gz \
+ src/content/en/blog/2020/10/05/swift2nix-demo.tar.gz \
+ src/content/en/blog/2020/10/05/swift2nix.tar.gz \
+ src/content/en/blog/2021/02/17/fallible.tar.gz \
+ src/content/en/screencast/2021/02/07/autoqemu.tar.gz \
+
sources.extras = \
- src/content/blog/2020/10/05/cargo2nix-demo.tar.gz \
- src/content/blog/2020/10/05/cargo2nix.tar.gz \
- src/content/blog/2020/10/05/swift2nix-demo.tar.gz \
- src/content/blog/2020/10/05/swift2nix.tar.gz \
- src/content/blog/2021/02/17/fallible.tar.gz \
- src/content/podcasts/2020/12/19/test-entry.flac \
- src/content/screencasts/2021/02/07/autoqemu.tar.gz \
- src/content/screencasts/2021/02/07/autoqemu.webm \
+ src/content/en/blog/2020/10/05/cargo2nix-demo.tar.gz \
+ src/content/en/blog/2020/10/05/cargo2nix.tar.gz \
+ src/content/en/blog/2020/10/05/swift2nix-demo.tar.gz \
+ src/content/en/blog/2020/10/05/swift2nix.tar.gz \
+ src/content/en/blog/2021/02/17/fallible.tar.gz \
+ src/content/en/podcast/2020/12/19/test-entry.flac \
+ src/content/en/podcast/2020/12/19/test-entry.ogg \
+ src/content/en/screencast/2021/02/07/autoqemu.tar.gz \
+ src/content/en/screencast/2021/02/07/autoqemu.webm \
+
+sources.po = \
+ po/de.po \
+ po/en.po \
+ po/eo.po \
+ po/es.po \
+ po/euandre.org.pot \
+ po/fr.po \
+ po/pt.po \
+
+src/content/en/about.html.gz: src/content/en/about.html
+src/content/en/index.html.gz: src/content/en/index.html
+src/content/pt/sobre.html.gz: src/content/pt/sobre.html
+src/content/en/blog/2018/07/17/guix-nixos.html.gz: src/content/en/blog/2018/07/17/guix-nixos.html
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.html.gz: src/content/en/blog/2018/08/01/npm-ci-reproducibility.html
+src/content/en/blog/2018/12/21/ytdl-subs.html.gz: src/content/en/blog/2018/12/21/ytdl-subs.html
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.html.gz: src/content/en/blog/2019/06/02/nixos-stateless-workstation.html
+src/content/en/blog/2020/08/10/guix-srht.html.gz: src/content/en/blog/2020/08/10/guix-srht.html
+src/content/en/blog/2020/08/31/database-i-wish-i-had.html.gz: src/content/en/blog/2020/08/31/database-i-wish-i-had.html
+src/content/en/blog/2020/10/05/cargo2nix.html.gz: src/content/en/blog/2020/10/05/cargo2nix.html
+src/content/en/blog/2020/10/05/swift2nix.html.gz: src/content/en/blog/2020/10/05/swift2nix.html
+src/content/en/blog/2020/10/19/feature-flags.html.gz: src/content/en/blog/2020/10/19/feature-flags.html
+src/content/en/blog/2020/10/20/wrong-interviewing.html.gz: src/content/en/blog/2020/10/20/wrong-interviewing.html
+src/content/en/blog/2020/11/07/diy-bugs.html.gz: src/content/en/blog/2020/11/07/diy-bugs.html
+src/content/en/blog/2020/11/08/paradigm-shift-review.html.gz: src/content/en/blog/2020/11/08/paradigm-shift-review.html
+src/content/en/blog/2020/11/12/database-parsers-trees.html.gz: src/content/en/blog/2020/11/12/database-parsers-trees.html
+src/content/en/blog/2020/11/14/local-first-review.html.gz: src/content/en/blog/2020/11/14/local-first-review.html
+src/content/en/blog/2021/01/26/remembering-ann.html.gz: src/content/en/blog/2021/01/26/remembering-ann.html
+src/content/en/blog/2021/02/17/fallible.html.gz: src/content/en/blog/2021/02/17/fallible.html
+src/content/en/blog/2021/04/29/relational-review.html.gz: src/content/en/blog/2021/04/29/relational-review.html
+src/content/en/pastebin/2016/04/05/rpn.html.gz: src/content/en/pastebin/2016/04/05/rpn.html
+src/content/en/pastebin/2018/07/11/nix-pinning.html.gz: src/content/en/pastebin/2018/07/11/nix-pinning.html
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.html.gz: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.html
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.html.gz: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.html
+src/content/en/pastebin/2018/07/13/guixbuilder.html.gz: src/content/en/pastebin/2018/07/13/guixbuilder.html
+src/content/en/pastebin/2018/07/13/nix-strpad.html.gz: src/content/en/pastebin/2018/07/13/nix-strpad.html
+src/content/en/pastebin/2018/07/25/nix-exps.html.gz: src/content/en/pastebin/2018/07/25/nix-exps.html
+src/content/en/pastebin/2018/07/25/nix-showdrv.html.gz: src/content/en/pastebin/2018/07/25/nix-showdrv.html
+src/content/en/pastebin/2019/06/08/inconsistent-hash.html.gz: src/content/en/pastebin/2019/06/08/inconsistent-hash.html
+src/content/en/pastebin/2019/12/29/raku-tuple-type.html.gz: src/content/en/pastebin/2019/12/29/raku-tuple-type.html
+src/content/en/pastebin/2020/01/04/guix-import-failure.html.gz: src/content/en/pastebin/2020/01/04/guix-import-failure.html
+src/content/en/pastebin/2020/02/14/guix-shebang.html.gz: src/content/en/pastebin/2020/02/14/guix-shebang.html
+src/content/en/pastebin/2020/11/27/guix-build-local.html.gz: src/content/en/pastebin/2020/11/27/guix-build-local.html
+src/content/en/pastebin/2020/12/15/guix-pack-fail.html.gz: src/content/en/pastebin/2020/12/15/guix-pack-fail.html
+src/content/en/pastebin/2021/04/03/naive-slugify-js.html.gz: src/content/en/pastebin/2021/04/03/naive-slugify-js.html
+src/content/en/pastebin/2021/06/08/reading-session-pt1.html.gz: src/content/en/pastebin/2021/06/08/reading-session-pt1.html
+src/content/en/pastebin/2021/06/22/curl-wget.html.gz: src/content/en/pastebin/2021/06/22/curl-wget.html
+src/content/en/pastebin/2021/08/11/h1-spacing.html.gz: src/content/en/pastebin/2021/08/11/h1-spacing.html
+src/content/en/pastebin/2021/09/02/sicp-3-19.html.gz: src/content/en/pastebin/2021/09/02/sicp-3-19.html
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.html.gz: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.html
+src/content/en/pastebin/2022/07/14/git-cleanup.html.gz: src/content/en/pastebin/2022/07/14/git-cleanup.html
+src/content/en/pastebin/2023/07/22/funcallable-amop.html.gz: src/content/en/pastebin/2023/07/22/funcallable-amop.html
+src/content/en/podcast/2020/12/19/test-entry.html.gz: src/content/en/podcast/2020/12/19/test-entry.html
+src/content/en/screencast/2021/02/07/autoqemu.html.gz: src/content/en/screencast/2021/02/07/autoqemu.html
+src/content/en/til/2020/08/12/filename-timestamp.html.gz: src/content/en/til/2020/08/12/filename-timestamp.html
+src/content/en/til/2020/08/13/code-jekyll.html.gz: src/content/en/til/2020/08/13/code-jekyll.html
+src/content/en/til/2020/08/14/browse-git.html.gz: src/content/en/til/2020/08/14/browse-git.html
+src/content/en/til/2020/08/16/git-search.html.gz: src/content/en/til/2020/08/16/git-search.html
+src/content/en/til/2020/08/28/grep-online.html.gz: src/content/en/til/2020/08/28/grep-online.html
+src/content/en/til/2020/09/04/cli-email-fun-profit.html.gz: src/content/en/til/2020/09/04/cli-email-fun-profit.html
+src/content/en/til/2020/09/05/oldschool-pr.html.gz: src/content/en/til/2020/09/05/oldschool-pr.html
+src/content/en/til/2020/10/11/search-git-history.html.gz: src/content/en/til/2020/10/11/search-git-history.html
+src/content/en/til/2020/11/08/find-broken-symlink.html.gz: src/content/en/til/2020/11/08/find-broken-symlink.html
+src/content/en/til/2020/11/12/diy-nix-bash-ci.html.gz: src/content/en/til/2020/11/12/diy-nix-bash-ci.html
+src/content/en/til/2020/11/12/git-bisect-automation.html.gz: src/content/en/til/2020/11/12/git-bisect-automation.html
+src/content/en/til/2020/11/12/useful-bashvars.html.gz: src/content/en/til/2020/11/12/useful-bashvars.html
+src/content/en/til/2020/11/14/gpodder-media.html.gz: src/content/en/til/2020/11/14/gpodder-media.html
+src/content/en/til/2020/11/30/git-notes-ci.html.gz: src/content/en/til/2020/11/30/git-notes-ci.html
+src/content/en/til/2020/12/15/shellcheck-repo.html.gz: src/content/en/til/2020/12/15/shellcheck-repo.html
+src/content/en/til/2020/12/29/svg.html.gz: src/content/en/til/2020/12/29/svg.html
+src/content/en/til/2021/01/12/curl-awk-emails.html.gz: src/content/en/til/2021/01/12/curl-awk-emails.html
+src/content/en/til/2021/01/17/posix-shebang.html.gz: src/content/en/til/2021/01/17/posix-shebang.html
+src/content/en/til/2021/04/24/cl-generic-precedence.html.gz: src/content/en/til/2021/04/24/cl-generic-precedence.html
+src/content/en/til/2021/04/24/clojure-autocurry.html.gz: src/content/en/til/2021/04/24/clojure-autocurry.html
+src/content/en/til/2021/04/24/scm-nif.html.gz: src/content/en/til/2021/04/24/scm-nif.html
+src/content/en/til/2021/07/23/git-tls-gpg.html.gz: src/content/en/til/2021/07/23/git-tls-gpg.html
+src/content/en/til/2021/08/11/js-bigint-reviver.html.gz: src/content/en/til/2021/08/11/js-bigint-reviver.html
+src/content/pt/hea/2020/08/12/arquivo-datado.html.gz: src/content/pt/hea/2020/08/12/arquivo-datado.html
+src/content/en/blog/index.html.gz: src/content/en/blog/index.html
+src/content/en/pastebin/index.html.gz: src/content/en/pastebin/index.html
+src/content/en/podcast/index.html.gz: src/content/en/podcast/index.html
+src/content/en/screencast/index.html.gz: src/content/en/screencast/index.html
+src/content/en/til/index.html.gz: src/content/en/til/index.html
+src/content/pt/hea/index.html.gz: src/content/pt/hea/index.html
+src/content/en/blog/categories.html.gz: src/content/en/blog/categories.html
+src/content/en/pastebin/categories.html.gz: src/content/en/pastebin/categories.html
+src/content/en/podcast/categories.html.gz: src/content/en/podcast/categories.html
+src/content/en/screencast/categories.html.gz: src/content/en/screencast/categories.html
+src/content/en/til/categories.html.gz: src/content/en/til/categories.html
+src/content/pt/hea/categorias.html.gz: src/content/pt/hea/categorias.html
+src/content/en/about.snippets.gz: src/content/en/about.snippets
+src/content/en/index.snippets.gz: src/content/en/index.snippets
+src/content/pt/sobre.snippets.gz: src/content/pt/sobre.snippets
+src/content/en/blog/2018/07/17/guix-nixos.snippets.gz: src/content/en/blog/2018/07/17/guix-nixos.snippets
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.snippets.gz: src/content/en/blog/2018/08/01/npm-ci-reproducibility.snippets
+src/content/en/blog/2018/12/21/ytdl-subs.snippets.gz: src/content/en/blog/2018/12/21/ytdl-subs.snippets
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.snippets.gz: src/content/en/blog/2019/06/02/nixos-stateless-workstation.snippets
+src/content/en/blog/2020/08/10/guix-srht.snippets.gz: src/content/en/blog/2020/08/10/guix-srht.snippets
+src/content/en/blog/2020/08/31/database-i-wish-i-had.snippets.gz: src/content/en/blog/2020/08/31/database-i-wish-i-had.snippets
+src/content/en/blog/2020/10/05/cargo2nix.snippets.gz: src/content/en/blog/2020/10/05/cargo2nix.snippets
+src/content/en/blog/2020/10/05/swift2nix.snippets.gz: src/content/en/blog/2020/10/05/swift2nix.snippets
+src/content/en/blog/2020/10/19/feature-flags.snippets.gz: src/content/en/blog/2020/10/19/feature-flags.snippets
+src/content/en/blog/2020/10/20/wrong-interviewing.snippets.gz: src/content/en/blog/2020/10/20/wrong-interviewing.snippets
+src/content/en/blog/2020/11/07/diy-bugs.snippets.gz: src/content/en/blog/2020/11/07/diy-bugs.snippets
+src/content/en/blog/2020/11/08/paradigm-shift-review.snippets.gz: src/content/en/blog/2020/11/08/paradigm-shift-review.snippets
+src/content/en/blog/2020/11/12/database-parsers-trees.snippets.gz: src/content/en/blog/2020/11/12/database-parsers-trees.snippets
+src/content/en/blog/2020/11/14/local-first-review.snippets.gz: src/content/en/blog/2020/11/14/local-first-review.snippets
+src/content/en/blog/2021/01/26/remembering-ann.snippets.gz: src/content/en/blog/2021/01/26/remembering-ann.snippets
+src/content/en/blog/2021/02/17/fallible.snippets.gz: src/content/en/blog/2021/02/17/fallible.snippets
+src/content/en/blog/2021/04/29/relational-review.snippets.gz: src/content/en/blog/2021/04/29/relational-review.snippets
+src/content/en/pastebin/2016/04/05/rpn.snippets.gz: src/content/en/pastebin/2016/04/05/rpn.snippets
+src/content/en/pastebin/2018/07/11/nix-pinning.snippets.gz: src/content/en/pastebin/2018/07/11/nix-pinning.snippets
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.snippets.gz: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.snippets
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.snippets.gz: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.snippets
+src/content/en/pastebin/2018/07/13/guixbuilder.snippets.gz: src/content/en/pastebin/2018/07/13/guixbuilder.snippets
+src/content/en/pastebin/2018/07/13/nix-strpad.snippets.gz: src/content/en/pastebin/2018/07/13/nix-strpad.snippets
+src/content/en/pastebin/2018/07/25/nix-exps.snippets.gz: src/content/en/pastebin/2018/07/25/nix-exps.snippets
+src/content/en/pastebin/2018/07/25/nix-showdrv.snippets.gz: src/content/en/pastebin/2018/07/25/nix-showdrv.snippets
+src/content/en/pastebin/2019/06/08/inconsistent-hash.snippets.gz: src/content/en/pastebin/2019/06/08/inconsistent-hash.snippets
+src/content/en/pastebin/2019/12/29/raku-tuple-type.snippets.gz: src/content/en/pastebin/2019/12/29/raku-tuple-type.snippets
+src/content/en/pastebin/2020/01/04/guix-import-failure.snippets.gz: src/content/en/pastebin/2020/01/04/guix-import-failure.snippets
+src/content/en/pastebin/2020/02/14/guix-shebang.snippets.gz: src/content/en/pastebin/2020/02/14/guix-shebang.snippets
+src/content/en/pastebin/2020/11/27/guix-build-local.snippets.gz: src/content/en/pastebin/2020/11/27/guix-build-local.snippets
+src/content/en/pastebin/2020/12/15/guix-pack-fail.snippets.gz: src/content/en/pastebin/2020/12/15/guix-pack-fail.snippets
+src/content/en/pastebin/2021/04/03/naive-slugify-js.snippets.gz: src/content/en/pastebin/2021/04/03/naive-slugify-js.snippets
+src/content/en/pastebin/2021/06/08/reading-session-pt1.snippets.gz: src/content/en/pastebin/2021/06/08/reading-session-pt1.snippets
+src/content/en/pastebin/2021/06/22/curl-wget.snippets.gz: src/content/en/pastebin/2021/06/22/curl-wget.snippets
+src/content/en/pastebin/2021/08/11/h1-spacing.snippets.gz: src/content/en/pastebin/2021/08/11/h1-spacing.snippets
+src/content/en/pastebin/2021/09/02/sicp-3-19.snippets.gz: src/content/en/pastebin/2021/09/02/sicp-3-19.snippets
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.snippets.gz: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.snippets
+src/content/en/pastebin/2022/07/14/git-cleanup.snippets.gz: src/content/en/pastebin/2022/07/14/git-cleanup.snippets
+src/content/en/pastebin/2023/07/22/funcallable-amop.snippets.gz: src/content/en/pastebin/2023/07/22/funcallable-amop.snippets
+src/content/en/podcast/2020/12/19/test-entry.snippets.gz: src/content/en/podcast/2020/12/19/test-entry.snippets
+src/content/en/screencast/2021/02/07/autoqemu.snippets.gz: src/content/en/screencast/2021/02/07/autoqemu.snippets
+src/content/en/til/2020/08/12/filename-timestamp.snippets.gz: src/content/en/til/2020/08/12/filename-timestamp.snippets
+src/content/en/til/2020/08/13/code-jekyll.snippets.gz: src/content/en/til/2020/08/13/code-jekyll.snippets
+src/content/en/til/2020/08/14/browse-git.snippets.gz: src/content/en/til/2020/08/14/browse-git.snippets
+src/content/en/til/2020/08/16/git-search.snippets.gz: src/content/en/til/2020/08/16/git-search.snippets
+src/content/en/til/2020/08/28/grep-online.snippets.gz: src/content/en/til/2020/08/28/grep-online.snippets
+src/content/en/til/2020/09/04/cli-email-fun-profit.snippets.gz: src/content/en/til/2020/09/04/cli-email-fun-profit.snippets
+src/content/en/til/2020/09/05/oldschool-pr.snippets.gz: src/content/en/til/2020/09/05/oldschool-pr.snippets
+src/content/en/til/2020/10/11/search-git-history.snippets.gz: src/content/en/til/2020/10/11/search-git-history.snippets
+src/content/en/til/2020/11/08/find-broken-symlink.snippets.gz: src/content/en/til/2020/11/08/find-broken-symlink.snippets
+src/content/en/til/2020/11/12/diy-nix-bash-ci.snippets.gz: src/content/en/til/2020/11/12/diy-nix-bash-ci.snippets
+src/content/en/til/2020/11/12/git-bisect-automation.snippets.gz: src/content/en/til/2020/11/12/git-bisect-automation.snippets
+src/content/en/til/2020/11/12/useful-bashvars.snippets.gz: src/content/en/til/2020/11/12/useful-bashvars.snippets
+src/content/en/til/2020/11/14/gpodder-media.snippets.gz: src/content/en/til/2020/11/14/gpodder-media.snippets
+src/content/en/til/2020/11/30/git-notes-ci.snippets.gz: src/content/en/til/2020/11/30/git-notes-ci.snippets
+src/content/en/til/2020/12/15/shellcheck-repo.snippets.gz: src/content/en/til/2020/12/15/shellcheck-repo.snippets
+src/content/en/til/2020/12/29/svg.snippets.gz: src/content/en/til/2020/12/29/svg.snippets
+src/content/en/til/2021/01/12/curl-awk-emails.snippets.gz: src/content/en/til/2021/01/12/curl-awk-emails.snippets
+src/content/en/til/2021/01/17/posix-shebang.snippets.gz: src/content/en/til/2021/01/17/posix-shebang.snippets
+src/content/en/til/2021/04/24/cl-generic-precedence.snippets.gz: src/content/en/til/2021/04/24/cl-generic-precedence.snippets
+src/content/en/til/2021/04/24/clojure-autocurry.snippets.gz: src/content/en/til/2021/04/24/clojure-autocurry.snippets
+src/content/en/til/2021/04/24/scm-nif.snippets.gz: src/content/en/til/2021/04/24/scm-nif.snippets
+src/content/en/til/2021/07/23/git-tls-gpg.snippets.gz: src/content/en/til/2021/07/23/git-tls-gpg.snippets
+src/content/en/til/2021/08/11/js-bigint-reviver.snippets.gz: src/content/en/til/2021/08/11/js-bigint-reviver.snippets
+src/content/pt/hea/2020/08/12/arquivo-datado.snippets.gz: src/content/pt/hea/2020/08/12/arquivo-datado.snippets
+src/content/en/blog/index.snippets.gz: src/content/en/blog/index.snippets
+src/content/en/pastebin/index.snippets.gz: src/content/en/pastebin/index.snippets
+src/content/en/podcast/index.snippets.gz: src/content/en/podcast/index.snippets
+src/content/en/screencast/index.snippets.gz: src/content/en/screencast/index.snippets
+src/content/en/til/index.snippets.gz: src/content/en/til/index.snippets
+src/content/pt/hea/index.snippets.gz: src/content/pt/hea/index.snippets
+src/content/en/blog/categories.snippets.gz: src/content/en/blog/categories.snippets
+src/content/en/pastebin/categories.snippets.gz: src/content/en/pastebin/categories.snippets
+src/content/en/podcast/categories.snippets.gz: src/content/en/podcast/categories.snippets
+src/content/en/screencast/categories.snippets.gz: src/content/en/screencast/categories.snippets
+src/content/en/til/categories.snippets.gz: src/content/en/til/categories.snippets
+src/content/pt/hea/categorias.snippets.gz: src/content/pt/hea/categorias.snippets
+src/content/en/slide/2020/10/19/feature-flags.pdf.gz: src/content/en/slide/2020/10/19/feature-flags.pdf
+src/content/en/slide/2020/11/14/local-first-hype.pdf.gz: src/content/en/slide/2020/11/14/local-first-hype.pdf
+src/content/en/blog/feed.xml.gz: src/content/en/blog/feed.xml
+src/content/en/pastebin/feed.xml.gz: src/content/en/pastebin/feed.xml
+src/content/en/podcast/feed.xml.gz: src/content/en/podcast/feed.xml
+src/content/en/screencast/feed.xml.gz: src/content/en/screencast/feed.xml
+src/content/en/til/feed.xml.gz: src/content/en/til/feed.xml
+src/content/pt/hea/feed.xml.gz: src/content/pt/hea/feed.xml
+src/content/en/podcast/2020/12/19/test-entry.flac.torrent.gz: src/content/en/podcast/2020/12/19/test-entry.flac.torrent
+src/content/en/podcast/2020/12/19/test-entry.ogg.torrent.gz: src/content/en/podcast/2020/12/19/test-entry.ogg.torrent
+src/content/en/screencast/2021/02/07/autoqemu.webm.torrent.gz: src/content/en/screencast/2021/02/07/autoqemu.webm.torrent
+
+src/content/en/about.htmlbody src/content/en/about.snippets src/content/en/about.conf: src/content/en/about.adoc
+src/content/en/index.htmlbody src/content/en/index.snippets src/content/en/index.conf: src/content/en/index.adoc
+src/content/pt/sobre.htmlbody src/content/pt/sobre.snippets src/content/pt/sobre.conf: src/content/pt/sobre.adoc
+src/content/en/blog/2018/07/17/guix-nixos.htmlbody src/content/en/blog/2018/07/17/guix-nixos.snippets src/content/en/blog/2018/07/17/guix-nixos.conf: src/content/en/blog/2018/07/17/guix-nixos.adoc
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.htmlbody src/content/en/blog/2018/08/01/npm-ci-reproducibility.snippets src/content/en/blog/2018/08/01/npm-ci-reproducibility.conf: src/content/en/blog/2018/08/01/npm-ci-reproducibility.adoc
+src/content/en/blog/2018/12/21/ytdl-subs.htmlbody src/content/en/blog/2018/12/21/ytdl-subs.snippets src/content/en/blog/2018/12/21/ytdl-subs.conf: src/content/en/blog/2018/12/21/ytdl-subs.adoc
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.htmlbody src/content/en/blog/2019/06/02/nixos-stateless-workstation.snippets src/content/en/blog/2019/06/02/nixos-stateless-workstation.conf: src/content/en/blog/2019/06/02/nixos-stateless-workstation.adoc
+src/content/en/blog/2020/08/10/guix-srht.htmlbody src/content/en/blog/2020/08/10/guix-srht.snippets src/content/en/blog/2020/08/10/guix-srht.conf: src/content/en/blog/2020/08/10/guix-srht.adoc
+src/content/en/blog/2020/08/31/database-i-wish-i-had.htmlbody src/content/en/blog/2020/08/31/database-i-wish-i-had.snippets src/content/en/blog/2020/08/31/database-i-wish-i-had.conf: src/content/en/blog/2020/08/31/database-i-wish-i-had.adoc
+src/content/en/blog/2020/10/05/cargo2nix.htmlbody src/content/en/blog/2020/10/05/cargo2nix.snippets src/content/en/blog/2020/10/05/cargo2nix.conf: src/content/en/blog/2020/10/05/cargo2nix.adoc
+src/content/en/blog/2020/10/05/swift2nix.htmlbody src/content/en/blog/2020/10/05/swift2nix.snippets src/content/en/blog/2020/10/05/swift2nix.conf: src/content/en/blog/2020/10/05/swift2nix.adoc
+src/content/en/blog/2020/10/19/feature-flags.htmlbody src/content/en/blog/2020/10/19/feature-flags.snippets src/content/en/blog/2020/10/19/feature-flags.conf: src/content/en/blog/2020/10/19/feature-flags.adoc
+src/content/en/blog/2020/10/20/wrong-interviewing.htmlbody src/content/en/blog/2020/10/20/wrong-interviewing.snippets src/content/en/blog/2020/10/20/wrong-interviewing.conf: src/content/en/blog/2020/10/20/wrong-interviewing.adoc
+src/content/en/blog/2020/11/07/diy-bugs.htmlbody src/content/en/blog/2020/11/07/diy-bugs.snippets src/content/en/blog/2020/11/07/diy-bugs.conf: src/content/en/blog/2020/11/07/diy-bugs.adoc
+src/content/en/blog/2020/11/08/paradigm-shift-review.htmlbody src/content/en/blog/2020/11/08/paradigm-shift-review.snippets src/content/en/blog/2020/11/08/paradigm-shift-review.conf: src/content/en/blog/2020/11/08/paradigm-shift-review.adoc
+src/content/en/blog/2020/11/12/database-parsers-trees.htmlbody src/content/en/blog/2020/11/12/database-parsers-trees.snippets src/content/en/blog/2020/11/12/database-parsers-trees.conf: src/content/en/blog/2020/11/12/database-parsers-trees.adoc
+src/content/en/blog/2020/11/14/local-first-review.htmlbody src/content/en/blog/2020/11/14/local-first-review.snippets src/content/en/blog/2020/11/14/local-first-review.conf: src/content/en/blog/2020/11/14/local-first-review.adoc
+src/content/en/blog/2021/01/26/remembering-ann.htmlbody src/content/en/blog/2021/01/26/remembering-ann.snippets src/content/en/blog/2021/01/26/remembering-ann.conf: src/content/en/blog/2021/01/26/remembering-ann.adoc
+src/content/en/blog/2021/02/17/fallible.htmlbody src/content/en/blog/2021/02/17/fallible.snippets src/content/en/blog/2021/02/17/fallible.conf: src/content/en/blog/2021/02/17/fallible.adoc
+src/content/en/blog/2021/04/29/relational-review.htmlbody src/content/en/blog/2021/04/29/relational-review.snippets src/content/en/blog/2021/04/29/relational-review.conf: src/content/en/blog/2021/04/29/relational-review.adoc
+src/content/en/pastebin/2016/04/05/rpn.htmlbody src/content/en/pastebin/2016/04/05/rpn.snippets src/content/en/pastebin/2016/04/05/rpn.conf: src/content/en/pastebin/2016/04/05/rpn.adoc
+src/content/en/pastebin/2018/07/11/nix-pinning.htmlbody src/content/en/pastebin/2018/07/11/nix-pinning.snippets src/content/en/pastebin/2018/07/11/nix-pinning.conf: src/content/en/pastebin/2018/07/11/nix-pinning.adoc
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.htmlbody src/content/en/pastebin/2018/07/13/guix-nixos-systemd.snippets src/content/en/pastebin/2018/07/13/guix-nixos-systemd.conf: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.adoc
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.htmlbody src/content/en/pastebin/2018/07/13/guixbuilder-nixos.snippets src/content/en/pastebin/2018/07/13/guixbuilder-nixos.conf: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.adoc
+src/content/en/pastebin/2018/07/13/guixbuilder.htmlbody src/content/en/pastebin/2018/07/13/guixbuilder.snippets src/content/en/pastebin/2018/07/13/guixbuilder.conf: src/content/en/pastebin/2018/07/13/guixbuilder.adoc
+src/content/en/pastebin/2018/07/13/nix-strpad.htmlbody src/content/en/pastebin/2018/07/13/nix-strpad.snippets src/content/en/pastebin/2018/07/13/nix-strpad.conf: src/content/en/pastebin/2018/07/13/nix-strpad.adoc
+src/content/en/pastebin/2018/07/25/nix-exps.htmlbody src/content/en/pastebin/2018/07/25/nix-exps.snippets src/content/en/pastebin/2018/07/25/nix-exps.conf: src/content/en/pastebin/2018/07/25/nix-exps.adoc
+src/content/en/pastebin/2018/07/25/nix-showdrv.htmlbody src/content/en/pastebin/2018/07/25/nix-showdrv.snippets src/content/en/pastebin/2018/07/25/nix-showdrv.conf: src/content/en/pastebin/2018/07/25/nix-showdrv.adoc
+src/content/en/pastebin/2019/06/08/inconsistent-hash.htmlbody src/content/en/pastebin/2019/06/08/inconsistent-hash.snippets src/content/en/pastebin/2019/06/08/inconsistent-hash.conf: src/content/en/pastebin/2019/06/08/inconsistent-hash.adoc
+src/content/en/pastebin/2019/12/29/raku-tuple-type.htmlbody src/content/en/pastebin/2019/12/29/raku-tuple-type.snippets src/content/en/pastebin/2019/12/29/raku-tuple-type.conf: src/content/en/pastebin/2019/12/29/raku-tuple-type.adoc
+src/content/en/pastebin/2020/01/04/guix-import-failure.htmlbody src/content/en/pastebin/2020/01/04/guix-import-failure.snippets src/content/en/pastebin/2020/01/04/guix-import-failure.conf: src/content/en/pastebin/2020/01/04/guix-import-failure.adoc
+src/content/en/pastebin/2020/02/14/guix-shebang.htmlbody src/content/en/pastebin/2020/02/14/guix-shebang.snippets src/content/en/pastebin/2020/02/14/guix-shebang.conf: src/content/en/pastebin/2020/02/14/guix-shebang.adoc
+src/content/en/pastebin/2020/11/27/guix-build-local.htmlbody src/content/en/pastebin/2020/11/27/guix-build-local.snippets src/content/en/pastebin/2020/11/27/guix-build-local.conf: src/content/en/pastebin/2020/11/27/guix-build-local.adoc
+src/content/en/pastebin/2020/12/15/guix-pack-fail.htmlbody src/content/en/pastebin/2020/12/15/guix-pack-fail.snippets src/content/en/pastebin/2020/12/15/guix-pack-fail.conf: src/content/en/pastebin/2020/12/15/guix-pack-fail.adoc
+src/content/en/pastebin/2021/04/03/naive-slugify-js.htmlbody src/content/en/pastebin/2021/04/03/naive-slugify-js.snippets src/content/en/pastebin/2021/04/03/naive-slugify-js.conf: src/content/en/pastebin/2021/04/03/naive-slugify-js.adoc
+src/content/en/pastebin/2021/06/08/reading-session-pt1.htmlbody src/content/en/pastebin/2021/06/08/reading-session-pt1.snippets src/content/en/pastebin/2021/06/08/reading-session-pt1.conf: src/content/en/pastebin/2021/06/08/reading-session-pt1.adoc
+src/content/en/pastebin/2021/06/22/curl-wget.htmlbody src/content/en/pastebin/2021/06/22/curl-wget.snippets src/content/en/pastebin/2021/06/22/curl-wget.conf: src/content/en/pastebin/2021/06/22/curl-wget.adoc
+src/content/en/pastebin/2021/08/11/h1-spacing.htmlbody src/content/en/pastebin/2021/08/11/h1-spacing.snippets src/content/en/pastebin/2021/08/11/h1-spacing.conf: src/content/en/pastebin/2021/08/11/h1-spacing.adoc
+src/content/en/pastebin/2021/09/02/sicp-3-19.htmlbody src/content/en/pastebin/2021/09/02/sicp-3-19.snippets src/content/en/pastebin/2021/09/02/sicp-3-19.conf: src/content/en/pastebin/2021/09/02/sicp-3-19.adoc
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.htmlbody src/content/en/pastebin/2021/09/03/sicp-persistent-queue.snippets src/content/en/pastebin/2021/09/03/sicp-persistent-queue.conf: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.adoc
+src/content/en/pastebin/2022/07/14/git-cleanup.htmlbody src/content/en/pastebin/2022/07/14/git-cleanup.snippets src/content/en/pastebin/2022/07/14/git-cleanup.conf: src/content/en/pastebin/2022/07/14/git-cleanup.adoc
+src/content/en/pastebin/2023/07/22/funcallable-amop.htmlbody src/content/en/pastebin/2023/07/22/funcallable-amop.snippets src/content/en/pastebin/2023/07/22/funcallable-amop.conf: src/content/en/pastebin/2023/07/22/funcallable-amop.adoc
+src/content/en/podcast/2020/12/19/test-entry.htmlbody src/content/en/podcast/2020/12/19/test-entry.snippets src/content/en/podcast/2020/12/19/test-entry.conf: src/content/en/podcast/2020/12/19/test-entry.adoc
+src/content/en/screencast/2021/02/07/autoqemu.htmlbody src/content/en/screencast/2021/02/07/autoqemu.snippets src/content/en/screencast/2021/02/07/autoqemu.conf: src/content/en/screencast/2021/02/07/autoqemu.adoc
+src/content/en/til/2020/08/12/filename-timestamp.htmlbody src/content/en/til/2020/08/12/filename-timestamp.snippets src/content/en/til/2020/08/12/filename-timestamp.conf: src/content/en/til/2020/08/12/filename-timestamp.adoc
+src/content/en/til/2020/08/13/code-jekyll.htmlbody src/content/en/til/2020/08/13/code-jekyll.snippets src/content/en/til/2020/08/13/code-jekyll.conf: src/content/en/til/2020/08/13/code-jekyll.adoc
+src/content/en/til/2020/08/14/browse-git.htmlbody src/content/en/til/2020/08/14/browse-git.snippets src/content/en/til/2020/08/14/browse-git.conf: src/content/en/til/2020/08/14/browse-git.adoc
+src/content/en/til/2020/08/16/git-search.htmlbody src/content/en/til/2020/08/16/git-search.snippets src/content/en/til/2020/08/16/git-search.conf: src/content/en/til/2020/08/16/git-search.adoc
+src/content/en/til/2020/08/28/grep-online.htmlbody src/content/en/til/2020/08/28/grep-online.snippets src/content/en/til/2020/08/28/grep-online.conf: src/content/en/til/2020/08/28/grep-online.adoc
+src/content/en/til/2020/09/04/cli-email-fun-profit.htmlbody src/content/en/til/2020/09/04/cli-email-fun-profit.snippets src/content/en/til/2020/09/04/cli-email-fun-profit.conf: src/content/en/til/2020/09/04/cli-email-fun-profit.adoc
+src/content/en/til/2020/09/05/oldschool-pr.htmlbody src/content/en/til/2020/09/05/oldschool-pr.snippets src/content/en/til/2020/09/05/oldschool-pr.conf: src/content/en/til/2020/09/05/oldschool-pr.adoc
+src/content/en/til/2020/10/11/search-git-history.htmlbody src/content/en/til/2020/10/11/search-git-history.snippets src/content/en/til/2020/10/11/search-git-history.conf: src/content/en/til/2020/10/11/search-git-history.adoc
+src/content/en/til/2020/11/08/find-broken-symlink.htmlbody src/content/en/til/2020/11/08/find-broken-symlink.snippets src/content/en/til/2020/11/08/find-broken-symlink.conf: src/content/en/til/2020/11/08/find-broken-symlink.adoc
+src/content/en/til/2020/11/12/diy-nix-bash-ci.htmlbody src/content/en/til/2020/11/12/diy-nix-bash-ci.snippets src/content/en/til/2020/11/12/diy-nix-bash-ci.conf: src/content/en/til/2020/11/12/diy-nix-bash-ci.adoc
+src/content/en/til/2020/11/12/git-bisect-automation.htmlbody src/content/en/til/2020/11/12/git-bisect-automation.snippets src/content/en/til/2020/11/12/git-bisect-automation.conf: src/content/en/til/2020/11/12/git-bisect-automation.adoc
+src/content/en/til/2020/11/12/useful-bashvars.htmlbody src/content/en/til/2020/11/12/useful-bashvars.snippets src/content/en/til/2020/11/12/useful-bashvars.conf: src/content/en/til/2020/11/12/useful-bashvars.adoc
+src/content/en/til/2020/11/14/gpodder-media.htmlbody src/content/en/til/2020/11/14/gpodder-media.snippets src/content/en/til/2020/11/14/gpodder-media.conf: src/content/en/til/2020/11/14/gpodder-media.adoc
+src/content/en/til/2020/11/30/git-notes-ci.htmlbody src/content/en/til/2020/11/30/git-notes-ci.snippets src/content/en/til/2020/11/30/git-notes-ci.conf: src/content/en/til/2020/11/30/git-notes-ci.adoc
+src/content/en/til/2020/12/15/shellcheck-repo.htmlbody src/content/en/til/2020/12/15/shellcheck-repo.snippets src/content/en/til/2020/12/15/shellcheck-repo.conf: src/content/en/til/2020/12/15/shellcheck-repo.adoc
+src/content/en/til/2020/12/29/svg.htmlbody src/content/en/til/2020/12/29/svg.snippets src/content/en/til/2020/12/29/svg.conf: src/content/en/til/2020/12/29/svg.adoc
+src/content/en/til/2021/01/12/curl-awk-emails.htmlbody src/content/en/til/2021/01/12/curl-awk-emails.snippets src/content/en/til/2021/01/12/curl-awk-emails.conf: src/content/en/til/2021/01/12/curl-awk-emails.adoc
+src/content/en/til/2021/01/17/posix-shebang.htmlbody src/content/en/til/2021/01/17/posix-shebang.snippets src/content/en/til/2021/01/17/posix-shebang.conf: src/content/en/til/2021/01/17/posix-shebang.adoc
+src/content/en/til/2021/04/24/cl-generic-precedence.htmlbody src/content/en/til/2021/04/24/cl-generic-precedence.snippets src/content/en/til/2021/04/24/cl-generic-precedence.conf: src/content/en/til/2021/04/24/cl-generic-precedence.adoc
+src/content/en/til/2021/04/24/clojure-autocurry.htmlbody src/content/en/til/2021/04/24/clojure-autocurry.snippets src/content/en/til/2021/04/24/clojure-autocurry.conf: src/content/en/til/2021/04/24/clojure-autocurry.adoc
+src/content/en/til/2021/04/24/scm-nif.htmlbody src/content/en/til/2021/04/24/scm-nif.snippets src/content/en/til/2021/04/24/scm-nif.conf: src/content/en/til/2021/04/24/scm-nif.adoc
+src/content/en/til/2021/07/23/git-tls-gpg.htmlbody src/content/en/til/2021/07/23/git-tls-gpg.snippets src/content/en/til/2021/07/23/git-tls-gpg.conf: src/content/en/til/2021/07/23/git-tls-gpg.adoc
+src/content/en/til/2021/08/11/js-bigint-reviver.htmlbody src/content/en/til/2021/08/11/js-bigint-reviver.snippets src/content/en/til/2021/08/11/js-bigint-reviver.conf: src/content/en/til/2021/08/11/js-bigint-reviver.adoc
+src/content/pt/hea/2020/08/12/arquivo-datado.htmlbody src/content/pt/hea/2020/08/12/arquivo-datado.snippets src/content/pt/hea/2020/08/12/arquivo-datado.conf: src/content/pt/hea/2020/08/12/arquivo-datado.adoc
+src/content/en/blog/index.htmlbody src/content/en/blog/index.snippets src/content/en/blog/index.conf: src/content/en/blog/index.adoc
+src/content/en/pastebin/index.htmlbody src/content/en/pastebin/index.snippets src/content/en/pastebin/index.conf: src/content/en/pastebin/index.adoc
+src/content/en/podcast/index.htmlbody src/content/en/podcast/index.snippets src/content/en/podcast/index.conf: src/content/en/podcast/index.adoc
+src/content/en/screencast/index.htmlbody src/content/en/screencast/index.snippets src/content/en/screencast/index.conf: src/content/en/screencast/index.adoc
+src/content/en/til/index.htmlbody src/content/en/til/index.snippets src/content/en/til/index.conf: src/content/en/til/index.adoc
+src/content/pt/hea/index.htmlbody src/content/pt/hea/index.snippets src/content/pt/hea/index.conf: src/content/pt/hea/index.adoc
+src/content/en/blog/categories.htmlbody src/content/en/blog/categories.snippets src/content/en/blog/categories.conf: src/content/en/blog/categories.adoc
+src/content/en/pastebin/categories.htmlbody src/content/en/pastebin/categories.snippets src/content/en/pastebin/categories.conf: src/content/en/pastebin/categories.adoc
+src/content/en/podcast/categories.htmlbody src/content/en/podcast/categories.snippets src/content/en/podcast/categories.conf: src/content/en/podcast/categories.adoc
+src/content/en/screencast/categories.htmlbody src/content/en/screencast/categories.snippets src/content/en/screencast/categories.conf: src/content/en/screencast/categories.adoc
+src/content/en/til/categories.htmlbody src/content/en/til/categories.snippets src/content/en/til/categories.conf: src/content/en/til/categories.adoc
+src/content/pt/hea/categorias.htmlbody src/content/pt/hea/categorias.snippets src/content/pt/hea/categorias.conf: src/content/pt/hea/categorias.adoc
+src/content/en/about.html: src/content/en/about.conf src/content/en/about.htmlbody
+src/content/en/index.html: src/content/en/index.conf src/content/en/index.htmlbody
+src/content/pt/sobre.html: src/content/pt/sobre.conf src/content/pt/sobre.htmlbody
+src/content/en/blog/2018/07/17/guix-nixos.html: src/content/en/blog/2018/07/17/guix-nixos.conf src/content/en/blog/2018/07/17/guix-nixos.htmlbody
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.html: src/content/en/blog/2018/08/01/npm-ci-reproducibility.conf src/content/en/blog/2018/08/01/npm-ci-reproducibility.htmlbody
+src/content/en/blog/2018/12/21/ytdl-subs.html: src/content/en/blog/2018/12/21/ytdl-subs.conf src/content/en/blog/2018/12/21/ytdl-subs.htmlbody
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.html: src/content/en/blog/2019/06/02/nixos-stateless-workstation.conf src/content/en/blog/2019/06/02/nixos-stateless-workstation.htmlbody
+src/content/en/blog/2020/08/10/guix-srht.html: src/content/en/blog/2020/08/10/guix-srht.conf src/content/en/blog/2020/08/10/guix-srht.htmlbody
+src/content/en/blog/2020/08/31/database-i-wish-i-had.html: src/content/en/blog/2020/08/31/database-i-wish-i-had.conf src/content/en/blog/2020/08/31/database-i-wish-i-had.htmlbody
+src/content/en/blog/2020/10/05/cargo2nix.html: src/content/en/blog/2020/10/05/cargo2nix.conf src/content/en/blog/2020/10/05/cargo2nix.htmlbody
+src/content/en/blog/2020/10/05/swift2nix.html: src/content/en/blog/2020/10/05/swift2nix.conf src/content/en/blog/2020/10/05/swift2nix.htmlbody
+src/content/en/blog/2020/10/19/feature-flags.html: src/content/en/blog/2020/10/19/feature-flags.conf src/content/en/blog/2020/10/19/feature-flags.htmlbody
+src/content/en/blog/2020/10/20/wrong-interviewing.html: src/content/en/blog/2020/10/20/wrong-interviewing.conf src/content/en/blog/2020/10/20/wrong-interviewing.htmlbody
+src/content/en/blog/2020/11/07/diy-bugs.html: src/content/en/blog/2020/11/07/diy-bugs.conf src/content/en/blog/2020/11/07/diy-bugs.htmlbody
+src/content/en/blog/2020/11/08/paradigm-shift-review.html: src/content/en/blog/2020/11/08/paradigm-shift-review.conf src/content/en/blog/2020/11/08/paradigm-shift-review.htmlbody
+src/content/en/blog/2020/11/12/database-parsers-trees.html: src/content/en/blog/2020/11/12/database-parsers-trees.conf src/content/en/blog/2020/11/12/database-parsers-trees.htmlbody
+src/content/en/blog/2020/11/14/local-first-review.html: src/content/en/blog/2020/11/14/local-first-review.conf src/content/en/blog/2020/11/14/local-first-review.htmlbody
+src/content/en/blog/2021/01/26/remembering-ann.html: src/content/en/blog/2021/01/26/remembering-ann.conf src/content/en/blog/2021/01/26/remembering-ann.htmlbody
+src/content/en/blog/2021/02/17/fallible.html: src/content/en/blog/2021/02/17/fallible.conf src/content/en/blog/2021/02/17/fallible.htmlbody
+src/content/en/blog/2021/04/29/relational-review.html: src/content/en/blog/2021/04/29/relational-review.conf src/content/en/blog/2021/04/29/relational-review.htmlbody
+src/content/en/pastebin/2016/04/05/rpn.html: src/content/en/pastebin/2016/04/05/rpn.conf src/content/en/pastebin/2016/04/05/rpn.htmlbody
+src/content/en/pastebin/2018/07/11/nix-pinning.html: src/content/en/pastebin/2018/07/11/nix-pinning.conf src/content/en/pastebin/2018/07/11/nix-pinning.htmlbody
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.html: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.conf src/content/en/pastebin/2018/07/13/guix-nixos-systemd.htmlbody
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.html: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.conf src/content/en/pastebin/2018/07/13/guixbuilder-nixos.htmlbody
+src/content/en/pastebin/2018/07/13/guixbuilder.html: src/content/en/pastebin/2018/07/13/guixbuilder.conf src/content/en/pastebin/2018/07/13/guixbuilder.htmlbody
+src/content/en/pastebin/2018/07/13/nix-strpad.html: src/content/en/pastebin/2018/07/13/nix-strpad.conf src/content/en/pastebin/2018/07/13/nix-strpad.htmlbody
+src/content/en/pastebin/2018/07/25/nix-exps.html: src/content/en/pastebin/2018/07/25/nix-exps.conf src/content/en/pastebin/2018/07/25/nix-exps.htmlbody
+src/content/en/pastebin/2018/07/25/nix-showdrv.html: src/content/en/pastebin/2018/07/25/nix-showdrv.conf src/content/en/pastebin/2018/07/25/nix-showdrv.htmlbody
+src/content/en/pastebin/2019/06/08/inconsistent-hash.html: src/content/en/pastebin/2019/06/08/inconsistent-hash.conf src/content/en/pastebin/2019/06/08/inconsistent-hash.htmlbody
+src/content/en/pastebin/2019/12/29/raku-tuple-type.html: src/content/en/pastebin/2019/12/29/raku-tuple-type.conf src/content/en/pastebin/2019/12/29/raku-tuple-type.htmlbody
+src/content/en/pastebin/2020/01/04/guix-import-failure.html: src/content/en/pastebin/2020/01/04/guix-import-failure.conf src/content/en/pastebin/2020/01/04/guix-import-failure.htmlbody
+src/content/en/pastebin/2020/02/14/guix-shebang.html: src/content/en/pastebin/2020/02/14/guix-shebang.conf src/content/en/pastebin/2020/02/14/guix-shebang.htmlbody
+src/content/en/pastebin/2020/11/27/guix-build-local.html: src/content/en/pastebin/2020/11/27/guix-build-local.conf src/content/en/pastebin/2020/11/27/guix-build-local.htmlbody
+src/content/en/pastebin/2020/12/15/guix-pack-fail.html: src/content/en/pastebin/2020/12/15/guix-pack-fail.conf src/content/en/pastebin/2020/12/15/guix-pack-fail.htmlbody
+src/content/en/pastebin/2021/04/03/naive-slugify-js.html: src/content/en/pastebin/2021/04/03/naive-slugify-js.conf src/content/en/pastebin/2021/04/03/naive-slugify-js.htmlbody
+src/content/en/pastebin/2021/06/08/reading-session-pt1.html: src/content/en/pastebin/2021/06/08/reading-session-pt1.conf src/content/en/pastebin/2021/06/08/reading-session-pt1.htmlbody
+src/content/en/pastebin/2021/06/22/curl-wget.html: src/content/en/pastebin/2021/06/22/curl-wget.conf src/content/en/pastebin/2021/06/22/curl-wget.htmlbody
+src/content/en/pastebin/2021/08/11/h1-spacing.html: src/content/en/pastebin/2021/08/11/h1-spacing.conf src/content/en/pastebin/2021/08/11/h1-spacing.htmlbody
+src/content/en/pastebin/2021/09/02/sicp-3-19.html: src/content/en/pastebin/2021/09/02/sicp-3-19.conf src/content/en/pastebin/2021/09/02/sicp-3-19.htmlbody
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.html: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.conf src/content/en/pastebin/2021/09/03/sicp-persistent-queue.htmlbody
+src/content/en/pastebin/2022/07/14/git-cleanup.html: src/content/en/pastebin/2022/07/14/git-cleanup.conf src/content/en/pastebin/2022/07/14/git-cleanup.htmlbody
+src/content/en/pastebin/2023/07/22/funcallable-amop.html: src/content/en/pastebin/2023/07/22/funcallable-amop.conf src/content/en/pastebin/2023/07/22/funcallable-amop.htmlbody
+src/content/en/podcast/2020/12/19/test-entry.html: src/content/en/podcast/2020/12/19/test-entry.conf src/content/en/podcast/2020/12/19/test-entry.htmlbody
+src/content/en/screencast/2021/02/07/autoqemu.html: src/content/en/screencast/2021/02/07/autoqemu.conf src/content/en/screencast/2021/02/07/autoqemu.htmlbody
+src/content/en/til/2020/08/12/filename-timestamp.html: src/content/en/til/2020/08/12/filename-timestamp.conf src/content/en/til/2020/08/12/filename-timestamp.htmlbody
+src/content/en/til/2020/08/13/code-jekyll.html: src/content/en/til/2020/08/13/code-jekyll.conf src/content/en/til/2020/08/13/code-jekyll.htmlbody
+src/content/en/til/2020/08/14/browse-git.html: src/content/en/til/2020/08/14/browse-git.conf src/content/en/til/2020/08/14/browse-git.htmlbody
+src/content/en/til/2020/08/16/git-search.html: src/content/en/til/2020/08/16/git-search.conf src/content/en/til/2020/08/16/git-search.htmlbody
+src/content/en/til/2020/08/28/grep-online.html: src/content/en/til/2020/08/28/grep-online.conf src/content/en/til/2020/08/28/grep-online.htmlbody
+src/content/en/til/2020/09/04/cli-email-fun-profit.html: src/content/en/til/2020/09/04/cli-email-fun-profit.conf src/content/en/til/2020/09/04/cli-email-fun-profit.htmlbody
+src/content/en/til/2020/09/05/oldschool-pr.html: src/content/en/til/2020/09/05/oldschool-pr.conf src/content/en/til/2020/09/05/oldschool-pr.htmlbody
+src/content/en/til/2020/10/11/search-git-history.html: src/content/en/til/2020/10/11/search-git-history.conf src/content/en/til/2020/10/11/search-git-history.htmlbody
+src/content/en/til/2020/11/08/find-broken-symlink.html: src/content/en/til/2020/11/08/find-broken-symlink.conf src/content/en/til/2020/11/08/find-broken-symlink.htmlbody
+src/content/en/til/2020/11/12/diy-nix-bash-ci.html: src/content/en/til/2020/11/12/diy-nix-bash-ci.conf src/content/en/til/2020/11/12/diy-nix-bash-ci.htmlbody
+src/content/en/til/2020/11/12/git-bisect-automation.html: src/content/en/til/2020/11/12/git-bisect-automation.conf src/content/en/til/2020/11/12/git-bisect-automation.htmlbody
+src/content/en/til/2020/11/12/useful-bashvars.html: src/content/en/til/2020/11/12/useful-bashvars.conf src/content/en/til/2020/11/12/useful-bashvars.htmlbody
+src/content/en/til/2020/11/14/gpodder-media.html: src/content/en/til/2020/11/14/gpodder-media.conf src/content/en/til/2020/11/14/gpodder-media.htmlbody
+src/content/en/til/2020/11/30/git-notes-ci.html: src/content/en/til/2020/11/30/git-notes-ci.conf src/content/en/til/2020/11/30/git-notes-ci.htmlbody
+src/content/en/til/2020/12/15/shellcheck-repo.html: src/content/en/til/2020/12/15/shellcheck-repo.conf src/content/en/til/2020/12/15/shellcheck-repo.htmlbody
+src/content/en/til/2020/12/29/svg.html: src/content/en/til/2020/12/29/svg.conf src/content/en/til/2020/12/29/svg.htmlbody
+src/content/en/til/2021/01/12/curl-awk-emails.html: src/content/en/til/2021/01/12/curl-awk-emails.conf src/content/en/til/2021/01/12/curl-awk-emails.htmlbody
+src/content/en/til/2021/01/17/posix-shebang.html: src/content/en/til/2021/01/17/posix-shebang.conf src/content/en/til/2021/01/17/posix-shebang.htmlbody
+src/content/en/til/2021/04/24/cl-generic-precedence.html: src/content/en/til/2021/04/24/cl-generic-precedence.conf src/content/en/til/2021/04/24/cl-generic-precedence.htmlbody
+src/content/en/til/2021/04/24/clojure-autocurry.html: src/content/en/til/2021/04/24/clojure-autocurry.conf src/content/en/til/2021/04/24/clojure-autocurry.htmlbody
+src/content/en/til/2021/04/24/scm-nif.html: src/content/en/til/2021/04/24/scm-nif.conf src/content/en/til/2021/04/24/scm-nif.htmlbody
+src/content/en/til/2021/07/23/git-tls-gpg.html: src/content/en/til/2021/07/23/git-tls-gpg.conf src/content/en/til/2021/07/23/git-tls-gpg.htmlbody
+src/content/en/til/2021/08/11/js-bigint-reviver.html: src/content/en/til/2021/08/11/js-bigint-reviver.conf src/content/en/til/2021/08/11/js-bigint-reviver.htmlbody
+src/content/pt/hea/2020/08/12/arquivo-datado.html: src/content/pt/hea/2020/08/12/arquivo-datado.conf src/content/pt/hea/2020/08/12/arquivo-datado.htmlbody
+src/content/en/blog/index.html: src/content/en/blog/index.conf src/content/en/blog/index.htmlbody
+src/content/en/pastebin/index.html: src/content/en/pastebin/index.conf src/content/en/pastebin/index.htmlbody
+src/content/en/podcast/index.html: src/content/en/podcast/index.conf src/content/en/podcast/index.htmlbody
+src/content/en/screencast/index.html: src/content/en/screencast/index.conf src/content/en/screencast/index.htmlbody
+src/content/en/til/index.html: src/content/en/til/index.conf src/content/en/til/index.htmlbody
+src/content/pt/hea/index.html: src/content/pt/hea/index.conf src/content/pt/hea/index.htmlbody
+src/content/en/blog/categories.html: src/content/en/blog/categories.conf src/content/en/blog/categories.htmlbody
+src/content/en/pastebin/categories.html: src/content/en/pastebin/categories.conf src/content/en/pastebin/categories.htmlbody
+src/content/en/podcast/categories.html: src/content/en/podcast/categories.conf src/content/en/podcast/categories.htmlbody
+src/content/en/screencast/categories.html: src/content/en/screencast/categories.conf src/content/en/screencast/categories.htmlbody
+src/content/en/til/categories.html: src/content/en/til/categories.conf src/content/en/til/categories.htmlbody
+src/content/pt/hea/categorias.html: src/content/pt/hea/categorias.conf src/content/pt/hea/categorias.htmlbody
+
+src/content/en/about.updatedat-check: src/content/en/about.conf
+src/content/en/index.updatedat-check: src/content/en/index.conf
+src/content/pt/sobre.updatedat-check: src/content/pt/sobre.conf
+src/content/en/blog/2018/07/17/guix-nixos.updatedat-check: src/content/en/blog/2018/07/17/guix-nixos.conf
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.updatedat-check: src/content/en/blog/2018/08/01/npm-ci-reproducibility.conf
+src/content/en/blog/2018/12/21/ytdl-subs.updatedat-check: src/content/en/blog/2018/12/21/ytdl-subs.conf
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.updatedat-check: src/content/en/blog/2019/06/02/nixos-stateless-workstation.conf
+src/content/en/blog/2020/08/10/guix-srht.updatedat-check: src/content/en/blog/2020/08/10/guix-srht.conf
+src/content/en/blog/2020/08/31/database-i-wish-i-had.updatedat-check: src/content/en/blog/2020/08/31/database-i-wish-i-had.conf
+src/content/en/blog/2020/10/05/cargo2nix.updatedat-check: src/content/en/blog/2020/10/05/cargo2nix.conf
+src/content/en/blog/2020/10/05/swift2nix.updatedat-check: src/content/en/blog/2020/10/05/swift2nix.conf
+src/content/en/blog/2020/10/19/feature-flags.updatedat-check: src/content/en/blog/2020/10/19/feature-flags.conf
+src/content/en/blog/2020/10/20/wrong-interviewing.updatedat-check: src/content/en/blog/2020/10/20/wrong-interviewing.conf
+src/content/en/blog/2020/11/07/diy-bugs.updatedat-check: src/content/en/blog/2020/11/07/diy-bugs.conf
+src/content/en/blog/2020/11/08/paradigm-shift-review.updatedat-check: src/content/en/blog/2020/11/08/paradigm-shift-review.conf
+src/content/en/blog/2020/11/12/database-parsers-trees.updatedat-check: src/content/en/blog/2020/11/12/database-parsers-trees.conf
+src/content/en/blog/2020/11/14/local-first-review.updatedat-check: src/content/en/blog/2020/11/14/local-first-review.conf
+src/content/en/blog/2021/01/26/remembering-ann.updatedat-check: src/content/en/blog/2021/01/26/remembering-ann.conf
+src/content/en/blog/2021/02/17/fallible.updatedat-check: src/content/en/blog/2021/02/17/fallible.conf
+src/content/en/blog/2021/04/29/relational-review.updatedat-check: src/content/en/blog/2021/04/29/relational-review.conf
+src/content/en/pastebin/2016/04/05/rpn.updatedat-check: src/content/en/pastebin/2016/04/05/rpn.conf
+src/content/en/pastebin/2018/07/11/nix-pinning.updatedat-check: src/content/en/pastebin/2018/07/11/nix-pinning.conf
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.updatedat-check: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.conf
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.updatedat-check: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.conf
+src/content/en/pastebin/2018/07/13/guixbuilder.updatedat-check: src/content/en/pastebin/2018/07/13/guixbuilder.conf
+src/content/en/pastebin/2018/07/13/nix-strpad.updatedat-check: src/content/en/pastebin/2018/07/13/nix-strpad.conf
+src/content/en/pastebin/2018/07/25/nix-exps.updatedat-check: src/content/en/pastebin/2018/07/25/nix-exps.conf
+src/content/en/pastebin/2018/07/25/nix-showdrv.updatedat-check: src/content/en/pastebin/2018/07/25/nix-showdrv.conf
+src/content/en/pastebin/2019/06/08/inconsistent-hash.updatedat-check: src/content/en/pastebin/2019/06/08/inconsistent-hash.conf
+src/content/en/pastebin/2019/12/29/raku-tuple-type.updatedat-check: src/content/en/pastebin/2019/12/29/raku-tuple-type.conf
+src/content/en/pastebin/2020/01/04/guix-import-failure.updatedat-check: src/content/en/pastebin/2020/01/04/guix-import-failure.conf
+src/content/en/pastebin/2020/02/14/guix-shebang.updatedat-check: src/content/en/pastebin/2020/02/14/guix-shebang.conf
+src/content/en/pastebin/2020/11/27/guix-build-local.updatedat-check: src/content/en/pastebin/2020/11/27/guix-build-local.conf
+src/content/en/pastebin/2020/12/15/guix-pack-fail.updatedat-check: src/content/en/pastebin/2020/12/15/guix-pack-fail.conf
+src/content/en/pastebin/2021/04/03/naive-slugify-js.updatedat-check: src/content/en/pastebin/2021/04/03/naive-slugify-js.conf
+src/content/en/pastebin/2021/06/08/reading-session-pt1.updatedat-check: src/content/en/pastebin/2021/06/08/reading-session-pt1.conf
+src/content/en/pastebin/2021/06/22/curl-wget.updatedat-check: src/content/en/pastebin/2021/06/22/curl-wget.conf
+src/content/en/pastebin/2021/08/11/h1-spacing.updatedat-check: src/content/en/pastebin/2021/08/11/h1-spacing.conf
+src/content/en/pastebin/2021/09/02/sicp-3-19.updatedat-check: src/content/en/pastebin/2021/09/02/sicp-3-19.conf
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.updatedat-check: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.conf
+src/content/en/pastebin/2022/07/14/git-cleanup.updatedat-check: src/content/en/pastebin/2022/07/14/git-cleanup.conf
+src/content/en/pastebin/2023/07/22/funcallable-amop.updatedat-check: src/content/en/pastebin/2023/07/22/funcallable-amop.conf
+src/content/en/podcast/2020/12/19/test-entry.updatedat-check: src/content/en/podcast/2020/12/19/test-entry.conf
+src/content/en/screencast/2021/02/07/autoqemu.updatedat-check: src/content/en/screencast/2021/02/07/autoqemu.conf
+src/content/en/til/2020/08/12/filename-timestamp.updatedat-check: src/content/en/til/2020/08/12/filename-timestamp.conf
+src/content/en/til/2020/08/13/code-jekyll.updatedat-check: src/content/en/til/2020/08/13/code-jekyll.conf
+src/content/en/til/2020/08/14/browse-git.updatedat-check: src/content/en/til/2020/08/14/browse-git.conf
+src/content/en/til/2020/08/16/git-search.updatedat-check: src/content/en/til/2020/08/16/git-search.conf
+src/content/en/til/2020/08/28/grep-online.updatedat-check: src/content/en/til/2020/08/28/grep-online.conf
+src/content/en/til/2020/09/04/cli-email-fun-profit.updatedat-check: src/content/en/til/2020/09/04/cli-email-fun-profit.conf
+src/content/en/til/2020/09/05/oldschool-pr.updatedat-check: src/content/en/til/2020/09/05/oldschool-pr.conf
+src/content/en/til/2020/10/11/search-git-history.updatedat-check: src/content/en/til/2020/10/11/search-git-history.conf
+src/content/en/til/2020/11/08/find-broken-symlink.updatedat-check: src/content/en/til/2020/11/08/find-broken-symlink.conf
+src/content/en/til/2020/11/12/diy-nix-bash-ci.updatedat-check: src/content/en/til/2020/11/12/diy-nix-bash-ci.conf
+src/content/en/til/2020/11/12/git-bisect-automation.updatedat-check: src/content/en/til/2020/11/12/git-bisect-automation.conf
+src/content/en/til/2020/11/12/useful-bashvars.updatedat-check: src/content/en/til/2020/11/12/useful-bashvars.conf
+src/content/en/til/2020/11/14/gpodder-media.updatedat-check: src/content/en/til/2020/11/14/gpodder-media.conf
+src/content/en/til/2020/11/30/git-notes-ci.updatedat-check: src/content/en/til/2020/11/30/git-notes-ci.conf
+src/content/en/til/2020/12/15/shellcheck-repo.updatedat-check: src/content/en/til/2020/12/15/shellcheck-repo.conf
+src/content/en/til/2020/12/29/svg.updatedat-check: src/content/en/til/2020/12/29/svg.conf
+src/content/en/til/2021/01/12/curl-awk-emails.updatedat-check: src/content/en/til/2021/01/12/curl-awk-emails.conf
+src/content/en/til/2021/01/17/posix-shebang.updatedat-check: src/content/en/til/2021/01/17/posix-shebang.conf
+src/content/en/til/2021/04/24/cl-generic-precedence.updatedat-check: src/content/en/til/2021/04/24/cl-generic-precedence.conf
+src/content/en/til/2021/04/24/clojure-autocurry.updatedat-check: src/content/en/til/2021/04/24/clojure-autocurry.conf
+src/content/en/til/2021/04/24/scm-nif.updatedat-check: src/content/en/til/2021/04/24/scm-nif.conf
+src/content/en/til/2021/07/23/git-tls-gpg.updatedat-check: src/content/en/til/2021/07/23/git-tls-gpg.conf
+src/content/en/til/2021/08/11/js-bigint-reviver.updatedat-check: src/content/en/til/2021/08/11/js-bigint-reviver.conf
+src/content/pt/hea/2020/08/12/arquivo-datado.updatedat-check: src/content/pt/hea/2020/08/12/arquivo-datado.conf
+src/content/en/blog/index.updatedat-check: src/content/en/blog/index.conf
+src/content/en/pastebin/index.updatedat-check: src/content/en/pastebin/index.conf
+src/content/en/podcast/index.updatedat-check: src/content/en/podcast/index.conf
+src/content/en/screencast/index.updatedat-check: src/content/en/screencast/index.conf
+src/content/en/til/index.updatedat-check: src/content/en/til/index.conf
+src/content/pt/hea/index.updatedat-check: src/content/pt/hea/index.conf
+src/content/en/blog/categories.updatedat-check: src/content/en/blog/categories.conf
+src/content/en/pastebin/categories.updatedat-check: src/content/en/pastebin/categories.conf
+src/content/en/podcast/categories.updatedat-check: src/content/en/podcast/categories.conf
+src/content/en/screencast/categories.updatedat-check: src/content/en/screencast/categories.conf
+src/content/en/til/categories.updatedat-check: src/content/en/til/categories.conf
+src/content/pt/hea/categorias.updatedat-check: src/content/pt/hea/categorias.conf
+src/content/en/about.links-internal-check: src/content/en/about.links
+src/content/en/index.links-internal-check: src/content/en/index.links
+src/content/pt/sobre.links-internal-check: src/content/pt/sobre.links
+src/content/en/blog/2018/07/17/guix-nixos.links-internal-check: src/content/en/blog/2018/07/17/guix-nixos.links
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.links-internal-check: src/content/en/blog/2018/08/01/npm-ci-reproducibility.links
+src/content/en/blog/2018/12/21/ytdl-subs.links-internal-check: src/content/en/blog/2018/12/21/ytdl-subs.links
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.links-internal-check: src/content/en/blog/2019/06/02/nixos-stateless-workstation.links
+src/content/en/blog/2020/08/10/guix-srht.links-internal-check: src/content/en/blog/2020/08/10/guix-srht.links
+src/content/en/blog/2020/08/31/database-i-wish-i-had.links-internal-check: src/content/en/blog/2020/08/31/database-i-wish-i-had.links
+src/content/en/blog/2020/10/05/cargo2nix.links-internal-check: src/content/en/blog/2020/10/05/cargo2nix.links
+src/content/en/blog/2020/10/05/swift2nix.links-internal-check: src/content/en/blog/2020/10/05/swift2nix.links
+src/content/en/blog/2020/10/19/feature-flags.links-internal-check: src/content/en/blog/2020/10/19/feature-flags.links
+src/content/en/blog/2020/10/20/wrong-interviewing.links-internal-check: src/content/en/blog/2020/10/20/wrong-interviewing.links
+src/content/en/blog/2020/11/07/diy-bugs.links-internal-check: src/content/en/blog/2020/11/07/diy-bugs.links
+src/content/en/blog/2020/11/08/paradigm-shift-review.links-internal-check: src/content/en/blog/2020/11/08/paradigm-shift-review.links
+src/content/en/blog/2020/11/12/database-parsers-trees.links-internal-check: src/content/en/blog/2020/11/12/database-parsers-trees.links
+src/content/en/blog/2020/11/14/local-first-review.links-internal-check: src/content/en/blog/2020/11/14/local-first-review.links
+src/content/en/blog/2021/01/26/remembering-ann.links-internal-check: src/content/en/blog/2021/01/26/remembering-ann.links
+src/content/en/blog/2021/02/17/fallible.links-internal-check: src/content/en/blog/2021/02/17/fallible.links
+src/content/en/blog/2021/04/29/relational-review.links-internal-check: src/content/en/blog/2021/04/29/relational-review.links
+src/content/en/pastebin/2016/04/05/rpn.links-internal-check: src/content/en/pastebin/2016/04/05/rpn.links
+src/content/en/pastebin/2018/07/11/nix-pinning.links-internal-check: src/content/en/pastebin/2018/07/11/nix-pinning.links
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.links-internal-check: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.links
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.links-internal-check: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.links
+src/content/en/pastebin/2018/07/13/guixbuilder.links-internal-check: src/content/en/pastebin/2018/07/13/guixbuilder.links
+src/content/en/pastebin/2018/07/13/nix-strpad.links-internal-check: src/content/en/pastebin/2018/07/13/nix-strpad.links
+src/content/en/pastebin/2018/07/25/nix-exps.links-internal-check: src/content/en/pastebin/2018/07/25/nix-exps.links
+src/content/en/pastebin/2018/07/25/nix-showdrv.links-internal-check: src/content/en/pastebin/2018/07/25/nix-showdrv.links
+src/content/en/pastebin/2019/06/08/inconsistent-hash.links-internal-check: src/content/en/pastebin/2019/06/08/inconsistent-hash.links
+src/content/en/pastebin/2019/12/29/raku-tuple-type.links-internal-check: src/content/en/pastebin/2019/12/29/raku-tuple-type.links
+src/content/en/pastebin/2020/01/04/guix-import-failure.links-internal-check: src/content/en/pastebin/2020/01/04/guix-import-failure.links
+src/content/en/pastebin/2020/02/14/guix-shebang.links-internal-check: src/content/en/pastebin/2020/02/14/guix-shebang.links
+src/content/en/pastebin/2020/11/27/guix-build-local.links-internal-check: src/content/en/pastebin/2020/11/27/guix-build-local.links
+src/content/en/pastebin/2020/12/15/guix-pack-fail.links-internal-check: src/content/en/pastebin/2020/12/15/guix-pack-fail.links
+src/content/en/pastebin/2021/04/03/naive-slugify-js.links-internal-check: src/content/en/pastebin/2021/04/03/naive-slugify-js.links
+src/content/en/pastebin/2021/06/08/reading-session-pt1.links-internal-check: src/content/en/pastebin/2021/06/08/reading-session-pt1.links
+src/content/en/pastebin/2021/06/22/curl-wget.links-internal-check: src/content/en/pastebin/2021/06/22/curl-wget.links
+src/content/en/pastebin/2021/08/11/h1-spacing.links-internal-check: src/content/en/pastebin/2021/08/11/h1-spacing.links
+src/content/en/pastebin/2021/09/02/sicp-3-19.links-internal-check: src/content/en/pastebin/2021/09/02/sicp-3-19.links
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.links-internal-check: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.links
+src/content/en/pastebin/2022/07/14/git-cleanup.links-internal-check: src/content/en/pastebin/2022/07/14/git-cleanup.links
+src/content/en/pastebin/2023/07/22/funcallable-amop.links-internal-check: src/content/en/pastebin/2023/07/22/funcallable-amop.links
+src/content/en/podcast/2020/12/19/test-entry.links-internal-check: src/content/en/podcast/2020/12/19/test-entry.links
+src/content/en/screencast/2021/02/07/autoqemu.links-internal-check: src/content/en/screencast/2021/02/07/autoqemu.links
+src/content/en/til/2020/08/12/filename-timestamp.links-internal-check: src/content/en/til/2020/08/12/filename-timestamp.links
+src/content/en/til/2020/08/13/code-jekyll.links-internal-check: src/content/en/til/2020/08/13/code-jekyll.links
+src/content/en/til/2020/08/14/browse-git.links-internal-check: src/content/en/til/2020/08/14/browse-git.links
+src/content/en/til/2020/08/16/git-search.links-internal-check: src/content/en/til/2020/08/16/git-search.links
+src/content/en/til/2020/08/28/grep-online.links-internal-check: src/content/en/til/2020/08/28/grep-online.links
+src/content/en/til/2020/09/04/cli-email-fun-profit.links-internal-check: src/content/en/til/2020/09/04/cli-email-fun-profit.links
+src/content/en/til/2020/09/05/oldschool-pr.links-internal-check: src/content/en/til/2020/09/05/oldschool-pr.links
+src/content/en/til/2020/10/11/search-git-history.links-internal-check: src/content/en/til/2020/10/11/search-git-history.links
+src/content/en/til/2020/11/08/find-broken-symlink.links-internal-check: src/content/en/til/2020/11/08/find-broken-symlink.links
+src/content/en/til/2020/11/12/diy-nix-bash-ci.links-internal-check: src/content/en/til/2020/11/12/diy-nix-bash-ci.links
+src/content/en/til/2020/11/12/git-bisect-automation.links-internal-check: src/content/en/til/2020/11/12/git-bisect-automation.links
+src/content/en/til/2020/11/12/useful-bashvars.links-internal-check: src/content/en/til/2020/11/12/useful-bashvars.links
+src/content/en/til/2020/11/14/gpodder-media.links-internal-check: src/content/en/til/2020/11/14/gpodder-media.links
+src/content/en/til/2020/11/30/git-notes-ci.links-internal-check: src/content/en/til/2020/11/30/git-notes-ci.links
+src/content/en/til/2020/12/15/shellcheck-repo.links-internal-check: src/content/en/til/2020/12/15/shellcheck-repo.links
+src/content/en/til/2020/12/29/svg.links-internal-check: src/content/en/til/2020/12/29/svg.links
+src/content/en/til/2021/01/12/curl-awk-emails.links-internal-check: src/content/en/til/2021/01/12/curl-awk-emails.links
+src/content/en/til/2021/01/17/posix-shebang.links-internal-check: src/content/en/til/2021/01/17/posix-shebang.links
+src/content/en/til/2021/04/24/cl-generic-precedence.links-internal-check: src/content/en/til/2021/04/24/cl-generic-precedence.links
+src/content/en/til/2021/04/24/clojure-autocurry.links-internal-check: src/content/en/til/2021/04/24/clojure-autocurry.links
+src/content/en/til/2021/04/24/scm-nif.links-internal-check: src/content/en/til/2021/04/24/scm-nif.links
+src/content/en/til/2021/07/23/git-tls-gpg.links-internal-check: src/content/en/til/2021/07/23/git-tls-gpg.links
+src/content/en/til/2021/08/11/js-bigint-reviver.links-internal-check: src/content/en/til/2021/08/11/js-bigint-reviver.links
+src/content/pt/hea/2020/08/12/arquivo-datado.links-internal-check: src/content/pt/hea/2020/08/12/arquivo-datado.links
+src/content/en/blog/index.links-internal-check: src/content/en/blog/index.links
+src/content/en/pastebin/index.links-internal-check: src/content/en/pastebin/index.links
+src/content/en/podcast/index.links-internal-check: src/content/en/podcast/index.links
+src/content/en/screencast/index.links-internal-check: src/content/en/screencast/index.links
+src/content/en/til/index.links-internal-check: src/content/en/til/index.links
+src/content/pt/hea/index.links-internal-check: src/content/pt/hea/index.links
+src/content/en/blog/categories.links-internal-check: src/content/en/blog/categories.links
+src/content/en/pastebin/categories.links-internal-check: src/content/en/pastebin/categories.links
+src/content/en/podcast/categories.links-internal-check: src/content/en/podcast/categories.links
+src/content/en/screencast/categories.links-internal-check: src/content/en/screencast/categories.links
+src/content/en/til/categories.links-internal-check: src/content/en/til/categories.links
+src/content/pt/hea/categorias.links-internal-check: src/content/pt/hea/categorias.links
+src/content/en/about.caslinks: src/content/en/about.links
+src/content/en/index.caslinks: src/content/en/index.links
+src/content/pt/sobre.caslinks: src/content/pt/sobre.links
+src/content/en/blog/2018/07/17/guix-nixos.caslinks: src/content/en/blog/2018/07/17/guix-nixos.links
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.caslinks: src/content/en/blog/2018/08/01/npm-ci-reproducibility.links
+src/content/en/blog/2018/12/21/ytdl-subs.caslinks: src/content/en/blog/2018/12/21/ytdl-subs.links
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.caslinks: src/content/en/blog/2019/06/02/nixos-stateless-workstation.links
+src/content/en/blog/2020/08/10/guix-srht.caslinks: src/content/en/blog/2020/08/10/guix-srht.links
+src/content/en/blog/2020/08/31/database-i-wish-i-had.caslinks: src/content/en/blog/2020/08/31/database-i-wish-i-had.links
+src/content/en/blog/2020/10/05/cargo2nix.caslinks: src/content/en/blog/2020/10/05/cargo2nix.links
+src/content/en/blog/2020/10/05/swift2nix.caslinks: src/content/en/blog/2020/10/05/swift2nix.links
+src/content/en/blog/2020/10/19/feature-flags.caslinks: src/content/en/blog/2020/10/19/feature-flags.links
+src/content/en/blog/2020/10/20/wrong-interviewing.caslinks: src/content/en/blog/2020/10/20/wrong-interviewing.links
+src/content/en/blog/2020/11/07/diy-bugs.caslinks: src/content/en/blog/2020/11/07/diy-bugs.links
+src/content/en/blog/2020/11/08/paradigm-shift-review.caslinks: src/content/en/blog/2020/11/08/paradigm-shift-review.links
+src/content/en/blog/2020/11/12/database-parsers-trees.caslinks: src/content/en/blog/2020/11/12/database-parsers-trees.links
+src/content/en/blog/2020/11/14/local-first-review.caslinks: src/content/en/blog/2020/11/14/local-first-review.links
+src/content/en/blog/2021/01/26/remembering-ann.caslinks: src/content/en/blog/2021/01/26/remembering-ann.links
+src/content/en/blog/2021/02/17/fallible.caslinks: src/content/en/blog/2021/02/17/fallible.links
+src/content/en/blog/2021/04/29/relational-review.caslinks: src/content/en/blog/2021/04/29/relational-review.links
+src/content/en/pastebin/2016/04/05/rpn.caslinks: src/content/en/pastebin/2016/04/05/rpn.links
+src/content/en/pastebin/2018/07/11/nix-pinning.caslinks: src/content/en/pastebin/2018/07/11/nix-pinning.links
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.caslinks: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.links
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.caslinks: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.links
+src/content/en/pastebin/2018/07/13/guixbuilder.caslinks: src/content/en/pastebin/2018/07/13/guixbuilder.links
+src/content/en/pastebin/2018/07/13/nix-strpad.caslinks: src/content/en/pastebin/2018/07/13/nix-strpad.links
+src/content/en/pastebin/2018/07/25/nix-exps.caslinks: src/content/en/pastebin/2018/07/25/nix-exps.links
+src/content/en/pastebin/2018/07/25/nix-showdrv.caslinks: src/content/en/pastebin/2018/07/25/nix-showdrv.links
+src/content/en/pastebin/2019/06/08/inconsistent-hash.caslinks: src/content/en/pastebin/2019/06/08/inconsistent-hash.links
+src/content/en/pastebin/2019/12/29/raku-tuple-type.caslinks: src/content/en/pastebin/2019/12/29/raku-tuple-type.links
+src/content/en/pastebin/2020/01/04/guix-import-failure.caslinks: src/content/en/pastebin/2020/01/04/guix-import-failure.links
+src/content/en/pastebin/2020/02/14/guix-shebang.caslinks: src/content/en/pastebin/2020/02/14/guix-shebang.links
+src/content/en/pastebin/2020/11/27/guix-build-local.caslinks: src/content/en/pastebin/2020/11/27/guix-build-local.links
+src/content/en/pastebin/2020/12/15/guix-pack-fail.caslinks: src/content/en/pastebin/2020/12/15/guix-pack-fail.links
+src/content/en/pastebin/2021/04/03/naive-slugify-js.caslinks: src/content/en/pastebin/2021/04/03/naive-slugify-js.links
+src/content/en/pastebin/2021/06/08/reading-session-pt1.caslinks: src/content/en/pastebin/2021/06/08/reading-session-pt1.links
+src/content/en/pastebin/2021/06/22/curl-wget.caslinks: src/content/en/pastebin/2021/06/22/curl-wget.links
+src/content/en/pastebin/2021/08/11/h1-spacing.caslinks: src/content/en/pastebin/2021/08/11/h1-spacing.links
+src/content/en/pastebin/2021/09/02/sicp-3-19.caslinks: src/content/en/pastebin/2021/09/02/sicp-3-19.links
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.caslinks: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.links
+src/content/en/pastebin/2022/07/14/git-cleanup.caslinks: src/content/en/pastebin/2022/07/14/git-cleanup.links
+src/content/en/pastebin/2023/07/22/funcallable-amop.caslinks: src/content/en/pastebin/2023/07/22/funcallable-amop.links
+src/content/en/podcast/2020/12/19/test-entry.caslinks: src/content/en/podcast/2020/12/19/test-entry.links
+src/content/en/screencast/2021/02/07/autoqemu.caslinks: src/content/en/screencast/2021/02/07/autoqemu.links
+src/content/en/til/2020/08/12/filename-timestamp.caslinks: src/content/en/til/2020/08/12/filename-timestamp.links
+src/content/en/til/2020/08/13/code-jekyll.caslinks: src/content/en/til/2020/08/13/code-jekyll.links
+src/content/en/til/2020/08/14/browse-git.caslinks: src/content/en/til/2020/08/14/browse-git.links
+src/content/en/til/2020/08/16/git-search.caslinks: src/content/en/til/2020/08/16/git-search.links
+src/content/en/til/2020/08/28/grep-online.caslinks: src/content/en/til/2020/08/28/grep-online.links
+src/content/en/til/2020/09/04/cli-email-fun-profit.caslinks: src/content/en/til/2020/09/04/cli-email-fun-profit.links
+src/content/en/til/2020/09/05/oldschool-pr.caslinks: src/content/en/til/2020/09/05/oldschool-pr.links
+src/content/en/til/2020/10/11/search-git-history.caslinks: src/content/en/til/2020/10/11/search-git-history.links
+src/content/en/til/2020/11/08/find-broken-symlink.caslinks: src/content/en/til/2020/11/08/find-broken-symlink.links
+src/content/en/til/2020/11/12/diy-nix-bash-ci.caslinks: src/content/en/til/2020/11/12/diy-nix-bash-ci.links
+src/content/en/til/2020/11/12/git-bisect-automation.caslinks: src/content/en/til/2020/11/12/git-bisect-automation.links
+src/content/en/til/2020/11/12/useful-bashvars.caslinks: src/content/en/til/2020/11/12/useful-bashvars.links
+src/content/en/til/2020/11/14/gpodder-media.caslinks: src/content/en/til/2020/11/14/gpodder-media.links
+src/content/en/til/2020/11/30/git-notes-ci.caslinks: src/content/en/til/2020/11/30/git-notes-ci.links
+src/content/en/til/2020/12/15/shellcheck-repo.caslinks: src/content/en/til/2020/12/15/shellcheck-repo.links
+src/content/en/til/2020/12/29/svg.caslinks: src/content/en/til/2020/12/29/svg.links
+src/content/en/til/2021/01/12/curl-awk-emails.caslinks: src/content/en/til/2021/01/12/curl-awk-emails.links
+src/content/en/til/2021/01/17/posix-shebang.caslinks: src/content/en/til/2021/01/17/posix-shebang.links
+src/content/en/til/2021/04/24/cl-generic-precedence.caslinks: src/content/en/til/2021/04/24/cl-generic-precedence.links
+src/content/en/til/2021/04/24/clojure-autocurry.caslinks: src/content/en/til/2021/04/24/clojure-autocurry.links
+src/content/en/til/2021/04/24/scm-nif.caslinks: src/content/en/til/2021/04/24/scm-nif.links
+src/content/en/til/2021/07/23/git-tls-gpg.caslinks: src/content/en/til/2021/07/23/git-tls-gpg.links
+src/content/en/til/2021/08/11/js-bigint-reviver.caslinks: src/content/en/til/2021/08/11/js-bigint-reviver.links
+src/content/pt/hea/2020/08/12/arquivo-datado.caslinks: src/content/pt/hea/2020/08/12/arquivo-datado.links
+src/content/en/blog/index.caslinks: src/content/en/blog/index.links
+src/content/en/pastebin/index.caslinks: src/content/en/pastebin/index.links
+src/content/en/podcast/index.caslinks: src/content/en/podcast/index.links
+src/content/en/screencast/index.caslinks: src/content/en/screencast/index.links
+src/content/en/til/index.caslinks: src/content/en/til/index.links
+src/content/pt/hea/index.caslinks: src/content/pt/hea/index.links
+src/content/en/blog/categories.caslinks: src/content/en/blog/categories.links
+src/content/en/pastebin/categories.caslinks: src/content/en/pastebin/categories.links
+src/content/en/podcast/categories.caslinks: src/content/en/podcast/categories.links
+src/content/en/screencast/categories.caslinks: src/content/en/screencast/categories.links
+src/content/en/til/categories.caslinks: src/content/en/til/categories.links
+src/content/pt/hea/categorias.caslinks: src/content/pt/hea/categorias.links
+
+src/content/en/blog/2018/07/17/guix-nixos.feedentry: src/content/en/blog/2018/07/17/guix-nixos.conf src/content/en/blog/2018/07/17/guix-nixos.htmlbody
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.feedentry: src/content/en/blog/2018/08/01/npm-ci-reproducibility.conf src/content/en/blog/2018/08/01/npm-ci-reproducibility.htmlbody
+src/content/en/blog/2018/12/21/ytdl-subs.feedentry: src/content/en/blog/2018/12/21/ytdl-subs.conf src/content/en/blog/2018/12/21/ytdl-subs.htmlbody
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.feedentry: src/content/en/blog/2019/06/02/nixos-stateless-workstation.conf src/content/en/blog/2019/06/02/nixos-stateless-workstation.htmlbody
+src/content/en/blog/2020/08/10/guix-srht.feedentry: src/content/en/blog/2020/08/10/guix-srht.conf src/content/en/blog/2020/08/10/guix-srht.htmlbody
+src/content/en/blog/2020/08/31/database-i-wish-i-had.feedentry: src/content/en/blog/2020/08/31/database-i-wish-i-had.conf src/content/en/blog/2020/08/31/database-i-wish-i-had.htmlbody
+src/content/en/blog/2020/10/05/cargo2nix.feedentry: src/content/en/blog/2020/10/05/cargo2nix.conf src/content/en/blog/2020/10/05/cargo2nix.htmlbody
+src/content/en/blog/2020/10/05/swift2nix.feedentry: src/content/en/blog/2020/10/05/swift2nix.conf src/content/en/blog/2020/10/05/swift2nix.htmlbody
+src/content/en/blog/2020/10/19/feature-flags.feedentry: src/content/en/blog/2020/10/19/feature-flags.conf src/content/en/blog/2020/10/19/feature-flags.htmlbody
+src/content/en/blog/2020/10/20/wrong-interviewing.feedentry: src/content/en/blog/2020/10/20/wrong-interviewing.conf src/content/en/blog/2020/10/20/wrong-interviewing.htmlbody
+src/content/en/blog/2020/11/07/diy-bugs.feedentry: src/content/en/blog/2020/11/07/diy-bugs.conf src/content/en/blog/2020/11/07/diy-bugs.htmlbody
+src/content/en/blog/2020/11/08/paradigm-shift-review.feedentry: src/content/en/blog/2020/11/08/paradigm-shift-review.conf src/content/en/blog/2020/11/08/paradigm-shift-review.htmlbody
+src/content/en/blog/2020/11/12/database-parsers-trees.feedentry: src/content/en/blog/2020/11/12/database-parsers-trees.conf src/content/en/blog/2020/11/12/database-parsers-trees.htmlbody
+src/content/en/blog/2020/11/14/local-first-review.feedentry: src/content/en/blog/2020/11/14/local-first-review.conf src/content/en/blog/2020/11/14/local-first-review.htmlbody
+src/content/en/blog/2021/01/26/remembering-ann.feedentry: src/content/en/blog/2021/01/26/remembering-ann.conf src/content/en/blog/2021/01/26/remembering-ann.htmlbody
+src/content/en/blog/2021/02/17/fallible.feedentry: src/content/en/blog/2021/02/17/fallible.conf src/content/en/blog/2021/02/17/fallible.htmlbody
+src/content/en/blog/2021/04/29/relational-review.feedentry: src/content/en/blog/2021/04/29/relational-review.conf src/content/en/blog/2021/04/29/relational-review.htmlbody
+src/content/en/pastebin/2016/04/05/rpn.feedentry: src/content/en/pastebin/2016/04/05/rpn.conf src/content/en/pastebin/2016/04/05/rpn.htmlbody
+src/content/en/pastebin/2018/07/11/nix-pinning.feedentry: src/content/en/pastebin/2018/07/11/nix-pinning.conf src/content/en/pastebin/2018/07/11/nix-pinning.htmlbody
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.feedentry: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.conf src/content/en/pastebin/2018/07/13/guix-nixos-systemd.htmlbody
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.feedentry: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.conf src/content/en/pastebin/2018/07/13/guixbuilder-nixos.htmlbody
+src/content/en/pastebin/2018/07/13/guixbuilder.feedentry: src/content/en/pastebin/2018/07/13/guixbuilder.conf src/content/en/pastebin/2018/07/13/guixbuilder.htmlbody
+src/content/en/pastebin/2018/07/13/nix-strpad.feedentry: src/content/en/pastebin/2018/07/13/nix-strpad.conf src/content/en/pastebin/2018/07/13/nix-strpad.htmlbody
+src/content/en/pastebin/2018/07/25/nix-exps.feedentry: src/content/en/pastebin/2018/07/25/nix-exps.conf src/content/en/pastebin/2018/07/25/nix-exps.htmlbody
+src/content/en/pastebin/2018/07/25/nix-showdrv.feedentry: src/content/en/pastebin/2018/07/25/nix-showdrv.conf src/content/en/pastebin/2018/07/25/nix-showdrv.htmlbody
+src/content/en/pastebin/2019/06/08/inconsistent-hash.feedentry: src/content/en/pastebin/2019/06/08/inconsistent-hash.conf src/content/en/pastebin/2019/06/08/inconsistent-hash.htmlbody
+src/content/en/pastebin/2019/12/29/raku-tuple-type.feedentry: src/content/en/pastebin/2019/12/29/raku-tuple-type.conf src/content/en/pastebin/2019/12/29/raku-tuple-type.htmlbody
+src/content/en/pastebin/2020/01/04/guix-import-failure.feedentry: src/content/en/pastebin/2020/01/04/guix-import-failure.conf src/content/en/pastebin/2020/01/04/guix-import-failure.htmlbody
+src/content/en/pastebin/2020/02/14/guix-shebang.feedentry: src/content/en/pastebin/2020/02/14/guix-shebang.conf src/content/en/pastebin/2020/02/14/guix-shebang.htmlbody
+src/content/en/pastebin/2020/11/27/guix-build-local.feedentry: src/content/en/pastebin/2020/11/27/guix-build-local.conf src/content/en/pastebin/2020/11/27/guix-build-local.htmlbody
+src/content/en/pastebin/2020/12/15/guix-pack-fail.feedentry: src/content/en/pastebin/2020/12/15/guix-pack-fail.conf src/content/en/pastebin/2020/12/15/guix-pack-fail.htmlbody
+src/content/en/pastebin/2021/04/03/naive-slugify-js.feedentry: src/content/en/pastebin/2021/04/03/naive-slugify-js.conf src/content/en/pastebin/2021/04/03/naive-slugify-js.htmlbody
+src/content/en/pastebin/2021/06/08/reading-session-pt1.feedentry: src/content/en/pastebin/2021/06/08/reading-session-pt1.conf src/content/en/pastebin/2021/06/08/reading-session-pt1.htmlbody
+src/content/en/pastebin/2021/06/22/curl-wget.feedentry: src/content/en/pastebin/2021/06/22/curl-wget.conf src/content/en/pastebin/2021/06/22/curl-wget.htmlbody
+src/content/en/pastebin/2021/08/11/h1-spacing.feedentry: src/content/en/pastebin/2021/08/11/h1-spacing.conf src/content/en/pastebin/2021/08/11/h1-spacing.htmlbody
+src/content/en/pastebin/2021/09/02/sicp-3-19.feedentry: src/content/en/pastebin/2021/09/02/sicp-3-19.conf src/content/en/pastebin/2021/09/02/sicp-3-19.htmlbody
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.feedentry: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.conf src/content/en/pastebin/2021/09/03/sicp-persistent-queue.htmlbody
+src/content/en/pastebin/2022/07/14/git-cleanup.feedentry: src/content/en/pastebin/2022/07/14/git-cleanup.conf src/content/en/pastebin/2022/07/14/git-cleanup.htmlbody
+src/content/en/pastebin/2023/07/22/funcallable-amop.feedentry: src/content/en/pastebin/2023/07/22/funcallable-amop.conf src/content/en/pastebin/2023/07/22/funcallable-amop.htmlbody
+src/content/en/podcast/2020/12/19/test-entry.feedentry: src/content/en/podcast/2020/12/19/test-entry.conf src/content/en/podcast/2020/12/19/test-entry.htmlbody
+src/content/en/screencast/2021/02/07/autoqemu.feedentry: src/content/en/screencast/2021/02/07/autoqemu.conf src/content/en/screencast/2021/02/07/autoqemu.htmlbody
+src/content/en/til/2020/08/12/filename-timestamp.feedentry: src/content/en/til/2020/08/12/filename-timestamp.conf src/content/en/til/2020/08/12/filename-timestamp.htmlbody
+src/content/en/til/2020/08/13/code-jekyll.feedentry: src/content/en/til/2020/08/13/code-jekyll.conf src/content/en/til/2020/08/13/code-jekyll.htmlbody
+src/content/en/til/2020/08/14/browse-git.feedentry: src/content/en/til/2020/08/14/browse-git.conf src/content/en/til/2020/08/14/browse-git.htmlbody
+src/content/en/til/2020/08/16/git-search.feedentry: src/content/en/til/2020/08/16/git-search.conf src/content/en/til/2020/08/16/git-search.htmlbody
+src/content/en/til/2020/08/28/grep-online.feedentry: src/content/en/til/2020/08/28/grep-online.conf src/content/en/til/2020/08/28/grep-online.htmlbody
+src/content/en/til/2020/09/04/cli-email-fun-profit.feedentry: src/content/en/til/2020/09/04/cli-email-fun-profit.conf src/content/en/til/2020/09/04/cli-email-fun-profit.htmlbody
+src/content/en/til/2020/09/05/oldschool-pr.feedentry: src/content/en/til/2020/09/05/oldschool-pr.conf src/content/en/til/2020/09/05/oldschool-pr.htmlbody
+src/content/en/til/2020/10/11/search-git-history.feedentry: src/content/en/til/2020/10/11/search-git-history.conf src/content/en/til/2020/10/11/search-git-history.htmlbody
+src/content/en/til/2020/11/08/find-broken-symlink.feedentry: src/content/en/til/2020/11/08/find-broken-symlink.conf src/content/en/til/2020/11/08/find-broken-symlink.htmlbody
+src/content/en/til/2020/11/12/diy-nix-bash-ci.feedentry: src/content/en/til/2020/11/12/diy-nix-bash-ci.conf src/content/en/til/2020/11/12/diy-nix-bash-ci.htmlbody
+src/content/en/til/2020/11/12/git-bisect-automation.feedentry: src/content/en/til/2020/11/12/git-bisect-automation.conf src/content/en/til/2020/11/12/git-bisect-automation.htmlbody
+src/content/en/til/2020/11/12/useful-bashvars.feedentry: src/content/en/til/2020/11/12/useful-bashvars.conf src/content/en/til/2020/11/12/useful-bashvars.htmlbody
+src/content/en/til/2020/11/14/gpodder-media.feedentry: src/content/en/til/2020/11/14/gpodder-media.conf src/content/en/til/2020/11/14/gpodder-media.htmlbody
+src/content/en/til/2020/11/30/git-notes-ci.feedentry: src/content/en/til/2020/11/30/git-notes-ci.conf src/content/en/til/2020/11/30/git-notes-ci.htmlbody
+src/content/en/til/2020/12/15/shellcheck-repo.feedentry: src/content/en/til/2020/12/15/shellcheck-repo.conf src/content/en/til/2020/12/15/shellcheck-repo.htmlbody
+src/content/en/til/2020/12/29/svg.feedentry: src/content/en/til/2020/12/29/svg.conf src/content/en/til/2020/12/29/svg.htmlbody
+src/content/en/til/2021/01/12/curl-awk-emails.feedentry: src/content/en/til/2021/01/12/curl-awk-emails.conf src/content/en/til/2021/01/12/curl-awk-emails.htmlbody
+src/content/en/til/2021/01/17/posix-shebang.feedentry: src/content/en/til/2021/01/17/posix-shebang.conf src/content/en/til/2021/01/17/posix-shebang.htmlbody
+src/content/en/til/2021/04/24/cl-generic-precedence.feedentry: src/content/en/til/2021/04/24/cl-generic-precedence.conf src/content/en/til/2021/04/24/cl-generic-precedence.htmlbody
+src/content/en/til/2021/04/24/clojure-autocurry.feedentry: src/content/en/til/2021/04/24/clojure-autocurry.conf src/content/en/til/2021/04/24/clojure-autocurry.htmlbody
+src/content/en/til/2021/04/24/scm-nif.feedentry: src/content/en/til/2021/04/24/scm-nif.conf src/content/en/til/2021/04/24/scm-nif.htmlbody
+src/content/en/til/2021/07/23/git-tls-gpg.feedentry: src/content/en/til/2021/07/23/git-tls-gpg.conf src/content/en/til/2021/07/23/git-tls-gpg.htmlbody
+src/content/en/til/2021/08/11/js-bigint-reviver.feedentry: src/content/en/til/2021/08/11/js-bigint-reviver.conf src/content/en/til/2021/08/11/js-bigint-reviver.htmlbody
+src/content/pt/hea/2020/08/12/arquivo-datado.feedentry: src/content/pt/hea/2020/08/12/arquivo-datado.conf src/content/pt/hea/2020/08/12/arquivo-datado.htmlbody
+src/content/en/blog/2018/07/17/guix-nixos.sortdata: src/content/en/blog/2018/07/17/guix-nixos.conf
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.sortdata: src/content/en/blog/2018/08/01/npm-ci-reproducibility.conf
+src/content/en/blog/2018/12/21/ytdl-subs.sortdata: src/content/en/blog/2018/12/21/ytdl-subs.conf
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.sortdata: src/content/en/blog/2019/06/02/nixos-stateless-workstation.conf
+src/content/en/blog/2020/08/10/guix-srht.sortdata: src/content/en/blog/2020/08/10/guix-srht.conf
+src/content/en/blog/2020/08/31/database-i-wish-i-had.sortdata: src/content/en/blog/2020/08/31/database-i-wish-i-had.conf
+src/content/en/blog/2020/10/05/cargo2nix.sortdata: src/content/en/blog/2020/10/05/cargo2nix.conf
+src/content/en/blog/2020/10/05/swift2nix.sortdata: src/content/en/blog/2020/10/05/swift2nix.conf
+src/content/en/blog/2020/10/19/feature-flags.sortdata: src/content/en/blog/2020/10/19/feature-flags.conf
+src/content/en/blog/2020/10/20/wrong-interviewing.sortdata: src/content/en/blog/2020/10/20/wrong-interviewing.conf
+src/content/en/blog/2020/11/07/diy-bugs.sortdata: src/content/en/blog/2020/11/07/diy-bugs.conf
+src/content/en/blog/2020/11/08/paradigm-shift-review.sortdata: src/content/en/blog/2020/11/08/paradigm-shift-review.conf
+src/content/en/blog/2020/11/12/database-parsers-trees.sortdata: src/content/en/blog/2020/11/12/database-parsers-trees.conf
+src/content/en/blog/2020/11/14/local-first-review.sortdata: src/content/en/blog/2020/11/14/local-first-review.conf
+src/content/en/blog/2021/01/26/remembering-ann.sortdata: src/content/en/blog/2021/01/26/remembering-ann.conf
+src/content/en/blog/2021/02/17/fallible.sortdata: src/content/en/blog/2021/02/17/fallible.conf
+src/content/en/blog/2021/04/29/relational-review.sortdata: src/content/en/blog/2021/04/29/relational-review.conf
+src/content/en/pastebin/2016/04/05/rpn.sortdata: src/content/en/pastebin/2016/04/05/rpn.conf
+src/content/en/pastebin/2018/07/11/nix-pinning.sortdata: src/content/en/pastebin/2018/07/11/nix-pinning.conf
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.sortdata: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.conf
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.sortdata: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.conf
+src/content/en/pastebin/2018/07/13/guixbuilder.sortdata: src/content/en/pastebin/2018/07/13/guixbuilder.conf
+src/content/en/pastebin/2018/07/13/nix-strpad.sortdata: src/content/en/pastebin/2018/07/13/nix-strpad.conf
+src/content/en/pastebin/2018/07/25/nix-exps.sortdata: src/content/en/pastebin/2018/07/25/nix-exps.conf
+src/content/en/pastebin/2018/07/25/nix-showdrv.sortdata: src/content/en/pastebin/2018/07/25/nix-showdrv.conf
+src/content/en/pastebin/2019/06/08/inconsistent-hash.sortdata: src/content/en/pastebin/2019/06/08/inconsistent-hash.conf
+src/content/en/pastebin/2019/12/29/raku-tuple-type.sortdata: src/content/en/pastebin/2019/12/29/raku-tuple-type.conf
+src/content/en/pastebin/2020/01/04/guix-import-failure.sortdata: src/content/en/pastebin/2020/01/04/guix-import-failure.conf
+src/content/en/pastebin/2020/02/14/guix-shebang.sortdata: src/content/en/pastebin/2020/02/14/guix-shebang.conf
+src/content/en/pastebin/2020/11/27/guix-build-local.sortdata: src/content/en/pastebin/2020/11/27/guix-build-local.conf
+src/content/en/pastebin/2020/12/15/guix-pack-fail.sortdata: src/content/en/pastebin/2020/12/15/guix-pack-fail.conf
+src/content/en/pastebin/2021/04/03/naive-slugify-js.sortdata: src/content/en/pastebin/2021/04/03/naive-slugify-js.conf
+src/content/en/pastebin/2021/06/08/reading-session-pt1.sortdata: src/content/en/pastebin/2021/06/08/reading-session-pt1.conf
+src/content/en/pastebin/2021/06/22/curl-wget.sortdata: src/content/en/pastebin/2021/06/22/curl-wget.conf
+src/content/en/pastebin/2021/08/11/h1-spacing.sortdata: src/content/en/pastebin/2021/08/11/h1-spacing.conf
+src/content/en/pastebin/2021/09/02/sicp-3-19.sortdata: src/content/en/pastebin/2021/09/02/sicp-3-19.conf
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.sortdata: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.conf
+src/content/en/pastebin/2022/07/14/git-cleanup.sortdata: src/content/en/pastebin/2022/07/14/git-cleanup.conf
+src/content/en/pastebin/2023/07/22/funcallable-amop.sortdata: src/content/en/pastebin/2023/07/22/funcallable-amop.conf
+src/content/en/podcast/2020/12/19/test-entry.sortdata: src/content/en/podcast/2020/12/19/test-entry.conf
+src/content/en/screencast/2021/02/07/autoqemu.sortdata: src/content/en/screencast/2021/02/07/autoqemu.conf
+src/content/en/til/2020/08/12/filename-timestamp.sortdata: src/content/en/til/2020/08/12/filename-timestamp.conf
+src/content/en/til/2020/08/13/code-jekyll.sortdata: src/content/en/til/2020/08/13/code-jekyll.conf
+src/content/en/til/2020/08/14/browse-git.sortdata: src/content/en/til/2020/08/14/browse-git.conf
+src/content/en/til/2020/08/16/git-search.sortdata: src/content/en/til/2020/08/16/git-search.conf
+src/content/en/til/2020/08/28/grep-online.sortdata: src/content/en/til/2020/08/28/grep-online.conf
+src/content/en/til/2020/09/04/cli-email-fun-profit.sortdata: src/content/en/til/2020/09/04/cli-email-fun-profit.conf
+src/content/en/til/2020/09/05/oldschool-pr.sortdata: src/content/en/til/2020/09/05/oldschool-pr.conf
+src/content/en/til/2020/10/11/search-git-history.sortdata: src/content/en/til/2020/10/11/search-git-history.conf
+src/content/en/til/2020/11/08/find-broken-symlink.sortdata: src/content/en/til/2020/11/08/find-broken-symlink.conf
+src/content/en/til/2020/11/12/diy-nix-bash-ci.sortdata: src/content/en/til/2020/11/12/diy-nix-bash-ci.conf
+src/content/en/til/2020/11/12/git-bisect-automation.sortdata: src/content/en/til/2020/11/12/git-bisect-automation.conf
+src/content/en/til/2020/11/12/useful-bashvars.sortdata: src/content/en/til/2020/11/12/useful-bashvars.conf
+src/content/en/til/2020/11/14/gpodder-media.sortdata: src/content/en/til/2020/11/14/gpodder-media.conf
+src/content/en/til/2020/11/30/git-notes-ci.sortdata: src/content/en/til/2020/11/30/git-notes-ci.conf
+src/content/en/til/2020/12/15/shellcheck-repo.sortdata: src/content/en/til/2020/12/15/shellcheck-repo.conf
+src/content/en/til/2020/12/29/svg.sortdata: src/content/en/til/2020/12/29/svg.conf
+src/content/en/til/2021/01/12/curl-awk-emails.sortdata: src/content/en/til/2021/01/12/curl-awk-emails.conf
+src/content/en/til/2021/01/17/posix-shebang.sortdata: src/content/en/til/2021/01/17/posix-shebang.conf
+src/content/en/til/2021/04/24/cl-generic-precedence.sortdata: src/content/en/til/2021/04/24/cl-generic-precedence.conf
+src/content/en/til/2021/04/24/clojure-autocurry.sortdata: src/content/en/til/2021/04/24/clojure-autocurry.conf
+src/content/en/til/2021/04/24/scm-nif.sortdata: src/content/en/til/2021/04/24/scm-nif.conf
+src/content/en/til/2021/07/23/git-tls-gpg.sortdata: src/content/en/til/2021/07/23/git-tls-gpg.conf
+src/content/en/til/2021/08/11/js-bigint-reviver.sortdata: src/content/en/til/2021/08/11/js-bigint-reviver.conf
+src/content/pt/hea/2020/08/12/arquivo-datado.sortdata: src/content/pt/hea/2020/08/12/arquivo-datado.conf
+src/content/en/blog/2018/07/17/guix-nixos.categorydata: src/content/en/blog/2018/07/17/guix-nixos.conf
+src/content/en/blog/2018/08/01/npm-ci-reproducibility.categorydata: src/content/en/blog/2018/08/01/npm-ci-reproducibility.conf
+src/content/en/blog/2018/12/21/ytdl-subs.categorydata: src/content/en/blog/2018/12/21/ytdl-subs.conf
+src/content/en/blog/2019/06/02/nixos-stateless-workstation.categorydata: src/content/en/blog/2019/06/02/nixos-stateless-workstation.conf
+src/content/en/blog/2020/08/10/guix-srht.categorydata: src/content/en/blog/2020/08/10/guix-srht.conf
+src/content/en/blog/2020/08/31/database-i-wish-i-had.categorydata: src/content/en/blog/2020/08/31/database-i-wish-i-had.conf
+src/content/en/blog/2020/10/05/cargo2nix.categorydata: src/content/en/blog/2020/10/05/cargo2nix.conf
+src/content/en/blog/2020/10/05/swift2nix.categorydata: src/content/en/blog/2020/10/05/swift2nix.conf
+src/content/en/blog/2020/10/19/feature-flags.categorydata: src/content/en/blog/2020/10/19/feature-flags.conf
+src/content/en/blog/2020/10/20/wrong-interviewing.categorydata: src/content/en/blog/2020/10/20/wrong-interviewing.conf
+src/content/en/blog/2020/11/07/diy-bugs.categorydata: src/content/en/blog/2020/11/07/diy-bugs.conf
+src/content/en/blog/2020/11/08/paradigm-shift-review.categorydata: src/content/en/blog/2020/11/08/paradigm-shift-review.conf
+src/content/en/blog/2020/11/12/database-parsers-trees.categorydata: src/content/en/blog/2020/11/12/database-parsers-trees.conf
+src/content/en/blog/2020/11/14/local-first-review.categorydata: src/content/en/blog/2020/11/14/local-first-review.conf
+src/content/en/blog/2021/01/26/remembering-ann.categorydata: src/content/en/blog/2021/01/26/remembering-ann.conf
+src/content/en/blog/2021/02/17/fallible.categorydata: src/content/en/blog/2021/02/17/fallible.conf
+src/content/en/blog/2021/04/29/relational-review.categorydata: src/content/en/blog/2021/04/29/relational-review.conf
+src/content/en/pastebin/2016/04/05/rpn.categorydata: src/content/en/pastebin/2016/04/05/rpn.conf
+src/content/en/pastebin/2018/07/11/nix-pinning.categorydata: src/content/en/pastebin/2018/07/11/nix-pinning.conf
+src/content/en/pastebin/2018/07/13/guix-nixos-systemd.categorydata: src/content/en/pastebin/2018/07/13/guix-nixos-systemd.conf
+src/content/en/pastebin/2018/07/13/guixbuilder-nixos.categorydata: src/content/en/pastebin/2018/07/13/guixbuilder-nixos.conf
+src/content/en/pastebin/2018/07/13/guixbuilder.categorydata: src/content/en/pastebin/2018/07/13/guixbuilder.conf
+src/content/en/pastebin/2018/07/13/nix-strpad.categorydata: src/content/en/pastebin/2018/07/13/nix-strpad.conf
+src/content/en/pastebin/2018/07/25/nix-exps.categorydata: src/content/en/pastebin/2018/07/25/nix-exps.conf
+src/content/en/pastebin/2018/07/25/nix-showdrv.categorydata: src/content/en/pastebin/2018/07/25/nix-showdrv.conf
+src/content/en/pastebin/2019/06/08/inconsistent-hash.categorydata: src/content/en/pastebin/2019/06/08/inconsistent-hash.conf
+src/content/en/pastebin/2019/12/29/raku-tuple-type.categorydata: src/content/en/pastebin/2019/12/29/raku-tuple-type.conf
+src/content/en/pastebin/2020/01/04/guix-import-failure.categorydata: src/content/en/pastebin/2020/01/04/guix-import-failure.conf
+src/content/en/pastebin/2020/02/14/guix-shebang.categorydata: src/content/en/pastebin/2020/02/14/guix-shebang.conf
+src/content/en/pastebin/2020/11/27/guix-build-local.categorydata: src/content/en/pastebin/2020/11/27/guix-build-local.conf
+src/content/en/pastebin/2020/12/15/guix-pack-fail.categorydata: src/content/en/pastebin/2020/12/15/guix-pack-fail.conf
+src/content/en/pastebin/2021/04/03/naive-slugify-js.categorydata: src/content/en/pastebin/2021/04/03/naive-slugify-js.conf
+src/content/en/pastebin/2021/06/08/reading-session-pt1.categorydata: src/content/en/pastebin/2021/06/08/reading-session-pt1.conf
+src/content/en/pastebin/2021/06/22/curl-wget.categorydata: src/content/en/pastebin/2021/06/22/curl-wget.conf
+src/content/en/pastebin/2021/08/11/h1-spacing.categorydata: src/content/en/pastebin/2021/08/11/h1-spacing.conf
+src/content/en/pastebin/2021/09/02/sicp-3-19.categorydata: src/content/en/pastebin/2021/09/02/sicp-3-19.conf
+src/content/en/pastebin/2021/09/03/sicp-persistent-queue.categorydata: src/content/en/pastebin/2021/09/03/sicp-persistent-queue.conf
+src/content/en/pastebin/2022/07/14/git-cleanup.categorydata: src/content/en/pastebin/2022/07/14/git-cleanup.conf
+src/content/en/pastebin/2023/07/22/funcallable-amop.categorydata: src/content/en/pastebin/2023/07/22/funcallable-amop.conf
+src/content/en/podcast/2020/12/19/test-entry.categorydata: src/content/en/podcast/2020/12/19/test-entry.conf
+src/content/en/screencast/2021/02/07/autoqemu.categorydata: src/content/en/screencast/2021/02/07/autoqemu.conf
+src/content/en/til/2020/08/12/filename-timestamp.categorydata: src/content/en/til/2020/08/12/filename-timestamp.conf
+src/content/en/til/2020/08/13/code-jekyll.categorydata: src/content/en/til/2020/08/13/code-jekyll.conf
+src/content/en/til/2020/08/14/browse-git.categorydata: src/content/en/til/2020/08/14/browse-git.conf
+src/content/en/til/2020/08/16/git-search.categorydata: src/content/en/til/2020/08/16/git-search.conf
+src/content/en/til/2020/08/28/grep-online.categorydata: src/content/en/til/2020/08/28/grep-online.conf
+src/content/en/til/2020/09/04/cli-email-fun-profit.categorydata: src/content/en/til/2020/09/04/cli-email-fun-profit.conf
+src/content/en/til/2020/09/05/oldschool-pr.categorydata: src/content/en/til/2020/09/05/oldschool-pr.conf
+src/content/en/til/2020/10/11/search-git-history.categorydata: src/content/en/til/2020/10/11/search-git-history.conf
+src/content/en/til/2020/11/08/find-broken-symlink.categorydata: src/content/en/til/2020/11/08/find-broken-symlink.conf
+src/content/en/til/2020/11/12/diy-nix-bash-ci.categorydata: src/content/en/til/2020/11/12/diy-nix-bash-ci.conf
+src/content/en/til/2020/11/12/git-bisect-automation.categorydata: src/content/en/til/2020/11/12/git-bisect-automation.conf
+src/content/en/til/2020/11/12/useful-bashvars.categorydata: src/content/en/til/2020/11/12/useful-bashvars.conf
+src/content/en/til/2020/11/14/gpodder-media.categorydata: src/content/en/til/2020/11/14/gpodder-media.conf
+src/content/en/til/2020/11/30/git-notes-ci.categorydata: src/content/en/til/2020/11/30/git-notes-ci.conf
+src/content/en/til/2020/12/15/shellcheck-repo.categorydata: src/content/en/til/2020/12/15/shellcheck-repo.conf
+src/content/en/til/2020/12/29/svg.categorydata: src/content/en/til/2020/12/29/svg.conf
+src/content/en/til/2021/01/12/curl-awk-emails.categorydata: src/content/en/til/2021/01/12/curl-awk-emails.conf
+src/content/en/til/2021/01/17/posix-shebang.categorydata: src/content/en/til/2021/01/17/posix-shebang.conf
+src/content/en/til/2021/04/24/cl-generic-precedence.categorydata: src/content/en/til/2021/04/24/cl-generic-precedence.conf
+src/content/en/til/2021/04/24/clojure-autocurry.categorydata: src/content/en/til/2021/04/24/clojure-autocurry.conf
+src/content/en/til/2021/04/24/scm-nif.categorydata: src/content/en/til/2021/04/24/scm-nif.conf
+src/content/en/til/2021/07/23/git-tls-gpg.categorydata: src/content/en/til/2021/07/23/git-tls-gpg.conf
+src/content/en/til/2021/08/11/js-bigint-reviver.categorydata: src/content/en/til/2021/08/11/js-bigint-reviver.conf
+src/content/pt/hea/2020/08/12/arquivo-datado.categorydata: src/content/pt/hea/2020/08/12/arquivo-datado.conf
+
+src/content/en/blog/index.htmlheader src/content/en/blog/index.htmlfooter: src/content/en/blog/index.conf
+src/content/en/pastebin/index.htmlheader src/content/en/pastebin/index.htmlfooter: src/content/en/pastebin/index.conf
+src/content/en/podcast/index.htmlheader src/content/en/podcast/index.htmlfooter: src/content/en/podcast/index.conf
+src/content/en/screencast/index.htmlheader src/content/en/screencast/index.htmlfooter: src/content/en/screencast/index.conf
+src/content/en/til/index.htmlheader src/content/en/til/index.htmlfooter: src/content/en/til/index.conf
+src/content/pt/hea/index.htmlheader src/content/pt/hea/index.htmlfooter: src/content/pt/hea/index.conf
+src/content/en/blog/categories.htmlheader src/content/en/blog/categories.htmlfooter: src/content/en/blog/categories.conf
+src/content/en/pastebin/categories.htmlheader src/content/en/pastebin/categories.htmlfooter: src/content/en/pastebin/categories.conf
+src/content/en/podcast/categories.htmlheader src/content/en/podcast/categories.htmlfooter: src/content/en/podcast/categories.conf
+src/content/en/screencast/categories.htmlheader src/content/en/screencast/categories.htmlfooter: src/content/en/screencast/categories.conf
+src/content/en/til/categories.htmlheader src/content/en/til/categories.htmlfooter: src/content/en/til/categories.conf
+src/content/pt/hea/categorias.htmlheader src/content/pt/hea/categorias.htmlfooter: src/content/pt/hea/categorias.conf
+src/content/en/blog/index.htmllisting: src/content/en/blog/index.conf
+src/content/en/pastebin/index.htmllisting: src/content/en/pastebin/index.conf
+src/content/en/podcast/index.htmllisting: src/content/en/podcast/index.conf
+src/content/en/screencast/index.htmllisting: src/content/en/screencast/index.conf
+src/content/en/til/index.htmllisting: src/content/en/til/index.conf
+src/content/pt/hea/index.htmllisting: src/content/pt/hea/index.conf
+src/content/en/blog/categories.htmllisting: src/content/en/blog/categories.conf
+src/content/en/pastebin/categories.htmllisting: src/content/en/pastebin/categories.conf
+src/content/en/podcast/categories.htmllisting: src/content/en/podcast/categories.conf
+src/content/en/screencast/categories.htmllisting: src/content/en/screencast/categories.conf
+src/content/en/til/categories.htmllisting: src/content/en/til/categories.conf
+src/content/pt/hea/categorias.htmllisting: src/content/pt/hea/categorias.conf
+src/content/en/blog/index.html: src/content/en/blog/index.htmlheader src/content/en/blog/index.htmlfooter
+src/content/en/pastebin/index.html: src/content/en/pastebin/index.htmlheader src/content/en/pastebin/index.htmlfooter
+src/content/en/podcast/index.html: src/content/en/podcast/index.htmlheader src/content/en/podcast/index.htmlfooter
+src/content/en/screencast/index.html: src/content/en/screencast/index.htmlheader src/content/en/screencast/index.htmlfooter
+src/content/en/til/index.html: src/content/en/til/index.htmlheader src/content/en/til/index.htmlfooter
+src/content/pt/hea/index.html: src/content/pt/hea/index.htmlheader src/content/pt/hea/index.htmlfooter
+src/content/en/blog/categories.html: src/content/en/blog/categories.htmlheader src/content/en/blog/categories.htmlfooter
+src/content/en/pastebin/categories.html: src/content/en/pastebin/categories.htmlheader src/content/en/pastebin/categories.htmlfooter
+src/content/en/podcast/categories.html: src/content/en/podcast/categories.htmlheader src/content/en/podcast/categories.htmlfooter
+src/content/en/screencast/categories.html: src/content/en/screencast/categories.htmlheader src/content/en/screencast/categories.htmlfooter
+src/content/en/til/categories.html: src/content/en/til/categories.htmlheader src/content/en/til/categories.htmlfooter
+src/content/pt/hea/categorias.html: src/content/pt/hea/categorias.htmlheader src/content/pt/hea/categorias.htmlfooter
+src/content/en/blog/index.html: src/content/en/blog/index.htmllisting src/content/en/blog/index.htmlbody
+src/content/en/pastebin/index.html: src/content/en/pastebin/index.htmllisting src/content/en/pastebin/index.htmlbody
+src/content/en/podcast/index.html: src/content/en/podcast/index.htmllisting src/content/en/podcast/index.htmlbody
+src/content/en/screencast/index.html: src/content/en/screencast/index.htmllisting src/content/en/screencast/index.htmlbody
+src/content/en/til/index.html: src/content/en/til/index.htmllisting src/content/en/til/index.htmlbody
+src/content/pt/hea/index.html: src/content/pt/hea/index.htmllisting src/content/pt/hea/index.htmlbody
+src/content/en/blog/categories.html: src/content/en/blog/categories.htmllisting src/content/en/blog/categories.htmlbody
+src/content/en/pastebin/categories.html: src/content/en/pastebin/categories.htmllisting src/content/en/pastebin/categories.htmlbody
+src/content/en/podcast/categories.html: src/content/en/podcast/categories.htmllisting src/content/en/podcast/categories.htmlbody
+src/content/en/screencast/categories.html: src/content/en/screencast/categories.htmllisting src/content/en/screencast/categories.htmlbody
+src/content/en/til/categories.html: src/content/en/til/categories.htmllisting src/content/en/til/categories.htmlbody
+src/content/pt/hea/categorias.html: src/content/pt/hea/categorias.htmllisting src/content/pt/hea/categorias.htmlbody
+
+src/content/en/podcast/2020/12/19/test-entry.flac.torrent: src/content/en/podcast/2020/12/19/test-entry.flac
+src/content/en/podcast/2020/12/19/test-entry.ogg.torrent: src/content/en/podcast/2020/12/19/test-entry.ogg
+src/content/en/screencast/2021/02/07/autoqemu.webm.torrent: src/content/en/screencast/2021/02/07/autoqemu.webm
-src/content/about.html.gz: src/content/about.html
-src/content/index.html.gz: src/content/index.html
-src/content/blog/2018/07/17/guix-nixos.html.gz: src/content/blog/2018/07/17/guix-nixos.html
-src/content/blog/2018/08/01/npm-ci-reproducibility.html.gz: src/content/blog/2018/08/01/npm-ci-reproducibility.html
-src/content/blog/2018/12/21/ytdl-subs.html.gz: src/content/blog/2018/12/21/ytdl-subs.html
-src/content/blog/2019/06/02/nixos-stateless-workstation.html.gz: src/content/blog/2019/06/02/nixos-stateless-workstation.html
-src/content/blog/2020/08/10/guix-srht.html.gz: src/content/blog/2020/08/10/guix-srht.html
-src/content/blog/2020/08/31/database-i-wish-i-had.html.gz: src/content/blog/2020/08/31/database-i-wish-i-had.html
-src/content/blog/2020/10/05/cargo2nix.html.gz: src/content/blog/2020/10/05/cargo2nix.html
-src/content/blog/2020/10/05/swift2nix.html.gz: src/content/blog/2020/10/05/swift2nix.html
-src/content/blog/2020/10/19/feature-flags.html.gz: src/content/blog/2020/10/19/feature-flags.html
-src/content/blog/2020/10/20/wrong-interviewing.html.gz: src/content/blog/2020/10/20/wrong-interviewing.html
-src/content/blog/2020/11/07/diy-bugs.html.gz: src/content/blog/2020/11/07/diy-bugs.html
-src/content/blog/2020/11/08/paradigm-shift-review.html.gz: src/content/blog/2020/11/08/paradigm-shift-review.html
-src/content/blog/2020/11/12/database-parsers-trees.html.gz: src/content/blog/2020/11/12/database-parsers-trees.html
-src/content/blog/2020/11/14/local-first-review.html.gz: src/content/blog/2020/11/14/local-first-review.html
-src/content/blog/2021/01/26/remembering-ann.html.gz: src/content/blog/2021/01/26/remembering-ann.html
-src/content/blog/2021/02/17/fallible.html.gz: src/content/blog/2021/02/17/fallible.html
-src/content/blog/2021/04/29/relational-review.html.gz: src/content/blog/2021/04/29/relational-review.html
-src/content/pastebins/2016/04/05/rpn.html.gz: src/content/pastebins/2016/04/05/rpn.html
-src/content/pastebins/2018/07/11/nix-pinning.html.gz: src/content/pastebins/2018/07/11/nix-pinning.html
-src/content/pastebins/2018/07/13/guix-nixos-systemd.html.gz: src/content/pastebins/2018/07/13/guix-nixos-systemd.html
-src/content/pastebins/2018/07/13/guixbuilder-nixos.html.gz: src/content/pastebins/2018/07/13/guixbuilder-nixos.html
-src/content/pastebins/2018/07/13/guixbuilder.html.gz: src/content/pastebins/2018/07/13/guixbuilder.html
-src/content/pastebins/2018/07/13/nix-strpad.html.gz: src/content/pastebins/2018/07/13/nix-strpad.html
-src/content/pastebins/2018/07/25/nix-exps.html.gz: src/content/pastebins/2018/07/25/nix-exps.html
-src/content/pastebins/2018/07/25/nix-showdrv.html.gz: src/content/pastebins/2018/07/25/nix-showdrv.html
-src/content/pastebins/2019/06/08/inconsistent-hash.html.gz: src/content/pastebins/2019/06/08/inconsistent-hash.html
-src/content/pastebins/2019/12/29/raku-tuple-type.html.gz: src/content/pastebins/2019/12/29/raku-tuple-type.html
-src/content/pastebins/2020/01/04/guix-import-failure.html.gz: src/content/pastebins/2020/01/04/guix-import-failure.html
-src/content/pastebins/2020/02/14/guix-shebang.html.gz: src/content/pastebins/2020/02/14/guix-shebang.html
-src/content/pastebins/2020/11/27/guix-build-local.html.gz: src/content/pastebins/2020/11/27/guix-build-local.html
-src/content/pastebins/2020/12/15/guix-pack-fail.html.gz: src/content/pastebins/2020/12/15/guix-pack-fail.html
-src/content/pastebins/2021/04/03/naive-slugify-js.html.gz: src/content/pastebins/2021/04/03/naive-slugify-js.html
-src/content/pastebins/2021/06/08/reading-session-pt1.html.gz: src/content/pastebins/2021/06/08/reading-session-pt1.html
-src/content/pastebins/2021/06/22/curl-wget.html.gz: src/content/pastebins/2021/06/22/curl-wget.html
-src/content/pastebins/2021/08/11/h1-spacing.html.gz: src/content/pastebins/2021/08/11/h1-spacing.html
-src/content/pastebins/2021/09/02/sicp-3-19.html.gz: src/content/pastebins/2021/09/02/sicp-3-19.html
-src/content/pastebins/2021/09/03/sicp-persistent-queue.html.gz: src/content/pastebins/2021/09/03/sicp-persistent-queue.html
-src/content/pastebins/2022/07/14/git-cleanup.html.gz: src/content/pastebins/2022/07/14/git-cleanup.html
-src/content/pastebins/2023/07/22/funcallable-amop.html.gz: src/content/pastebins/2023/07/22/funcallable-amop.html
-src/content/podcasts/2020/12/19/test-entry.html.gz: src/content/podcasts/2020/12/19/test-entry.html
-src/content/screencasts/2021/02/07/autoqemu.html.gz: src/content/screencasts/2021/02/07/autoqemu.html
-src/content/tils/2020/08/12/filename-timestamp.html.gz: src/content/tils/2020/08/12/filename-timestamp.html
-src/content/tils/2020/08/13/code-jekyll.html.gz: src/content/tils/2020/08/13/code-jekyll.html
-src/content/tils/2020/08/14/browse-git.html.gz: src/content/tils/2020/08/14/browse-git.html
-src/content/tils/2020/08/16/git-search.html.gz: src/content/tils/2020/08/16/git-search.html
-src/content/tils/2020/08/28/grep-online.html.gz: src/content/tils/2020/08/28/grep-online.html
-src/content/tils/2020/09/04/cli-email-fun-profit.html.gz: src/content/tils/2020/09/04/cli-email-fun-profit.html
-src/content/tils/2020/09/05/oldschool-pr.html.gz: src/content/tils/2020/09/05/oldschool-pr.html
-src/content/tils/2020/10/11/search-git-history.html.gz: src/content/tils/2020/10/11/search-git-history.html
-src/content/tils/2020/11/08/find-broken-symlink.html.gz: src/content/tils/2020/11/08/find-broken-symlink.html
-src/content/tils/2020/11/12/diy-nix-bash-ci.html.gz: src/content/tils/2020/11/12/diy-nix-bash-ci.html
-src/content/tils/2020/11/12/git-bisect-automation.html.gz: src/content/tils/2020/11/12/git-bisect-automation.html
-src/content/tils/2020/11/12/useful-bashvars.html.gz: src/content/tils/2020/11/12/useful-bashvars.html
-src/content/tils/2020/11/14/gpodder-media.html.gz: src/content/tils/2020/11/14/gpodder-media.html
-src/content/tils/2020/11/30/git-notes-ci.html.gz: src/content/tils/2020/11/30/git-notes-ci.html
-src/content/tils/2020/12/15/shellcheck-repo.html.gz: src/content/tils/2020/12/15/shellcheck-repo.html
-src/content/tils/2020/12/29/svg.html.gz: src/content/tils/2020/12/29/svg.html
-src/content/tils/2021/01/12/curl-awk-emails.html.gz: src/content/tils/2021/01/12/curl-awk-emails.html
-src/content/tils/2021/01/17/posix-shebang.html.gz: src/content/tils/2021/01/17/posix-shebang.html
-src/content/tils/2021/04/24/cl-generic-precedence.html.gz: src/content/tils/2021/04/24/cl-generic-precedence.html
-src/content/tils/2021/04/24/clojure-autocurry.html.gz: src/content/tils/2021/04/24/clojure-autocurry.html
-src/content/tils/2021/04/24/scm-nif.html.gz: src/content/tils/2021/04/24/scm-nif.html
-src/content/tils/2021/07/23/git-tls-gpg.html.gz: src/content/tils/2021/07/23/git-tls-gpg.html
-src/content/tils/2021/08/11/js-bigint-reviver.html.gz: src/content/tils/2021/08/11/js-bigint-reviver.html
-src/content/blog/index.html.gz: src/content/blog/index.html
-src/content/pastebins/index.html.gz: src/content/pastebins/index.html
-src/content/podcasts/index.html.gz: src/content/podcasts/index.html
-src/content/screencasts/index.html.gz: src/content/screencasts/index.html
-src/content/tils/index.html.gz: src/content/tils/index.html
-src/content/blog/categories.html.gz: src/content/blog/categories.html
-src/content/pastebins/categories.html.gz: src/content/pastebins/categories.html
-src/content/podcasts/categories.html.gz: src/content/podcasts/categories.html
-src/content/screencasts/categories.html.gz: src/content/screencasts/categories.html
-src/content/tils/categories.html.gz: src/content/tils/categories.html
-src/content/about.snippets.gz: src/content/about.snippets
-src/content/index.snippets.gz: src/content/index.snippets
-src/content/blog/2018/07/17/guix-nixos.snippets.gz: src/content/blog/2018/07/17/guix-nixos.snippets
-src/content/blog/2018/08/01/npm-ci-reproducibility.snippets.gz: src/content/blog/2018/08/01/npm-ci-reproducibility.snippets
-src/content/blog/2018/12/21/ytdl-subs.snippets.gz: src/content/blog/2018/12/21/ytdl-subs.snippets
-src/content/blog/2019/06/02/nixos-stateless-workstation.snippets.gz: src/content/blog/2019/06/02/nixos-stateless-workstation.snippets
-src/content/blog/2020/08/10/guix-srht.snippets.gz: src/content/blog/2020/08/10/guix-srht.snippets
-src/content/blog/2020/08/31/database-i-wish-i-had.snippets.gz: src/content/blog/2020/08/31/database-i-wish-i-had.snippets
-src/content/blog/2020/10/05/cargo2nix.snippets.gz: src/content/blog/2020/10/05/cargo2nix.snippets
-src/content/blog/2020/10/05/swift2nix.snippets.gz: src/content/blog/2020/10/05/swift2nix.snippets
-src/content/blog/2020/10/19/feature-flags.snippets.gz: src/content/blog/2020/10/19/feature-flags.snippets
-src/content/blog/2020/10/20/wrong-interviewing.snippets.gz: src/content/blog/2020/10/20/wrong-interviewing.snippets
-src/content/blog/2020/11/07/diy-bugs.snippets.gz: src/content/blog/2020/11/07/diy-bugs.snippets
-src/content/blog/2020/11/08/paradigm-shift-review.snippets.gz: src/content/blog/2020/11/08/paradigm-shift-review.snippets
-src/content/blog/2020/11/12/database-parsers-trees.snippets.gz: src/content/blog/2020/11/12/database-parsers-trees.snippets
-src/content/blog/2020/11/14/local-first-review.snippets.gz: src/content/blog/2020/11/14/local-first-review.snippets
-src/content/blog/2021/01/26/remembering-ann.snippets.gz: src/content/blog/2021/01/26/remembering-ann.snippets
-src/content/blog/2021/02/17/fallible.snippets.gz: src/content/blog/2021/02/17/fallible.snippets
-src/content/blog/2021/04/29/relational-review.snippets.gz: src/content/blog/2021/04/29/relational-review.snippets
-src/content/pastebins/2016/04/05/rpn.snippets.gz: src/content/pastebins/2016/04/05/rpn.snippets
-src/content/pastebins/2018/07/11/nix-pinning.snippets.gz: src/content/pastebins/2018/07/11/nix-pinning.snippets
-src/content/pastebins/2018/07/13/guix-nixos-systemd.snippets.gz: src/content/pastebins/2018/07/13/guix-nixos-systemd.snippets
-src/content/pastebins/2018/07/13/guixbuilder-nixos.snippets.gz: src/content/pastebins/2018/07/13/guixbuilder-nixos.snippets
-src/content/pastebins/2018/07/13/guixbuilder.snippets.gz: src/content/pastebins/2018/07/13/guixbuilder.snippets
-src/content/pastebins/2018/07/13/nix-strpad.snippets.gz: src/content/pastebins/2018/07/13/nix-strpad.snippets
-src/content/pastebins/2018/07/25/nix-exps.snippets.gz: src/content/pastebins/2018/07/25/nix-exps.snippets
-src/content/pastebins/2018/07/25/nix-showdrv.snippets.gz: src/content/pastebins/2018/07/25/nix-showdrv.snippets
-src/content/pastebins/2019/06/08/inconsistent-hash.snippets.gz: src/content/pastebins/2019/06/08/inconsistent-hash.snippets
-src/content/pastebins/2019/12/29/raku-tuple-type.snippets.gz: src/content/pastebins/2019/12/29/raku-tuple-type.snippets
-src/content/pastebins/2020/01/04/guix-import-failure.snippets.gz: src/content/pastebins/2020/01/04/guix-import-failure.snippets
-src/content/pastebins/2020/02/14/guix-shebang.snippets.gz: src/content/pastebins/2020/02/14/guix-shebang.snippets
-src/content/pastebins/2020/11/27/guix-build-local.snippets.gz: src/content/pastebins/2020/11/27/guix-build-local.snippets
-src/content/pastebins/2020/12/15/guix-pack-fail.snippets.gz: src/content/pastebins/2020/12/15/guix-pack-fail.snippets
-src/content/pastebins/2021/04/03/naive-slugify-js.snippets.gz: src/content/pastebins/2021/04/03/naive-slugify-js.snippets
-src/content/pastebins/2021/06/08/reading-session-pt1.snippets.gz: src/content/pastebins/2021/06/08/reading-session-pt1.snippets
-src/content/pastebins/2021/06/22/curl-wget.snippets.gz: src/content/pastebins/2021/06/22/curl-wget.snippets
-src/content/pastebins/2021/08/11/h1-spacing.snippets.gz: src/content/pastebins/2021/08/11/h1-spacing.snippets
-src/content/pastebins/2021/09/02/sicp-3-19.snippets.gz: src/content/pastebins/2021/09/02/sicp-3-19.snippets
-src/content/pastebins/2021/09/03/sicp-persistent-queue.snippets.gz: src/content/pastebins/2021/09/03/sicp-persistent-queue.snippets
-src/content/pastebins/2022/07/14/git-cleanup.snippets.gz: src/content/pastebins/2022/07/14/git-cleanup.snippets
-src/content/pastebins/2023/07/22/funcallable-amop.snippets.gz: src/content/pastebins/2023/07/22/funcallable-amop.snippets
-src/content/podcasts/2020/12/19/test-entry.snippets.gz: src/content/podcasts/2020/12/19/test-entry.snippets
-src/content/screencasts/2021/02/07/autoqemu.snippets.gz: src/content/screencasts/2021/02/07/autoqemu.snippets
-src/content/tils/2020/08/12/filename-timestamp.snippets.gz: src/content/tils/2020/08/12/filename-timestamp.snippets
-src/content/tils/2020/08/13/code-jekyll.snippets.gz: src/content/tils/2020/08/13/code-jekyll.snippets
-src/content/tils/2020/08/14/browse-git.snippets.gz: src/content/tils/2020/08/14/browse-git.snippets
-src/content/tils/2020/08/16/git-search.snippets.gz: src/content/tils/2020/08/16/git-search.snippets
-src/content/tils/2020/08/28/grep-online.snippets.gz: src/content/tils/2020/08/28/grep-online.snippets
-src/content/tils/2020/09/04/cli-email-fun-profit.snippets.gz: src/content/tils/2020/09/04/cli-email-fun-profit.snippets
-src/content/tils/2020/09/05/oldschool-pr.snippets.gz: src/content/tils/2020/09/05/oldschool-pr.snippets
-src/content/tils/2020/10/11/search-git-history.snippets.gz: src/content/tils/2020/10/11/search-git-history.snippets
-src/content/tils/2020/11/08/find-broken-symlink.snippets.gz: src/content/tils/2020/11/08/find-broken-symlink.snippets
-src/content/tils/2020/11/12/diy-nix-bash-ci.snippets.gz: src/content/tils/2020/11/12/diy-nix-bash-ci.snippets
-src/content/tils/2020/11/12/git-bisect-automation.snippets.gz: src/content/tils/2020/11/12/git-bisect-automation.snippets
-src/content/tils/2020/11/12/useful-bashvars.snippets.gz: src/content/tils/2020/11/12/useful-bashvars.snippets
-src/content/tils/2020/11/14/gpodder-media.snippets.gz: src/content/tils/2020/11/14/gpodder-media.snippets
-src/content/tils/2020/11/30/git-notes-ci.snippets.gz: src/content/tils/2020/11/30/git-notes-ci.snippets
-src/content/tils/2020/12/15/shellcheck-repo.snippets.gz: src/content/tils/2020/12/15/shellcheck-repo.snippets
-src/content/tils/2020/12/29/svg.snippets.gz: src/content/tils/2020/12/29/svg.snippets
-src/content/tils/2021/01/12/curl-awk-emails.snippets.gz: src/content/tils/2021/01/12/curl-awk-emails.snippets
-src/content/tils/2021/01/17/posix-shebang.snippets.gz: src/content/tils/2021/01/17/posix-shebang.snippets
-src/content/tils/2021/04/24/cl-generic-precedence.snippets.gz: src/content/tils/2021/04/24/cl-generic-precedence.snippets
-src/content/tils/2021/04/24/clojure-autocurry.snippets.gz: src/content/tils/2021/04/24/clojure-autocurry.snippets
-src/content/tils/2021/04/24/scm-nif.snippets.gz: src/content/tils/2021/04/24/scm-nif.snippets
-src/content/tils/2021/07/23/git-tls-gpg.snippets.gz: src/content/tils/2021/07/23/git-tls-gpg.snippets
-src/content/tils/2021/08/11/js-bigint-reviver.snippets.gz: src/content/tils/2021/08/11/js-bigint-reviver.snippets
-src/content/blog/index.snippets.gz: src/content/blog/index.snippets
-src/content/pastebins/index.snippets.gz: src/content/pastebins/index.snippets
-src/content/podcasts/index.snippets.gz: src/content/podcasts/index.snippets
-src/content/screencasts/index.snippets.gz: src/content/screencasts/index.snippets
-src/content/tils/index.snippets.gz: src/content/tils/index.snippets
-src/content/blog/categories.snippets.gz: src/content/blog/categories.snippets
-src/content/pastebins/categories.snippets.gz: src/content/pastebins/categories.snippets
-src/content/podcasts/categories.snippets.gz: src/content/podcasts/categories.snippets
-src/content/screencasts/categories.snippets.gz: src/content/screencasts/categories.snippets
-src/content/tils/categories.snippets.gz: src/content/tils/categories.snippets
-src/content/blog/categories.xml.gz: src/content/blog/categories.xml
-src/content/pastebins/categories.xml.gz: src/content/pastebins/categories.xml
-src/content/podcasts/categories.xml.gz: src/content/podcasts/categories.xml
-src/content/screencasts/categories.xml.gz: src/content/screencasts/categories.xml
-src/content/tils/categories.xml.gz: src/content/tils/categories.xml
-src/content/blog/feed.xml.gz: src/content/blog/feed.xml
-src/content/pastebins/feed.xml.gz: src/content/pastebins/feed.xml
-src/content/podcasts/feed.xml.gz: src/content/podcasts/feed.xml
-src/content/screencasts/feed.xml.gz: src/content/screencasts/feed.xml
-src/content/tils/feed.xml.gz: src/content/tils/feed.xml
+src/content/en/slide/2020/10/19/feature-flags.ps: src/content/en/slide/2020/10/19/feature-flags.adoc
+src/content/en/slide/2020/11/14/local-first-hype.ps: src/content/en/slide/2020/11/14/local-first-hype.adoc
+src/content/en/slide/2020/10/19/feature-flags.pdf: src/content/en/slide/2020/10/19/feature-flags.ps
+src/content/en/slide/2020/11/14/local-first-hype.pdf: src/content/en/slide/2020/11/14/local-first-hype.ps
-src/content/about.htmlbody src/content/about.snippets src/content/about.conf: src/content/about.adoc
-src/content/index.htmlbody src/content/index.snippets src/content/index.conf: src/content/index.adoc
-src/content/blog/2018/07/17/guix-nixos.htmlbody src/content/blog/2018/07/17/guix-nixos.snippets src/content/blog/2018/07/17/guix-nixos.conf: src/content/blog/2018/07/17/guix-nixos.adoc
-src/content/blog/2018/08/01/npm-ci-reproducibility.htmlbody src/content/blog/2018/08/01/npm-ci-reproducibility.snippets src/content/blog/2018/08/01/npm-ci-reproducibility.conf: src/content/blog/2018/08/01/npm-ci-reproducibility.adoc
-src/content/blog/2018/12/21/ytdl-subs.htmlbody src/content/blog/2018/12/21/ytdl-subs.snippets src/content/blog/2018/12/21/ytdl-subs.conf: src/content/blog/2018/12/21/ytdl-subs.adoc
-src/content/blog/2019/06/02/nixos-stateless-workstation.htmlbody src/content/blog/2019/06/02/nixos-stateless-workstation.snippets src/content/blog/2019/06/02/nixos-stateless-workstation.conf: src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
-src/content/blog/2020/08/10/guix-srht.htmlbody src/content/blog/2020/08/10/guix-srht.snippets src/content/blog/2020/08/10/guix-srht.conf: src/content/blog/2020/08/10/guix-srht.adoc
-src/content/blog/2020/08/31/database-i-wish-i-had.htmlbody src/content/blog/2020/08/31/database-i-wish-i-had.snippets src/content/blog/2020/08/31/database-i-wish-i-had.conf: src/content/blog/2020/08/31/database-i-wish-i-had.adoc
-src/content/blog/2020/10/05/cargo2nix.htmlbody src/content/blog/2020/10/05/cargo2nix.snippets src/content/blog/2020/10/05/cargo2nix.conf: src/content/blog/2020/10/05/cargo2nix.adoc
-src/content/blog/2020/10/05/swift2nix.htmlbody src/content/blog/2020/10/05/swift2nix.snippets src/content/blog/2020/10/05/swift2nix.conf: src/content/blog/2020/10/05/swift2nix.adoc
-src/content/blog/2020/10/19/feature-flags.htmlbody src/content/blog/2020/10/19/feature-flags.snippets src/content/blog/2020/10/19/feature-flags.conf: src/content/blog/2020/10/19/feature-flags.adoc
-src/content/blog/2020/10/20/wrong-interviewing.htmlbody src/content/blog/2020/10/20/wrong-interviewing.snippets src/content/blog/2020/10/20/wrong-interviewing.conf: src/content/blog/2020/10/20/wrong-interviewing.adoc
-src/content/blog/2020/11/07/diy-bugs.htmlbody src/content/blog/2020/11/07/diy-bugs.snippets src/content/blog/2020/11/07/diy-bugs.conf: src/content/blog/2020/11/07/diy-bugs.adoc
-src/content/blog/2020/11/08/paradigm-shift-review.htmlbody src/content/blog/2020/11/08/paradigm-shift-review.snippets src/content/blog/2020/11/08/paradigm-shift-review.conf: src/content/blog/2020/11/08/paradigm-shift-review.adoc
-src/content/blog/2020/11/12/database-parsers-trees.htmlbody src/content/blog/2020/11/12/database-parsers-trees.snippets src/content/blog/2020/11/12/database-parsers-trees.conf: src/content/blog/2020/11/12/database-parsers-trees.adoc
-src/content/blog/2020/11/14/local-first-review.htmlbody src/content/blog/2020/11/14/local-first-review.snippets src/content/blog/2020/11/14/local-first-review.conf: src/content/blog/2020/11/14/local-first-review.adoc
-src/content/blog/2021/01/26/remembering-ann.htmlbody src/content/blog/2021/01/26/remembering-ann.snippets src/content/blog/2021/01/26/remembering-ann.conf: src/content/blog/2021/01/26/remembering-ann.adoc
-src/content/blog/2021/02/17/fallible.htmlbody src/content/blog/2021/02/17/fallible.snippets src/content/blog/2021/02/17/fallible.conf: src/content/blog/2021/02/17/fallible.adoc
-src/content/blog/2021/04/29/relational-review.htmlbody src/content/blog/2021/04/29/relational-review.snippets src/content/blog/2021/04/29/relational-review.conf: src/content/blog/2021/04/29/relational-review.adoc
-src/content/pastebins/2016/04/05/rpn.htmlbody src/content/pastebins/2016/04/05/rpn.snippets src/content/pastebins/2016/04/05/rpn.conf: src/content/pastebins/2016/04/05/rpn.adoc
-src/content/pastebins/2018/07/11/nix-pinning.htmlbody src/content/pastebins/2018/07/11/nix-pinning.snippets src/content/pastebins/2018/07/11/nix-pinning.conf: src/content/pastebins/2018/07/11/nix-pinning.adoc
-src/content/pastebins/2018/07/13/guix-nixos-systemd.htmlbody src/content/pastebins/2018/07/13/guix-nixos-systemd.snippets src/content/pastebins/2018/07/13/guix-nixos-systemd.conf: src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc
-src/content/pastebins/2018/07/13/guixbuilder-nixos.htmlbody src/content/pastebins/2018/07/13/guixbuilder-nixos.snippets src/content/pastebins/2018/07/13/guixbuilder-nixos.conf: src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc
-src/content/pastebins/2018/07/13/guixbuilder.htmlbody src/content/pastebins/2018/07/13/guixbuilder.snippets src/content/pastebins/2018/07/13/guixbuilder.conf: src/content/pastebins/2018/07/13/guixbuilder.adoc
-src/content/pastebins/2018/07/13/nix-strpad.htmlbody src/content/pastebins/2018/07/13/nix-strpad.snippets src/content/pastebins/2018/07/13/nix-strpad.conf: src/content/pastebins/2018/07/13/nix-strpad.adoc
-src/content/pastebins/2018/07/25/nix-exps.htmlbody src/content/pastebins/2018/07/25/nix-exps.snippets src/content/pastebins/2018/07/25/nix-exps.conf: src/content/pastebins/2018/07/25/nix-exps.adoc
-src/content/pastebins/2018/07/25/nix-showdrv.htmlbody src/content/pastebins/2018/07/25/nix-showdrv.snippets src/content/pastebins/2018/07/25/nix-showdrv.conf: src/content/pastebins/2018/07/25/nix-showdrv.adoc
-src/content/pastebins/2019/06/08/inconsistent-hash.htmlbody src/content/pastebins/2019/06/08/inconsistent-hash.snippets src/content/pastebins/2019/06/08/inconsistent-hash.conf: src/content/pastebins/2019/06/08/inconsistent-hash.adoc
-src/content/pastebins/2019/12/29/raku-tuple-type.htmlbody src/content/pastebins/2019/12/29/raku-tuple-type.snippets src/content/pastebins/2019/12/29/raku-tuple-type.conf: src/content/pastebins/2019/12/29/raku-tuple-type.adoc
-src/content/pastebins/2020/01/04/guix-import-failure.htmlbody src/content/pastebins/2020/01/04/guix-import-failure.snippets src/content/pastebins/2020/01/04/guix-import-failure.conf: src/content/pastebins/2020/01/04/guix-import-failure.adoc
-src/content/pastebins/2020/02/14/guix-shebang.htmlbody src/content/pastebins/2020/02/14/guix-shebang.snippets src/content/pastebins/2020/02/14/guix-shebang.conf: src/content/pastebins/2020/02/14/guix-shebang.adoc
-src/content/pastebins/2020/11/27/guix-build-local.htmlbody src/content/pastebins/2020/11/27/guix-build-local.snippets src/content/pastebins/2020/11/27/guix-build-local.conf: src/content/pastebins/2020/11/27/guix-build-local.adoc
-src/content/pastebins/2020/12/15/guix-pack-fail.htmlbody src/content/pastebins/2020/12/15/guix-pack-fail.snippets src/content/pastebins/2020/12/15/guix-pack-fail.conf: src/content/pastebins/2020/12/15/guix-pack-fail.adoc
-src/content/pastebins/2021/04/03/naive-slugify-js.htmlbody src/content/pastebins/2021/04/03/naive-slugify-js.snippets src/content/pastebins/2021/04/03/naive-slugify-js.conf: src/content/pastebins/2021/04/03/naive-slugify-js.adoc
-src/content/pastebins/2021/06/08/reading-session-pt1.htmlbody src/content/pastebins/2021/06/08/reading-session-pt1.snippets src/content/pastebins/2021/06/08/reading-session-pt1.conf: src/content/pastebins/2021/06/08/reading-session-pt1.adoc
-src/content/pastebins/2021/06/22/curl-wget.htmlbody src/content/pastebins/2021/06/22/curl-wget.snippets src/content/pastebins/2021/06/22/curl-wget.conf: src/content/pastebins/2021/06/22/curl-wget.adoc
-src/content/pastebins/2021/08/11/h1-spacing.htmlbody src/content/pastebins/2021/08/11/h1-spacing.snippets src/content/pastebins/2021/08/11/h1-spacing.conf: src/content/pastebins/2021/08/11/h1-spacing.adoc
-src/content/pastebins/2021/09/02/sicp-3-19.htmlbody src/content/pastebins/2021/09/02/sicp-3-19.snippets src/content/pastebins/2021/09/02/sicp-3-19.conf: src/content/pastebins/2021/09/02/sicp-3-19.adoc
-src/content/pastebins/2021/09/03/sicp-persistent-queue.htmlbody src/content/pastebins/2021/09/03/sicp-persistent-queue.snippets src/content/pastebins/2021/09/03/sicp-persistent-queue.conf: src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc
-src/content/pastebins/2022/07/14/git-cleanup.htmlbody src/content/pastebins/2022/07/14/git-cleanup.snippets src/content/pastebins/2022/07/14/git-cleanup.conf: src/content/pastebins/2022/07/14/git-cleanup.adoc
-src/content/pastebins/2023/07/22/funcallable-amop.htmlbody src/content/pastebins/2023/07/22/funcallable-amop.snippets src/content/pastebins/2023/07/22/funcallable-amop.conf: src/content/pastebins/2023/07/22/funcallable-amop.adoc
-src/content/podcasts/2020/12/19/test-entry.htmlbody src/content/podcasts/2020/12/19/test-entry.snippets src/content/podcasts/2020/12/19/test-entry.conf: src/content/podcasts/2020/12/19/test-entry.adoc
-src/content/screencasts/2021/02/07/autoqemu.htmlbody src/content/screencasts/2021/02/07/autoqemu.snippets src/content/screencasts/2021/02/07/autoqemu.conf: src/content/screencasts/2021/02/07/autoqemu.adoc
-src/content/tils/2020/08/12/filename-timestamp.htmlbody src/content/tils/2020/08/12/filename-timestamp.snippets src/content/tils/2020/08/12/filename-timestamp.conf: src/content/tils/2020/08/12/filename-timestamp.adoc
-src/content/tils/2020/08/13/code-jekyll.htmlbody src/content/tils/2020/08/13/code-jekyll.snippets src/content/tils/2020/08/13/code-jekyll.conf: src/content/tils/2020/08/13/code-jekyll.adoc
-src/content/tils/2020/08/14/browse-git.htmlbody src/content/tils/2020/08/14/browse-git.snippets src/content/tils/2020/08/14/browse-git.conf: src/content/tils/2020/08/14/browse-git.adoc
-src/content/tils/2020/08/16/git-search.htmlbody src/content/tils/2020/08/16/git-search.snippets src/content/tils/2020/08/16/git-search.conf: src/content/tils/2020/08/16/git-search.adoc
-src/content/tils/2020/08/28/grep-online.htmlbody src/content/tils/2020/08/28/grep-online.snippets src/content/tils/2020/08/28/grep-online.conf: src/content/tils/2020/08/28/grep-online.adoc
-src/content/tils/2020/09/04/cli-email-fun-profit.htmlbody src/content/tils/2020/09/04/cli-email-fun-profit.snippets src/content/tils/2020/09/04/cli-email-fun-profit.conf: src/content/tils/2020/09/04/cli-email-fun-profit.adoc
-src/content/tils/2020/09/05/oldschool-pr.htmlbody src/content/tils/2020/09/05/oldschool-pr.snippets src/content/tils/2020/09/05/oldschool-pr.conf: src/content/tils/2020/09/05/oldschool-pr.adoc
-src/content/tils/2020/10/11/search-git-history.htmlbody src/content/tils/2020/10/11/search-git-history.snippets src/content/tils/2020/10/11/search-git-history.conf: src/content/tils/2020/10/11/search-git-history.adoc
-src/content/tils/2020/11/08/find-broken-symlink.htmlbody src/content/tils/2020/11/08/find-broken-symlink.snippets src/content/tils/2020/11/08/find-broken-symlink.conf: src/content/tils/2020/11/08/find-broken-symlink.adoc
-src/content/tils/2020/11/12/diy-nix-bash-ci.htmlbody src/content/tils/2020/11/12/diy-nix-bash-ci.snippets src/content/tils/2020/11/12/diy-nix-bash-ci.conf: src/content/tils/2020/11/12/diy-nix-bash-ci.adoc
-src/content/tils/2020/11/12/git-bisect-automation.htmlbody src/content/tils/2020/11/12/git-bisect-automation.snippets src/content/tils/2020/11/12/git-bisect-automation.conf: src/content/tils/2020/11/12/git-bisect-automation.adoc
-src/content/tils/2020/11/12/useful-bashvars.htmlbody src/content/tils/2020/11/12/useful-bashvars.snippets src/content/tils/2020/11/12/useful-bashvars.conf: src/content/tils/2020/11/12/useful-bashvars.adoc
-src/content/tils/2020/11/14/gpodder-media.htmlbody src/content/tils/2020/11/14/gpodder-media.snippets src/content/tils/2020/11/14/gpodder-media.conf: src/content/tils/2020/11/14/gpodder-media.adoc
-src/content/tils/2020/11/30/git-notes-ci.htmlbody src/content/tils/2020/11/30/git-notes-ci.snippets src/content/tils/2020/11/30/git-notes-ci.conf: src/content/tils/2020/11/30/git-notes-ci.adoc
-src/content/tils/2020/12/15/shellcheck-repo.htmlbody src/content/tils/2020/12/15/shellcheck-repo.snippets src/content/tils/2020/12/15/shellcheck-repo.conf: src/content/tils/2020/12/15/shellcheck-repo.adoc
-src/content/tils/2020/12/29/svg.htmlbody src/content/tils/2020/12/29/svg.snippets src/content/tils/2020/12/29/svg.conf: src/content/tils/2020/12/29/svg.adoc
-src/content/tils/2021/01/12/curl-awk-emails.htmlbody src/content/tils/2021/01/12/curl-awk-emails.snippets src/content/tils/2021/01/12/curl-awk-emails.conf: src/content/tils/2021/01/12/curl-awk-emails.adoc
-src/content/tils/2021/01/17/posix-shebang.htmlbody src/content/tils/2021/01/17/posix-shebang.snippets src/content/tils/2021/01/17/posix-shebang.conf: src/content/tils/2021/01/17/posix-shebang.adoc
-src/content/tils/2021/04/24/cl-generic-precedence.htmlbody src/content/tils/2021/04/24/cl-generic-precedence.snippets src/content/tils/2021/04/24/cl-generic-precedence.conf: src/content/tils/2021/04/24/cl-generic-precedence.adoc
-src/content/tils/2021/04/24/clojure-autocurry.htmlbody src/content/tils/2021/04/24/clojure-autocurry.snippets src/content/tils/2021/04/24/clojure-autocurry.conf: src/content/tils/2021/04/24/clojure-autocurry.adoc
-src/content/tils/2021/04/24/scm-nif.htmlbody src/content/tils/2021/04/24/scm-nif.snippets src/content/tils/2021/04/24/scm-nif.conf: src/content/tils/2021/04/24/scm-nif.adoc
-src/content/tils/2021/07/23/git-tls-gpg.htmlbody src/content/tils/2021/07/23/git-tls-gpg.snippets src/content/tils/2021/07/23/git-tls-gpg.conf: src/content/tils/2021/07/23/git-tls-gpg.adoc
-src/content/tils/2021/08/11/js-bigint-reviver.htmlbody src/content/tils/2021/08/11/js-bigint-reviver.snippets src/content/tils/2021/08/11/js-bigint-reviver.conf: src/content/tils/2021/08/11/js-bigint-reviver.adoc
-src/content/blog/index.htmlbody src/content/blog/index.snippets src/content/blog/index.conf: src/content/blog/index.adoc
-src/content/pastebins/index.htmlbody src/content/pastebins/index.snippets src/content/pastebins/index.conf: src/content/pastebins/index.adoc
-src/content/podcasts/index.htmlbody src/content/podcasts/index.snippets src/content/podcasts/index.conf: src/content/podcasts/index.adoc
-src/content/screencasts/index.htmlbody src/content/screencasts/index.snippets src/content/screencasts/index.conf: src/content/screencasts/index.adoc
-src/content/tils/index.htmlbody src/content/tils/index.snippets src/content/tils/index.conf: src/content/tils/index.adoc
-src/content/blog/categories.htmlbody src/content/blog/categories.snippets src/content/blog/categories.conf: src/content/blog/categories.adoc
-src/content/pastebins/categories.htmlbody src/content/pastebins/categories.snippets src/content/pastebins/categories.conf: src/content/pastebins/categories.adoc
-src/content/podcasts/categories.htmlbody src/content/podcasts/categories.snippets src/content/podcasts/categories.conf: src/content/podcasts/categories.adoc
-src/content/screencasts/categories.htmlbody src/content/screencasts/categories.snippets src/content/screencasts/categories.conf: src/content/screencasts/categories.adoc
-src/content/tils/categories.htmlbody src/content/tils/categories.snippets src/content/tils/categories.conf: src/content/tils/categories.adoc
-src/content/about.html: src/content/about.conf src/content/about.htmlbody
-src/content/index.html: src/content/index.conf src/content/index.htmlbody
-src/content/blog/2018/07/17/guix-nixos.html: src/content/blog/2018/07/17/guix-nixos.conf src/content/blog/2018/07/17/guix-nixos.htmlbody
-src/content/blog/2018/08/01/npm-ci-reproducibility.html: src/content/blog/2018/08/01/npm-ci-reproducibility.conf src/content/blog/2018/08/01/npm-ci-reproducibility.htmlbody
-src/content/blog/2018/12/21/ytdl-subs.html: src/content/blog/2018/12/21/ytdl-subs.conf src/content/blog/2018/12/21/ytdl-subs.htmlbody
-src/content/blog/2019/06/02/nixos-stateless-workstation.html: src/content/blog/2019/06/02/nixos-stateless-workstation.conf src/content/blog/2019/06/02/nixos-stateless-workstation.htmlbody
-src/content/blog/2020/08/10/guix-srht.html: src/content/blog/2020/08/10/guix-srht.conf src/content/blog/2020/08/10/guix-srht.htmlbody
-src/content/blog/2020/08/31/database-i-wish-i-had.html: src/content/blog/2020/08/31/database-i-wish-i-had.conf src/content/blog/2020/08/31/database-i-wish-i-had.htmlbody
-src/content/blog/2020/10/05/cargo2nix.html: src/content/blog/2020/10/05/cargo2nix.conf src/content/blog/2020/10/05/cargo2nix.htmlbody
-src/content/blog/2020/10/05/swift2nix.html: src/content/blog/2020/10/05/swift2nix.conf src/content/blog/2020/10/05/swift2nix.htmlbody
-src/content/blog/2020/10/19/feature-flags.html: src/content/blog/2020/10/19/feature-flags.conf src/content/blog/2020/10/19/feature-flags.htmlbody
-src/content/blog/2020/10/20/wrong-interviewing.html: src/content/blog/2020/10/20/wrong-interviewing.conf src/content/blog/2020/10/20/wrong-interviewing.htmlbody
-src/content/blog/2020/11/07/diy-bugs.html: src/content/blog/2020/11/07/diy-bugs.conf src/content/blog/2020/11/07/diy-bugs.htmlbody
-src/content/blog/2020/11/08/paradigm-shift-review.html: src/content/blog/2020/11/08/paradigm-shift-review.conf src/content/blog/2020/11/08/paradigm-shift-review.htmlbody
-src/content/blog/2020/11/12/database-parsers-trees.html: src/content/blog/2020/11/12/database-parsers-trees.conf src/content/blog/2020/11/12/database-parsers-trees.htmlbody
-src/content/blog/2020/11/14/local-first-review.html: src/content/blog/2020/11/14/local-first-review.conf src/content/blog/2020/11/14/local-first-review.htmlbody
-src/content/blog/2021/01/26/remembering-ann.html: src/content/blog/2021/01/26/remembering-ann.conf src/content/blog/2021/01/26/remembering-ann.htmlbody
-src/content/blog/2021/02/17/fallible.html: src/content/blog/2021/02/17/fallible.conf src/content/blog/2021/02/17/fallible.htmlbody
-src/content/blog/2021/04/29/relational-review.html: src/content/blog/2021/04/29/relational-review.conf src/content/blog/2021/04/29/relational-review.htmlbody
-src/content/pastebins/2016/04/05/rpn.html: src/content/pastebins/2016/04/05/rpn.conf src/content/pastebins/2016/04/05/rpn.htmlbody
-src/content/pastebins/2018/07/11/nix-pinning.html: src/content/pastebins/2018/07/11/nix-pinning.conf src/content/pastebins/2018/07/11/nix-pinning.htmlbody
-src/content/pastebins/2018/07/13/guix-nixos-systemd.html: src/content/pastebins/2018/07/13/guix-nixos-systemd.conf src/content/pastebins/2018/07/13/guix-nixos-systemd.htmlbody
-src/content/pastebins/2018/07/13/guixbuilder-nixos.html: src/content/pastebins/2018/07/13/guixbuilder-nixos.conf src/content/pastebins/2018/07/13/guixbuilder-nixos.htmlbody
-src/content/pastebins/2018/07/13/guixbuilder.html: src/content/pastebins/2018/07/13/guixbuilder.conf src/content/pastebins/2018/07/13/guixbuilder.htmlbody
-src/content/pastebins/2018/07/13/nix-strpad.html: src/content/pastebins/2018/07/13/nix-strpad.conf src/content/pastebins/2018/07/13/nix-strpad.htmlbody
-src/content/pastebins/2018/07/25/nix-exps.html: src/content/pastebins/2018/07/25/nix-exps.conf src/content/pastebins/2018/07/25/nix-exps.htmlbody
-src/content/pastebins/2018/07/25/nix-showdrv.html: src/content/pastebins/2018/07/25/nix-showdrv.conf src/content/pastebins/2018/07/25/nix-showdrv.htmlbody
-src/content/pastebins/2019/06/08/inconsistent-hash.html: src/content/pastebins/2019/06/08/inconsistent-hash.conf src/content/pastebins/2019/06/08/inconsistent-hash.htmlbody
-src/content/pastebins/2019/12/29/raku-tuple-type.html: src/content/pastebins/2019/12/29/raku-tuple-type.conf src/content/pastebins/2019/12/29/raku-tuple-type.htmlbody
-src/content/pastebins/2020/01/04/guix-import-failure.html: src/content/pastebins/2020/01/04/guix-import-failure.conf src/content/pastebins/2020/01/04/guix-import-failure.htmlbody
-src/content/pastebins/2020/02/14/guix-shebang.html: src/content/pastebins/2020/02/14/guix-shebang.conf src/content/pastebins/2020/02/14/guix-shebang.htmlbody
-src/content/pastebins/2020/11/27/guix-build-local.html: src/content/pastebins/2020/11/27/guix-build-local.conf src/content/pastebins/2020/11/27/guix-build-local.htmlbody
-src/content/pastebins/2020/12/15/guix-pack-fail.html: src/content/pastebins/2020/12/15/guix-pack-fail.conf src/content/pastebins/2020/12/15/guix-pack-fail.htmlbody
-src/content/pastebins/2021/04/03/naive-slugify-js.html: src/content/pastebins/2021/04/03/naive-slugify-js.conf src/content/pastebins/2021/04/03/naive-slugify-js.htmlbody
-src/content/pastebins/2021/06/08/reading-session-pt1.html: src/content/pastebins/2021/06/08/reading-session-pt1.conf src/content/pastebins/2021/06/08/reading-session-pt1.htmlbody
-src/content/pastebins/2021/06/22/curl-wget.html: src/content/pastebins/2021/06/22/curl-wget.conf src/content/pastebins/2021/06/22/curl-wget.htmlbody
-src/content/pastebins/2021/08/11/h1-spacing.html: src/content/pastebins/2021/08/11/h1-spacing.conf src/content/pastebins/2021/08/11/h1-spacing.htmlbody
-src/content/pastebins/2021/09/02/sicp-3-19.html: src/content/pastebins/2021/09/02/sicp-3-19.conf src/content/pastebins/2021/09/02/sicp-3-19.htmlbody
-src/content/pastebins/2021/09/03/sicp-persistent-queue.html: src/content/pastebins/2021/09/03/sicp-persistent-queue.conf src/content/pastebins/2021/09/03/sicp-persistent-queue.htmlbody
-src/content/pastebins/2022/07/14/git-cleanup.html: src/content/pastebins/2022/07/14/git-cleanup.conf src/content/pastebins/2022/07/14/git-cleanup.htmlbody
-src/content/pastebins/2023/07/22/funcallable-amop.html: src/content/pastebins/2023/07/22/funcallable-amop.conf src/content/pastebins/2023/07/22/funcallable-amop.htmlbody
-src/content/podcasts/2020/12/19/test-entry.html: src/content/podcasts/2020/12/19/test-entry.conf src/content/podcasts/2020/12/19/test-entry.htmlbody
-src/content/screencasts/2021/02/07/autoqemu.html: src/content/screencasts/2021/02/07/autoqemu.conf src/content/screencasts/2021/02/07/autoqemu.htmlbody
-src/content/tils/2020/08/12/filename-timestamp.html: src/content/tils/2020/08/12/filename-timestamp.conf src/content/tils/2020/08/12/filename-timestamp.htmlbody
-src/content/tils/2020/08/13/code-jekyll.html: src/content/tils/2020/08/13/code-jekyll.conf src/content/tils/2020/08/13/code-jekyll.htmlbody
-src/content/tils/2020/08/14/browse-git.html: src/content/tils/2020/08/14/browse-git.conf src/content/tils/2020/08/14/browse-git.htmlbody
-src/content/tils/2020/08/16/git-search.html: src/content/tils/2020/08/16/git-search.conf src/content/tils/2020/08/16/git-search.htmlbody
-src/content/tils/2020/08/28/grep-online.html: src/content/tils/2020/08/28/grep-online.conf src/content/tils/2020/08/28/grep-online.htmlbody
-src/content/tils/2020/09/04/cli-email-fun-profit.html: src/content/tils/2020/09/04/cli-email-fun-profit.conf src/content/tils/2020/09/04/cli-email-fun-profit.htmlbody
-src/content/tils/2020/09/05/oldschool-pr.html: src/content/tils/2020/09/05/oldschool-pr.conf src/content/tils/2020/09/05/oldschool-pr.htmlbody
-src/content/tils/2020/10/11/search-git-history.html: src/content/tils/2020/10/11/search-git-history.conf src/content/tils/2020/10/11/search-git-history.htmlbody
-src/content/tils/2020/11/08/find-broken-symlink.html: src/content/tils/2020/11/08/find-broken-symlink.conf src/content/tils/2020/11/08/find-broken-symlink.htmlbody
-src/content/tils/2020/11/12/diy-nix-bash-ci.html: src/content/tils/2020/11/12/diy-nix-bash-ci.conf src/content/tils/2020/11/12/diy-nix-bash-ci.htmlbody
-src/content/tils/2020/11/12/git-bisect-automation.html: src/content/tils/2020/11/12/git-bisect-automation.conf src/content/tils/2020/11/12/git-bisect-automation.htmlbody
-src/content/tils/2020/11/12/useful-bashvars.html: src/content/tils/2020/11/12/useful-bashvars.conf src/content/tils/2020/11/12/useful-bashvars.htmlbody
-src/content/tils/2020/11/14/gpodder-media.html: src/content/tils/2020/11/14/gpodder-media.conf src/content/tils/2020/11/14/gpodder-media.htmlbody
-src/content/tils/2020/11/30/git-notes-ci.html: src/content/tils/2020/11/30/git-notes-ci.conf src/content/tils/2020/11/30/git-notes-ci.htmlbody
-src/content/tils/2020/12/15/shellcheck-repo.html: src/content/tils/2020/12/15/shellcheck-repo.conf src/content/tils/2020/12/15/shellcheck-repo.htmlbody
-src/content/tils/2020/12/29/svg.html: src/content/tils/2020/12/29/svg.conf src/content/tils/2020/12/29/svg.htmlbody
-src/content/tils/2021/01/12/curl-awk-emails.html: src/content/tils/2021/01/12/curl-awk-emails.conf src/content/tils/2021/01/12/curl-awk-emails.htmlbody
-src/content/tils/2021/01/17/posix-shebang.html: src/content/tils/2021/01/17/posix-shebang.conf src/content/tils/2021/01/17/posix-shebang.htmlbody
-src/content/tils/2021/04/24/cl-generic-precedence.html: src/content/tils/2021/04/24/cl-generic-precedence.conf src/content/tils/2021/04/24/cl-generic-precedence.htmlbody
-src/content/tils/2021/04/24/clojure-autocurry.html: src/content/tils/2021/04/24/clojure-autocurry.conf src/content/tils/2021/04/24/clojure-autocurry.htmlbody
-src/content/tils/2021/04/24/scm-nif.html: src/content/tils/2021/04/24/scm-nif.conf src/content/tils/2021/04/24/scm-nif.htmlbody
-src/content/tils/2021/07/23/git-tls-gpg.html: src/content/tils/2021/07/23/git-tls-gpg.conf src/content/tils/2021/07/23/git-tls-gpg.htmlbody
-src/content/tils/2021/08/11/js-bigint-reviver.html: src/content/tils/2021/08/11/js-bigint-reviver.conf src/content/tils/2021/08/11/js-bigint-reviver.htmlbody
-src/content/blog/index.html: src/content/blog/index.conf src/content/blog/index.htmlbody
-src/content/pastebins/index.html: src/content/pastebins/index.conf src/content/pastebins/index.htmlbody
-src/content/podcasts/index.html: src/content/podcasts/index.conf src/content/podcasts/index.htmlbody
-src/content/screencasts/index.html: src/content/screencasts/index.conf src/content/screencasts/index.htmlbody
-src/content/tils/index.html: src/content/tils/index.conf src/content/tils/index.htmlbody
-src/content/blog/categories.html: src/content/blog/categories.conf src/content/blog/categories.htmlbody
-src/content/pastebins/categories.html: src/content/pastebins/categories.conf src/content/pastebins/categories.htmlbody
-src/content/podcasts/categories.html: src/content/podcasts/categories.conf src/content/podcasts/categories.htmlbody
-src/content/screencasts/categories.html: src/content/screencasts/categories.conf src/content/screencasts/categories.htmlbody
-src/content/tils/categories.html: src/content/tils/categories.conf src/content/tils/categories.htmlbody
-src/content/about.updatedat-check: src/content/about.conf
-src/content/index.updatedat-check: src/content/index.conf
-src/content/blog/2018/07/17/guix-nixos.updatedat-check: src/content/blog/2018/07/17/guix-nixos.conf
-src/content/blog/2018/08/01/npm-ci-reproducibility.updatedat-check: src/content/blog/2018/08/01/npm-ci-reproducibility.conf
-src/content/blog/2018/12/21/ytdl-subs.updatedat-check: src/content/blog/2018/12/21/ytdl-subs.conf
-src/content/blog/2019/06/02/nixos-stateless-workstation.updatedat-check: src/content/blog/2019/06/02/nixos-stateless-workstation.conf
-src/content/blog/2020/08/10/guix-srht.updatedat-check: src/content/blog/2020/08/10/guix-srht.conf
-src/content/blog/2020/08/31/database-i-wish-i-had.updatedat-check: src/content/blog/2020/08/31/database-i-wish-i-had.conf
-src/content/blog/2020/10/05/cargo2nix.updatedat-check: src/content/blog/2020/10/05/cargo2nix.conf
-src/content/blog/2020/10/05/swift2nix.updatedat-check: src/content/blog/2020/10/05/swift2nix.conf
-src/content/blog/2020/10/19/feature-flags.updatedat-check: src/content/blog/2020/10/19/feature-flags.conf
-src/content/blog/2020/10/20/wrong-interviewing.updatedat-check: src/content/blog/2020/10/20/wrong-interviewing.conf
-src/content/blog/2020/11/07/diy-bugs.updatedat-check: src/content/blog/2020/11/07/diy-bugs.conf
-src/content/blog/2020/11/08/paradigm-shift-review.updatedat-check: src/content/blog/2020/11/08/paradigm-shift-review.conf
-src/content/blog/2020/11/12/database-parsers-trees.updatedat-check: src/content/blog/2020/11/12/database-parsers-trees.conf
-src/content/blog/2020/11/14/local-first-review.updatedat-check: src/content/blog/2020/11/14/local-first-review.conf
-src/content/blog/2021/01/26/remembering-ann.updatedat-check: src/content/blog/2021/01/26/remembering-ann.conf
-src/content/blog/2021/02/17/fallible.updatedat-check: src/content/blog/2021/02/17/fallible.conf
-src/content/blog/2021/04/29/relational-review.updatedat-check: src/content/blog/2021/04/29/relational-review.conf
-src/content/pastebins/2016/04/05/rpn.updatedat-check: src/content/pastebins/2016/04/05/rpn.conf
-src/content/pastebins/2018/07/11/nix-pinning.updatedat-check: src/content/pastebins/2018/07/11/nix-pinning.conf
-src/content/pastebins/2018/07/13/guix-nixos-systemd.updatedat-check: src/content/pastebins/2018/07/13/guix-nixos-systemd.conf
-src/content/pastebins/2018/07/13/guixbuilder-nixos.updatedat-check: src/content/pastebins/2018/07/13/guixbuilder-nixos.conf
-src/content/pastebins/2018/07/13/guixbuilder.updatedat-check: src/content/pastebins/2018/07/13/guixbuilder.conf
-src/content/pastebins/2018/07/13/nix-strpad.updatedat-check: src/content/pastebins/2018/07/13/nix-strpad.conf
-src/content/pastebins/2018/07/25/nix-exps.updatedat-check: src/content/pastebins/2018/07/25/nix-exps.conf
-src/content/pastebins/2018/07/25/nix-showdrv.updatedat-check: src/content/pastebins/2018/07/25/nix-showdrv.conf
-src/content/pastebins/2019/06/08/inconsistent-hash.updatedat-check: src/content/pastebins/2019/06/08/inconsistent-hash.conf
-src/content/pastebins/2019/12/29/raku-tuple-type.updatedat-check: src/content/pastebins/2019/12/29/raku-tuple-type.conf
-src/content/pastebins/2020/01/04/guix-import-failure.updatedat-check: src/content/pastebins/2020/01/04/guix-import-failure.conf
-src/content/pastebins/2020/02/14/guix-shebang.updatedat-check: src/content/pastebins/2020/02/14/guix-shebang.conf
-src/content/pastebins/2020/11/27/guix-build-local.updatedat-check: src/content/pastebins/2020/11/27/guix-build-local.conf
-src/content/pastebins/2020/12/15/guix-pack-fail.updatedat-check: src/content/pastebins/2020/12/15/guix-pack-fail.conf
-src/content/pastebins/2021/04/03/naive-slugify-js.updatedat-check: src/content/pastebins/2021/04/03/naive-slugify-js.conf
-src/content/pastebins/2021/06/08/reading-session-pt1.updatedat-check: src/content/pastebins/2021/06/08/reading-session-pt1.conf
-src/content/pastebins/2021/06/22/curl-wget.updatedat-check: src/content/pastebins/2021/06/22/curl-wget.conf
-src/content/pastebins/2021/08/11/h1-spacing.updatedat-check: src/content/pastebins/2021/08/11/h1-spacing.conf
-src/content/pastebins/2021/09/02/sicp-3-19.updatedat-check: src/content/pastebins/2021/09/02/sicp-3-19.conf
-src/content/pastebins/2021/09/03/sicp-persistent-queue.updatedat-check: src/content/pastebins/2021/09/03/sicp-persistent-queue.conf
-src/content/pastebins/2022/07/14/git-cleanup.updatedat-check: src/content/pastebins/2022/07/14/git-cleanup.conf
-src/content/pastebins/2023/07/22/funcallable-amop.updatedat-check: src/content/pastebins/2023/07/22/funcallable-amop.conf
-src/content/podcasts/2020/12/19/test-entry.updatedat-check: src/content/podcasts/2020/12/19/test-entry.conf
-src/content/screencasts/2021/02/07/autoqemu.updatedat-check: src/content/screencasts/2021/02/07/autoqemu.conf
-src/content/tils/2020/08/12/filename-timestamp.updatedat-check: src/content/tils/2020/08/12/filename-timestamp.conf
-src/content/tils/2020/08/13/code-jekyll.updatedat-check: src/content/tils/2020/08/13/code-jekyll.conf
-src/content/tils/2020/08/14/browse-git.updatedat-check: src/content/tils/2020/08/14/browse-git.conf
-src/content/tils/2020/08/16/git-search.updatedat-check: src/content/tils/2020/08/16/git-search.conf
-src/content/tils/2020/08/28/grep-online.updatedat-check: src/content/tils/2020/08/28/grep-online.conf
-src/content/tils/2020/09/04/cli-email-fun-profit.updatedat-check: src/content/tils/2020/09/04/cli-email-fun-profit.conf
-src/content/tils/2020/09/05/oldschool-pr.updatedat-check: src/content/tils/2020/09/05/oldschool-pr.conf
-src/content/tils/2020/10/11/search-git-history.updatedat-check: src/content/tils/2020/10/11/search-git-history.conf
-src/content/tils/2020/11/08/find-broken-symlink.updatedat-check: src/content/tils/2020/11/08/find-broken-symlink.conf
-src/content/tils/2020/11/12/diy-nix-bash-ci.updatedat-check: src/content/tils/2020/11/12/diy-nix-bash-ci.conf
-src/content/tils/2020/11/12/git-bisect-automation.updatedat-check: src/content/tils/2020/11/12/git-bisect-automation.conf
-src/content/tils/2020/11/12/useful-bashvars.updatedat-check: src/content/tils/2020/11/12/useful-bashvars.conf
-src/content/tils/2020/11/14/gpodder-media.updatedat-check: src/content/tils/2020/11/14/gpodder-media.conf
-src/content/tils/2020/11/30/git-notes-ci.updatedat-check: src/content/tils/2020/11/30/git-notes-ci.conf
-src/content/tils/2020/12/15/shellcheck-repo.updatedat-check: src/content/tils/2020/12/15/shellcheck-repo.conf
-src/content/tils/2020/12/29/svg.updatedat-check: src/content/tils/2020/12/29/svg.conf
-src/content/tils/2021/01/12/curl-awk-emails.updatedat-check: src/content/tils/2021/01/12/curl-awk-emails.conf
-src/content/tils/2021/01/17/posix-shebang.updatedat-check: src/content/tils/2021/01/17/posix-shebang.conf
-src/content/tils/2021/04/24/cl-generic-precedence.updatedat-check: src/content/tils/2021/04/24/cl-generic-precedence.conf
-src/content/tils/2021/04/24/clojure-autocurry.updatedat-check: src/content/tils/2021/04/24/clojure-autocurry.conf
-src/content/tils/2021/04/24/scm-nif.updatedat-check: src/content/tils/2021/04/24/scm-nif.conf
-src/content/tils/2021/07/23/git-tls-gpg.updatedat-check: src/content/tils/2021/07/23/git-tls-gpg.conf
-src/content/tils/2021/08/11/js-bigint-reviver.updatedat-check: src/content/tils/2021/08/11/js-bigint-reviver.conf
-src/content/blog/index.updatedat-check: src/content/blog/index.conf
-src/content/pastebins/index.updatedat-check: src/content/pastebins/index.conf
-src/content/podcasts/index.updatedat-check: src/content/podcasts/index.conf
-src/content/screencasts/index.updatedat-check: src/content/screencasts/index.conf
-src/content/tils/index.updatedat-check: src/content/tils/index.conf
-src/content/blog/categories.updatedat-check: src/content/blog/categories.conf
-src/content/pastebins/categories.updatedat-check: src/content/pastebins/categories.conf
-src/content/podcasts/categories.updatedat-check: src/content/podcasts/categories.conf
-src/content/screencasts/categories.updatedat-check: src/content/screencasts/categories.conf
-src/content/tils/categories.updatedat-check: src/content/tils/categories.conf
-src/content/about.links-internal-check: src/content/about.links
-src/content/index.links-internal-check: src/content/index.links
-src/content/blog/2018/07/17/guix-nixos.links-internal-check: src/content/blog/2018/07/17/guix-nixos.links
-src/content/blog/2018/08/01/npm-ci-reproducibility.links-internal-check: src/content/blog/2018/08/01/npm-ci-reproducibility.links
-src/content/blog/2018/12/21/ytdl-subs.links-internal-check: src/content/blog/2018/12/21/ytdl-subs.links
-src/content/blog/2019/06/02/nixos-stateless-workstation.links-internal-check: src/content/blog/2019/06/02/nixos-stateless-workstation.links
-src/content/blog/2020/08/10/guix-srht.links-internal-check: src/content/blog/2020/08/10/guix-srht.links
-src/content/blog/2020/08/31/database-i-wish-i-had.links-internal-check: src/content/blog/2020/08/31/database-i-wish-i-had.links
-src/content/blog/2020/10/05/cargo2nix.links-internal-check: src/content/blog/2020/10/05/cargo2nix.links
-src/content/blog/2020/10/05/swift2nix.links-internal-check: src/content/blog/2020/10/05/swift2nix.links
-src/content/blog/2020/10/19/feature-flags.links-internal-check: src/content/blog/2020/10/19/feature-flags.links
-src/content/blog/2020/10/20/wrong-interviewing.links-internal-check: src/content/blog/2020/10/20/wrong-interviewing.links
-src/content/blog/2020/11/07/diy-bugs.links-internal-check: src/content/blog/2020/11/07/diy-bugs.links
-src/content/blog/2020/11/08/paradigm-shift-review.links-internal-check: src/content/blog/2020/11/08/paradigm-shift-review.links
-src/content/blog/2020/11/12/database-parsers-trees.links-internal-check: src/content/blog/2020/11/12/database-parsers-trees.links
-src/content/blog/2020/11/14/local-first-review.links-internal-check: src/content/blog/2020/11/14/local-first-review.links
-src/content/blog/2021/01/26/remembering-ann.links-internal-check: src/content/blog/2021/01/26/remembering-ann.links
-src/content/blog/2021/02/17/fallible.links-internal-check: src/content/blog/2021/02/17/fallible.links
-src/content/blog/2021/04/29/relational-review.links-internal-check: src/content/blog/2021/04/29/relational-review.links
-src/content/pastebins/2016/04/05/rpn.links-internal-check: src/content/pastebins/2016/04/05/rpn.links
-src/content/pastebins/2018/07/11/nix-pinning.links-internal-check: src/content/pastebins/2018/07/11/nix-pinning.links
-src/content/pastebins/2018/07/13/guix-nixos-systemd.links-internal-check: src/content/pastebins/2018/07/13/guix-nixos-systemd.links
-src/content/pastebins/2018/07/13/guixbuilder-nixos.links-internal-check: src/content/pastebins/2018/07/13/guixbuilder-nixos.links
-src/content/pastebins/2018/07/13/guixbuilder.links-internal-check: src/content/pastebins/2018/07/13/guixbuilder.links
-src/content/pastebins/2018/07/13/nix-strpad.links-internal-check: src/content/pastebins/2018/07/13/nix-strpad.links
-src/content/pastebins/2018/07/25/nix-exps.links-internal-check: src/content/pastebins/2018/07/25/nix-exps.links
-src/content/pastebins/2018/07/25/nix-showdrv.links-internal-check: src/content/pastebins/2018/07/25/nix-showdrv.links
-src/content/pastebins/2019/06/08/inconsistent-hash.links-internal-check: src/content/pastebins/2019/06/08/inconsistent-hash.links
-src/content/pastebins/2019/12/29/raku-tuple-type.links-internal-check: src/content/pastebins/2019/12/29/raku-tuple-type.links
-src/content/pastebins/2020/01/04/guix-import-failure.links-internal-check: src/content/pastebins/2020/01/04/guix-import-failure.links
-src/content/pastebins/2020/02/14/guix-shebang.links-internal-check: src/content/pastebins/2020/02/14/guix-shebang.links
-src/content/pastebins/2020/11/27/guix-build-local.links-internal-check: src/content/pastebins/2020/11/27/guix-build-local.links
-src/content/pastebins/2020/12/15/guix-pack-fail.links-internal-check: src/content/pastebins/2020/12/15/guix-pack-fail.links
-src/content/pastebins/2021/04/03/naive-slugify-js.links-internal-check: src/content/pastebins/2021/04/03/naive-slugify-js.links
-src/content/pastebins/2021/06/08/reading-session-pt1.links-internal-check: src/content/pastebins/2021/06/08/reading-session-pt1.links
-src/content/pastebins/2021/06/22/curl-wget.links-internal-check: src/content/pastebins/2021/06/22/curl-wget.links
-src/content/pastebins/2021/08/11/h1-spacing.links-internal-check: src/content/pastebins/2021/08/11/h1-spacing.links
-src/content/pastebins/2021/09/02/sicp-3-19.links-internal-check: src/content/pastebins/2021/09/02/sicp-3-19.links
-src/content/pastebins/2021/09/03/sicp-persistent-queue.links-internal-check: src/content/pastebins/2021/09/03/sicp-persistent-queue.links
-src/content/pastebins/2022/07/14/git-cleanup.links-internal-check: src/content/pastebins/2022/07/14/git-cleanup.links
-src/content/pastebins/2023/07/22/funcallable-amop.links-internal-check: src/content/pastebins/2023/07/22/funcallable-amop.links
-src/content/podcasts/2020/12/19/test-entry.links-internal-check: src/content/podcasts/2020/12/19/test-entry.links
-src/content/screencasts/2021/02/07/autoqemu.links-internal-check: src/content/screencasts/2021/02/07/autoqemu.links
-src/content/tils/2020/08/12/filename-timestamp.links-internal-check: src/content/tils/2020/08/12/filename-timestamp.links
-src/content/tils/2020/08/13/code-jekyll.links-internal-check: src/content/tils/2020/08/13/code-jekyll.links
-src/content/tils/2020/08/14/browse-git.links-internal-check: src/content/tils/2020/08/14/browse-git.links
-src/content/tils/2020/08/16/git-search.links-internal-check: src/content/tils/2020/08/16/git-search.links
-src/content/tils/2020/08/28/grep-online.links-internal-check: src/content/tils/2020/08/28/grep-online.links
-src/content/tils/2020/09/04/cli-email-fun-profit.links-internal-check: src/content/tils/2020/09/04/cli-email-fun-profit.links
-src/content/tils/2020/09/05/oldschool-pr.links-internal-check: src/content/tils/2020/09/05/oldschool-pr.links
-src/content/tils/2020/10/11/search-git-history.links-internal-check: src/content/tils/2020/10/11/search-git-history.links
-src/content/tils/2020/11/08/find-broken-symlink.links-internal-check: src/content/tils/2020/11/08/find-broken-symlink.links
-src/content/tils/2020/11/12/diy-nix-bash-ci.links-internal-check: src/content/tils/2020/11/12/diy-nix-bash-ci.links
-src/content/tils/2020/11/12/git-bisect-automation.links-internal-check: src/content/tils/2020/11/12/git-bisect-automation.links
-src/content/tils/2020/11/12/useful-bashvars.links-internal-check: src/content/tils/2020/11/12/useful-bashvars.links
-src/content/tils/2020/11/14/gpodder-media.links-internal-check: src/content/tils/2020/11/14/gpodder-media.links
-src/content/tils/2020/11/30/git-notes-ci.links-internal-check: src/content/tils/2020/11/30/git-notes-ci.links
-src/content/tils/2020/12/15/shellcheck-repo.links-internal-check: src/content/tils/2020/12/15/shellcheck-repo.links
-src/content/tils/2020/12/29/svg.links-internal-check: src/content/tils/2020/12/29/svg.links
-src/content/tils/2021/01/12/curl-awk-emails.links-internal-check: src/content/tils/2021/01/12/curl-awk-emails.links
-src/content/tils/2021/01/17/posix-shebang.links-internal-check: src/content/tils/2021/01/17/posix-shebang.links
-src/content/tils/2021/04/24/cl-generic-precedence.links-internal-check: src/content/tils/2021/04/24/cl-generic-precedence.links
-src/content/tils/2021/04/24/clojure-autocurry.links-internal-check: src/content/tils/2021/04/24/clojure-autocurry.links
-src/content/tils/2021/04/24/scm-nif.links-internal-check: src/content/tils/2021/04/24/scm-nif.links
-src/content/tils/2021/07/23/git-tls-gpg.links-internal-check: src/content/tils/2021/07/23/git-tls-gpg.links
-src/content/tils/2021/08/11/js-bigint-reviver.links-internal-check: src/content/tils/2021/08/11/js-bigint-reviver.links
-src/content/blog/index.links-internal-check: src/content/blog/index.links
-src/content/pastebins/index.links-internal-check: src/content/pastebins/index.links
-src/content/podcasts/index.links-internal-check: src/content/podcasts/index.links
-src/content/screencasts/index.links-internal-check: src/content/screencasts/index.links
-src/content/tils/index.links-internal-check: src/content/tils/index.links
-src/content/blog/categories.links-internal-check: src/content/blog/categories.links
-src/content/pastebins/categories.links-internal-check: src/content/pastebins/categories.links
-src/content/podcasts/categories.links-internal-check: src/content/podcasts/categories.links
-src/content/screencasts/categories.links-internal-check: src/content/screencasts/categories.links
-src/content/tils/categories.links-internal-check: src/content/tils/categories.links
-src/content/about.caslinks: src/content/about.links
-src/content/index.caslinks: src/content/index.links
-src/content/blog/2018/07/17/guix-nixos.caslinks: src/content/blog/2018/07/17/guix-nixos.links
-src/content/blog/2018/08/01/npm-ci-reproducibility.caslinks: src/content/blog/2018/08/01/npm-ci-reproducibility.links
-src/content/blog/2018/12/21/ytdl-subs.caslinks: src/content/blog/2018/12/21/ytdl-subs.links
-src/content/blog/2019/06/02/nixos-stateless-workstation.caslinks: src/content/blog/2019/06/02/nixos-stateless-workstation.links
-src/content/blog/2020/08/10/guix-srht.caslinks: src/content/blog/2020/08/10/guix-srht.links
-src/content/blog/2020/08/31/database-i-wish-i-had.caslinks: src/content/blog/2020/08/31/database-i-wish-i-had.links
-src/content/blog/2020/10/05/cargo2nix.caslinks: src/content/blog/2020/10/05/cargo2nix.links
-src/content/blog/2020/10/05/swift2nix.caslinks: src/content/blog/2020/10/05/swift2nix.links
-src/content/blog/2020/10/19/feature-flags.caslinks: src/content/blog/2020/10/19/feature-flags.links
-src/content/blog/2020/10/20/wrong-interviewing.caslinks: src/content/blog/2020/10/20/wrong-interviewing.links
-src/content/blog/2020/11/07/diy-bugs.caslinks: src/content/blog/2020/11/07/diy-bugs.links
-src/content/blog/2020/11/08/paradigm-shift-review.caslinks: src/content/blog/2020/11/08/paradigm-shift-review.links
-src/content/blog/2020/11/12/database-parsers-trees.caslinks: src/content/blog/2020/11/12/database-parsers-trees.links
-src/content/blog/2020/11/14/local-first-review.caslinks: src/content/blog/2020/11/14/local-first-review.links
-src/content/blog/2021/01/26/remembering-ann.caslinks: src/content/blog/2021/01/26/remembering-ann.links
-src/content/blog/2021/02/17/fallible.caslinks: src/content/blog/2021/02/17/fallible.links
-src/content/blog/2021/04/29/relational-review.caslinks: src/content/blog/2021/04/29/relational-review.links
-src/content/pastebins/2016/04/05/rpn.caslinks: src/content/pastebins/2016/04/05/rpn.links
-src/content/pastebins/2018/07/11/nix-pinning.caslinks: src/content/pastebins/2018/07/11/nix-pinning.links
-src/content/pastebins/2018/07/13/guix-nixos-systemd.caslinks: src/content/pastebins/2018/07/13/guix-nixos-systemd.links
-src/content/pastebins/2018/07/13/guixbuilder-nixos.caslinks: src/content/pastebins/2018/07/13/guixbuilder-nixos.links
-src/content/pastebins/2018/07/13/guixbuilder.caslinks: src/content/pastebins/2018/07/13/guixbuilder.links
-src/content/pastebins/2018/07/13/nix-strpad.caslinks: src/content/pastebins/2018/07/13/nix-strpad.links
-src/content/pastebins/2018/07/25/nix-exps.caslinks: src/content/pastebins/2018/07/25/nix-exps.links
-src/content/pastebins/2018/07/25/nix-showdrv.caslinks: src/content/pastebins/2018/07/25/nix-showdrv.links
-src/content/pastebins/2019/06/08/inconsistent-hash.caslinks: src/content/pastebins/2019/06/08/inconsistent-hash.links
-src/content/pastebins/2019/12/29/raku-tuple-type.caslinks: src/content/pastebins/2019/12/29/raku-tuple-type.links
-src/content/pastebins/2020/01/04/guix-import-failure.caslinks: src/content/pastebins/2020/01/04/guix-import-failure.links
-src/content/pastebins/2020/02/14/guix-shebang.caslinks: src/content/pastebins/2020/02/14/guix-shebang.links
-src/content/pastebins/2020/11/27/guix-build-local.caslinks: src/content/pastebins/2020/11/27/guix-build-local.links
-src/content/pastebins/2020/12/15/guix-pack-fail.caslinks: src/content/pastebins/2020/12/15/guix-pack-fail.links
-src/content/pastebins/2021/04/03/naive-slugify-js.caslinks: src/content/pastebins/2021/04/03/naive-slugify-js.links
-src/content/pastebins/2021/06/08/reading-session-pt1.caslinks: src/content/pastebins/2021/06/08/reading-session-pt1.links
-src/content/pastebins/2021/06/22/curl-wget.caslinks: src/content/pastebins/2021/06/22/curl-wget.links
-src/content/pastebins/2021/08/11/h1-spacing.caslinks: src/content/pastebins/2021/08/11/h1-spacing.links
-src/content/pastebins/2021/09/02/sicp-3-19.caslinks: src/content/pastebins/2021/09/02/sicp-3-19.links
-src/content/pastebins/2021/09/03/sicp-persistent-queue.caslinks: src/content/pastebins/2021/09/03/sicp-persistent-queue.links
-src/content/pastebins/2022/07/14/git-cleanup.caslinks: src/content/pastebins/2022/07/14/git-cleanup.links
-src/content/pastebins/2023/07/22/funcallable-amop.caslinks: src/content/pastebins/2023/07/22/funcallable-amop.links
-src/content/podcasts/2020/12/19/test-entry.caslinks: src/content/podcasts/2020/12/19/test-entry.links
-src/content/screencasts/2021/02/07/autoqemu.caslinks: src/content/screencasts/2021/02/07/autoqemu.links
-src/content/tils/2020/08/12/filename-timestamp.caslinks: src/content/tils/2020/08/12/filename-timestamp.links
-src/content/tils/2020/08/13/code-jekyll.caslinks: src/content/tils/2020/08/13/code-jekyll.links
-src/content/tils/2020/08/14/browse-git.caslinks: src/content/tils/2020/08/14/browse-git.links
-src/content/tils/2020/08/16/git-search.caslinks: src/content/tils/2020/08/16/git-search.links
-src/content/tils/2020/08/28/grep-online.caslinks: src/content/tils/2020/08/28/grep-online.links
-src/content/tils/2020/09/04/cli-email-fun-profit.caslinks: src/content/tils/2020/09/04/cli-email-fun-profit.links
-src/content/tils/2020/09/05/oldschool-pr.caslinks: src/content/tils/2020/09/05/oldschool-pr.links
-src/content/tils/2020/10/11/search-git-history.caslinks: src/content/tils/2020/10/11/search-git-history.links
-src/content/tils/2020/11/08/find-broken-symlink.caslinks: src/content/tils/2020/11/08/find-broken-symlink.links
-src/content/tils/2020/11/12/diy-nix-bash-ci.caslinks: src/content/tils/2020/11/12/diy-nix-bash-ci.links
-src/content/tils/2020/11/12/git-bisect-automation.caslinks: src/content/tils/2020/11/12/git-bisect-automation.links
-src/content/tils/2020/11/12/useful-bashvars.caslinks: src/content/tils/2020/11/12/useful-bashvars.links
-src/content/tils/2020/11/14/gpodder-media.caslinks: src/content/tils/2020/11/14/gpodder-media.links
-src/content/tils/2020/11/30/git-notes-ci.caslinks: src/content/tils/2020/11/30/git-notes-ci.links
-src/content/tils/2020/12/15/shellcheck-repo.caslinks: src/content/tils/2020/12/15/shellcheck-repo.links
-src/content/tils/2020/12/29/svg.caslinks: src/content/tils/2020/12/29/svg.links
-src/content/tils/2021/01/12/curl-awk-emails.caslinks: src/content/tils/2021/01/12/curl-awk-emails.links
-src/content/tils/2021/01/17/posix-shebang.caslinks: src/content/tils/2021/01/17/posix-shebang.links
-src/content/tils/2021/04/24/cl-generic-precedence.caslinks: src/content/tils/2021/04/24/cl-generic-precedence.links
-src/content/tils/2021/04/24/clojure-autocurry.caslinks: src/content/tils/2021/04/24/clojure-autocurry.links
-src/content/tils/2021/04/24/scm-nif.caslinks: src/content/tils/2021/04/24/scm-nif.links
-src/content/tils/2021/07/23/git-tls-gpg.caslinks: src/content/tils/2021/07/23/git-tls-gpg.links
-src/content/tils/2021/08/11/js-bigint-reviver.caslinks: src/content/tils/2021/08/11/js-bigint-reviver.links
-src/content/blog/index.caslinks: src/content/blog/index.links
-src/content/pastebins/index.caslinks: src/content/pastebins/index.links
-src/content/podcasts/index.caslinks: src/content/podcasts/index.links
-src/content/screencasts/index.caslinks: src/content/screencasts/index.links
-src/content/tils/index.caslinks: src/content/tils/index.links
-src/content/blog/categories.caslinks: src/content/blog/categories.links
-src/content/pastebins/categories.caslinks: src/content/pastebins/categories.links
-src/content/podcasts/categories.caslinks: src/content/podcasts/categories.links
-src/content/screencasts/categories.caslinks: src/content/screencasts/categories.links
-src/content/tils/categories.caslinks: src/content/tils/categories.links
-src/content/blog/2018/07/17/guix-nixos.feedentry: src/content/blog/2018/07/17/guix-nixos.conf src/content/blog/2018/07/17/guix-nixos.htmlbody
-src/content/blog/2018/08/01/npm-ci-reproducibility.feedentry: src/content/blog/2018/08/01/npm-ci-reproducibility.conf src/content/blog/2018/08/01/npm-ci-reproducibility.htmlbody
-src/content/blog/2018/12/21/ytdl-subs.feedentry: src/content/blog/2018/12/21/ytdl-subs.conf src/content/blog/2018/12/21/ytdl-subs.htmlbody
-src/content/blog/2019/06/02/nixos-stateless-workstation.feedentry: src/content/blog/2019/06/02/nixos-stateless-workstation.conf src/content/blog/2019/06/02/nixos-stateless-workstation.htmlbody
-src/content/blog/2020/08/10/guix-srht.feedentry: src/content/blog/2020/08/10/guix-srht.conf src/content/blog/2020/08/10/guix-srht.htmlbody
-src/content/blog/2020/08/31/database-i-wish-i-had.feedentry: src/content/blog/2020/08/31/database-i-wish-i-had.conf src/content/blog/2020/08/31/database-i-wish-i-had.htmlbody
-src/content/blog/2020/10/05/cargo2nix.feedentry: src/content/blog/2020/10/05/cargo2nix.conf src/content/blog/2020/10/05/cargo2nix.htmlbody
-src/content/blog/2020/10/05/swift2nix.feedentry: src/content/blog/2020/10/05/swift2nix.conf src/content/blog/2020/10/05/swift2nix.htmlbody
-src/content/blog/2020/10/19/feature-flags.feedentry: src/content/blog/2020/10/19/feature-flags.conf src/content/blog/2020/10/19/feature-flags.htmlbody
-src/content/blog/2020/10/20/wrong-interviewing.feedentry: src/content/blog/2020/10/20/wrong-interviewing.conf src/content/blog/2020/10/20/wrong-interviewing.htmlbody
-src/content/blog/2020/11/07/diy-bugs.feedentry: src/content/blog/2020/11/07/diy-bugs.conf src/content/blog/2020/11/07/diy-bugs.htmlbody
-src/content/blog/2020/11/08/paradigm-shift-review.feedentry: src/content/blog/2020/11/08/paradigm-shift-review.conf src/content/blog/2020/11/08/paradigm-shift-review.htmlbody
-src/content/blog/2020/11/12/database-parsers-trees.feedentry: src/content/blog/2020/11/12/database-parsers-trees.conf src/content/blog/2020/11/12/database-parsers-trees.htmlbody
-src/content/blog/2020/11/14/local-first-review.feedentry: src/content/blog/2020/11/14/local-first-review.conf src/content/blog/2020/11/14/local-first-review.htmlbody
-src/content/blog/2021/01/26/remembering-ann.feedentry: src/content/blog/2021/01/26/remembering-ann.conf src/content/blog/2021/01/26/remembering-ann.htmlbody
-src/content/blog/2021/02/17/fallible.feedentry: src/content/blog/2021/02/17/fallible.conf src/content/blog/2021/02/17/fallible.htmlbody
-src/content/blog/2021/04/29/relational-review.feedentry: src/content/blog/2021/04/29/relational-review.conf src/content/blog/2021/04/29/relational-review.htmlbody
-src/content/pastebins/2016/04/05/rpn.feedentry: src/content/pastebins/2016/04/05/rpn.conf src/content/pastebins/2016/04/05/rpn.htmlbody
-src/content/pastebins/2018/07/11/nix-pinning.feedentry: src/content/pastebins/2018/07/11/nix-pinning.conf src/content/pastebins/2018/07/11/nix-pinning.htmlbody
-src/content/pastebins/2018/07/13/guix-nixos-systemd.feedentry: src/content/pastebins/2018/07/13/guix-nixos-systemd.conf src/content/pastebins/2018/07/13/guix-nixos-systemd.htmlbody
-src/content/pastebins/2018/07/13/guixbuilder-nixos.feedentry: src/content/pastebins/2018/07/13/guixbuilder-nixos.conf src/content/pastebins/2018/07/13/guixbuilder-nixos.htmlbody
-src/content/pastebins/2018/07/13/guixbuilder.feedentry: src/content/pastebins/2018/07/13/guixbuilder.conf src/content/pastebins/2018/07/13/guixbuilder.htmlbody
-src/content/pastebins/2018/07/13/nix-strpad.feedentry: src/content/pastebins/2018/07/13/nix-strpad.conf src/content/pastebins/2018/07/13/nix-strpad.htmlbody
-src/content/pastebins/2018/07/25/nix-exps.feedentry: src/content/pastebins/2018/07/25/nix-exps.conf src/content/pastebins/2018/07/25/nix-exps.htmlbody
-src/content/pastebins/2018/07/25/nix-showdrv.feedentry: src/content/pastebins/2018/07/25/nix-showdrv.conf src/content/pastebins/2018/07/25/nix-showdrv.htmlbody
-src/content/pastebins/2019/06/08/inconsistent-hash.feedentry: src/content/pastebins/2019/06/08/inconsistent-hash.conf src/content/pastebins/2019/06/08/inconsistent-hash.htmlbody
-src/content/pastebins/2019/12/29/raku-tuple-type.feedentry: src/content/pastebins/2019/12/29/raku-tuple-type.conf src/content/pastebins/2019/12/29/raku-tuple-type.htmlbody
-src/content/pastebins/2020/01/04/guix-import-failure.feedentry: src/content/pastebins/2020/01/04/guix-import-failure.conf src/content/pastebins/2020/01/04/guix-import-failure.htmlbody
-src/content/pastebins/2020/02/14/guix-shebang.feedentry: src/content/pastebins/2020/02/14/guix-shebang.conf src/content/pastebins/2020/02/14/guix-shebang.htmlbody
-src/content/pastebins/2020/11/27/guix-build-local.feedentry: src/content/pastebins/2020/11/27/guix-build-local.conf src/content/pastebins/2020/11/27/guix-build-local.htmlbody
-src/content/pastebins/2020/12/15/guix-pack-fail.feedentry: src/content/pastebins/2020/12/15/guix-pack-fail.conf src/content/pastebins/2020/12/15/guix-pack-fail.htmlbody
-src/content/pastebins/2021/04/03/naive-slugify-js.feedentry: src/content/pastebins/2021/04/03/naive-slugify-js.conf src/content/pastebins/2021/04/03/naive-slugify-js.htmlbody
-src/content/pastebins/2021/06/08/reading-session-pt1.feedentry: src/content/pastebins/2021/06/08/reading-session-pt1.conf src/content/pastebins/2021/06/08/reading-session-pt1.htmlbody
-src/content/pastebins/2021/06/22/curl-wget.feedentry: src/content/pastebins/2021/06/22/curl-wget.conf src/content/pastebins/2021/06/22/curl-wget.htmlbody
-src/content/pastebins/2021/08/11/h1-spacing.feedentry: src/content/pastebins/2021/08/11/h1-spacing.conf src/content/pastebins/2021/08/11/h1-spacing.htmlbody
-src/content/pastebins/2021/09/02/sicp-3-19.feedentry: src/content/pastebins/2021/09/02/sicp-3-19.conf src/content/pastebins/2021/09/02/sicp-3-19.htmlbody
-src/content/pastebins/2021/09/03/sicp-persistent-queue.feedentry: src/content/pastebins/2021/09/03/sicp-persistent-queue.conf src/content/pastebins/2021/09/03/sicp-persistent-queue.htmlbody
-src/content/pastebins/2022/07/14/git-cleanup.feedentry: src/content/pastebins/2022/07/14/git-cleanup.conf src/content/pastebins/2022/07/14/git-cleanup.htmlbody
-src/content/pastebins/2023/07/22/funcallable-amop.feedentry: src/content/pastebins/2023/07/22/funcallable-amop.conf src/content/pastebins/2023/07/22/funcallable-amop.htmlbody
-src/content/podcasts/2020/12/19/test-entry.feedentry: src/content/podcasts/2020/12/19/test-entry.conf src/content/podcasts/2020/12/19/test-entry.htmlbody
-src/content/screencasts/2021/02/07/autoqemu.feedentry: src/content/screencasts/2021/02/07/autoqemu.conf src/content/screencasts/2021/02/07/autoqemu.htmlbody
-src/content/tils/2020/08/12/filename-timestamp.feedentry: src/content/tils/2020/08/12/filename-timestamp.conf src/content/tils/2020/08/12/filename-timestamp.htmlbody
-src/content/tils/2020/08/13/code-jekyll.feedentry: src/content/tils/2020/08/13/code-jekyll.conf src/content/tils/2020/08/13/code-jekyll.htmlbody
-src/content/tils/2020/08/14/browse-git.feedentry: src/content/tils/2020/08/14/browse-git.conf src/content/tils/2020/08/14/browse-git.htmlbody
-src/content/tils/2020/08/16/git-search.feedentry: src/content/tils/2020/08/16/git-search.conf src/content/tils/2020/08/16/git-search.htmlbody
-src/content/tils/2020/08/28/grep-online.feedentry: src/content/tils/2020/08/28/grep-online.conf src/content/tils/2020/08/28/grep-online.htmlbody
-src/content/tils/2020/09/04/cli-email-fun-profit.feedentry: src/content/tils/2020/09/04/cli-email-fun-profit.conf src/content/tils/2020/09/04/cli-email-fun-profit.htmlbody
-src/content/tils/2020/09/05/oldschool-pr.feedentry: src/content/tils/2020/09/05/oldschool-pr.conf src/content/tils/2020/09/05/oldschool-pr.htmlbody
-src/content/tils/2020/10/11/search-git-history.feedentry: src/content/tils/2020/10/11/search-git-history.conf src/content/tils/2020/10/11/search-git-history.htmlbody
-src/content/tils/2020/11/08/find-broken-symlink.feedentry: src/content/tils/2020/11/08/find-broken-symlink.conf src/content/tils/2020/11/08/find-broken-symlink.htmlbody
-src/content/tils/2020/11/12/diy-nix-bash-ci.feedentry: src/content/tils/2020/11/12/diy-nix-bash-ci.conf src/content/tils/2020/11/12/diy-nix-bash-ci.htmlbody
-src/content/tils/2020/11/12/git-bisect-automation.feedentry: src/content/tils/2020/11/12/git-bisect-automation.conf src/content/tils/2020/11/12/git-bisect-automation.htmlbody
-src/content/tils/2020/11/12/useful-bashvars.feedentry: src/content/tils/2020/11/12/useful-bashvars.conf src/content/tils/2020/11/12/useful-bashvars.htmlbody
-src/content/tils/2020/11/14/gpodder-media.feedentry: src/content/tils/2020/11/14/gpodder-media.conf src/content/tils/2020/11/14/gpodder-media.htmlbody
-src/content/tils/2020/11/30/git-notes-ci.feedentry: src/content/tils/2020/11/30/git-notes-ci.conf src/content/tils/2020/11/30/git-notes-ci.htmlbody
-src/content/tils/2020/12/15/shellcheck-repo.feedentry: src/content/tils/2020/12/15/shellcheck-repo.conf src/content/tils/2020/12/15/shellcheck-repo.htmlbody
-src/content/tils/2020/12/29/svg.feedentry: src/content/tils/2020/12/29/svg.conf src/content/tils/2020/12/29/svg.htmlbody
-src/content/tils/2021/01/12/curl-awk-emails.feedentry: src/content/tils/2021/01/12/curl-awk-emails.conf src/content/tils/2021/01/12/curl-awk-emails.htmlbody
-src/content/tils/2021/01/17/posix-shebang.feedentry: src/content/tils/2021/01/17/posix-shebang.conf src/content/tils/2021/01/17/posix-shebang.htmlbody
-src/content/tils/2021/04/24/cl-generic-precedence.feedentry: src/content/tils/2021/04/24/cl-generic-precedence.conf src/content/tils/2021/04/24/cl-generic-precedence.htmlbody
-src/content/tils/2021/04/24/clojure-autocurry.feedentry: src/content/tils/2021/04/24/clojure-autocurry.conf src/content/tils/2021/04/24/clojure-autocurry.htmlbody
-src/content/tils/2021/04/24/scm-nif.feedentry: src/content/tils/2021/04/24/scm-nif.conf src/content/tils/2021/04/24/scm-nif.htmlbody
-src/content/tils/2021/07/23/git-tls-gpg.feedentry: src/content/tils/2021/07/23/git-tls-gpg.conf src/content/tils/2021/07/23/git-tls-gpg.htmlbody
-src/content/tils/2021/08/11/js-bigint-reviver.feedentry: src/content/tils/2021/08/11/js-bigint-reviver.conf src/content/tils/2021/08/11/js-bigint-reviver.htmlbody
-src/content/blog/2018/07/17/guix-nixos.sortdata: src/content/blog/2018/07/17/guix-nixos.conf
-src/content/blog/2018/08/01/npm-ci-reproducibility.sortdata: src/content/blog/2018/08/01/npm-ci-reproducibility.conf
-src/content/blog/2018/12/21/ytdl-subs.sortdata: src/content/blog/2018/12/21/ytdl-subs.conf
-src/content/blog/2019/06/02/nixos-stateless-workstation.sortdata: src/content/blog/2019/06/02/nixos-stateless-workstation.conf
-src/content/blog/2020/08/10/guix-srht.sortdata: src/content/blog/2020/08/10/guix-srht.conf
-src/content/blog/2020/08/31/database-i-wish-i-had.sortdata: src/content/blog/2020/08/31/database-i-wish-i-had.conf
-src/content/blog/2020/10/05/cargo2nix.sortdata: src/content/blog/2020/10/05/cargo2nix.conf
-src/content/blog/2020/10/05/swift2nix.sortdata: src/content/blog/2020/10/05/swift2nix.conf
-src/content/blog/2020/10/19/feature-flags.sortdata: src/content/blog/2020/10/19/feature-flags.conf
-src/content/blog/2020/10/20/wrong-interviewing.sortdata: src/content/blog/2020/10/20/wrong-interviewing.conf
-src/content/blog/2020/11/07/diy-bugs.sortdata: src/content/blog/2020/11/07/diy-bugs.conf
-src/content/blog/2020/11/08/paradigm-shift-review.sortdata: src/content/blog/2020/11/08/paradigm-shift-review.conf
-src/content/blog/2020/11/12/database-parsers-trees.sortdata: src/content/blog/2020/11/12/database-parsers-trees.conf
-src/content/blog/2020/11/14/local-first-review.sortdata: src/content/blog/2020/11/14/local-first-review.conf
-src/content/blog/2021/01/26/remembering-ann.sortdata: src/content/blog/2021/01/26/remembering-ann.conf
-src/content/blog/2021/02/17/fallible.sortdata: src/content/blog/2021/02/17/fallible.conf
-src/content/blog/2021/04/29/relational-review.sortdata: src/content/blog/2021/04/29/relational-review.conf
-src/content/pastebins/2016/04/05/rpn.sortdata: src/content/pastebins/2016/04/05/rpn.conf
-src/content/pastebins/2018/07/11/nix-pinning.sortdata: src/content/pastebins/2018/07/11/nix-pinning.conf
-src/content/pastebins/2018/07/13/guix-nixos-systemd.sortdata: src/content/pastebins/2018/07/13/guix-nixos-systemd.conf
-src/content/pastebins/2018/07/13/guixbuilder-nixos.sortdata: src/content/pastebins/2018/07/13/guixbuilder-nixos.conf
-src/content/pastebins/2018/07/13/guixbuilder.sortdata: src/content/pastebins/2018/07/13/guixbuilder.conf
-src/content/pastebins/2018/07/13/nix-strpad.sortdata: src/content/pastebins/2018/07/13/nix-strpad.conf
-src/content/pastebins/2018/07/25/nix-exps.sortdata: src/content/pastebins/2018/07/25/nix-exps.conf
-src/content/pastebins/2018/07/25/nix-showdrv.sortdata: src/content/pastebins/2018/07/25/nix-showdrv.conf
-src/content/pastebins/2019/06/08/inconsistent-hash.sortdata: src/content/pastebins/2019/06/08/inconsistent-hash.conf
-src/content/pastebins/2019/12/29/raku-tuple-type.sortdata: src/content/pastebins/2019/12/29/raku-tuple-type.conf
-src/content/pastebins/2020/01/04/guix-import-failure.sortdata: src/content/pastebins/2020/01/04/guix-import-failure.conf
-src/content/pastebins/2020/02/14/guix-shebang.sortdata: src/content/pastebins/2020/02/14/guix-shebang.conf
-src/content/pastebins/2020/11/27/guix-build-local.sortdata: src/content/pastebins/2020/11/27/guix-build-local.conf
-src/content/pastebins/2020/12/15/guix-pack-fail.sortdata: src/content/pastebins/2020/12/15/guix-pack-fail.conf
-src/content/pastebins/2021/04/03/naive-slugify-js.sortdata: src/content/pastebins/2021/04/03/naive-slugify-js.conf
-src/content/pastebins/2021/06/08/reading-session-pt1.sortdata: src/content/pastebins/2021/06/08/reading-session-pt1.conf
-src/content/pastebins/2021/06/22/curl-wget.sortdata: src/content/pastebins/2021/06/22/curl-wget.conf
-src/content/pastebins/2021/08/11/h1-spacing.sortdata: src/content/pastebins/2021/08/11/h1-spacing.conf
-src/content/pastebins/2021/09/02/sicp-3-19.sortdata: src/content/pastebins/2021/09/02/sicp-3-19.conf
-src/content/pastebins/2021/09/03/sicp-persistent-queue.sortdata: src/content/pastebins/2021/09/03/sicp-persistent-queue.conf
-src/content/pastebins/2022/07/14/git-cleanup.sortdata: src/content/pastebins/2022/07/14/git-cleanup.conf
-src/content/pastebins/2023/07/22/funcallable-amop.sortdata: src/content/pastebins/2023/07/22/funcallable-amop.conf
-src/content/podcasts/2020/12/19/test-entry.sortdata: src/content/podcasts/2020/12/19/test-entry.conf
-src/content/screencasts/2021/02/07/autoqemu.sortdata: src/content/screencasts/2021/02/07/autoqemu.conf
-src/content/tils/2020/08/12/filename-timestamp.sortdata: src/content/tils/2020/08/12/filename-timestamp.conf
-src/content/tils/2020/08/13/code-jekyll.sortdata: src/content/tils/2020/08/13/code-jekyll.conf
-src/content/tils/2020/08/14/browse-git.sortdata: src/content/tils/2020/08/14/browse-git.conf
-src/content/tils/2020/08/16/git-search.sortdata: src/content/tils/2020/08/16/git-search.conf
-src/content/tils/2020/08/28/grep-online.sortdata: src/content/tils/2020/08/28/grep-online.conf
-src/content/tils/2020/09/04/cli-email-fun-profit.sortdata: src/content/tils/2020/09/04/cli-email-fun-profit.conf
-src/content/tils/2020/09/05/oldschool-pr.sortdata: src/content/tils/2020/09/05/oldschool-pr.conf
-src/content/tils/2020/10/11/search-git-history.sortdata: src/content/tils/2020/10/11/search-git-history.conf
-src/content/tils/2020/11/08/find-broken-symlink.sortdata: src/content/tils/2020/11/08/find-broken-symlink.conf
-src/content/tils/2020/11/12/diy-nix-bash-ci.sortdata: src/content/tils/2020/11/12/diy-nix-bash-ci.conf
-src/content/tils/2020/11/12/git-bisect-automation.sortdata: src/content/tils/2020/11/12/git-bisect-automation.conf
-src/content/tils/2020/11/12/useful-bashvars.sortdata: src/content/tils/2020/11/12/useful-bashvars.conf
-src/content/tils/2020/11/14/gpodder-media.sortdata: src/content/tils/2020/11/14/gpodder-media.conf
-src/content/tils/2020/11/30/git-notes-ci.sortdata: src/content/tils/2020/11/30/git-notes-ci.conf
-src/content/tils/2020/12/15/shellcheck-repo.sortdata: src/content/tils/2020/12/15/shellcheck-repo.conf
-src/content/tils/2020/12/29/svg.sortdata: src/content/tils/2020/12/29/svg.conf
-src/content/tils/2021/01/12/curl-awk-emails.sortdata: src/content/tils/2021/01/12/curl-awk-emails.conf
-src/content/tils/2021/01/17/posix-shebang.sortdata: src/content/tils/2021/01/17/posix-shebang.conf
-src/content/tils/2021/04/24/cl-generic-precedence.sortdata: src/content/tils/2021/04/24/cl-generic-precedence.conf
-src/content/tils/2021/04/24/clojure-autocurry.sortdata: src/content/tils/2021/04/24/clojure-autocurry.conf
-src/content/tils/2021/04/24/scm-nif.sortdata: src/content/tils/2021/04/24/scm-nif.conf
-src/content/tils/2021/07/23/git-tls-gpg.sortdata: src/content/tils/2021/07/23/git-tls-gpg.conf
-src/content/tils/2021/08/11/js-bigint-reviver.sortdata: src/content/tils/2021/08/11/js-bigint-reviver.conf
-src/content/blog/2018/07/17/guix-nixos.categorydata: src/content/blog/2018/07/17/guix-nixos.conf
-src/content/blog/2018/08/01/npm-ci-reproducibility.categorydata: src/content/blog/2018/08/01/npm-ci-reproducibility.conf
-src/content/blog/2018/12/21/ytdl-subs.categorydata: src/content/blog/2018/12/21/ytdl-subs.conf
-src/content/blog/2019/06/02/nixos-stateless-workstation.categorydata: src/content/blog/2019/06/02/nixos-stateless-workstation.conf
-src/content/blog/2020/08/10/guix-srht.categorydata: src/content/blog/2020/08/10/guix-srht.conf
-src/content/blog/2020/08/31/database-i-wish-i-had.categorydata: src/content/blog/2020/08/31/database-i-wish-i-had.conf
-src/content/blog/2020/10/05/cargo2nix.categorydata: src/content/blog/2020/10/05/cargo2nix.conf
-src/content/blog/2020/10/05/swift2nix.categorydata: src/content/blog/2020/10/05/swift2nix.conf
-src/content/blog/2020/10/19/feature-flags.categorydata: src/content/blog/2020/10/19/feature-flags.conf
-src/content/blog/2020/10/20/wrong-interviewing.categorydata: src/content/blog/2020/10/20/wrong-interviewing.conf
-src/content/blog/2020/11/07/diy-bugs.categorydata: src/content/blog/2020/11/07/diy-bugs.conf
-src/content/blog/2020/11/08/paradigm-shift-review.categorydata: src/content/blog/2020/11/08/paradigm-shift-review.conf
-src/content/blog/2020/11/12/database-parsers-trees.categorydata: src/content/blog/2020/11/12/database-parsers-trees.conf
-src/content/blog/2020/11/14/local-first-review.categorydata: src/content/blog/2020/11/14/local-first-review.conf
-src/content/blog/2021/01/26/remembering-ann.categorydata: src/content/blog/2021/01/26/remembering-ann.conf
-src/content/blog/2021/02/17/fallible.categorydata: src/content/blog/2021/02/17/fallible.conf
-src/content/blog/2021/04/29/relational-review.categorydata: src/content/blog/2021/04/29/relational-review.conf
-src/content/pastebins/2016/04/05/rpn.categorydata: src/content/pastebins/2016/04/05/rpn.conf
-src/content/pastebins/2018/07/11/nix-pinning.categorydata: src/content/pastebins/2018/07/11/nix-pinning.conf
-src/content/pastebins/2018/07/13/guix-nixos-systemd.categorydata: src/content/pastebins/2018/07/13/guix-nixos-systemd.conf
-src/content/pastebins/2018/07/13/guixbuilder-nixos.categorydata: src/content/pastebins/2018/07/13/guixbuilder-nixos.conf
-src/content/pastebins/2018/07/13/guixbuilder.categorydata: src/content/pastebins/2018/07/13/guixbuilder.conf
-src/content/pastebins/2018/07/13/nix-strpad.categorydata: src/content/pastebins/2018/07/13/nix-strpad.conf
-src/content/pastebins/2018/07/25/nix-exps.categorydata: src/content/pastebins/2018/07/25/nix-exps.conf
-src/content/pastebins/2018/07/25/nix-showdrv.categorydata: src/content/pastebins/2018/07/25/nix-showdrv.conf
-src/content/pastebins/2019/06/08/inconsistent-hash.categorydata: src/content/pastebins/2019/06/08/inconsistent-hash.conf
-src/content/pastebins/2019/12/29/raku-tuple-type.categorydata: src/content/pastebins/2019/12/29/raku-tuple-type.conf
-src/content/pastebins/2020/01/04/guix-import-failure.categorydata: src/content/pastebins/2020/01/04/guix-import-failure.conf
-src/content/pastebins/2020/02/14/guix-shebang.categorydata: src/content/pastebins/2020/02/14/guix-shebang.conf
-src/content/pastebins/2020/11/27/guix-build-local.categorydata: src/content/pastebins/2020/11/27/guix-build-local.conf
-src/content/pastebins/2020/12/15/guix-pack-fail.categorydata: src/content/pastebins/2020/12/15/guix-pack-fail.conf
-src/content/pastebins/2021/04/03/naive-slugify-js.categorydata: src/content/pastebins/2021/04/03/naive-slugify-js.conf
-src/content/pastebins/2021/06/08/reading-session-pt1.categorydata: src/content/pastebins/2021/06/08/reading-session-pt1.conf
-src/content/pastebins/2021/06/22/curl-wget.categorydata: src/content/pastebins/2021/06/22/curl-wget.conf
-src/content/pastebins/2021/08/11/h1-spacing.categorydata: src/content/pastebins/2021/08/11/h1-spacing.conf
-src/content/pastebins/2021/09/02/sicp-3-19.categorydata: src/content/pastebins/2021/09/02/sicp-3-19.conf
-src/content/pastebins/2021/09/03/sicp-persistent-queue.categorydata: src/content/pastebins/2021/09/03/sicp-persistent-queue.conf
-src/content/pastebins/2022/07/14/git-cleanup.categorydata: src/content/pastebins/2022/07/14/git-cleanup.conf
-src/content/pastebins/2023/07/22/funcallable-amop.categorydata: src/content/pastebins/2023/07/22/funcallable-amop.conf
-src/content/podcasts/2020/12/19/test-entry.categorydata: src/content/podcasts/2020/12/19/test-entry.conf
-src/content/screencasts/2021/02/07/autoqemu.categorydata: src/content/screencasts/2021/02/07/autoqemu.conf
-src/content/tils/2020/08/12/filename-timestamp.categorydata: src/content/tils/2020/08/12/filename-timestamp.conf
-src/content/tils/2020/08/13/code-jekyll.categorydata: src/content/tils/2020/08/13/code-jekyll.conf
-src/content/tils/2020/08/14/browse-git.categorydata: src/content/tils/2020/08/14/browse-git.conf
-src/content/tils/2020/08/16/git-search.categorydata: src/content/tils/2020/08/16/git-search.conf
-src/content/tils/2020/08/28/grep-online.categorydata: src/content/tils/2020/08/28/grep-online.conf
-src/content/tils/2020/09/04/cli-email-fun-profit.categorydata: src/content/tils/2020/09/04/cli-email-fun-profit.conf
-src/content/tils/2020/09/05/oldschool-pr.categorydata: src/content/tils/2020/09/05/oldschool-pr.conf
-src/content/tils/2020/10/11/search-git-history.categorydata: src/content/tils/2020/10/11/search-git-history.conf
-src/content/tils/2020/11/08/find-broken-symlink.categorydata: src/content/tils/2020/11/08/find-broken-symlink.conf
-src/content/tils/2020/11/12/diy-nix-bash-ci.categorydata: src/content/tils/2020/11/12/diy-nix-bash-ci.conf
-src/content/tils/2020/11/12/git-bisect-automation.categorydata: src/content/tils/2020/11/12/git-bisect-automation.conf
-src/content/tils/2020/11/12/useful-bashvars.categorydata: src/content/tils/2020/11/12/useful-bashvars.conf
-src/content/tils/2020/11/14/gpodder-media.categorydata: src/content/tils/2020/11/14/gpodder-media.conf
-src/content/tils/2020/11/30/git-notes-ci.categorydata: src/content/tils/2020/11/30/git-notes-ci.conf
-src/content/tils/2020/12/15/shellcheck-repo.categorydata: src/content/tils/2020/12/15/shellcheck-repo.conf
-src/content/tils/2020/12/29/svg.categorydata: src/content/tils/2020/12/29/svg.conf
-src/content/tils/2021/01/12/curl-awk-emails.categorydata: src/content/tils/2021/01/12/curl-awk-emails.conf
-src/content/tils/2021/01/17/posix-shebang.categorydata: src/content/tils/2021/01/17/posix-shebang.conf
-src/content/tils/2021/04/24/cl-generic-precedence.categorydata: src/content/tils/2021/04/24/cl-generic-precedence.conf
-src/content/tils/2021/04/24/clojure-autocurry.categorydata: src/content/tils/2021/04/24/clojure-autocurry.conf
-src/content/tils/2021/04/24/scm-nif.categorydata: src/content/tils/2021/04/24/scm-nif.conf
-src/content/tils/2021/07/23/git-tls-gpg.categorydata: src/content/tils/2021/07/23/git-tls-gpg.conf
-src/content/tils/2021/08/11/js-bigint-reviver.categorydata: src/content/tils/2021/08/11/js-bigint-reviver.conf
+articles.en.blog.adoc = \
+ src/content/en/blog/2018/07/17/guix-nixos.adoc \
+ src/content/en/blog/2018/08/01/npm-ci-reproducibility.adoc \
+ src/content/en/blog/2018/12/21/ytdl-subs.adoc \
+ src/content/en/blog/2019/06/02/nixos-stateless-workstation.adoc \
+ src/content/en/blog/2020/08/10/guix-srht.adoc \
+ src/content/en/blog/2020/08/31/database-i-wish-i-had.adoc \
+ src/content/en/blog/2020/10/05/cargo2nix.adoc \
+ src/content/en/blog/2020/10/05/swift2nix.adoc \
+ src/content/en/blog/2020/10/19/feature-flags.adoc \
+ src/content/en/blog/2020/10/20/wrong-interviewing.adoc \
+ src/content/en/blog/2020/11/07/diy-bugs.adoc \
+ src/content/en/blog/2020/11/08/paradigm-shift-review.adoc \
+ src/content/en/blog/2020/11/12/database-parsers-trees.adoc \
+ src/content/en/blog/2020/11/14/local-first-review.adoc \
+ src/content/en/blog/2021/01/26/remembering-ann.adoc \
+ src/content/en/blog/2021/02/17/fallible.adoc \
+ src/content/en/blog/2021/04/29/relational-review.adoc \
-src/content/blog/index.htmlheader src/content/blog/index.htmlfooter: src/content/blog/index.conf
-src/content/pastebins/index.htmlheader src/content/pastebins/index.htmlfooter: src/content/pastebins/index.conf
-src/content/podcasts/index.htmlheader src/content/podcasts/index.htmlfooter: src/content/podcasts/index.conf
-src/content/screencasts/index.htmlheader src/content/screencasts/index.htmlfooter: src/content/screencasts/index.conf
-src/content/tils/index.htmlheader src/content/tils/index.htmlfooter: src/content/tils/index.conf
-src/content/blog/categories.htmlheader src/content/blog/categories.htmlfooter: src/content/blog/categories.conf
-src/content/pastebins/categories.htmlheader src/content/pastebins/categories.htmlfooter: src/content/pastebins/categories.conf
-src/content/podcasts/categories.htmlheader src/content/podcasts/categories.htmlfooter: src/content/podcasts/categories.conf
-src/content/screencasts/categories.htmlheader src/content/screencasts/categories.htmlfooter: src/content/screencasts/categories.conf
-src/content/tils/categories.htmlheader src/content/tils/categories.htmlfooter: src/content/tils/categories.conf
-src/content/blog/index.htmllisting: src/content/blog/index.conf
-src/content/pastebins/index.htmllisting: src/content/pastebins/index.conf
-src/content/podcasts/index.htmllisting: src/content/podcasts/index.conf
-src/content/screencasts/index.htmllisting: src/content/screencasts/index.conf
-src/content/tils/index.htmllisting: src/content/tils/index.conf
-src/content/blog/categories.htmllisting: src/content/blog/categories.conf
-src/content/pastebins/categories.htmllisting: src/content/pastebins/categories.conf
-src/content/podcasts/categories.htmllisting: src/content/podcasts/categories.conf
-src/content/screencasts/categories.htmllisting: src/content/screencasts/categories.conf
-src/content/tils/categories.htmllisting: src/content/tils/categories.conf
-src/content/blog/index.html: src/content/blog/index.htmlheader src/content/blog/index.htmlfooter
-src/content/pastebins/index.html: src/content/pastebins/index.htmlheader src/content/pastebins/index.htmlfooter
-src/content/podcasts/index.html: src/content/podcasts/index.htmlheader src/content/podcasts/index.htmlfooter
-src/content/screencasts/index.html: src/content/screencasts/index.htmlheader src/content/screencasts/index.htmlfooter
-src/content/tils/index.html: src/content/tils/index.htmlheader src/content/tils/index.htmlfooter
-src/content/blog/categories.html: src/content/blog/categories.htmlheader src/content/blog/categories.htmlfooter
-src/content/pastebins/categories.html: src/content/pastebins/categories.htmlheader src/content/pastebins/categories.htmlfooter
-src/content/podcasts/categories.html: src/content/podcasts/categories.htmlheader src/content/podcasts/categories.htmlfooter
-src/content/screencasts/categories.html: src/content/screencasts/categories.htmlheader src/content/screencasts/categories.htmlfooter
-src/content/tils/categories.html: src/content/tils/categories.htmlheader src/content/tils/categories.htmlfooter
-src/content/blog/index.html: src/content/blog/index.htmllisting src/content/blog/index.htmlbody
-src/content/pastebins/index.html: src/content/pastebins/index.htmllisting src/content/pastebins/index.htmlbody
-src/content/podcasts/index.html: src/content/podcasts/index.htmllisting src/content/podcasts/index.htmlbody
-src/content/screencasts/index.html: src/content/screencasts/index.htmllisting src/content/screencasts/index.htmlbody
-src/content/tils/index.html: src/content/tils/index.htmllisting src/content/tils/index.htmlbody
-src/content/blog/categories.html: src/content/blog/categories.htmllisting src/content/blog/categories.htmlbody
-src/content/pastebins/categories.html: src/content/pastebins/categories.htmllisting src/content/pastebins/categories.htmlbody
-src/content/podcasts/categories.html: src/content/podcasts/categories.htmllisting src/content/podcasts/categories.htmlbody
-src/content/screencasts/categories.html: src/content/screencasts/categories.htmllisting src/content/screencasts/categories.htmlbody
-src/content/tils/categories.html: src/content/tils/categories.htmllisting src/content/tils/categories.htmlbody
+articles.en.blog.sortdata = $(articles.en.blog.adoc:.adoc=.sortdata)
+articles.en.blog.indexentry = $(articles.en.blog.adoc:.adoc=.indexentry)
+articles.en.blog.feedentry = $(articles.en.blog.adoc:.adoc=.feedentry)
+articles.en.blog.categorydata = $(articles.en.blog.adoc:.adoc=.categorydata)
+src/content/en/blog/sortdata.txt: deps.mk
+ printf '%s\n' $(articles.en.blog.sortdata) > $@
+src/content/en/blog/feed.xml: src/content/en/blog/sortdata.txt
+src/content/en/blog/feed.xml: $(articles.en.blog.sortdata)
+src/content/en/blog/index.htmllisting: src/content/en/blog/sortdata.txt
+src/content/en/blog/index.htmllisting: $(articles.en.blog.sortdata)
+src/content/en/blog/categories.htmllisting: src/content/en/blog/sortdata.txt
+src/content/en/blog/categories.htmllisting: $(articles.en.blog.sortdata)
+src/content/en/blog/categories.txt: src/content/en/blog/sortdata.txt
+src/content/en/blog/categories.txt: $(articles.en.blog.sortdata)
+src/content/en/blog/index.htmllisting src/content/en/blog/categories.htmllisting: $(articles.en.blog.indexentry)
+src/content/en/blog/categories.txt: $(articles.en.blog.categorydata)
+src/content/en/blog/categories.txt src/content/en/blog/feed.xml: $(articles.en.blog.feedentry)
+src/content/en/blog/categories.htmllisting src/content/en/blog/categories.xml: src/content/en/blog/categories.txt
+src/content/en/blog/categories.xml.gz: src/content/en/blog/categories.xml
-articles.blog.adoc = \
- src/content/blog/2018/07/17/guix-nixos.adoc \
- src/content/blog/2018/08/01/npm-ci-reproducibility.adoc \
- src/content/blog/2018/12/21/ytdl-subs.adoc \
- src/content/blog/2019/06/02/nixos-stateless-workstation.adoc \
- src/content/blog/2020/08/10/guix-srht.adoc \
- src/content/blog/2020/08/31/database-i-wish-i-had.adoc \
- src/content/blog/2020/10/05/cargo2nix.adoc \
- src/content/blog/2020/10/05/swift2nix.adoc \
- src/content/blog/2020/10/19/feature-flags.adoc \
- src/content/blog/2020/10/20/wrong-interviewing.adoc \
- src/content/blog/2020/11/07/diy-bugs.adoc \
- src/content/blog/2020/11/08/paradigm-shift-review.adoc \
- src/content/blog/2020/11/12/database-parsers-trees.adoc \
- src/content/blog/2020/11/14/local-first-review.adoc \
- src/content/blog/2021/01/26/remembering-ann.adoc \
- src/content/blog/2021/02/17/fallible.adoc \
- src/content/blog/2021/04/29/relational-review.adoc \
+articles.en.pastebin.adoc = \
+ src/content/en/pastebin/2016/04/05/rpn.adoc \
+ src/content/en/pastebin/2018/07/11/nix-pinning.adoc \
+ src/content/en/pastebin/2018/07/13/guix-nixos-systemd.adoc \
+ src/content/en/pastebin/2018/07/13/guixbuilder-nixos.adoc \
+ src/content/en/pastebin/2018/07/13/guixbuilder.adoc \
+ src/content/en/pastebin/2018/07/13/nix-strpad.adoc \
+ src/content/en/pastebin/2018/07/25/nix-exps.adoc \
+ src/content/en/pastebin/2018/07/25/nix-showdrv.adoc \
+ src/content/en/pastebin/2019/06/08/inconsistent-hash.adoc \
+ src/content/en/pastebin/2019/12/29/raku-tuple-type.adoc \
+ src/content/en/pastebin/2020/01/04/guix-import-failure.adoc \
+ src/content/en/pastebin/2020/02/14/guix-shebang.adoc \
+ src/content/en/pastebin/2020/11/27/guix-build-local.adoc \
+ src/content/en/pastebin/2020/12/15/guix-pack-fail.adoc \
+ src/content/en/pastebin/2021/04/03/naive-slugify-js.adoc \
+ src/content/en/pastebin/2021/06/08/reading-session-pt1.adoc \
+ src/content/en/pastebin/2021/06/22/curl-wget.adoc \
+ src/content/en/pastebin/2021/08/11/h1-spacing.adoc \
+ src/content/en/pastebin/2021/09/02/sicp-3-19.adoc \
+ src/content/en/pastebin/2021/09/03/sicp-persistent-queue.adoc \
+ src/content/en/pastebin/2022/07/14/git-cleanup.adoc \
+ src/content/en/pastebin/2023/07/22/funcallable-amop.adoc \
-articles.blog.sortdata = $(articles.blog.adoc:.adoc=.sortdata)
-articles.blog.indexentry = $(articles.blog.adoc:.adoc=.indexentry)
-articles.blog.feedentry = $(articles.blog.adoc:.adoc=.feedentry)
-articles.blog.categorydata = $(articles.blog.adoc:.adoc=.categorydata)
-src/content/blog/sortdata.txt: deps.mk
- printf '%s\n' $(articles.blog.sortdata) > $@
+articles.en.pastebin.sortdata = $(articles.en.pastebin.adoc:.adoc=.sortdata)
+articles.en.pastebin.indexentry = $(articles.en.pastebin.adoc:.adoc=.indexentry)
+articles.en.pastebin.feedentry = $(articles.en.pastebin.adoc:.adoc=.feedentry)
+articles.en.pastebin.categorydata = $(articles.en.pastebin.adoc:.adoc=.categorydata)
+src/content/en/pastebin/sortdata.txt: deps.mk
+ printf '%s\n' $(articles.en.pastebin.sortdata) > $@
-src/content/blog/feed.xml: src/content/blog/sortdata.txt
-src/content/blog/feed.xml: $(articles.blog.sortdata)
-src/content/blog/index.htmllisting: src/content/blog/sortdata.txt
-src/content/blog/index.htmllisting: $(articles.blog.sortdata)
-src/content/blog/categories.htmllisting: src/content/blog/sortdata.txt
-src/content/blog/categories.htmllisting: $(articles.blog.sortdata)
-src/content/blog/categories.txt: src/content/blog/sortdata.txt
-src/content/blog/categories.txt: $(articles.blog.sortdata)
-src/content/blog/index.htmllisting src/content/blog/categories.htmllisting: $(articles.blog.indexentry)
-src/content/blog/categories.txt: $(articles.blog.categorydata)
-src/content/blog/categories.txt src/content/blog/feed.xml: $(articles.blog.feedentry)
-src/content/blog/categories.htmllisting src/content/blog/categories.xml: src/content/blog/categories.txt
+src/content/en/pastebin/feed.xml: src/content/en/pastebin/sortdata.txt
+src/content/en/pastebin/feed.xml: $(articles.en.pastebin.sortdata)
+src/content/en/pastebin/index.htmllisting: src/content/en/pastebin/sortdata.txt
+src/content/en/pastebin/index.htmllisting: $(articles.en.pastebin.sortdata)
+src/content/en/pastebin/categories.htmllisting: src/content/en/pastebin/sortdata.txt
+src/content/en/pastebin/categories.htmllisting: $(articles.en.pastebin.sortdata)
+src/content/en/pastebin/categories.txt: src/content/en/pastebin/sortdata.txt
+src/content/en/pastebin/categories.txt: $(articles.en.pastebin.sortdata)
+src/content/en/pastebin/index.htmllisting src/content/en/pastebin/categories.htmllisting: $(articles.en.pastebin.indexentry)
+src/content/en/pastebin/categories.txt: $(articles.en.pastebin.categorydata)
+src/content/en/pastebin/categories.txt src/content/en/pastebin/feed.xml: $(articles.en.pastebin.feedentry)
+src/content/en/pastebin/categories.htmllisting src/content/en/pastebin/categories.xml: src/content/en/pastebin/categories.txt
+src/content/en/pastebin/categories.xml.gz: src/content/en/pastebin/categories.xml
-articles.pastebins.adoc = \
- src/content/pastebins/2016/04/05/rpn.adoc \
- src/content/pastebins/2018/07/11/nix-pinning.adoc \
- src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc \
- src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc \
- src/content/pastebins/2018/07/13/guixbuilder.adoc \
- src/content/pastebins/2018/07/13/nix-strpad.adoc \
- src/content/pastebins/2018/07/25/nix-exps.adoc \
- src/content/pastebins/2018/07/25/nix-showdrv.adoc \
- src/content/pastebins/2019/06/08/inconsistent-hash.adoc \
- src/content/pastebins/2019/12/29/raku-tuple-type.adoc \
- src/content/pastebins/2020/01/04/guix-import-failure.adoc \
- src/content/pastebins/2020/02/14/guix-shebang.adoc \
- src/content/pastebins/2020/11/27/guix-build-local.adoc \
- src/content/pastebins/2020/12/15/guix-pack-fail.adoc \
- src/content/pastebins/2021/04/03/naive-slugify-js.adoc \
- src/content/pastebins/2021/06/08/reading-session-pt1.adoc \
- src/content/pastebins/2021/06/22/curl-wget.adoc \
- src/content/pastebins/2021/08/11/h1-spacing.adoc \
- src/content/pastebins/2021/09/02/sicp-3-19.adoc \
- src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc \
- src/content/pastebins/2022/07/14/git-cleanup.adoc \
- src/content/pastebins/2023/07/22/funcallable-amop.adoc \
+articles.en.podcast.adoc = \
+ src/content/en/podcast/2020/12/19/test-entry.adoc \
-articles.pastebins.sortdata = $(articles.pastebins.adoc:.adoc=.sortdata)
-articles.pastebins.indexentry = $(articles.pastebins.adoc:.adoc=.indexentry)
-articles.pastebins.feedentry = $(articles.pastebins.adoc:.adoc=.feedentry)
-articles.pastebins.categorydata = $(articles.pastebins.adoc:.adoc=.categorydata)
-src/content/pastebins/sortdata.txt: deps.mk
- printf '%s\n' $(articles.pastebins.sortdata) > $@
+articles.en.podcast.sortdata = $(articles.en.podcast.adoc:.adoc=.sortdata)
+articles.en.podcast.indexentry = $(articles.en.podcast.adoc:.adoc=.indexentry)
+articles.en.podcast.feedentry = $(articles.en.podcast.adoc:.adoc=.feedentry)
+articles.en.podcast.categorydata = $(articles.en.podcast.adoc:.adoc=.categorydata)
+src/content/en/podcast/sortdata.txt: deps.mk
+ printf '%s\n' $(articles.en.podcast.sortdata) > $@
-src/content/pastebins/feed.xml: src/content/pastebins/sortdata.txt
-src/content/pastebins/feed.xml: $(articles.pastebins.sortdata)
-src/content/pastebins/index.htmllisting: src/content/pastebins/sortdata.txt
-src/content/pastebins/index.htmllisting: $(articles.pastebins.sortdata)
-src/content/pastebins/categories.htmllisting: src/content/pastebins/sortdata.txt
-src/content/pastebins/categories.htmllisting: $(articles.pastebins.sortdata)
-src/content/pastebins/categories.txt: src/content/pastebins/sortdata.txt
-src/content/pastebins/categories.txt: $(articles.pastebins.sortdata)
-src/content/pastebins/index.htmllisting src/content/pastebins/categories.htmllisting: $(articles.pastebins.indexentry)
-src/content/pastebins/categories.txt: $(articles.pastebins.categorydata)
-src/content/pastebins/categories.txt src/content/pastebins/feed.xml: $(articles.pastebins.feedentry)
-src/content/pastebins/categories.htmllisting src/content/pastebins/categories.xml: src/content/pastebins/categories.txt
+src/content/en/podcast/feed.xml: src/content/en/podcast/sortdata.txt
+src/content/en/podcast/feed.xml: $(articles.en.podcast.sortdata)
+src/content/en/podcast/index.htmllisting: src/content/en/podcast/sortdata.txt
+src/content/en/podcast/index.htmllisting: $(articles.en.podcast.sortdata)
+src/content/en/podcast/categories.htmllisting: src/content/en/podcast/sortdata.txt
+src/content/en/podcast/categories.htmllisting: $(articles.en.podcast.sortdata)
+src/content/en/podcast/categories.txt: src/content/en/podcast/sortdata.txt
+src/content/en/podcast/categories.txt: $(articles.en.podcast.sortdata)
+src/content/en/podcast/index.htmllisting src/content/en/podcast/categories.htmllisting: $(articles.en.podcast.indexentry)
+src/content/en/podcast/categories.txt: $(articles.en.podcast.categorydata)
+src/content/en/podcast/categories.txt src/content/en/podcast/feed.xml: $(articles.en.podcast.feedentry)
+src/content/en/podcast/categories.htmllisting src/content/en/podcast/categories.xml: src/content/en/podcast/categories.txt
+src/content/en/podcast/categories.xml.gz: src/content/en/podcast/categories.xml
-articles.podcasts.adoc = \
- src/content/podcasts/2020/12/19/test-entry.adoc \
+articles.en.screencast.adoc = \
+ src/content/en/screencast/2021/02/07/autoqemu.adoc \
-articles.podcasts.sortdata = $(articles.podcasts.adoc:.adoc=.sortdata)
-articles.podcasts.indexentry = $(articles.podcasts.adoc:.adoc=.indexentry)
-articles.podcasts.feedentry = $(articles.podcasts.adoc:.adoc=.feedentry)
-articles.podcasts.categorydata = $(articles.podcasts.adoc:.adoc=.categorydata)
-src/content/podcasts/sortdata.txt: deps.mk
- printf '%s\n' $(articles.podcasts.sortdata) > $@
+articles.en.screencast.sortdata = $(articles.en.screencast.adoc:.adoc=.sortdata)
+articles.en.screencast.indexentry = $(articles.en.screencast.adoc:.adoc=.indexentry)
+articles.en.screencast.feedentry = $(articles.en.screencast.adoc:.adoc=.feedentry)
+articles.en.screencast.categorydata = $(articles.en.screencast.adoc:.adoc=.categorydata)
+src/content/en/screencast/sortdata.txt: deps.mk
+ printf '%s\n' $(articles.en.screencast.sortdata) > $@
-src/content/podcasts/feed.xml: src/content/podcasts/sortdata.txt
-src/content/podcasts/feed.xml: $(articles.podcasts.sortdata)
-src/content/podcasts/index.htmllisting: src/content/podcasts/sortdata.txt
-src/content/podcasts/index.htmllisting: $(articles.podcasts.sortdata)
-src/content/podcasts/categories.htmllisting: src/content/podcasts/sortdata.txt
-src/content/podcasts/categories.htmllisting: $(articles.podcasts.sortdata)
-src/content/podcasts/categories.txt: src/content/podcasts/sortdata.txt
-src/content/podcasts/categories.txt: $(articles.podcasts.sortdata)
-src/content/podcasts/index.htmllisting src/content/podcasts/categories.htmllisting: $(articles.podcasts.indexentry)
-src/content/podcasts/categories.txt: $(articles.podcasts.categorydata)
-src/content/podcasts/categories.txt src/content/podcasts/feed.xml: $(articles.podcasts.feedentry)
-src/content/podcasts/categories.htmllisting src/content/podcasts/categories.xml: src/content/podcasts/categories.txt
+src/content/en/screencast/feed.xml: src/content/en/screencast/sortdata.txt
+src/content/en/screencast/feed.xml: $(articles.en.screencast.sortdata)
+src/content/en/screencast/index.htmllisting: src/content/en/screencast/sortdata.txt
+src/content/en/screencast/index.htmllisting: $(articles.en.screencast.sortdata)
+src/content/en/screencast/categories.htmllisting: src/content/en/screencast/sortdata.txt
+src/content/en/screencast/categories.htmllisting: $(articles.en.screencast.sortdata)
+src/content/en/screencast/categories.txt: src/content/en/screencast/sortdata.txt
+src/content/en/screencast/categories.txt: $(articles.en.screencast.sortdata)
+src/content/en/screencast/index.htmllisting src/content/en/screencast/categories.htmllisting: $(articles.en.screencast.indexentry)
+src/content/en/screencast/categories.txt: $(articles.en.screencast.categorydata)
+src/content/en/screencast/categories.txt src/content/en/screencast/feed.xml: $(articles.en.screencast.feedentry)
+src/content/en/screencast/categories.htmllisting src/content/en/screencast/categories.xml: src/content/en/screencast/categories.txt
+src/content/en/screencast/categories.xml.gz: src/content/en/screencast/categories.xml
-articles.screencasts.adoc = \
- src/content/screencasts/2021/02/07/autoqemu.adoc \
+articles.en.til.adoc = \
+ src/content/en/til/2020/08/12/filename-timestamp.adoc \
+ src/content/en/til/2020/08/13/code-jekyll.adoc \
+ src/content/en/til/2020/08/14/browse-git.adoc \
+ src/content/en/til/2020/08/16/git-search.adoc \
+ src/content/en/til/2020/08/28/grep-online.adoc \
+ src/content/en/til/2020/09/04/cli-email-fun-profit.adoc \
+ src/content/en/til/2020/09/05/oldschool-pr.adoc \
+ src/content/en/til/2020/10/11/search-git-history.adoc \
+ src/content/en/til/2020/11/08/find-broken-symlink.adoc \
+ src/content/en/til/2020/11/12/diy-nix-bash-ci.adoc \
+ src/content/en/til/2020/11/12/git-bisect-automation.adoc \
+ src/content/en/til/2020/11/12/useful-bashvars.adoc \
+ src/content/en/til/2020/11/14/gpodder-media.adoc \
+ src/content/en/til/2020/11/30/git-notes-ci.adoc \
+ src/content/en/til/2020/12/15/shellcheck-repo.adoc \
+ src/content/en/til/2020/12/29/svg.adoc \
+ src/content/en/til/2021/01/12/curl-awk-emails.adoc \
+ src/content/en/til/2021/01/17/posix-shebang.adoc \
+ src/content/en/til/2021/04/24/cl-generic-precedence.adoc \
+ src/content/en/til/2021/04/24/clojure-autocurry.adoc \
+ src/content/en/til/2021/04/24/scm-nif.adoc \
+ src/content/en/til/2021/07/23/git-tls-gpg.adoc \
+ src/content/en/til/2021/08/11/js-bigint-reviver.adoc \
-articles.screencasts.sortdata = $(articles.screencasts.adoc:.adoc=.sortdata)
-articles.screencasts.indexentry = $(articles.screencasts.adoc:.adoc=.indexentry)
-articles.screencasts.feedentry = $(articles.screencasts.adoc:.adoc=.feedentry)
-articles.screencasts.categorydata = $(articles.screencasts.adoc:.adoc=.categorydata)
-src/content/screencasts/sortdata.txt: deps.mk
- printf '%s\n' $(articles.screencasts.sortdata) > $@
+articles.en.til.sortdata = $(articles.en.til.adoc:.adoc=.sortdata)
+articles.en.til.indexentry = $(articles.en.til.adoc:.adoc=.indexentry)
+articles.en.til.feedentry = $(articles.en.til.adoc:.adoc=.feedentry)
+articles.en.til.categorydata = $(articles.en.til.adoc:.adoc=.categorydata)
+src/content/en/til/sortdata.txt: deps.mk
+ printf '%s\n' $(articles.en.til.sortdata) > $@
-src/content/screencasts/feed.xml: src/content/screencasts/sortdata.txt
-src/content/screencasts/feed.xml: $(articles.screencasts.sortdata)
-src/content/screencasts/index.htmllisting: src/content/screencasts/sortdata.txt
-src/content/screencasts/index.htmllisting: $(articles.screencasts.sortdata)
-src/content/screencasts/categories.htmllisting: src/content/screencasts/sortdata.txt
-src/content/screencasts/categories.htmllisting: $(articles.screencasts.sortdata)
-src/content/screencasts/categories.txt: src/content/screencasts/sortdata.txt
-src/content/screencasts/categories.txt: $(articles.screencasts.sortdata)
-src/content/screencasts/index.htmllisting src/content/screencasts/categories.htmllisting: $(articles.screencasts.indexentry)
-src/content/screencasts/categories.txt: $(articles.screencasts.categorydata)
-src/content/screencasts/categories.txt src/content/screencasts/feed.xml: $(articles.screencasts.feedentry)
-src/content/screencasts/categories.htmllisting src/content/screencasts/categories.xml: src/content/screencasts/categories.txt
+src/content/en/til/feed.xml: src/content/en/til/sortdata.txt
+src/content/en/til/feed.xml: $(articles.en.til.sortdata)
+src/content/en/til/index.htmllisting: src/content/en/til/sortdata.txt
+src/content/en/til/index.htmllisting: $(articles.en.til.sortdata)
+src/content/en/til/categories.htmllisting: src/content/en/til/sortdata.txt
+src/content/en/til/categories.htmllisting: $(articles.en.til.sortdata)
+src/content/en/til/categories.txt: src/content/en/til/sortdata.txt
+src/content/en/til/categories.txt: $(articles.en.til.sortdata)
+src/content/en/til/index.htmllisting src/content/en/til/categories.htmllisting: $(articles.en.til.indexentry)
+src/content/en/til/categories.txt: $(articles.en.til.categorydata)
+src/content/en/til/categories.txt src/content/en/til/feed.xml: $(articles.en.til.feedentry)
+src/content/en/til/categories.htmllisting src/content/en/til/categories.xml: src/content/en/til/categories.txt
+src/content/en/til/categories.xml.gz: src/content/en/til/categories.xml
-articles.tils.adoc = \
- src/content/tils/2020/08/12/filename-timestamp.adoc \
- src/content/tils/2020/08/13/code-jekyll.adoc \
- src/content/tils/2020/08/14/browse-git.adoc \
- src/content/tils/2020/08/16/git-search.adoc \
- src/content/tils/2020/08/28/grep-online.adoc \
- src/content/tils/2020/09/04/cli-email-fun-profit.adoc \
- src/content/tils/2020/09/05/oldschool-pr.adoc \
- src/content/tils/2020/10/11/search-git-history.adoc \
- src/content/tils/2020/11/08/find-broken-symlink.adoc \
- src/content/tils/2020/11/12/diy-nix-bash-ci.adoc \
- src/content/tils/2020/11/12/git-bisect-automation.adoc \
- src/content/tils/2020/11/12/useful-bashvars.adoc \
- src/content/tils/2020/11/14/gpodder-media.adoc \
- src/content/tils/2020/11/30/git-notes-ci.adoc \
- src/content/tils/2020/12/15/shellcheck-repo.adoc \
- src/content/tils/2020/12/29/svg.adoc \
- src/content/tils/2021/01/12/curl-awk-emails.adoc \
- src/content/tils/2021/01/17/posix-shebang.adoc \
- src/content/tils/2021/04/24/cl-generic-precedence.adoc \
- src/content/tils/2021/04/24/clojure-autocurry.adoc \
- src/content/tils/2021/04/24/scm-nif.adoc \
- src/content/tils/2021/07/23/git-tls-gpg.adoc \
- src/content/tils/2021/08/11/js-bigint-reviver.adoc \
+articles.pt.hea.adoc = \
+ src/content/pt/hea/2020/08/12/arquivo-datado.adoc \
-articles.tils.sortdata = $(articles.tils.adoc:.adoc=.sortdata)
-articles.tils.indexentry = $(articles.tils.adoc:.adoc=.indexentry)
-articles.tils.feedentry = $(articles.tils.adoc:.adoc=.feedentry)
-articles.tils.categorydata = $(articles.tils.adoc:.adoc=.categorydata)
-src/content/tils/sortdata.txt: deps.mk
- printf '%s\n' $(articles.tils.sortdata) > $@
+articles.pt.hea.sortdata = $(articles.pt.hea.adoc:.adoc=.sortdata)
+articles.pt.hea.indexentry = $(articles.pt.hea.adoc:.adoc=.indexentry)
+articles.pt.hea.feedentry = $(articles.pt.hea.adoc:.adoc=.feedentry)
+articles.pt.hea.categorydata = $(articles.pt.hea.adoc:.adoc=.categorydata)
+src/content/pt/hea/sortdata.txt: deps.mk
+ printf '%s\n' $(articles.pt.hea.sortdata) > $@
-src/content/tils/feed.xml: src/content/tils/sortdata.txt
-src/content/tils/feed.xml: $(articles.tils.sortdata)
-src/content/tils/index.htmllisting: src/content/tils/sortdata.txt
-src/content/tils/index.htmllisting: $(articles.tils.sortdata)
-src/content/tils/categories.htmllisting: src/content/tils/sortdata.txt
-src/content/tils/categories.htmllisting: $(articles.tils.sortdata)
-src/content/tils/categories.txt: src/content/tils/sortdata.txt
-src/content/tils/categories.txt: $(articles.tils.sortdata)
-src/content/tils/index.htmllisting src/content/tils/categories.htmllisting: $(articles.tils.indexentry)
-src/content/tils/categories.txt: $(articles.tils.categorydata)
-src/content/tils/categories.txt src/content/tils/feed.xml: $(articles.tils.feedentry)
-src/content/tils/categories.htmllisting src/content/tils/categories.xml: src/content/tils/categories.txt
+src/content/pt/hea/feed.xml: src/content/pt/hea/sortdata.txt
+src/content/pt/hea/feed.xml: $(articles.pt.hea.sortdata)
+src/content/pt/hea/index.htmllisting: src/content/pt/hea/sortdata.txt
+src/content/pt/hea/index.htmllisting: $(articles.pt.hea.sortdata)
+src/content/pt/hea/categorias.htmllisting: src/content/pt/hea/sortdata.txt
+src/content/pt/hea/categorias.htmllisting: $(articles.pt.hea.sortdata)
+src/content/pt/hea/categorias.txt: src/content/pt/hea/sortdata.txt
+src/content/pt/hea/categorias.txt: $(articles.pt.hea.sortdata)
+src/content/pt/hea/index.htmllisting src/content/pt/hea/categorias.htmllisting: $(articles.pt.hea.indexentry)
+src/content/pt/hea/categorias.txt: $(articles.pt.hea.categorydata)
+src/content/pt/hea/categorias.txt src/content/pt/hea/feed.xml: $(articles.pt.hea.feedentry)
+src/content/pt/hea/categorias.htmllisting src/content/pt/hea/categorias.xml: src/content/pt/hea/categorias.txt
+src/content/pt/hea/categorias.xml.gz: src/content/pt/hea/categorias.xml
diff --git a/meta.capim b/meta.capim
new file mode 100644
index 0000000..a64fa37
--- /dev/null
+++ b/meta.capim
@@ -0,0 +1,11 @@
+{
+ :description "Blog and personal website (euandre.org)."
+ :baseurl "https://euandre.org"
+ :email "eu@euandre.org"
+ :dependencies {
+ :build #{
+ eslaides
+ mkwb
+ }
+ }
+}
diff --git a/meta.json b/meta.json
deleted file mode 100644
index b5a8522..0000000
--- a/meta.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "description": "Blog and personal website (euandre.org).",
- "baseurl": "https://euandre.org",
- "email": "eu@euandre.org"
-}
diff --git a/mkdeps.sh b/mkdeps.sh
index 96fb138..9df3e5a 100755
--- a/mkdeps.sh
+++ b/mkdeps.sh
@@ -9,26 +9,42 @@ normalize() {
}
pages() {
- find src/pages/*/*.adoc -type f | normalize
+ find src/pages/*/*.adoc -type f | normalize
}
articles() {
- find src/collections/*/*/ -type f -name '*.adoc' | normalize
+ find src/collections/*/*/*/ -type f -name '*.adoc' | normalize
+}
+
+slides() {
+ find src/slides/*/*/ -type f -name '*.adoc' | normalize
}
indexes() {
- find src/collections/*/index.adoc | normalize
+ find src/collections/*/*/index.adoc | normalize
}
categories() {
- find src/collections/*/categories.adoc | normalize
+ grep -l '^:type: categories$' src/collections/*/*/*.adoc | normalize
+}
+
+media() {
+ find src/content/ \( -type f -and \! -type l \) -and \( \
+ -name '*.flac' -or \
+ -name '*.ogg' -or \
+ -name '*.webm' \
+ \)
+}
+
+tarballs() {
+ find src/content/ \( -type f -and \! -type l \) -and \( \
+ -name '*.tar.gz' \
+ \)
}
extras() {
- find src/content/ -type f \
- -name '*.flac' -or \
- -name '*.webm' -or \
- -name '*.tar.gz'
+ media
+ tarballs
}
listings() {
@@ -43,20 +59,25 @@ files() {
}
-pages | varlist 'pages.adoc'
-articles | varlist 'articles.adoc'
+pages | varlist 'pages.adoc'
+articles | varlist 'articles.adoc'
+slides | varlist 'slides.adoc'
categories | varlist 'categories.adoc'
-indexes | varlist 'indexes.adoc'
+indexes | varlist 'indexes.adoc'
indexes | sed 's|/index\.adoc$|/feed.xml|' | varlist 'feeds.xml'
find src/content/img/ -name '*.svg' | varlist 'images.svg'
+media | varlist 'sources.media'
+tarballs | varlist 'sources.tarballs'
extras | varlist 'sources.extras'
+find po/*.po po/*.pot | varlist 'sources.po'
{
files | sed 's/^\(.*\)\.adoc$/\1.html/'
files | sed 's/^\(.*\)\.adoc$/\1.snippets/'
- indexes | sed 's|^\(.*\)/index\.adoc$|\1/categories.xml|'
+ slides | sed 's/^\(.*\)\.adoc$/\1.pdf/'
indexes | sed 's|^\(.*\)/index\.adoc$|\1/feed.xml|'
+ media | sed 's/^\(.*\)$/\1.torrent/'
} | sed 's/^\(.*\)$/\1.gz:\t\1/'
printf '\n'
@@ -80,45 +101,66 @@ listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmlheader\t\1.htmlfooter/'
listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmllisting\t\1.htmlbody/'
printf '\n'
-for colllink in src/collections/*; do
+media | sed 's/^\(.*\)$/\1.torrent:\t\1/'
+printf '\n'
+
+slides | sed 's/^\(.*\)\.adoc$/\1.ps:\t\1.adoc/'
+slides | sed 's/^\(.*\)\.adoc$/\1.pdf:\t\1.ps/'
+printf '\n'
+
+
+
+collectionentries() {
+ langlink="$1"
+ colllink="$2"
+ lang="$(basename "$langlink")"
c="$(printf '%s' "$colllink" | normalize)"
+ plural="$(cat src/names/categories/"$lang".txt)"
printf '\n\n'
name="$(basename "$c")"
- find "$c"/*/ -type f -name '*.adoc' | varlist "articles.$name.adoc"
- art=articles # so things fit in 80 columns
+ art=articles."$lang"
+ find "$c"/*/ -type f -name '*.adoc' | varlist "$art.$name.adoc"
echo "$art.$name.sortdata = \$($art.$name.adoc:.adoc=.sortdata)"
echo "$art.$name.indexentry = \$($art.$name.adoc:.adoc=.indexentry)"
echo "$art.$name.feedentry = \$($art.$name.adoc:.adoc=.feedentry)"
echo "$art.$name.categorydata = \$($art.$name.adoc:.adoc=.categorydata)"
-
printf '%s/sortdata.txt:\tdeps.mk\n' "$c"
- printf '\tprintf %s $(articles.%s.sortdata) > $@\n\n' "'%s\n'" "$name"
+ printf '\tprintf %s $(%s.%s.sortdata) > $@\n\n' "'%s\n'" "$art" "$name"
- listings='
+ listings="
feed.xml
index.htmllisting
- categories.htmllisting
- categories.txt
- '
+ $plural.htmllisting
+ $plural.txt
+ "
for lst in $listings; do
- printf '%s/%s:\t%s/sortdata.txt\n' "$c" "$lst" "$c"
- printf '%s/%s:\t$(articles.%s.sortdata)\n' "$c" "$lst" "$name"
+ printf '%s/%s:\t%s/sortdata.txt\n' "$c" "$lst" "$c"
+ printf '%s/%s:\t$(%s.%s.sortdata)\n' "$c" "$lst" "$art" "$name"
done
printf '%s/index.htmllisting\t' "$c"
- printf '%s/categories.htmllisting:\t' "$c"
- printf '$(articles.%s.indexentry)\n' "$name"
+ printf '%s/%s.htmllisting:\t' "$c" "$plural"
+ printf '$(%s.%s.indexentry)\n' "$art" "$name"
- printf '%s/categories.txt:\t' "$c"
- printf '$(articles.%s.categorydata)\n' "$name"
+ printf '%s/%s.txt:\t' "$c" "$plural"
+ printf '$(%s.%s.categorydata)\n' "$art" "$name"
- printf '%s/categories.txt\t' "$c"
+ printf '%s/%s.txt\t' "$c" "$plural"
printf '%s/feed.xml:\t' "$c"
- printf '$(articles.%s.feedentry)\n' "$name"
+ printf '$(%s.%s.feedentry)\n' "$art" "$name"
+
+ printf '%s/%s.htmllisting\t' "$c" "$plural"
+ printf '%s/%s.xml:\t' "$c" "$plural"
+ printf '%s/%s.txt\n' "$c" "$plural"
- printf '%s/categories.htmllisting\t' "$c"
- printf '%s/categories.xml:\t' "$c"
- printf '%s/categories.txt\n' "$c"
+ printf '%s/%s.xml.gz:\t%s/%s.xml\n' "$c" "$plural" "$c" "$plural"
+}
+
+
+for langlink in src/collections/*; do
+ for colllink in "$langlink"/*; do
+ collectionentries "$langlink" "$colllink"
+ done
done
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..3524d73
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,161 @@
+# German translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-01 19:02-0300\n"
+"PO-Revision-Date: 2025-04-29 19:46-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: src/headers/ref.txt:2
+msgid "en/blog/\tBlog"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:4
+msgid "en/til/\tTIL"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:6
+msgid "en/podcast/\tPodcasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:8
+msgid "en/screencast/\tScreencasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:10
+msgid "en/pastebin/\tPastebins"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:12
+msgid "en/slide/\tSlides"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:13
+msgid "en/about.html\tAbout"
+msgstr ""
+
+#. type: Plain text
+#: src/names/categories/ref.txt:1
+msgid "categories"
+msgstr ""
+
+#. type: Plain text
+#: src/names/category/ref.txt:1
+msgid "category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/about.adoc:1
+#, no-wrap
+msgid "About"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:9
+msgid ""
+"Hi, I'm EuAndreh. I write software and, occasionally, music. You can find "
+"my contact information in the footer of this page, or mail my {mailto}"
+"[public inbox] ({archive}[archive])."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:11
+msgid ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/index.adoc:1
+#, no-wrap
+msgid "Today I Learned"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:6
+msgid "**T**oday **I** **L**earned: small entries of useful knowledge."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:7
+msgid "Shameless rip-off of {anna-e-so}[Anna e só]."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/categories.adoc:1
+#, no-wrap
+msgid "Articles by category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:1
+#, no-wrap
+msgid "Simple filename timestamp"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:7
+msgid ""
+"When writing Jekyll posts or creating log files with dates on them, I "
+"usually struggle with finding a direct way of accomplishing that. There's a "
+"simple solution: `date -I`."
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:12
+#, no-wrap
+msgid ""
+"./my-program.sh > my-program.$(date -I).log\n"
+"cp post-template.md _posts/$(date -I)-post-slug.md\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:16
+msgid ""
+"Using this built-in GNU/Linux tool allows you to `touch $(date -I).md` to "
+"readily create a `2020-08-12.md` file."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:20
+msgid ""
+"I always had to read `man date` or search the web over and over, and after "
+"doing this repeatedly it became clear that both `date -I` and `date -Is` "
+"(`s` here stands for seconds) are the thing that I'm looking for 95% of the "
+"time:"
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:27
+#, no-wrap
+msgid ""
+"# inside my-program.sh\n"
+"echo \"Program started at $(date -Is)\"\n"
+"# output is:\n"
+"# Program started at 2020-08-12T09:04:58-03:00\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:31
+msgid ""
+"Both date formats are hierarchical, having the bigger time intervals to the "
+"left. This means that you can easily sort them (and even tab-complete "
+"them) with no extra effort or tool required."
+msgstr ""
diff --git a/po/en.po b/po/en.po
new file mode 100644
index 0000000..cc244ff
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,171 @@
+# English translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-01 19:02-0300\n"
+"PO-Revision-Date: 2025-04-29 19:46-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: src/headers/ref.txt:2
+msgid "en/blog/\tBlog"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:4
+msgid "en/til/\tTIL"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:6
+msgid "en/podcast/\tPodcasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:8
+msgid "en/screencast/\tScreencasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:10
+msgid "en/pastebin/\tPastebins"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:12
+msgid "en/slide/\tSlides"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:13
+msgid "en/about.html\tAbout"
+msgstr ""
+
+#. type: Plain text
+#: src/names/categories/ref.txt:1
+msgid "categories"
+msgstr ""
+
+#. type: Plain text
+#: src/names/category/ref.txt:1
+msgid "category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/about.adoc:1
+#, no-wrap
+msgid "About"
+msgstr "About"
+
+#. type: Plain text
+#: src/content/en/about.adoc:9
+#, fuzzy
+#| msgid ""
+#| "Hi, I'm EuAndreh. I write software and occasionally music. You can find "
+#| "my contact information in the footer of this page, or mail my {mailto}"
+#| "[public inbox] ({archive}[archive])."
+msgid ""
+"Hi, I'm EuAndreh. I write software and, occasionally, music. You can find "
+"my contact information in the footer of this page, or mail my {mailto}"
+"[public inbox] ({archive}[archive])."
+msgstr ""
+"Hi, I'm EuAndreh. I write software and occasionally music. You can find my "
+"contact information in the footer of this page, or mail my {mailto}[public "
+"inbox] ({archive}[archive])."
+
+#. type: Plain text
+#: src/content/en/about.adoc:11
+msgid ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+msgstr ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+
+#. type: Title =
+#: src/content/en/til/index.adoc:1
+#, no-wrap
+msgid "Today I Learned"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:6
+msgid "**T**oday **I** **L**earned: small entries of useful knowledge."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:7
+msgid "Shameless rip-off of {anna-e-so}[Anna e só]."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/categories.adoc:1
+#, no-wrap
+msgid "Articles by category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:1
+#, no-wrap
+msgid "Simple filename timestamp"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:7
+msgid ""
+"When writing Jekyll posts or creating log files with dates on them, I "
+"usually struggle with finding a direct way of accomplishing that. There's a "
+"simple solution: `date -I`."
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:12
+#, no-wrap
+msgid ""
+"./my-program.sh > my-program.$(date -I).log\n"
+"cp post-template.md _posts/$(date -I)-post-slug.md\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:16
+msgid ""
+"Using this built-in GNU/Linux tool allows you to `touch $(date -I).md` to "
+"readily create a `2020-08-12.md` file."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:20
+msgid ""
+"I always had to read `man date` or search the web over and over, and after "
+"doing this repeatedly it became clear that both `date -I` and `date -Is` "
+"(`s` here stands for seconds) are the thing that I'm looking for 95% of the "
+"time:"
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:27
+#, no-wrap
+msgid ""
+"# inside my-program.sh\n"
+"echo \"Program started at $(date -Is)\"\n"
+"# output is:\n"
+"# Program started at 2020-08-12T09:04:58-03:00\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:31
+msgid ""
+"Both date formats are hierarchical, having the bigger time intervals to the "
+"left. This means that you can easily sort them (and even tab-complete "
+"them) with no extra effort or tool required."
+msgstr ""
diff --git a/po/eo.po b/po/eo.po
new file mode 100644
index 0000000..d0cda59
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,161 @@
+# Esperanto translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-01 19:02-0300\n"
+"PO-Revision-Date: 2025-04-29 19:46-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: src/headers/ref.txt:2
+msgid "en/blog/\tBlog"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:4
+msgid "en/til/\tTIL"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:6
+msgid "en/podcast/\tPodcasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:8
+msgid "en/screencast/\tScreencasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:10
+msgid "en/pastebin/\tPastebins"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:12
+msgid "en/slide/\tSlides"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:13
+msgid "en/about.html\tAbout"
+msgstr ""
+
+#. type: Plain text
+#: src/names/categories/ref.txt:1
+msgid "categories"
+msgstr ""
+
+#. type: Plain text
+#: src/names/category/ref.txt:1
+msgid "category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/about.adoc:1
+#, no-wrap
+msgid "About"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:9
+msgid ""
+"Hi, I'm EuAndreh. I write software and, occasionally, music. You can find "
+"my contact information in the footer of this page, or mail my {mailto}"
+"[public inbox] ({archive}[archive])."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:11
+msgid ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/index.adoc:1
+#, no-wrap
+msgid "Today I Learned"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:6
+msgid "**T**oday **I** **L**earned: small entries of useful knowledge."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:7
+msgid "Shameless rip-off of {anna-e-so}[Anna e só]."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/categories.adoc:1
+#, no-wrap
+msgid "Articles by category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:1
+#, no-wrap
+msgid "Simple filename timestamp"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:7
+msgid ""
+"When writing Jekyll posts or creating log files with dates on them, I "
+"usually struggle with finding a direct way of accomplishing that. There's a "
+"simple solution: `date -I`."
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:12
+#, no-wrap
+msgid ""
+"./my-program.sh > my-program.$(date -I).log\n"
+"cp post-template.md _posts/$(date -I)-post-slug.md\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:16
+msgid ""
+"Using this built-in GNU/Linux tool allows you to `touch $(date -I).md` to "
+"readily create a `2020-08-12.md` file."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:20
+msgid ""
+"I always had to read `man date` or search the web over and over, and after "
+"doing this repeatedly it became clear that both `date -I` and `date -Is` "
+"(`s` here stands for seconds) are the thing that I'm looking for 95% of the "
+"time:"
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:27
+#, no-wrap
+msgid ""
+"# inside my-program.sh\n"
+"echo \"Program started at $(date -Is)\"\n"
+"# output is:\n"
+"# Program started at 2020-08-12T09:04:58-03:00\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:31
+msgid ""
+"Both date formats are hierarchical, having the bigger time intervals to the "
+"left. This means that you can easily sort them (and even tab-complete "
+"them) with no extra effort or tool required."
+msgstr ""
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..43e2cbf
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,161 @@
+# Spanish translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-01 19:02-0300\n"
+"PO-Revision-Date: 2025-04-29 19:46-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: src/headers/ref.txt:2
+msgid "en/blog/\tBlog"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:4
+msgid "en/til/\tTIL"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:6
+msgid "en/podcast/\tPodcasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:8
+msgid "en/screencast/\tScreencasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:10
+msgid "en/pastebin/\tPastebins"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:12
+msgid "en/slide/\tSlides"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:13
+msgid "en/about.html\tAbout"
+msgstr ""
+
+#. type: Plain text
+#: src/names/categories/ref.txt:1
+msgid "categories"
+msgstr ""
+
+#. type: Plain text
+#: src/names/category/ref.txt:1
+msgid "category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/about.adoc:1
+#, no-wrap
+msgid "About"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:9
+msgid ""
+"Hi, I'm EuAndreh. I write software and, occasionally, music. You can find "
+"my contact information in the footer of this page, or mail my {mailto}"
+"[public inbox] ({archive}[archive])."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:11
+msgid ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/index.adoc:1
+#, no-wrap
+msgid "Today I Learned"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:6
+msgid "**T**oday **I** **L**earned: small entries of useful knowledge."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:7
+msgid "Shameless rip-off of {anna-e-so}[Anna e só]."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/categories.adoc:1
+#, no-wrap
+msgid "Articles by category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:1
+#, no-wrap
+msgid "Simple filename timestamp"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:7
+msgid ""
+"When writing Jekyll posts or creating log files with dates on them, I "
+"usually struggle with finding a direct way of accomplishing that. There's a "
+"simple solution: `date -I`."
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:12
+#, no-wrap
+msgid ""
+"./my-program.sh > my-program.$(date -I).log\n"
+"cp post-template.md _posts/$(date -I)-post-slug.md\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:16
+msgid ""
+"Using this built-in GNU/Linux tool allows you to `touch $(date -I).md` to "
+"readily create a `2020-08-12.md` file."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:20
+msgid ""
+"I always had to read `man date` or search the web over and over, and after "
+"doing this repeatedly it became clear that both `date -I` and `date -Is` "
+"(`s` here stands for seconds) are the thing that I'm looking for 95% of the "
+"time:"
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:27
+#, no-wrap
+msgid ""
+"# inside my-program.sh\n"
+"echo \"Program started at $(date -Is)\"\n"
+"# output is:\n"
+"# Program started at 2020-08-12T09:04:58-03:00\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:31
+msgid ""
+"Both date formats are hierarchical, having the bigger time intervals to the "
+"left. This means that you can easily sort them (and even tab-complete "
+"them) with no extra effort or tool required."
+msgstr ""
diff --git a/po/euandre.org.pot b/po/euandre.org.pot
new file mode 100644
index 0000000..783e8ab
--- /dev/null
+++ b/po/euandre.org.pot
@@ -0,0 +1,161 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-01 19:02-0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Plain text
+#: src/headers/ref.txt:2
+msgid "en/blog/\tBlog"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:4
+msgid "en/til/\tTIL"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:6
+msgid "en/podcast/\tPodcasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:8
+msgid "en/screencast/\tScreencasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:10
+msgid "en/pastebin/\tPastebins"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:12
+msgid "en/slide/\tSlides"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:13
+msgid "en/about.html\tAbout"
+msgstr ""
+
+#. type: Plain text
+#: src/names/categories/ref.txt:1
+msgid "categories"
+msgstr ""
+
+#. type: Plain text
+#: src/names/category/ref.txt:1
+msgid "category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/about.adoc:1
+#, no-wrap
+msgid "About"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:9
+msgid ""
+"Hi, I'm EuAndreh. I write software and, occasionally, music. You can find "
+"my contact information in the footer of this page, or mail my "
+"{mailto}[public inbox] ({archive}[archive])."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:11
+msgid ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/index.adoc:1
+#, no-wrap
+msgid "Today I Learned"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:6
+msgid "**T**oday **I** **L**earned: small entries of useful knowledge."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:7
+msgid "Shameless rip-off of {anna-e-so}[Anna e só]."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/categories.adoc:1
+#, no-wrap
+msgid "Articles by category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:1
+#, no-wrap
+msgid "Simple filename timestamp"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:7
+msgid ""
+"When writing Jekyll posts or creating log files with dates on them, I "
+"usually struggle with finding a direct way of accomplishing that. There's a "
+"simple solution: `date -I`."
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:12
+#, no-wrap
+msgid ""
+"./my-program.sh > my-program.$(date -I).log\n"
+"cp post-template.md _posts/$(date -I)-post-slug.md\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:16
+msgid ""
+"Using this built-in GNU/Linux tool allows you to `touch $(date -I).md` to "
+"readily create a `2020-08-12.md` file."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:20
+msgid ""
+"I always had to read `man date` or search the web over and over, and after "
+"doing this repeatedly it became clear that both `date -I` and `date -Is` "
+"(`s` here stands for seconds) are the thing that I'm looking for 95% of the "
+"time:"
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:27
+#, no-wrap
+msgid ""
+"# inside my-program.sh\n"
+"echo \"Program started at $(date -Is)\"\n"
+"# output is:\n"
+"# Program started at 2020-08-12T09:04:58-03:00\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:31
+msgid ""
+"Both date formats are hierarchical, having the bigger time intervals to the "
+"left. This means that you can easily sort them (and even tab-complete them) "
+"with no extra effort or tool required."
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..7093686
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,161 @@
+# French translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-01 19:02-0300\n"
+"PO-Revision-Date: 2025-04-29 19:46-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. type: Plain text
+#: src/headers/ref.txt:2
+msgid "en/blog/\tBlog"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:4
+msgid "en/til/\tTIL"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:6
+msgid "en/podcast/\tPodcasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:8
+msgid "en/screencast/\tScreencasts"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:10
+msgid "en/pastebin/\tPastebins"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:12
+msgid "en/slide/\tSlides"
+msgstr ""
+
+#. type: Plain text
+#: src/headers/ref.txt:13
+msgid "en/about.html\tAbout"
+msgstr ""
+
+#. type: Plain text
+#: src/names/categories/ref.txt:1
+msgid "categories"
+msgstr ""
+
+#. type: Plain text
+#: src/names/category/ref.txt:1
+msgid "category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/about.adoc:1
+#, no-wrap
+msgid "About"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:9
+msgid ""
+"Hi, I'm EuAndreh. I write software and, occasionally, music. You can find "
+"my contact information in the footer of this page, or mail my {mailto}"
+"[public inbox] ({archive}[archive])."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/about.adoc:11
+msgid ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/index.adoc:1
+#, no-wrap
+msgid "Today I Learned"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:6
+msgid "**T**oday **I** **L**earned: small entries of useful knowledge."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:7
+msgid "Shameless rip-off of {anna-e-so}[Anna e só]."
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/categories.adoc:1
+#, no-wrap
+msgid "Articles by category"
+msgstr ""
+
+#. type: Title =
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:1
+#, no-wrap
+msgid "Simple filename timestamp"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:7
+msgid ""
+"When writing Jekyll posts or creating log files with dates on them, I "
+"usually struggle with finding a direct way of accomplishing that. There's a "
+"simple solution: `date -I`."
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:12
+#, no-wrap
+msgid ""
+"./my-program.sh > my-program.$(date -I).log\n"
+"cp post-template.md _posts/$(date -I)-post-slug.md\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:16
+msgid ""
+"Using this built-in GNU/Linux tool allows you to `touch $(date -I).md` to "
+"readily create a `2020-08-12.md` file."
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:20
+msgid ""
+"I always had to read `man date` or search the web over and over, and after "
+"doing this repeatedly it became clear that both `date -I` and `date -Is` "
+"(`s` here stands for seconds) are the thing that I'm looking for 95% of the "
+"time:"
+msgstr ""
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:27
+#, no-wrap
+msgid ""
+"# inside my-program.sh\n"
+"echo \"Program started at $(date -Is)\"\n"
+"# output is:\n"
+"# Program started at 2020-08-12T09:04:58-03:00\n"
+msgstr ""
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:31
+msgid ""
+"Both date formats are hierarchical, having the bigger time intervals to the "
+"left. This means that you can easily sort them (and even tab-complete "
+"them) with no extra effort or tool required."
+msgstr ""
diff --git a/po/note.txt b/po/note.txt
new file mode 100644
index 0000000..45279a4
--- /dev/null
+++ b/po/note.txt
@@ -0,0 +1,5 @@
+PO4A-HEADER: mode=eof
+
+
+
+// Generated from po4a(1).
diff --git a/po/po4a.cfg b/po/po4a.cfg
new file mode 100644
index 0000000..77f48a6
--- /dev/null
+++ b/po/po4a.cfg
@@ -0,0 +1,12 @@
+[options] --keep 0 --master-charset UTF-8 --localized-charset UTF-8 --addendum-charset UTF-8
+
+[po_directory] po
+
+[type: text] src/headers/ref.txt $lang:src/headers/$lang.txt
+[type: text] src/names/categories/ref.txt $lang:src/names/categories/$lang.txt
+[type: text] src/names/category/ref.txt $lang:src/names/category/$lang.txt
+
+[type: asciidoc] src/content/en/about.adoc pt:src/content/pt/sobre.adoc add_$lang:po/note.txt
+[type: asciidoc] src/content/en/til/index.adoc pt:src/content/pt/hea/index.adoc add_$lang:po/note.txt
+[type: asciidoc] src/content/en/til/categories.adoc pt:src/content/pt/hea/categorias.adoc add_$lang:po/note.txt
+[type: asciidoc] src/content/en/til/2020/08/12/filename-timestamp.adoc pt:src/content/pt/hea/2020/08/12/arquivo-datado.adoc add_$lang:po/note.txt
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..4794358
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,190 @@
+# Portuguese translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2025-05-01 19:02-0300\n"
+"PO-Revision-Date: 2025-05-01 19:08-0300\n"
+"Last-Translator: EuAndreh <eu@euandre.org>\n"
+"Language-Team: none\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.5\n"
+
+#. type: Plain text
+#: src/headers/ref.txt:2
+msgid "en/blog/\tBlog"
+msgstr "#"
+
+#. type: Plain text
+#: src/headers/ref.txt:4
+msgid "en/til/\tTIL"
+msgstr "pt/hea/\tHEA"
+
+#. type: Plain text
+#: src/headers/ref.txt:6
+msgid "en/podcast/\tPodcasts"
+msgstr "#"
+
+#. type: Plain text
+#: src/headers/ref.txt:8
+msgid "en/screencast/\tScreencasts"
+msgstr "#"
+
+#. type: Plain text
+#: src/headers/ref.txt:10
+msgid "en/pastebin/\tPastebins"
+msgstr "#"
+
+#. type: Plain text
+#: src/headers/ref.txt:12
+msgid "en/slide/\tSlides"
+msgstr "#"
+
+#. type: Plain text
+#: src/headers/ref.txt:13
+msgid "en/about.html\tAbout"
+msgstr "pt/sobre.html\tSobre"
+
+#. type: Plain text
+#: src/names/categories/ref.txt:1
+msgid "categories"
+msgstr "categorias"
+
+#. type: Plain text
+#: src/names/category/ref.txt:1
+msgid "category"
+msgstr "categoria"
+
+#. type: Title =
+#: src/content/en/about.adoc:1
+#, no-wrap
+msgid "About"
+msgstr "Sobre"
+
+#. type: Plain text
+#: src/content/en/about.adoc:9
+msgid ""
+"Hi, I'm EuAndreh. I write software and, occasionally, music. You can find "
+"my contact information in the footer of this page, or mail my {mailto}"
+"[public inbox] ({archive}[archive])."
+msgstr ""
+"Oi, eu sou EuAndreh. Eu escrevo software e, ocasionalmente, música. Você "
+"encontra meu dados para entrar em contato no rodapé desta página, ou pode "
+"mandar também uma mensagem para minha {mailto}[caixa de entrada pública] "
+"({archive}[arquivo])."
+
+#. type: Plain text
+#: src/content/en/about.adoc:11
+msgid ""
+"This is my personal website where I write articles, publish software and "
+"more related work."
+msgstr ""
+"Esse é o meu site pessoal onde eu escrevo artigos, publico software e outros "
+"trabalhos relacionados."
+
+#. type: Title =
+#: src/content/en/til/index.adoc:1
+#, no-wrap
+msgid "Today I Learned"
+msgstr "Hoje Eu Aprendi"
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:6
+msgid "**T**oday **I** **L**earned: small entries of useful knowledge."
+msgstr ""
+"**H**oje **E**u **A**prendi (do inglês, _**T**oday **I** **L**earned_): "
+"pequenas postagens de conhecimentos úteis."
+
+#. type: Plain text
+#: src/content/en/til/index.adoc:7
+msgid "Shameless rip-off of {anna-e-so}[Anna e só]."
+msgstr "Cópia descarada da {anna-e-so}[Anna e só]."
+
+#. type: Title =
+#: src/content/en/til/categories.adoc:1
+#, no-wrap
+msgid "Articles by category"
+msgstr "Artigos por categoria"
+
+#. type: Title =
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:1
+#, no-wrap
+msgid "Simple filename timestamp"
+msgstr ""
+"Nome de arquivo com dia e hora de forma simplificada\n"
+":updatedat: 2025-04-30"
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:7
+msgid ""
+"When writing Jekyll posts or creating log files with dates on them, I "
+"usually struggle with finding a direct way of accomplishing that. There's a "
+"simple solution: `date -I`."
+msgstr ""
+"Quando vou escrever um artigo no Jekyll ou criar um arquivo de log com a "
+"data no nome, eu normalmente engasgo para achar um jeito direto de fazer "
+"isso. Há uma solução simples: `date -I`."
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:12
+#, no-wrap
+msgid ""
+"./my-program.sh > my-program.$(date -I).log\n"
+"cp post-template.md _posts/$(date -I)-post-slug.md\n"
+msgstr ""
+"./meu-programa.sh > meu-programa.$(date -I).log\n"
+"cp template-de-artigo.md _posts/$(date -I)-slug-do-artigo.md\n"
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:16
+msgid ""
+"Using this built-in GNU/Linux tool allows you to `touch $(date -I).md` to "
+"readily create a `2020-08-12.md` file."
+msgstr ""
+"Usar essa ferramenta padrão do GNU/Linux permite que você simplesmente "
+"escreva `touch $(date -I).md` para criar um arquivo `2020-08-12.md`."
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:20
+msgid ""
+"I always had to read `man date` or search the web over and over, and after "
+"doing this repeatedly it became clear that both `date -I` and `date -Is` "
+"(`s` here stands for seconds) are the thing that I'm looking for 95% of the "
+"time:"
+msgstr ""
+"Eu sempre tinha que para para reler o `man date` ou buscar na internet de "
+"novo e de novo como fazer isso, e depois de sempre chegar no mesmo resultado "
+"ficou claro para mim que tanto `date -I` quanto `date -Is` (`s` de segundos) "
+"são as respostas que eu estou procurando 95% do tempo:"
+
+#. type: delimited block -
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:27
+#, no-wrap
+msgid ""
+"# inside my-program.sh\n"
+"echo \"Program started at $(date -Is)\"\n"
+"# output is:\n"
+"# Program started at 2020-08-12T09:04:58-03:00\n"
+msgstr ""
+"# dentro do meu programa.sh\n"
+"echo \"Programa começou em $(date -Is)\"\n"
+"# saída é:\n"
+"# Programa começou em 2020-08-12T09:15:16-03:00\n"
+
+#. type: Plain text
+#: src/content/en/til/2020/08/12/filename-timestamp.adoc:31
+msgid ""
+"Both date formats are hierarchical, having the bigger time intervals to the "
+"left. This means that you can easily sort them (and even tab-complete "
+"them) with no extra effort or tool required."
+msgstr ""
+"Ambos os formatos de data são hierárquicos, com intervalos de tempo maior à "
+"esquerda. Isso significa que você pode facilmente ordená-los (e até usar "
+"TAB para completar) sem esforço ou ferramenta extra."
diff --git a/src/bin/pb b/src/bin/pb
index ed88c62..c934124 100755
--- a/src/bin/pb
+++ b/src/bin/pb
@@ -30,7 +30,7 @@ FILENAME="${FILENAME%.adoc}.adoc"
cd "$(dirname "$(readlink -f -- "$0")")"/../../
-DIR=src/content/pastebins/"$(timestamp | sed 's|-|/|g')"
+DIR=src/content/en/pastebins/"$(timestamp | sed 's|-|/|g')"
OUT="$DIR"/"$FILENAME"
if [ -e "$OUT" ]; then
diff --git a/src/collections/blog b/src/collections/blog
deleted file mode 120000
index 8c3a331..0000000
--- a/src/collections/blog
+++ /dev/null
@@ -1 +0,0 @@
-../content/blog \ No newline at end of file
diff --git a/src/collections/en/blog b/src/collections/en/blog
new file mode 120000
index 0000000..973ecf5
--- /dev/null
+++ b/src/collections/en/blog
@@ -0,0 +1 @@
+../../content/en/blog \ No newline at end of file
diff --git a/src/collections/en/pastebin b/src/collections/en/pastebin
new file mode 120000
index 0000000..5168ff3
--- /dev/null
+++ b/src/collections/en/pastebin
@@ -0,0 +1 @@
+../../content/en/pastebin \ No newline at end of file
diff --git a/src/collections/en/podcast b/src/collections/en/podcast
new file mode 120000
index 0000000..2334546
--- /dev/null
+++ b/src/collections/en/podcast
@@ -0,0 +1 @@
+../../content/en/podcast \ No newline at end of file
diff --git a/src/collections/en/screencast b/src/collections/en/screencast
new file mode 120000
index 0000000..e04adf4
--- /dev/null
+++ b/src/collections/en/screencast
@@ -0,0 +1 @@
+../../content/en/screencast \ No newline at end of file
diff --git a/src/collections/en/til b/src/collections/en/til
new file mode 120000
index 0000000..6519d09
--- /dev/null
+++ b/src/collections/en/til
@@ -0,0 +1 @@
+../../content/en/til \ No newline at end of file
diff --git a/src/collections/pastebins b/src/collections/pastebins
deleted file mode 120000
index 61731f2..0000000
--- a/src/collections/pastebins
+++ /dev/null
@@ -1 +0,0 @@
-../content/pastebins \ No newline at end of file
diff --git a/src/collections/podcasts b/src/collections/podcasts
deleted file mode 120000
index 8e5f3ba..0000000
--- a/src/collections/podcasts
+++ /dev/null
@@ -1 +0,0 @@
-../content/podcasts \ No newline at end of file
diff --git a/src/collections/pt/hea b/src/collections/pt/hea
new file mode 120000
index 0000000..ce49d8f
--- /dev/null
+++ b/src/collections/pt/hea
@@ -0,0 +1 @@
+../../content/pt/hea \ No newline at end of file
diff --git a/src/collections/screencasts b/src/collections/screencasts
deleted file mode 120000
index 09a6cdb..0000000
--- a/src/collections/screencasts
+++ /dev/null
@@ -1 +0,0 @@
-../content/screencasts \ No newline at end of file
diff --git a/src/collections/tils b/src/collections/tils
deleted file mode 120000
index 435da6e..0000000
--- a/src/collections/tils
+++ /dev/null
@@ -1 +0,0 @@
-../content/tils \ No newline at end of file
diff --git a/src/content/about.adoc b/src/content/en/about.adoc
index 9911496..14d5e22 100644
--- a/src/content/about.adoc
+++ b/src/content/en/about.adoc
@@ -3,7 +3,7 @@
:mailto: mailto:~euandreh/public-inbox@lists.sr.ht
:archive: https://lists.sr.ht/~euandreh/public-inbox
-Hi, I'm EuAndreh. I write software and occasionally music. You can find my
+Hi, I'm EuAndreh. I write software and, occasionally, music. You can find my
contact information in the footer of this page, or mail my {mailto}[public
inbox] ({archive}[archive]).
diff --git a/src/content/blog/2018/07/17/guix-nixos.adoc b/src/content/en/blog/2018/07/17/guix-nixos.adoc
index 42290f6..42290f6 100644
--- a/src/content/blog/2018/07/17/guix-nixos.adoc
+++ b/src/content/en/blog/2018/07/17/guix-nixos.adoc
diff --git a/src/content/blog/2018/08/01/npm-ci-reproducibility.adoc b/src/content/en/blog/2018/08/01/npm-ci-reproducibility.adoc
index 76bd8e6..76bd8e6 100644
--- a/src/content/blog/2018/08/01/npm-ci-reproducibility.adoc
+++ b/src/content/en/blog/2018/08/01/npm-ci-reproducibility.adoc
diff --git a/src/content/blog/2018/12/21/ytdl-subs.adoc b/src/content/en/blog/2018/12/21/ytdl-subs.adoc
index 10afbf6..10afbf6 100644
--- a/src/content/blog/2018/12/21/ytdl-subs.adoc
+++ b/src/content/en/blog/2018/12/21/ytdl-subs.adoc
diff --git a/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc b/src/content/en/blog/2019/06/02/nixos-stateless-workstation.adoc
index f89a106..f89a106 100644
--- a/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
+++ b/src/content/en/blog/2019/06/02/nixos-stateless-workstation.adoc
diff --git a/src/content/blog/2020/08/10/guix-srht.adoc b/src/content/en/blog/2020/08/10/guix-srht.adoc
index a89e86e..a89e86e 100644
--- a/src/content/blog/2020/08/10/guix-srht.adoc
+++ b/src/content/en/blog/2020/08/10/guix-srht.adoc
diff --git a/src/content/blog/2020/08/31/database-i-wish-i-had.adoc b/src/content/en/blog/2020/08/31/database-i-wish-i-had.adoc
index 7f010b9..7f010b9 100644
--- a/src/content/blog/2020/08/31/database-i-wish-i-had.adoc
+++ b/src/content/en/blog/2020/08/31/database-i-wish-i-had.adoc
diff --git a/src/content/blog/2020/10/05/cargo2nix-demo.tar.gz b/src/content/en/blog/2020/10/05/cargo2nix-demo.tar.gz
index 43677ec..43677ec 100644
--- a/src/content/blog/2020/10/05/cargo2nix-demo.tar.gz
+++ b/src/content/en/blog/2020/10/05/cargo2nix-demo.tar.gz
Binary files differ
diff --git a/src/content/blog/2020/10/05/cargo2nix.adoc b/src/content/en/blog/2020/10/05/cargo2nix.adoc
index a2d478e..a2d478e 100644
--- a/src/content/blog/2020/10/05/cargo2nix.adoc
+++ b/src/content/en/blog/2020/10/05/cargo2nix.adoc
diff --git a/src/content/blog/2020/10/05/cargo2nix.tar.gz b/src/content/en/blog/2020/10/05/cargo2nix.tar.gz
index d7224d9..d7224d9 100644
--- a/src/content/blog/2020/10/05/cargo2nix.tar.gz
+++ b/src/content/en/blog/2020/10/05/cargo2nix.tar.gz
Binary files differ
diff --git a/src/content/blog/2020/10/05/swift2nix-demo.tar.gz b/src/content/en/blog/2020/10/05/swift2nix-demo.tar.gz
index cc8b4f1..cc8b4f1 100644
--- a/src/content/blog/2020/10/05/swift2nix-demo.tar.gz
+++ b/src/content/en/blog/2020/10/05/swift2nix-demo.tar.gz
Binary files differ
diff --git a/src/content/blog/2020/10/05/swift2nix.adoc b/src/content/en/blog/2020/10/05/swift2nix.adoc
index 9a3c6fe..9a3c6fe 100644
--- a/src/content/blog/2020/10/05/swift2nix.adoc
+++ b/src/content/en/blog/2020/10/05/swift2nix.adoc
diff --git a/src/content/blog/2020/10/05/swift2nix.tar.gz b/src/content/en/blog/2020/10/05/swift2nix.tar.gz
index a22aaa0..a22aaa0 100644
--- a/src/content/blog/2020/10/05/swift2nix.tar.gz
+++ b/src/content/en/blog/2020/10/05/swift2nix.tar.gz
Binary files differ
diff --git a/src/content/blog/2020/10/19/feature-flags.adoc b/src/content/en/blog/2020/10/19/feature-flags.adoc
index 972f693..8788407 100644
--- a/src/content/blog/2020/10/19/feature-flags.adoc
+++ b/src/content/en/blog/2020/10/19/feature-flags.adoc
@@ -3,7 +3,7 @@
:updatedat: 2020-11-03
:empty:
-:slides: link:../../../../slides/2020/10/19/feature-flags.html FIXME
+:slides: link:../../../../slide/2020/10/19/feature-flags.pdf
:fowler-article: https://martinfowler.com/articles/feature-toggles.html
_This article is derived from a {slides}[presentation] on the same subject._
diff --git a/src/content/blog/2020/10/20/wrong-interviewing.adoc b/src/content/en/blog/2020/10/20/wrong-interviewing.adoc
index 4b8d855..4b8d855 100644
--- a/src/content/blog/2020/10/20/wrong-interviewing.adoc
+++ b/src/content/en/blog/2020/10/20/wrong-interviewing.adoc
diff --git a/src/content/blog/2020/11/07/diy-bugs.adoc b/src/content/en/blog/2020/11/07/diy-bugs.adoc
index 8ab7953..5fbc920 100644
--- a/src/content/blog/2020/11/07/diy-bugs.adoc
+++ b/src/content/en/blog/2020/11/07/diy-bugs.adoc
@@ -4,7 +4,7 @@
:attack-on-ytdl: https://github.com/github/dmca/blob/master/2020/10/2020-10-23-RIAA.md
:list-discussions: https://sourcehut.org/blog/2020-10-29-how-mailing-lists-prevent-censorship/
:docs-in-repo: https://podcast.writethedocs.org/2017/01/25/episode-3-trends/
-:ci-in-notes: link:../../../../tils/2020/11/30/git-notes-ci.html
+:ci-in-notes: link:../../../../til/2020/11/30/git-notes-ci.html
:todos-mui: https://man.sr.ht/todo.sr.ht/#email-access
:git-bug-bridges: https://github.com/MichaelMure/git-bug#bridges
diff --git a/src/content/blog/2020/11/08/paradigm-shift-review.adoc b/src/content/en/blog/2020/11/08/paradigm-shift-review.adoc
index 1110085..1110085 100644
--- a/src/content/blog/2020/11/08/paradigm-shift-review.adoc
+++ b/src/content/en/blog/2020/11/08/paradigm-shift-review.adoc
diff --git a/src/content/blog/2020/11/12/database-parsers-trees.adoc b/src/content/en/blog/2020/11/12/database-parsers-trees.adoc
index 47595e8..47595e8 100644
--- a/src/content/blog/2020/11/12/database-parsers-trees.adoc
+++ b/src/content/en/blog/2020/11/12/database-parsers-trees.adoc
diff --git a/src/content/blog/2020/11/14/local-first-review.adoc b/src/content/en/blog/2020/11/14/local-first-review.adoc
index f9dd4b0..2036069 100644
--- a/src/content/blog/2020/11/14/local-first-review.adoc
+++ b/src/content/en/blog/2020/11/14/local-first-review.adoc
@@ -2,7 +2,7 @@
:categories: presentation article-review
:empty:
-:presentation: link:../../../../slides/2020/11/14/local-first.html FIXME
+:presentation: link:../../../../slide/2020/11/14/local-first-hype.pdf
:reviewed-article: https://martin.kleppmann.com/papers/local-first.pdf
_This article is derived from a {presentation}[presentation] given at a Papers
diff --git a/src/content/blog/2021/01/26/remembering-ann.adoc b/src/content/en/blog/2021/01/26/remembering-ann.adoc
index 6786b3c..6786b3c 100644
--- a/src/content/blog/2021/01/26/remembering-ann.adoc
+++ b/src/content/en/blog/2021/01/26/remembering-ann.adoc
diff --git a/src/content/blog/2021/02/17/fallible.adoc b/src/content/en/blog/2021/02/17/fallible.adoc
index 1f2f641..1f2f641 100644
--- a/src/content/blog/2021/02/17/fallible.adoc
+++ b/src/content/en/blog/2021/02/17/fallible.adoc
diff --git a/src/content/blog/2021/02/17/fallible.tar.gz b/src/content/en/blog/2021/02/17/fallible.tar.gz
index 211cadd..211cadd 100644
--- a/src/content/blog/2021/02/17/fallible.tar.gz
+++ b/src/content/en/blog/2021/02/17/fallible.tar.gz
Binary files differ
diff --git a/src/content/blog/2021/04/29/relational-review.adoc b/src/content/en/blog/2021/04/29/relational-review.adoc
index 4b53737..4b53737 100644
--- a/src/content/blog/2021/04/29/relational-review.adoc
+++ b/src/content/en/blog/2021/04/29/relational-review.adoc
diff --git a/src/content/blog/categories.adoc b/src/content/en/blog/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/blog/categories.adoc
+++ b/src/content/en/blog/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/blog/index.adoc b/src/content/en/blog/index.adoc
index afd64d4..afd64d4 100644
--- a/src/content/blog/index.adoc
+++ b/src/content/en/blog/index.adoc
diff --git a/src/content/index.adoc b/src/content/en/index.adoc
index 275f7c4..275f7c4 100644
--- a/src/content/index.adoc
+++ b/src/content/en/index.adoc
diff --git a/src/content/pastebins/2016/04/05/rpn.adoc b/src/content/en/pastebin/2016/04/05/rpn.adoc
index c567d0d..c567d0d 100644
--- a/src/content/pastebins/2016/04/05/rpn.adoc
+++ b/src/content/en/pastebin/2016/04/05/rpn.adoc
diff --git a/src/content/pastebins/2018/07/11/nix-pinning.adoc b/src/content/en/pastebin/2018/07/11/nix-pinning.adoc
index 63b1ac9..63b1ac9 100644
--- a/src/content/pastebins/2018/07/11/nix-pinning.adoc
+++ b/src/content/en/pastebin/2018/07/11/nix-pinning.adoc
diff --git a/src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc b/src/content/en/pastebin/2018/07/13/guix-nixos-systemd.adoc
index fa4226a..fa4226a 100644
--- a/src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc
+++ b/src/content/en/pastebin/2018/07/13/guix-nixos-systemd.adoc
diff --git a/src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc b/src/content/en/pastebin/2018/07/13/guixbuilder-nixos.adoc
index 65dbcc7..65dbcc7 100644
--- a/src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc
+++ b/src/content/en/pastebin/2018/07/13/guixbuilder-nixos.adoc
diff --git a/src/content/pastebins/2018/07/13/guixbuilder.adoc b/src/content/en/pastebin/2018/07/13/guixbuilder.adoc
index 35057f9..35057f9 100644
--- a/src/content/pastebins/2018/07/13/guixbuilder.adoc
+++ b/src/content/en/pastebin/2018/07/13/guixbuilder.adoc
diff --git a/src/content/pastebins/2018/07/13/nix-strpad.adoc b/src/content/en/pastebin/2018/07/13/nix-strpad.adoc
index 71e8168..71e8168 100644
--- a/src/content/pastebins/2018/07/13/nix-strpad.adoc
+++ b/src/content/en/pastebin/2018/07/13/nix-strpad.adoc
diff --git a/src/content/pastebins/2018/07/25/nix-exps.adoc b/src/content/en/pastebin/2018/07/25/nix-exps.adoc
index 04cb7f4..04cb7f4 100644
--- a/src/content/pastebins/2018/07/25/nix-exps.adoc
+++ b/src/content/en/pastebin/2018/07/25/nix-exps.adoc
diff --git a/src/content/pastebins/2018/07/25/nix-showdrv.adoc b/src/content/en/pastebin/2018/07/25/nix-showdrv.adoc
index b62e526..b62e526 100644
--- a/src/content/pastebins/2018/07/25/nix-showdrv.adoc
+++ b/src/content/en/pastebin/2018/07/25/nix-showdrv.adoc
diff --git a/src/content/pastebins/2019/06/08/inconsistent-hash.adoc b/src/content/en/pastebin/2019/06/08/inconsistent-hash.adoc
index 8dc5794..8dc5794 100644
--- a/src/content/pastebins/2019/06/08/inconsistent-hash.adoc
+++ b/src/content/en/pastebin/2019/06/08/inconsistent-hash.adoc
diff --git a/src/content/pastebins/2019/12/29/raku-tuple-type.adoc b/src/content/en/pastebin/2019/12/29/raku-tuple-type.adoc
index 50dd841..50dd841 100644
--- a/src/content/pastebins/2019/12/29/raku-tuple-type.adoc
+++ b/src/content/en/pastebin/2019/12/29/raku-tuple-type.adoc
diff --git a/src/content/pastebins/2020/01/04/guix-import-failure.adoc b/src/content/en/pastebin/2020/01/04/guix-import-failure.adoc
index 5896645..5896645 100644
--- a/src/content/pastebins/2020/01/04/guix-import-failure.adoc
+++ b/src/content/en/pastebin/2020/01/04/guix-import-failure.adoc
diff --git a/src/content/pastebins/2020/02/14/guix-shebang.adoc b/src/content/en/pastebin/2020/02/14/guix-shebang.adoc
index d415d36..d415d36 100644
--- a/src/content/pastebins/2020/02/14/guix-shebang.adoc
+++ b/src/content/en/pastebin/2020/02/14/guix-shebang.adoc
diff --git a/src/content/pastebins/2020/11/27/guix-build-local.adoc b/src/content/en/pastebin/2020/11/27/guix-build-local.adoc
index 1a18d4b..1a18d4b 100644
--- a/src/content/pastebins/2020/11/27/guix-build-local.adoc
+++ b/src/content/en/pastebin/2020/11/27/guix-build-local.adoc
diff --git a/src/content/pastebins/2020/12/15/guix-pack-fail.adoc b/src/content/en/pastebin/2020/12/15/guix-pack-fail.adoc
index 3631fbc..3631fbc 100644
--- a/src/content/pastebins/2020/12/15/guix-pack-fail.adoc
+++ b/src/content/en/pastebin/2020/12/15/guix-pack-fail.adoc
diff --git a/src/content/pastebins/2021/04/03/naive-slugify-js.adoc b/src/content/en/pastebin/2021/04/03/naive-slugify-js.adoc
index 184ce97..184ce97 100644
--- a/src/content/pastebins/2021/04/03/naive-slugify-js.adoc
+++ b/src/content/en/pastebin/2021/04/03/naive-slugify-js.adoc
diff --git a/src/content/pastebins/2021/06/08/reading-session-pt1.adoc b/src/content/en/pastebin/2021/06/08/reading-session-pt1.adoc
index d9f1f91..d9f1f91 100644
--- a/src/content/pastebins/2021/06/08/reading-session-pt1.adoc
+++ b/src/content/en/pastebin/2021/06/08/reading-session-pt1.adoc
diff --git a/src/content/pastebins/2021/06/22/curl-wget.adoc b/src/content/en/pastebin/2021/06/22/curl-wget.adoc
index 97f55c7..97f55c7 100644
--- a/src/content/pastebins/2021/06/22/curl-wget.adoc
+++ b/src/content/en/pastebin/2021/06/22/curl-wget.adoc
diff --git a/src/content/pastebins/2021/08/11/h1-spacing.adoc b/src/content/en/pastebin/2021/08/11/h1-spacing.adoc
index 38dbb2e..38dbb2e 100644
--- a/src/content/pastebins/2021/08/11/h1-spacing.adoc
+++ b/src/content/en/pastebin/2021/08/11/h1-spacing.adoc
diff --git a/src/content/pastebins/2021/09/02/sicp-3-19.adoc b/src/content/en/pastebin/2021/09/02/sicp-3-19.adoc
index 166170f..166170f 100644
--- a/src/content/pastebins/2021/09/02/sicp-3-19.adoc
+++ b/src/content/en/pastebin/2021/09/02/sicp-3-19.adoc
diff --git a/src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc b/src/content/en/pastebin/2021/09/03/sicp-persistent-queue.adoc
index 2b4a8a2..2b4a8a2 100644
--- a/src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc
+++ b/src/content/en/pastebin/2021/09/03/sicp-persistent-queue.adoc
diff --git a/src/content/pastebins/2022/07/14/git-cleanup.adoc b/src/content/en/pastebin/2022/07/14/git-cleanup.adoc
index b223f86..b223f86 100644
--- a/src/content/pastebins/2022/07/14/git-cleanup.adoc
+++ b/src/content/en/pastebin/2022/07/14/git-cleanup.adoc
diff --git a/src/content/pastebins/2023/07/22/funcallable-amop.adoc b/src/content/en/pastebin/2023/07/22/funcallable-amop.adoc
index 47a8089..47a8089 100644
--- a/src/content/pastebins/2023/07/22/funcallable-amop.adoc
+++ b/src/content/en/pastebin/2023/07/22/funcallable-amop.adoc
diff --git a/src/content/pastebins/categories.adoc b/src/content/en/pastebin/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/pastebins/categories.adoc
+++ b/src/content/en/pastebin/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/pastebins/index.adoc b/src/content/en/pastebin/index.adoc
index 433a2c1..433a2c1 100644
--- a/src/content/pastebins/index.adoc
+++ b/src/content/en/pastebin/index.adoc
diff --git a/src/content/podcasts/2020/12/19/test-entry.adoc b/src/content/en/podcast/2020/12/19/test-entry.adoc
index 9e7eb00..9e7eb00 100644
--- a/src/content/podcasts/2020/12/19/test-entry.adoc
+++ b/src/content/en/podcast/2020/12/19/test-entry.adoc
diff --git a/src/content/podcasts/2020/12/19/test-entry.flac b/src/content/en/podcast/2020/12/19/test-entry.flac
index 786ab59..786ab59 100644
--- a/src/content/podcasts/2020/12/19/test-entry.flac
+++ b/src/content/en/podcast/2020/12/19/test-entry.flac
Binary files differ
diff --git a/src/content/en/podcast/2020/12/19/test-entry.ogg b/src/content/en/podcast/2020/12/19/test-entry.ogg
new file mode 100644
index 0000000..9bf5500
--- /dev/null
+++ b/src/content/en/podcast/2020/12/19/test-entry.ogg
Binary files differ
diff --git a/src/content/podcasts/categories.adoc b/src/content/en/podcast/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/podcasts/categories.adoc
+++ b/src/content/en/podcast/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/podcasts/index.adoc b/src/content/en/podcast/index.adoc
index 1f17da7..1f17da7 100644
--- a/src/content/podcasts/index.adoc
+++ b/src/content/en/podcast/index.adoc
diff --git a/src/content/screencasts/2021/02/07/autoqemu.adoc b/src/content/en/screencast/2021/02/07/autoqemu.adoc
index b20b092..b20b092 100644
--- a/src/content/screencasts/2021/02/07/autoqemu.adoc
+++ b/src/content/en/screencast/2021/02/07/autoqemu.adoc
diff --git a/src/content/screencasts/2021/02/07/autoqemu.tar.gz b/src/content/en/screencast/2021/02/07/autoqemu.tar.gz
index c2fa042..c2fa042 100644
--- a/src/content/screencasts/2021/02/07/autoqemu.tar.gz
+++ b/src/content/en/screencast/2021/02/07/autoqemu.tar.gz
Binary files differ
diff --git a/src/content/screencasts/2021/02/07/autoqemu.webm b/src/content/en/screencast/2021/02/07/autoqemu.webm
index f553efb..f553efb 100644
--- a/src/content/screencasts/2021/02/07/autoqemu.webm
+++ b/src/content/en/screencast/2021/02/07/autoqemu.webm
Binary files differ
diff --git a/src/content/screencasts/categories.adoc b/src/content/en/screencast/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/screencasts/categories.adoc
+++ b/src/content/en/screencast/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/screencasts/index.adoc b/src/content/en/screencast/index.adoc
index 083adac..083adac 100644
--- a/src/content/screencasts/index.adoc
+++ b/src/content/en/screencast/index.adoc
diff --git a/src/content/en/slide/2020/10/19/feature-flags.adoc b/src/content/en/slide/2020/10/19/feature-flags.adoc
new file mode 100644
index 0000000..553cf4c
--- /dev/null
+++ b/src/content/en/slide/2020/10/19/feature-flags.adoc
@@ -0,0 +1,230 @@
+---
+# Rollout, feature flag, experiment, operational toggle
+
+@Different use cases for backend, frontend and mobile
+
+---
+.
+.
+.
+# "Feature flags" tend to come up when talking about continuous deployment
+
+---
+.
+.
+.
+.
+@CI: continuous integration
+.
+@CD: continuous delivery
+.
+@CD: continuous deployment
+
+---
+## Types
+.
+.
+.
+1. rollout
+2. feature flag
+3. experiment
+4. operational toggle
+
+% {favicon.svg}
+---
+## Rollout
+
+# For *rolling out* a new version of software
+
+Short-lived using percentages
+
+% FIXME: links
+- a new deployment of kubernetes
+- new APK released to the Play Store
+
+---
+## Feature flag
+
+# For turning a feature *on* or *off*
+
+Medium-lived using allow list, A/B test, percentage, app version, etc.
+
+- :new-chargeback-flow
+- :new-debit-card-activation-screen
+
+---
+## Experiment
+
+# For analysing behaviour
+
+Medium-lived using allow list and A/B test
+
+- :debit-withdrawal-test
+
+---
+## Operational toggle
+
+# For disabling features in #crash-like situations
+
+Long-lived using percentage
+
+- :bank-barcode-payment
+- :savings-bank-barcode-query-provider
+
+---
+.
+.
+@We know know about the types
+# But they have different relevance for backend, frontend and mobile
+
+---
+## backend
+.
+.
+1. rollout: k8s blue/green, canary and ~common-rollout~ common-xp
+2. feature flag: ~common-rollout~ common-xp and datasets
+3. experiment: common-xp
+4. operational toggle: ~common-rollout~ common-xp
+
+---
+## frontend
+.
+.
+1. rollout: CDN and page refreshes
+2. feature flag: percentages and maybe IPs (no :customer/id on the website)
+3. experiment: via dynamic backend control
+4. operational toggle: via dynamic backend control
+
+---
+## backend
+.
+.
+1. rollout: app stores
+2. feature flag: via dynamic backend control
+3. experiment: via dynamic backend control
+4. operational toggle: via dynamic backend control
+
+---
+.
+.
+@Key differentiator is
+# how much *control* we have over the environment
+
+---
+## backend
+# full control
+% FIXME: emoji
+% 🎉
+
+---
+## frontend
+# partial control
+We choose when to make a new version available
+
+---
+## mobile
+# very limited control
+- app stores can restrict updates (worse for iOS)
+- customers still have to download new versions
+
+---
+# Costs
+- more complex code
+- compatibility with old app versions
+- nesting is exponential
+
+---
+# Benefits
+- dynamicity
+
+---
+## weighting costs × benefits
+# The less control we have, the more we value dynamicity
+
+---
+## weighting costs × benefits
+.
+.
+.
+- backend: sometimes worth the cost
+- frontend: almost always worth the cost
+- mobile: *always* worth the cost
+
+---
+.
+.
+.
+# Best practices
+
+---
+# dynamic content > feature flag
+Always true for mobile, almost always for frontend
+
+---
+# Use :include-list for named groups
+Always true for backend, frontend and mobile
+
+ {:rules
+ #{{:types :include-list
+ :content {:filename "debit-team-members.txt"}}}}
+
+---
+# Always use :app-version
+Only for mobile
+
+ {:rules
+ #{{:types :app-version
+ :content {:min-version #{{:platform :android
+ :code 1000000}
+ {:platform :ios
+ :code 2000000}}}}}}
+
+---
+# Extend ~common-rollout~ common-xp if required
+
+That's how :include-list, :app-version, etc. were born
+
+---
+# Beware of many nested feature flags
+True for backend, frontend and mobile
+
+---
+# Don't delete app-facing feature flags
+True for mobile
+
+---
+.
+.
+.
+# Include a feature flag on the whiteboarding phase
+
+---
+.
+.
+.
+# Include deleting/retiring the feature flag at the end
+
+---
+# Avoid renaming a feature flag
+Use :app-version with :min-version instead
+
+---
+.
+.
+.
+# And most importantly...
+
+---
+# *Always* rely on a feature flag on the app
+Never do a hotfix, avoid expedited releases at all costs
+
+---
+## References
+.
+% FIXME: links
+1. "Feature Toggles (aka Feature Flags)", by Pete Hodgson
+2. "Continuous integration vs. delivery vs. deployment", by Sten Pittet
+3. Accelerate, by N. Forsgren, J. Humble and G. Kim
+4. these slides: euandre.org/slide/
+5. prose version of this presentation
+6. view source
diff --git a/src/content/en/slide/2020/11/14/local-first-hype.adoc b/src/content/en/slide/2020/11/14/local-first-hype.adoc
new file mode 100644
index 0000000..fd83115
--- /dev/null
+++ b/src/content/en/slide/2020/11/14/local-first-hype.adoc
@@ -0,0 +1,204 @@
+# On "local-first"
+
+@Beyond the CRDT silver bullet
+
+---
+## Part 1
+# Exposition
+
+---
+## Target
+...
+- documents
+- files
+- personal data repositories
+..
+Not: banking services, e-commerce, social networking, ride-sharing, etc.
+
+---
+...
+# 7 ideals for local-first software
+
+---
+...
+# 1 - no spinners: your work at your fingertips
+
+---
+...
+# 2 - your work is not trapped on one device
+
+---
+...
+# 3 - the network is optional
+
+---
+...
+# 4 - seamless collaboration with your colleagues
+
+---
+...
+# 5 - the long now
+
+---
+...
+# 6 - security and privacy by default
+
+---
+...
+# 7 - you retain ultimate ownership and control
+
+---
+## Towards a better future
+....
+@ CRDTs (Conflict-free Replicated Data Types) as a Foundational Technology
+
+---
+## Use case
+.
+ # in node A and node B
+ s = "Hello, World"
+
+ # in node A
+ s = "Hello, Alice"
+
+ # in node B
+ s = "Hello, Bob"
+
+How to reconcile those?
+- Hello, ABloibce
+- Hello, AliceBob
+- Hello, BobAlice
+- Hello, Alice
+\...
+
+---
+# Existing CRDTs differ
+- performance
+- storage
+- compression
+- metadata overhead
+
+---
+...
+# Hint towards the "automerge" CRDT
+
+---
+......
+@@show comparison table, page 9
+
+---
+## Part 2
+# Critique
+
+---
+## Software license
+...
+@@"In our opinion, maintaining control and ownership of data does not mean that the software must necessarily be open source."
+
+---
+## Example 1 - intentional restriction
+.
+ #!/bin/sh
+ TODAY="$(date +%s)"
+ LICENSE_EXPIRATION="$(date -d 2020-10-27 +%s)"
+ if [ "$TODAY" -ge "$LICENSE_EXPIRATION" ]; then
+ echo 'License expired!'
+ exit 1
+ fi
+ echo $((2 + 2))
+.
+ # today
+ $ ./useful-adder.sh
+ 4
+
+ # tomorrow
+ $ ./useful-adder.sh
+ License expired!
+---
+## Example 2 - unintentional restriction
+.
+ # today
+ $ useful-program
+ # ... useful output ...
+
+ # tomorrow, with more data
+ $ useful-program
+ ERROR: Panic! Stack overflow!
+
+---
+..
+# local-first *requires* free software
+
+Otherwise "The Long Now" (ideal nº5) is lost
+
+---
+## Denial of existing solutions
+..
+@@"In principle it is possible to collaborate without a repository service, e.g. by sending patch files by email, but the majority of Git users rely on GitHub."
+.
+Solution: either GitHub+CRDTs or git send-email
+
+---
+## Plain-text formats
+.
+@@"Git is highly optimized for code and similar line-based text file"
+.
+It even pulls software to the plain text directtion, e.g.:
+- delivery-templates
+- common-core.protocols.config
+.
+Why not exploit that more?
+
+---
+## Ditching of web applications
+..
+@@"The architecture of web apps remains fundamentally server-centric
+.
+% FIXME: links
+Disagree. Contrast PouchDB with Android Instant Apps
+
+---
+## Costs are underrated
+.
+- storage
+- backups
+- maintenance
+.
+Example: blog vs vlog
+
+---
+## Real-time collaboration a bit overrated
+.
+It is only possible on the presence of reliable, medium-quality network connection
+..
+@@"X also works when inside an elevator, subway or plane!"
+
+---
+## On CRDTs and developer experience
+.
+@@"For an app developer, how does the use of a CRDT-based data layer compare to existing storage layers like a SQL database, a filesystem, or CoreData? Is a distributed system harder to write software for?
+.
+@YES.
+.
+% FIXME: link
+See "A Note on Distributed Computing"
+
+---
+## Conclusion
+.
+Why this is a "paper I love": it took offline-first and ran with it.
+.
+But a pinch of CRDT won't make the world local-first.
+.
+The tricky part is the end of the sentence: "in spite of the Cloud".
+
+---
+## References
+.
+% FIXME: links
+1. "Local-First Software: You Own Your Data, in spite of the Cloud", by M. Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan
+2. The Morning Paper article
+3. "A Note on Distributed Compiting", by J. Waldo, G. Wyant, A. Wollrath and S. Kendall
+4. these slides: euandre.org/slide/
+5. prose version of this presentation
+6. view source
diff --git a/src/content/tils/2020/08/12/filename-timestamp.adoc b/src/content/en/til/2020/08/12/filename-timestamp.adoc
index aa8d63b..aa8d63b 100644
--- a/src/content/tils/2020/08/12/filename-timestamp.adoc
+++ b/src/content/en/til/2020/08/12/filename-timestamp.adoc
diff --git a/src/content/tils/2020/08/13/code-jekyll.adoc b/src/content/en/til/2020/08/13/code-jekyll.adoc
index 6bd90b0..6bd90b0 100644
--- a/src/content/tils/2020/08/13/code-jekyll.adoc
+++ b/src/content/en/til/2020/08/13/code-jekyll.adoc
diff --git a/src/content/tils/2020/08/14/browse-git.adoc b/src/content/en/til/2020/08/14/browse-git.adoc
index 6b3ff6d..6b3ff6d 100644
--- a/src/content/tils/2020/08/14/browse-git.adoc
+++ b/src/content/en/til/2020/08/14/browse-git.adoc
diff --git a/src/content/tils/2020/08/16/git-search.adoc b/src/content/en/til/2020/08/16/git-search.adoc
index 4113f3f..4113f3f 100644
--- a/src/content/tils/2020/08/16/git-search.adoc
+++ b/src/content/en/til/2020/08/16/git-search.adoc
diff --git a/src/content/tils/2020/08/28/grep-online.adoc b/src/content/en/til/2020/08/28/grep-online.adoc
index 77363ab..77363ab 100644
--- a/src/content/tils/2020/08/28/grep-online.adoc
+++ b/src/content/en/til/2020/08/28/grep-online.adoc
diff --git a/src/content/tils/2020/09/04/cli-email-fun-profit.adoc b/src/content/en/til/2020/09/04/cli-email-fun-profit.adoc
index 1da1154..1da1154 100644
--- a/src/content/tils/2020/09/04/cli-email-fun-profit.adoc
+++ b/src/content/en/til/2020/09/04/cli-email-fun-profit.adoc
diff --git a/src/content/tils/2020/09/05/oldschool-pr.adoc b/src/content/en/til/2020/09/05/oldschool-pr.adoc
index 392ec67..392ec67 100644
--- a/src/content/tils/2020/09/05/oldschool-pr.adoc
+++ b/src/content/en/til/2020/09/05/oldschool-pr.adoc
diff --git a/src/content/tils/2020/10/11/search-git-history.adoc b/src/content/en/til/2020/10/11/search-git-history.adoc
index 696368c..696368c 100644
--- a/src/content/tils/2020/10/11/search-git-history.adoc
+++ b/src/content/en/til/2020/10/11/search-git-history.adoc
diff --git a/src/content/tils/2020/11/08/find-broken-symlink.adoc b/src/content/en/til/2020/11/08/find-broken-symlink.adoc
index 624d24a..624d24a 100644
--- a/src/content/tils/2020/11/08/find-broken-symlink.adoc
+++ b/src/content/en/til/2020/11/08/find-broken-symlink.adoc
diff --git a/src/content/tils/2020/11/12/diy-nix-bash-ci.adoc b/src/content/en/til/2020/11/12/diy-nix-bash-ci.adoc
index 97ace30..97ace30 100644
--- a/src/content/tils/2020/11/12/diy-nix-bash-ci.adoc
+++ b/src/content/en/til/2020/11/12/diy-nix-bash-ci.adoc
diff --git a/src/content/tils/2020/11/12/git-bisect-automation.adoc b/src/content/en/til/2020/11/12/git-bisect-automation.adoc
index dff8737..dff8737 100644
--- a/src/content/tils/2020/11/12/git-bisect-automation.adoc
+++ b/src/content/en/til/2020/11/12/git-bisect-automation.adoc
diff --git a/src/content/tils/2020/11/12/useful-bashvars.adoc b/src/content/en/til/2020/11/12/useful-bashvars.adoc
index fb148fb..fb148fb 100644
--- a/src/content/tils/2020/11/12/useful-bashvars.adoc
+++ b/src/content/en/til/2020/11/12/useful-bashvars.adoc
diff --git a/src/content/tils/2020/11/14/gpodder-media.adoc b/src/content/en/til/2020/11/14/gpodder-media.adoc
index f722f35..f722f35 100644
--- a/src/content/tils/2020/11/14/gpodder-media.adoc
+++ b/src/content/en/til/2020/11/14/gpodder-media.adoc
diff --git a/src/content/tils/2020/11/30/git-notes-ci.adoc b/src/content/en/til/2020/11/30/git-notes-ci.adoc
index 48a996b..48a996b 100644
--- a/src/content/tils/2020/11/30/git-notes-ci.adoc
+++ b/src/content/en/til/2020/11/30/git-notes-ci.adoc
diff --git a/src/content/tils/2020/12/15/shellcheck-repo.adoc b/src/content/en/til/2020/12/15/shellcheck-repo.adoc
index 387e793..387e793 100644
--- a/src/content/tils/2020/12/15/shellcheck-repo.adoc
+++ b/src/content/en/til/2020/12/15/shellcheck-repo.adoc
diff --git a/src/content/tils/2020/12/29/svg.adoc b/src/content/en/til/2020/12/29/svg.adoc
index 0e5dec3..e0e75a5 100644
--- a/src/content/tils/2020/12/29/svg.adoc
+++ b/src/content/en/til/2020/12/29/svg.adoc
@@ -1,7 +1,7 @@
= SVG favicon
:updatedat: 2021-01-12
-:favicon: link:../../../../img/favicon.svg
+:favicon: link:../../../../../img/favicon.svg
I've wanted to change this website's favicon from a plain `.ico` file to a
proper SVG. The problem I was trying to solve was to reuse the same image on
diff --git a/src/content/tils/2021/01/12/curl-awk-emails.adoc b/src/content/en/til/2021/01/12/curl-awk-emails.adoc
index d432da2..d432da2 100644
--- a/src/content/tils/2021/01/12/curl-awk-emails.adoc
+++ b/src/content/en/til/2021/01/12/curl-awk-emails.adoc
diff --git a/src/content/tils/2021/01/17/posix-shebang.adoc b/src/content/en/til/2021/01/17/posix-shebang.adoc
index 5cf0695..5cf0695 100644
--- a/src/content/tils/2021/01/17/posix-shebang.adoc
+++ b/src/content/en/til/2021/01/17/posix-shebang.adoc
diff --git a/src/content/tils/2021/04/24/cl-generic-precedence.adoc b/src/content/en/til/2021/04/24/cl-generic-precedence.adoc
index 541afb0..541afb0 100644
--- a/src/content/tils/2021/04/24/cl-generic-precedence.adoc
+++ b/src/content/en/til/2021/04/24/cl-generic-precedence.adoc
diff --git a/src/content/tils/2021/04/24/clojure-autocurry.adoc b/src/content/en/til/2021/04/24/clojure-autocurry.adoc
index a2c2835..a2c2835 100644
--- a/src/content/tils/2021/04/24/clojure-autocurry.adoc
+++ b/src/content/en/til/2021/04/24/clojure-autocurry.adoc
diff --git a/src/content/tils/2021/04/24/scm-nif.adoc b/src/content/en/til/2021/04/24/scm-nif.adoc
index 2ea8a6f..2ea8a6f 100644
--- a/src/content/tils/2021/04/24/scm-nif.adoc
+++ b/src/content/en/til/2021/04/24/scm-nif.adoc
diff --git a/src/content/tils/2021/07/23/git-tls-gpg.adoc b/src/content/en/til/2021/07/23/git-tls-gpg.adoc
index f198c2b..f198c2b 100644
--- a/src/content/tils/2021/07/23/git-tls-gpg.adoc
+++ b/src/content/en/til/2021/07/23/git-tls-gpg.adoc
diff --git a/src/content/tils/2021/08/11/js-bigint-reviver.adoc b/src/content/en/til/2021/08/11/js-bigint-reviver.adoc
index 98ee79b..98ee79b 100644
--- a/src/content/tils/2021/08/11/js-bigint-reviver.adoc
+++ b/src/content/en/til/2021/08/11/js-bigint-reviver.adoc
diff --git a/src/content/en/til/categories.adoc b/src/content/en/til/categories.adoc
new file mode 100644
index 0000000..feb64ff
--- /dev/null
+++ b/src/content/en/til/categories.adoc
@@ -0,0 +1,2 @@
+= Articles by category
+:type: categories
diff --git a/src/content/en/til/index.adoc b/src/content/en/til/index.adoc
new file mode 100644
index 0000000..7e85335
--- /dev/null
+++ b/src/content/en/til/index.adoc
@@ -0,0 +1,7 @@
+= Today I Learned
+
+:anna-e-so: https://til.flourishing.stream/
+
+**T**oday **I** **L**earned: small entries of useful knowledge.
+
+Shameless rip-off of {anna-e-so}[Anna e só].
diff --git a/src/content/favicon.png b/src/content/favicon.png
new file mode 100644
index 0000000..136d8cb
--- /dev/null
+++ b/src/content/favicon.png
Binary files differ
diff --git a/src/content/img/atom.svg b/src/content/img/atom.svg
new file mode 100644
index 0000000..23ab291
--- /dev/null
+++ b/src/content/img/atom.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="22" height="22" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+ <path
+ fill="#EA990E"
+ d="M576 1344q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 123q2 28-17 48-18 21-47 21h-135q-25 0-43-16.5t-20-41.5q-22-229-184.5-391.5t-391.5-184.5q-25-2-41.5-20t-16.5-43v-135q0-29 21-47 17-17 43-17h5q160 13 306 80.5t259 181.5q114 113 181.5 259t80.5 306zm512 2q2 27-18 47-18 20-46 20h-143q-26 0-44.5-17.5t-19.5-42.5q-12-215-101-408.5t-231.5-336-336-231.5-408.5-102q-25-1-42.5-19.5t-17.5-43.5v-143q0-28 20-46 18-18 44-18h3q262 13 501.5 120t425.5 294q187 186 294 425.5t120 501.5z" />
+</svg>
diff --git a/src/content/img/atom/dark.svg b/src/content/img/atom/dark.svg
deleted file mode 120000
index 4d0de78..0000000
--- a/src/content/img/atom/dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-light.svg \ No newline at end of file
diff --git a/src/content/img/atom/light.svg b/src/content/img/atom/light.svg
deleted file mode 100644
index 37bace2..0000000
--- a/src/content/img/atom/light.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg width="22" height="22" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
- <path d="M576 1344q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 123q2 28-17 48-18 21-47 21h-135q-25 0-43-16.5t-20-41.5q-22-229-184.5-391.5t-391.5-184.5q-25-2-41.5-20t-16.5-43v-135q0-29 21-47 17-17 43-17h5q160 13 306 80.5t259 181.5q114 113 181.5 259t80.5 306zm512 2q2 27-18 47-18 20-46 20h-143q-26 0-44.5-17.5t-19.5-42.5q-12-215-101-408.5t-231.5-336-336-231.5-408.5-102q-25-1-42.5-19.5t-17.5-43.5v-143q0-28 20-46 18-18 44-18h3q262 13 501.5 120t425.5 294q187 186 294 425.5t120 501.5z"
- fill="#EA990E" />
-</svg>
diff --git a/src/content/img/envelope/dark.svg b/src/content/img/envelope/dark.svg
index 4d0de78..f521a8f 120000..100644
--- a/src/content/img/envelope/dark.svg
+++ b/src/content/img/envelope/dark.svg
@@ -1 +1,6 @@
-light.svg \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="22" height="22" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+ <path
+ fill="white"
+ d="M1664 1504v-768q-32 36-69 66-268 206-426 338-51 43-83 67t-86.5 48.5-102.5 24.5h-2q-48 0-102.5-24.5t-86.5-48.5-83-67q-158-132-426-338-37-30-69-66v768q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm0-1051v-24.5l-.5-13-3-12.5-5.5-9-9-7.5-14-2.5h-1472q-13 0-22.5 9.5t-9.5 22.5q0 168 147 284 193 152 401 317 6 5 35 29.5t46 37.5 44.5 31.5 50.5 27.5 43 9h2q20 0 43-9t50.5-27.5 44.5-31.5 46-37.5 35-29.5q208-165 401-317 54-43 100.5-115.5t46.5-131.5zm128-37v1088q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1472q66 0 113 47t47 113z" />
+</svg>
diff --git a/src/content/img/envelope/light.svg b/src/content/img/envelope/light.svg
index c2251f4..12aba9f 100644
--- a/src/content/img/envelope/light.svg
+++ b/src/content/img/envelope/light.svg
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="22" height="22" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
- <path d="M1664 1504v-768q-32 36-69 66-268 206-426 338-51 43-83 67t-86.5 48.5-102.5 24.5h-2q-48 0-102.5-24.5t-86.5-48.5-83-67q-158-132-426-338-37-30-69-66v768q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm0-1051v-24.5l-.5-13-3-12.5-5.5-9-9-7.5-14-2.5h-1472q-13 0-22.5 9.5t-9.5 22.5q0 168 147 284 193 152 401 317 6 5 35 29.5t46 37.5 44.5 31.5 50.5 27.5 43 9h2q20 0 43-9t50.5-27.5 44.5-31.5 46-37.5 35-29.5q208-165 401-317 54-43 100.5-115.5t46.5-131.5zm128-37v1088q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1472q66 0 113 47t47 113z" />
+ <path
+ fill="black"
+ d="M1664 1504v-768q-32 36-69 66-268 206-426 338-51 43-83 67t-86.5 48.5-102.5 24.5h-2q-48 0-102.5-24.5t-86.5-48.5-83-67q-158-132-426-338-37-30-69-66v768q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm0-1051v-24.5l-.5-13-3-12.5-5.5-9-9-7.5-14-2.5h-1472q-13 0-22.5 9.5t-9.5 22.5q0 168 147 284 193 152 401 317 6 5 35 29.5t46 37.5 44.5 31.5 50.5 27.5 43 9h2q20 0 43-9t50.5-27.5 44.5-31.5 46-37.5 35-29.5q208-165 401-317 54-43 100.5-115.5t46.5-131.5zm128-37v1088q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1472q66 0 113 47t47 113z" />
</svg>
diff --git a/src/content/img/link/dark.svg b/src/content/img/link/dark.svg
index 4d0de78..fd6ca35 120000..100644
--- a/src/content/img/link/dark.svg
+++ b/src/content/img/link/dark.svg
@@ -1 +1,7 @@
-light.svg \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="22" height="22" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+ <path
+ fill="white"
+ fill-rule="evenodd"
+ d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z" />
+</svg>
diff --git a/src/content/img/link/light.svg b/src/content/img/link/light.svg
index e5c7050..fd9033f 100644
--- a/src/content/img/link/light.svg
+++ b/src/content/img/link/light.svg
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="22" height="22" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
- <path fill-rule="evenodd"
- d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z" />
+ <path
+ fill="black"
+ fill-rule="evenodd"
+ d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z" />
</svg>
diff --git a/src/content/img/lock/dark.svg b/src/content/img/lock/dark.svg
index 4d0de78..98a36bc 120000..100644
--- a/src/content/img/lock/dark.svg
+++ b/src/content/img/lock/dark.svg
@@ -1 +1,6 @@
-light.svg \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="22" height="22" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+ <path
+ fill="white"
+ d="M640 768h512v-192q0-106-75-181t-181-75-181 75-75 181v192zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z" />
+</svg>
diff --git a/src/content/img/lock/light.svg b/src/content/img/lock/light.svg
index 1a4a18e..d449467 100644
--- a/src/content/img/lock/light.svg
+++ b/src/content/img/lock/light.svg
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="22" height="22" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
- <path d="M640 768h512v-192q0-106-75-181t-181-75-181 75-75 181v192zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z" />
+ <path
+ fill="black"
+ d="M640 768h512v-192q0-106-75-181t-181-75-181 75-75 181v192zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z" />
</svg>
diff --git a/src/content/img/logo/dark.svg b/src/content/img/logo/dark.svg
index 4d0de78..96e0f87 120000..100644
--- a/src/content/img/logo/dark.svg
+++ b/src/content/img/logo/dark.svg
@@ -1 +1,62 @@
-light.svg \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
+ <path fill="white" d="M 0 8 L 1 8 L 1 9 L 0 9 L 0 8 Z" />
+ <path fill="white" d="M 0 13 L 1 13 L 1 14 L 0 14 L 0 13 Z" />
+ <path fill="white" d="M 1 8 L 2 8 L 2 9 L 1 9 L 1 8 Z" />
+ <path fill="white" d="M 1 13 L 2 13 L 2 14 L 1 14 L 1 13 Z" />
+ <path fill="white" d="M 2 8 L 3 8 L 3 9 L 2 9 L 2 8 Z" />
+ <path fill="white" d="M 2 13 L 3 13 L 3 14 L 2 14 L 2 13 Z" />
+ <path fill="white" d="M 3 8 L 4 8 L 4 9 L 3 9 L 3 8 Z" />
+ <path fill="white" d="M 3 13 L 4 13 L 4 14 L 3 14 L 3 13 Z" />
+ <path fill="white" d="M 4 7 L 5 7 L 5 8 L 4 8 L 4 7 Z" />
+ <path fill="white" d="M 4 8 L 5 8 L 5 9 L 4 9 L 4 8 Z" />
+ <path fill="white" d="M 4 13 L 5 13 L 5 14 L 4 14 L 4 13 Z" />
+ <path fill="white" d="M 5 6 L 6 6 L 6 7 L 5 7 L 5 6 Z" />
+ <path fill="white" d="M 5 7 L 6 7 L 6 8 L 5 8 L 5 7 Z" />
+ <path fill="white" d="M 5 13 L 6 13 L 6 14 L 5 14 L 5 13 Z" />
+ <path fill="white" d="M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 Z" />
+ <path fill="white" d="M 6 6 L 7 6 L 7 7 L 6 7 L 6 6 Z" />
+ <path fill="white" d="M 6 14 L 7 14 L 7 15 L 6 15 L 6 14 Z" />
+ <path fill="white" d="M 7 1 L 8 1 L 8 2 L 7 2 L 7 1 Z" />
+ <path fill="white" d="M 7 14 L 8 14 L 8 15 L 7 15 L 7 14 Z" />
+ <path fill="white" d="M 7 15 L 8 15 L 8 16 L 7 16 L 7 15 Z" />
+ <path fill="white" d="M 7 2 L 8 2 L 8 3 L 7 3 L 7 2 Z" />
+ <path fill="white" d="M 7 3 L 8 3 L 8 4 L 7 4 L 7 3 Z" />
+ <path fill="white" d="M 7 4 L 8 4 L 8 5 L 7 5 L 7 4 Z" />
+ <path fill="white" d="M 7 5 L 8 5 L 8 6 L 7 6 L 7 5 Z" />
+ <path fill="white" d="M 8 1 L 9 1 L 9 2 L 8 2 L 8 1 Z" />
+ <path fill="white" d="M 8 15 L 9 15 L 9 16 L 8 16 L 8 15 Z" />
+ <path fill="white" d="M 9 1 L 10 1 L 10 2 L 9 2 L 9 1 Z" />
+ <path fill="white" d="M 9 2 L 10 2 L 10 3 L 9 3 L 9 2 Z" />
+ <path fill="white" d="M 9 6 L 10 6 L 10 7 L 9 7 L 9 6 Z" />
+ <path fill="white" d="M 9 15 L 10 15 L 10 16 L 9 16 L 9 15 Z" />
+ <path fill="white" d="M 10 2 L 11 2 L 11 3 L 10 3 L 10 2 Z" />
+ <path fill="white" d="M 10 3 L 11 3 L 11 4 L 10 4 L 10 3 Z" />
+ <path fill="white" d="M 10 4 L 11 4 L 11 5 L 10 5 L 10 4 Z" />
+ <path fill="white" d="M 10 5 L 11 5 L 11 6 L 10 6 L 10 5 Z" />
+ <path fill="white" d="M 10 6 L 11 6 L 11 7 L 10 7 L 10 6 Z" />
+ <path fill="white" d="M 11 6 L 12 6 L 12 7 L 11 7 L 11 6 Z" />
+ <path fill="white" d="M 11 8 L 12 8 L 12 9 L 11 9 L 11 8 Z" />
+ <path fill="white" d="M 10 15 L 11 15 L 11 16 L 10 16 L 10 15 Z" />
+ <path fill="white" d="M 11 10 L 12 10 L 12 11 L 11 11 L 11 10 Z" />
+ <path fill="white" d="M 11 12 L 12 12 L 12 13 L 11 13 L 11 12 Z" />
+ <path fill="white" d="M 11 14 L 12 14 L 12 15 L 11 15 L 11 14 Z" />
+ <path fill="white" d="M 11 15 L 12 15 L 12 16 L 11 16 L 11 15 Z" />
+ <path fill="white" d="M 12 6 L 13 6 L 13 7 L 12 7 L 12 6 Z" />
+ <path fill="white" d="M 12 8 L 13 8 L 13 9 L 12 9 L 12 8 Z" />
+ <path fill="white" d="M 12 10 L 13 10 L 13 11 L 12 11 L 12 10 Z" />
+ <path fill="white" d="M 12 12 L 13 12 L 13 13 L 12 13 L 12 12 Z" />
+ <path fill="white" d="M 12 14 L 13 14 L 13 15 L 12 15 L 12 14 Z" />
+ <path fill="white" d="M 13 6 L 14 6 L 14 7 L 13 7 L 13 6 Z" />
+ <path fill="white" d="M 13 8 L 14 8 L 14 9 L 13 9 L 13 8 Z" />
+ <path fill="white" d="M 13 10 L 14 10 L 14 11 L 13 11 L 13 10 Z" />
+ <path fill="white" d="M 13 12 L 14 12 L 14 13 L 13 13 L 13 12 Z" />
+ <path fill="white" d="M 13 13 L 14 13 L 14 14 L 13 14 L 13 13 Z" />
+ <path fill="white" d="M 13 14 L 14 14 L 14 15 L 13 15 L 13 14 Z" />
+ <path fill="white" d="M 14 7 L 15 7 L 15 8 L 14 8 L 14 7 Z" />
+ <path fill="white" d="M 14 8 L 15 8 L 15 9 L 14 9 L 14 8 Z" />
+ <path fill="white" d="M 14 9 L 15 9 L 15 10 L 14 10 L 14 9 Z" />
+ <path fill="white" d="M 14 10 L 15 10 L 15 11 L 14 11 L 14 10 Z" />
+ <path fill="white" d="M 14 11 L 15 11 L 15 12 L 14 12 L 14 11 Z" />
+ <path fill="white" d="M 14 12 L 15 12 L 15 13 L 14 13 L 14 12 Z" />
+</svg>
diff --git a/src/content/img/logo/light.svg b/src/content/img/logo/light.svg
index ce566b2..ab6000b 100644
--- a/src/content/img/logo/light.svg
+++ b/src/content/img/logo/light.svg
@@ -1,62 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
- <path d="M 0 8 L 1 8 L 1 9 L 0 9 L 0 8 Z" />
- <path d="M 0 13 L 1 13 L 1 14 L 0 14 L 0 13 Z" />
- <path d="M 1 8 L 2 8 L 2 9 L 1 9 L 1 8 Z" />
- <path d="M 1 13 L 2 13 L 2 14 L 1 14 L 1 13 Z" />
- <path d="M 2 8 L 3 8 L 3 9 L 2 9 L 2 8 Z" />
- <path d="M 2 13 L 3 13 L 3 14 L 2 14 L 2 13 Z" />
- <path d="M 3 8 L 4 8 L 4 9 L 3 9 L 3 8 Z" />
- <path d="M 3 13 L 4 13 L 4 14 L 3 14 L 3 13 Z" />
- <path d="M 4 7 L 5 7 L 5 8 L 4 8 L 4 7 Z" />
- <path d="M 4 8 L 5 8 L 5 9 L 4 9 L 4 8 Z" />
- <path d="M 4 13 L 5 13 L 5 14 L 4 14 L 4 13 Z" />
- <path d="M 5 6 L 6 6 L 6 7 L 5 7 L 5 6 Z" />
- <path d="M 5 7 L 6 7 L 6 8 L 5 8 L 5 7 Z" />
- <path d="M 5 13 L 6 13 L 6 14 L 5 14 L 5 13 Z" />
- <path d="M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 Z" />
- <path d="M 6 6 L 7 6 L 7 7 L 6 7 L 6 6 Z" />
- <path d="M 6 14 L 7 14 L 7 15 L 6 15 L 6 14 Z" />
- <path d="M 7 1 L 8 1 L 8 2 L 7 2 L 7 1 Z" />
- <path d="M 7 14 L 8 14 L 8 15 L 7 15 L 7 14 Z" />
- <path d="M 7 15 L 8 15 L 8 16 L 7 16 L 7 15 Z" />
- <path d="M 7 2 L 8 2 L 8 3 L 7 3 L 7 2 Z" />
- <path d="M 7 3 L 8 3 L 8 4 L 7 4 L 7 3 Z" />
- <path d="M 7 4 L 8 4 L 8 5 L 7 5 L 7 4 Z" />
- <path d="M 7 5 L 8 5 L 8 6 L 7 6 L 7 5 Z" />
- <path d="M 8 1 L 9 1 L 9 2 L 8 2 L 8 1 Z" />
- <path d="M 8 15 L 9 15 L 9 16 L 8 16 L 8 15 Z" />
- <path d="M 9 1 L 10 1 L 10 2 L 9 2 L 9 1 Z" />
- <path d="M 9 2 L 10 2 L 10 3 L 9 3 L 9 2 Z" />
- <path d="M 9 6 L 10 6 L 10 7 L 9 7 L 9 6 Z" />
- <path d="M 9 15 L 10 15 L 10 16 L 9 16 L 9 15 Z" />
- <path d="M 10 2 L 11 2 L 11 3 L 10 3 L 10 2 Z" />
- <path d="M 10 3 L 11 3 L 11 4 L 10 4 L 10 3 Z" />
- <path d="M 10 4 L 11 4 L 11 5 L 10 5 L 10 4 Z" />
- <path d="M 10 5 L 11 5 L 11 6 L 10 6 L 10 5 Z" />
- <path d="M 10 6 L 11 6 L 11 7 L 10 7 L 10 6 Z" />
- <path d="M 11 6 L 12 6 L 12 7 L 11 7 L 11 6 Z" />
- <path d="M 11 8 L 12 8 L 12 9 L 11 9 L 11 8 Z" />
- <path d="M 10 15 L 11 15 L 11 16 L 10 16 L 10 15 Z" />
- <path d="M 11 10 L 12 10 L 12 11 L 11 11 L 11 10 Z" />
- <path d="M 11 12 L 12 12 L 12 13 L 11 13 L 11 12 Z" />
- <path d="M 11 14 L 12 14 L 12 15 L 11 15 L 11 14 Z" />
- <path d="M 11 15 L 12 15 L 12 16 L 11 16 L 11 15 Z" />
- <path d="M 12 6 L 13 6 L 13 7 L 12 7 L 12 6 Z" />
- <path d="M 12 8 L 13 8 L 13 9 L 12 9 L 12 8 Z" />
- <path d="M 12 10 L 13 10 L 13 11 L 12 11 L 12 10 Z" />
- <path d="M 12 12 L 13 12 L 13 13 L 12 13 L 12 12 Z" />
- <path d="M 12 14 L 13 14 L 13 15 L 12 15 L 12 14 Z" />
- <path d="M 13 6 L 14 6 L 14 7 L 13 7 L 13 6 Z" />
- <path d="M 13 8 L 14 8 L 14 9 L 13 9 L 13 8 Z" />
- <path d="M 13 10 L 14 10 L 14 11 L 13 11 L 13 10 Z" />
- <path d="M 13 12 L 14 12 L 14 13 L 13 13 L 13 12 Z" />
- <path d="M 13 13 L 14 13 L 14 14 L 13 14 L 13 13 Z" />
- <path d="M 13 14 L 14 14 L 14 15 L 13 15 L 13 14 Z" />
- <path d="M 14 7 L 15 7 L 15 8 L 14 8 L 14 7 Z" />
- <path d="M 14 8 L 15 8 L 15 9 L 14 9 L 14 8 Z" />
- <path d="M 14 9 L 15 9 L 15 10 L 14 10 L 14 9 Z" />
- <path d="M 14 10 L 15 10 L 15 11 L 14 11 L 14 10 Z" />
- <path d="M 14 11 L 15 11 L 15 12 L 14 12 L 14 11 Z" />
- <path d="M 14 12 L 15 12 L 15 13 L 14 13 L 14 12 Z" />
+ <path fill="black" d="M 0 8 L 1 8 L 1 9 L 0 9 L 0 8 Z" />
+ <path fill="black" d="M 0 13 L 1 13 L 1 14 L 0 14 L 0 13 Z" />
+ <path fill="black" d="M 1 8 L 2 8 L 2 9 L 1 9 L 1 8 Z" />
+ <path fill="black" d="M 1 13 L 2 13 L 2 14 L 1 14 L 1 13 Z" />
+ <path fill="black" d="M 2 8 L 3 8 L 3 9 L 2 9 L 2 8 Z" />
+ <path fill="black" d="M 2 13 L 3 13 L 3 14 L 2 14 L 2 13 Z" />
+ <path fill="black" d="M 3 8 L 4 8 L 4 9 L 3 9 L 3 8 Z" />
+ <path fill="black" d="M 3 13 L 4 13 L 4 14 L 3 14 L 3 13 Z" />
+ <path fill="black" d="M 4 7 L 5 7 L 5 8 L 4 8 L 4 7 Z" />
+ <path fill="black" d="M 4 8 L 5 8 L 5 9 L 4 9 L 4 8 Z" />
+ <path fill="black" d="M 4 13 L 5 13 L 5 14 L 4 14 L 4 13 Z" />
+ <path fill="black" d="M 5 6 L 6 6 L 6 7 L 5 7 L 5 6 Z" />
+ <path fill="black" d="M 5 7 L 6 7 L 6 8 L 5 8 L 5 7 Z" />
+ <path fill="black" d="M 5 13 L 6 13 L 6 14 L 5 14 L 5 13 Z" />
+ <path fill="black" d="M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 Z" />
+ <path fill="black" d="M 6 6 L 7 6 L 7 7 L 6 7 L 6 6 Z" />
+ <path fill="black" d="M 6 14 L 7 14 L 7 15 L 6 15 L 6 14 Z" />
+ <path fill="black" d="M 7 1 L 8 1 L 8 2 L 7 2 L 7 1 Z" />
+ <path fill="black" d="M 7 14 L 8 14 L 8 15 L 7 15 L 7 14 Z" />
+ <path fill="black" d="M 7 15 L 8 15 L 8 16 L 7 16 L 7 15 Z" />
+ <path fill="black" d="M 7 2 L 8 2 L 8 3 L 7 3 L 7 2 Z" />
+ <path fill="black" d="M 7 3 L 8 3 L 8 4 L 7 4 L 7 3 Z" />
+ <path fill="black" d="M 7 4 L 8 4 L 8 5 L 7 5 L 7 4 Z" />
+ <path fill="black" d="M 7 5 L 8 5 L 8 6 L 7 6 L 7 5 Z" />
+ <path fill="black" d="M 8 1 L 9 1 L 9 2 L 8 2 L 8 1 Z" />
+ <path fill="black" d="M 8 15 L 9 15 L 9 16 L 8 16 L 8 15 Z" />
+ <path fill="black" d="M 9 1 L 10 1 L 10 2 L 9 2 L 9 1 Z" />
+ <path fill="black" d="M 9 2 L 10 2 L 10 3 L 9 3 L 9 2 Z" />
+ <path fill="black" d="M 9 6 L 10 6 L 10 7 L 9 7 L 9 6 Z" />
+ <path fill="black" d="M 9 15 L 10 15 L 10 16 L 9 16 L 9 15 Z" />
+ <path fill="black" d="M 10 2 L 11 2 L 11 3 L 10 3 L 10 2 Z" />
+ <path fill="black" d="M 10 3 L 11 3 L 11 4 L 10 4 L 10 3 Z" />
+ <path fill="black" d="M 10 4 L 11 4 L 11 5 L 10 5 L 10 4 Z" />
+ <path fill="black" d="M 10 5 L 11 5 L 11 6 L 10 6 L 10 5 Z" />
+ <path fill="black" d="M 10 6 L 11 6 L 11 7 L 10 7 L 10 6 Z" />
+ <path fill="black" d="M 11 6 L 12 6 L 12 7 L 11 7 L 11 6 Z" />
+ <path fill="black" d="M 11 8 L 12 8 L 12 9 L 11 9 L 11 8 Z" />
+ <path fill="black" d="M 10 15 L 11 15 L 11 16 L 10 16 L 10 15 Z" />
+ <path fill="black" d="M 11 10 L 12 10 L 12 11 L 11 11 L 11 10 Z" />
+ <path fill="black" d="M 11 12 L 12 12 L 12 13 L 11 13 L 11 12 Z" />
+ <path fill="black" d="M 11 14 L 12 14 L 12 15 L 11 15 L 11 14 Z" />
+ <path fill="black" d="M 11 15 L 12 15 L 12 16 L 11 16 L 11 15 Z" />
+ <path fill="black" d="M 12 6 L 13 6 L 13 7 L 12 7 L 12 6 Z" />
+ <path fill="black" d="M 12 8 L 13 8 L 13 9 L 12 9 L 12 8 Z" />
+ <path fill="black" d="M 12 10 L 13 10 L 13 11 L 12 11 L 12 10 Z" />
+ <path fill="black" d="M 12 12 L 13 12 L 13 13 L 12 13 L 12 12 Z" />
+ <path fill="black" d="M 12 14 L 13 14 L 13 15 L 12 15 L 12 14 Z" />
+ <path fill="black" d="M 13 6 L 14 6 L 14 7 L 13 7 L 13 6 Z" />
+ <path fill="black" d="M 13 8 L 14 8 L 14 9 L 13 9 L 13 8 Z" />
+ <path fill="black" d="M 13 10 L 14 10 L 14 11 L 13 11 L 13 10 Z" />
+ <path fill="black" d="M 13 12 L 14 12 L 14 13 L 13 13 L 13 12 Z" />
+ <path fill="black" d="M 13 13 L 14 13 L 14 14 L 13 14 L 13 13 Z" />
+ <path fill="black" d="M 13 14 L 14 14 L 14 15 L 13 15 L 13 14 Z" />
+ <path fill="black" d="M 14 7 L 15 7 L 15 8 L 14 8 L 14 7 Z" />
+ <path fill="black" d="M 14 8 L 15 8 L 15 9 L 14 9 L 14 8 Z" />
+ <path fill="black" d="M 14 9 L 15 9 L 15 10 L 14 10 L 14 9 Z" />
+ <path fill="black" d="M 14 10 L 15 10 L 15 11 L 14 11 L 14 10 Z" />
+ <path fill="black" d="M 14 11 L 15 11 L 15 12 L 14 12 L 14 11 Z" />
+ <path fill="black" d="M 14 12 L 15 12 L 15 13 L 14 13 L 14 12 Z" />
</svg>
diff --git a/src/content/pt/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md b/src/content/pt/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md
deleted file mode 100644
index 2e7fc32..0000000
--- a/src/content/pt/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-
-title: Nome de arquivo com timestamp simplificado
-
-date: 2020-08-12
-
-updated_at: 2020-11-04
-
-layout: post
-
-lang: pt
-
-ref: simple-filename-timestamp
-
-eu_categories: shell
-
----
-
-Quando vou escrever um post no Jekyll ou criar um arquivo de log com a data no
-nome, eu normalmente engasgo para achar um jeito direto de fazer isso. Há uma
-solução simples: `date -I`.
-
-```shell
-./meu-programa.sh > meu-programa.$(date -I).log
-cp template-de-post.md _posts/$(date -I)-slug-do-post.md
-```
-
-Usar essa ferramenta padrão do GNU/Linux permite que você simplesmente escreva
-`touch $(date -I).md` para criar um arquivo `2020-08-12.md`.
-
-Eu sempre tinha que parar para reler o `man date` ou buscar na internet de novo
-e de novo como fazer isso, e depois de sempre chegar no mesmo resultado ficou
-claro para mim que `date -I` quanto `date -Is` (`s` de segundos) são as
-respostas que eu estou procurando 95% do tempo:
-
-```shell
-# dentro do meu-programa.sh
-echo "Programa começou em $(date -Is)"
-# saída é:
-# Programa começou em 2020-08-12T09:15:16-03:00
-```
-
-Ambos os formatos de data são hierárquicos, com intervalos de tempo maior à
-esquerda. Isso significa que você pode facilmente ordená-los (e até usar TAB
-para completar) sem esforço ou ferramenta extra.
diff --git a/src/content/pt/hea/2020/08/12/arquivo-datado.adoc b/src/content/pt/hea/2020/08/12/arquivo-datado.adoc
new file mode 100644
index 0000000..42842ce
--- /dev/null
+++ b/src/content/pt/hea/2020/08/12/arquivo-datado.adoc
@@ -0,0 +1,29 @@
+= Nome de arquivo com dia e hora de forma simplificada
+:updatedat: 2025-04-30
+:categories: shell
+
+Quando vou escrever um artigo no Jekyll ou criar um arquivo de log com a data no nome, eu normalmente engasgo para achar um jeito direto de fazer isso. Há uma solução simples: `date -I`.
+
+[source, sh]
+----
+./meu-programa.sh > meu-programa.$(date -I).log
+cp template-de-artigo.md _posts/$(date -I)-slug-do-artigo.md
+----
+
+Usar essa ferramenta padrão do GNU/Linux permite que você simplesmente escreva `touch $(date -I).md` para criar um arquivo `2020-08-12.md`.
+
+Eu sempre tinha que para para reler o `man date` ou buscar na internet de novo e de novo como fazer isso, e depois de sempre chegar no mesmo resultado ficou claro para mim que tanto `date -I` quanto `date -Is` (`s` de segundos) são as respostas que eu estou procurando 95% do tempo:
+
+[source, sh]
+----
+# dentro do meu programa.sh
+echo "Programa começou em $(date -Is)"
+# saída é:
+# Programa começou em 2020-08-12T09:15:16-03:00
+----
+
+Ambos os formatos de data são hierárquicos, com intervalos de tempo maior à esquerda. Isso significa que você pode facilmente ordená-los (e até usar TAB para completar) sem esforço ou ferramenta extra.
+
+
+
+// Generated from po4a(1).
diff --git a/src/content/pt/hea/categorias.adoc b/src/content/pt/hea/categorias.adoc
new file mode 100644
index 0000000..19e7cb7
--- /dev/null
+++ b/src/content/pt/hea/categorias.adoc
@@ -0,0 +1,6 @@
+= Artigos por categoria
+:type: categories
+
+
+
+// Generated from po4a(1).
diff --git a/src/content/pt/hea/index.adoc b/src/content/pt/hea/index.adoc
new file mode 100644
index 0000000..77a035c
--- /dev/null
+++ b/src/content/pt/hea/index.adoc
@@ -0,0 +1,11 @@
+= Hoje Eu Aprendi
+
+:anna-e-so: https://til.flourishing.stream/
+
+**H**oje **E**u **A**prendi (do inglês, _**T**oday **I** **L**earned_): pequenas postagens de conhecimentos úteis.
+
+Cópia descarada da {anna-e-so}[Anna e só].
+
+
+
+// Generated from po4a(1).
diff --git a/src/content/pt/sobre.adoc b/src/content/pt/sobre.adoc
new file mode 100644
index 0000000..2d7ad20
--- /dev/null
+++ b/src/content/pt/sobre.adoc
@@ -0,0 +1,12 @@
+= Sobre
+
+:mailto: mailto:~euandreh/public-inbox@lists.sr.ht
+:archive: https://lists.sr.ht/~euandreh/public-inbox
+
+Oi, eu sou EuAndreh. Eu escrevo software e, ocasionalmente, música. Você encontra meu dados para entrar em contato no rodapé desta página, ou pode mandar também uma mensagem para minha {mailto}[caixa de entrada pública] ({archive}[arquivo]).
+
+Esse é o meu site pessoal onde eu escrevo artigos, publico software e outros trabalhos relacionados.
+
+
+
+// Generated from po4a(1).
diff --git a/src/content/public.asc b/src/content/public.asc
deleted file mode 100644
index 6559b02..0000000
--- a/src/content/public.asc
+++ /dev/null
@@ -1,86 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-mQINBFjVvh4BEADIlHUiO6IfkhcNm3J7ilXERgimvKuFNyLIUPZlDcESC1ORrv4y
-9slMDA5uojXctuLRC7nNdynLP+eFFfVUQ+hUXcV24AzyOE0CYo5c4PQA5TLe2AUC
-E9YqqfQF4XuNddY+UpcG47MuVDR+6SHkFkF29ATzpmShJj41lc7a9CdRib+62Wpe
-h7WJOFj/YoxMCBBzic4tiFNgoYobu+lLxyA4T2kCmxEaiZzc6eXBDDgJ0STL4+S8
-avpglaQ+mb5gHbH0yOtuwDG3sWyHKf7LSRVtzWvOqaGmRUmmDsSPjb5vQqvT8EMq
-UfqFFZhScLalthF3PhG0SLXPvoCoRm2aLkN+O3sv057RqaN8E39223mmz6EMXmLk
-H/U5qk2SUl3dx86dIQcB+2WUVu5zuFyfR1g6tD+DcqzxGc9XB7Gz/0TTDf3OimHb
-rp1x5i/04198ocRZT3MzXx8H25tLMS/rHmE87YdgPhMTWheSUevyhoGNHfAOcDwX
-P2oGzELXbLqHxtjENMEw2E996KrSmpcz7WOqIl3PHS1J6eRZoYQesXE+SZTeIiYb
-wD0kkZGYhBZbtLC4VWIuU2T3AL/2hF6aUh1tj1B6vcV0i3HpIHNbvPAF/I0NUhhc
-Gxwwi+ggG/MBHBbxkq7LvG5DfDbav0ZoZaov5dyhtX0CBWjVYATvjRfeAwARAQAB
-tBlFdUFuZHJlaCA8ZXVAZXVhbmRyZS5vcmc+iQI5BBMBCAAjBQJY1b4eAhsDBwsJ
-CAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQgfkOw801YGCWzg//QtDpwgbDY9uC
-Y9a/RgUsbqGAYzSInsbyDCXrAAhWGzkDMLPeFp03Sw9QyCDe0wWu8L2H4hV/FN58
-+4G6353ISwkqsf9R+P9lQs/5dwG7lp5/Gez8bZK3y7zFrdtVwcOCb4De+9fhPsgP
-9pRU8dHpLNo8Ui9IzbiYla7aGxXQdkXU2cvOuEoiuFgvcWU1KWNOWrjImATcC8EF
-8VaEaZYGRXz8lML8KgsAUxrjFkk6tqxrMlOLTjY0BuzcYZpt5XLZ2NuSIDYBoSib
-uBQ1H7DLGa+r0hnNjVEBmMOvFA1hbWa33h1AyYjYhoeVlBYpoHuDosEFqkwZ+otz
-zvImaRAOOFX1IehifTGEFie3imuOHdVuRjXb8SGu8Cgeby0T096A/vf+L1S35nc2
-mdRCUE/SIURW6hfH7uT6KqpokU86vozKmNzIcV3zhAXJ9UYwQqZgg2H3DOcTtZyE
-jVBl2glspoclsfR20T+g+qPqNDAgoDbC71fEAbUTACQau162utpHiabog7e7vyhI
-go5xdjxA8xb3Jtn39pYzbg75ArZqPbxHNZ38m00EBtC5EkD4DFh0cpQ2peuZIh1k
-c5bragCt8o6cV9t4jaq+TtVv4PrFEPqEd+w1FqqwabBq3xSsIgKg2X5rXQkktymB
-un+oN41wofuTZIoGNt8nnGb+skFBxgyJAlYEEwEKAEACGwMHCwkIBwMCAQYVCAIJ
-CgsEFgIDAQIeAQIXgBYhBFva6biy9sa8uw1s5YH5DsPNNWBgBQJmm7wJBQkRiGTr
-AAoJEIH5DsPNNWBgkxoQAJToyFUvioGD/91ztneUBOD2LOkQaIH4ZUTyIEjxpiep
-ry7QIC33wc2OLJo8QKfPZNaZlvy0EcuzSNZz2Za0NUg5y/lzDOCyjrRw7/szHcPX
-saUVHcjwYjQV/yiB1GJcuHefrEwXmgjQbkGmNZw8t7DuEm7qMrAdbAg3b+S4yX8X
-wgAHXhCx33E7sLCwGDzWzXKhWyn3RNoDtTrsSyoXEUi2tUAJ6oEVIQd2MMH3gMxt
-f31sg+cWTMdx7s2ZYatQ9hYOu86HR0O5fGD4T9Ae1TEhV8t3ZiUvozB/BfMUYwGx
-UajxAN+QJZJrsuc98MlqTDk3vViqCyptFJaIjZHaLrB3rhtw9VISnEnXY1WsiL4R
-+0R99xKt6D/yZXljXS1HR3w9VLpzE0NikYVkYBbsFFTZ8SrMwVCzY+wWjP0miQ2X
-gAvX3+Lr1PeAmigKkCnt9gKuZz5b2hD0WWb7P9HXLR04XtOq2QOvA5kObl51C+Af
-BcdEM9Q9FzQHqa5ofq0ZeS4WL72nkJFuAiGhi9kcpV70YHBMk0BuSIEuctGempuJ
-4CeH6X2pKMHNJ5ijctZJiMPB8V2AzlWPber44IXD9f8B6HAQsNpZJ4+rWw2zCeKf
-Jj/n0UIqwEU9vG1KMU3OaAqrlaP0ePd3+BgjgIemMSwzNtSamtVc8TbqodXWKQF/
-uQINBFjVvh4BEADzt2iKa1gSksHtTFkPQ5ULqUF2sHDClr3ykbLq/AxgSCON58eP
-A9SKQy2O+qDpojHAN1UULJgHEn34afzMkBzjxcJXMRgaTV2M+1trjwx/VluD9OKX
-wmnhmSdvCIP7Z0qdhU78maLq10UG1vVwej3kVlxsf4Eu2ZA+NeIr7Tj0DERqEDQo
-DRtNPVEy3h1xoYruy/VjNDi1CI3yFkM6HW1CgRA50rI7GDtvOuitZy+9Lpqs0mWq
-vdApWZxoQwslFcziNd+ZVaQjgO6LSnkDttRkAOblFiD710OQy3/Yo97i7bqsKrnZ
-qQMRUk0n12VXY9I94c7ELfViVqGk123ELtTViiIz5BT5iQRkJj1GiizTgGY6cfsj
-kwWwvabpmWYdyQ85sYoVuNAPz3yDaLdtStWRNHWi4+UHC03J2BiBgIrQbuXoNGuc
-j0b1fsntdntaBoZgFygwW6kXUjHLeEfnrGX3C2X49zg0rBTvEzdZwr2K0xgc2z26
-1EEf5ObmOGRt27K1fwrCxKHbKTscReHv78S4v3uN/9LvHfvIEaBoYHqMCcxy7Aii
-dk+02dNDO/jZDnTAJH2NWhyB+PJvrlnK34zHhUMVH0i5nUjaCDL/n07Vd2sbE5qW
-ivE2MWeayVKRGPci80tEGA1i42FJzGiA1uZrxXNImnsyxQyS8cr9iKoTIQARAQAB
-iQIfBBgBCAAJBQJY1b4eAhsMAAoJEIH5DsPNNWBg+bYQALJyD1nyuz8+vl8rqj7K
-Z9aRSW+XeG/wz6xrAqdY3OVvHwXYw33pgOmhNhfMUgP/Uy5OsxZdjIO7NzyKa2H9
-JoVSsAs/eLQDOQCcwXruBND6zuxt99kZh6o/Xp4lII9vuLafKner+fWluFHhOy/w
-E3Q3VwCbC9npbmzweEl9Q83R7IxbEhtFF5HV0wKVRzW/GX7iWADoHpkAAQ2sUnQp
-HhE1wOrdPm0dD9BEbTRQHekUiIQ8cFoORyWbJBwbflY64ioaFjyM+Ji49pNMykie
-LzQFW1UYyhkXJeTvv93ym4XyMi2mhsOzna7mG1bonKvbKj6qaXb7gFHUXHh/ARuu
-6CNARzBh6BTp+7c1brthGjT/L8CxrAeW2oE5wVIRuk8mdKiFoK3BuXc1P+vsnp36
-ioOQ0y+KPcp+PSbw6oDp7hTHztcW/3EoAgyHneWCmtYYi6RmVptTNpeeyHwqRP/O
-elCN1cw9zopofVQhnxDEUgzVPrWWaE7UR6vrHbzlXvWMeGTYtmdmo/9xkYbQzZW7
-y90QLUGyDwQ+KeCG29W3EhygGy3myVQbRaXywgzzO2YvovjATDa7wZQrXNoVE7J9
-uLonNtRlyRlTAfFP6hCLDXwuE6WRHXhdu7aFKbq0LQGFv5hY4wPUp8vnUtGYT/wo
-qqSkuSYhzNvmuKBIHPs6YD8duQINBGC7n68BEADnUv7iWOejQNa3fZ6v4lkHT6qF
-Rp2+NuzIpFJ2Vy7eP58XZoiz6HJPcCU8Hf95JXwaXEwS4S7mXdw1x60hd8JIe058
-Ek6MZSSVQmlLfocGsAYj1wTrLmnQ8+PV0IeQlNj1aytBI1fL+v3IPt+JdLt6b+g3
-vwcEUU9efzxx2E0KZ5GIpb2meiCQ6ha+tcd7XqegB53eQj/h/coE2zLJodpaJ3xb
-j894pE/OJCNC0+4d0Sv7oHhY7QoLYldTQbSgPyhyfl4iZpJf6OEPZxK2cJaB+cbe
-oBB6aGNyU+CIJToM+uAJJ7H7EpvxfcnfJQ1PuY5szTdvFbW820euiUEKEW69mW4u
-aFNPSc6D4Z8tZ5hXQIqBD40irULhF0CYNkIILmyNV/KJIZ5HkbQ1q+UrCFHJyvuH
-/3aCTjj9OSfE7xHPQ3xd3Xw8vvj0Mjie09xFbbcklBTw5WRzH7cw8c+Q0O69kZZ8
-b+ykcdzWTeZeWNdnzptNqnMjfheig90rUIJ7DN0c+53jCUcGpWJxJhcYF9Uk1RNH
-mSE5+VzK1y+20t0grVFX90nApm4Tl35QPrX7Qxp9C81cWiUB8xCAE6jYrmd4x+P/
-3wSQfc1Xg0Eg3QjJB+6JD7cbyDJpzDR3ja+CLZCAr9I0B4rDKD2d6et/z67iXPnZ
-UWMyZ8RVVZPFbBMOTwARAQABiQI8BBgBCAAmAhsgFiEEW9rpuLL2xry7DWzlgfkO
-w801YGAFAmT94IMFCQgEp9QACgkQgfkOw801YGBd1Q//bsHS8B2D3PCE69FdOBhG
-0BmOw88Z6Bz2jwALG3vhoo5gZggKjReeu78zh9dVLgstF/Vz6K5/03GidZMlSc5G
-2zuL2gzYINazcdPfJzToY/B+8dM9SsIXCI5augPTqinVKBMjay2NI87iorVGs0Cc
-UVmCH139ns28OKrCW3VdskHdlxkkc5JmeHGU5950+WCrEvDPurO1MWb2XhjzXojz
-QIbf91UNOWq0pB8kOTtF/JNq/EtI9HhNw1phaiqMafNvjwJBfKt5Ksvo4Z1F6gG4
-3Dx5BLGiEFYjc8oGf8b7ge/OW8MVrvjlP0HjJOe9UmHZIXQKpuDkVxGwelN0vaqj
-17UyV54GQZmfFYUpZlZwmhzMPWnGNkYgU0jVozGhIwHTIDpPQ8Bu6mugCTZNefw0
-POwUk/oREz7dzUBE2LBnzAKOI0KHFflwSHhyI2W2RDnhkX/tIhBYHFwnwjAe5yQj
-CvfQ6bSWE6K49tlauktfT90EJTip3A5VpB1pGiklTsTZchas3/yL6jtYAT3F0h1U
-dmDQf5Y9Zr+U6znJ+xJcRLdjvDE5HxyFbTfz/LzZMQKTss/51nIUonbpVK+o8fEy
-qaOL9QmM4H4rnFpoJ+WfOwrOxoR/l9EIisKnqV0heHT/HSymqwQk9c85vjSgGc3M
-s5K/1f77Aqr6hdYRfw5KqGs=
-=0+B8
------END PGP PUBLIC KEY BLOCK-----
diff --git a/src/content/public.asc.txt b/src/content/public.asc.txt
new file mode 100644
index 0000000..d548547
--- /dev/null
+++ b/src/content/public.asc.txt
@@ -0,0 +1,99 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFjVvh4BEADIlHUiO6IfkhcNm3J7ilXERgimvKuFNyLIUPZlDcESC1ORrv4y
+9slMDA5uojXctuLRC7nNdynLP+eFFfVUQ+hUXcV24AzyOE0CYo5c4PQA5TLe2AUC
+E9YqqfQF4XuNddY+UpcG47MuVDR+6SHkFkF29ATzpmShJj41lc7a9CdRib+62Wpe
+h7WJOFj/YoxMCBBzic4tiFNgoYobu+lLxyA4T2kCmxEaiZzc6eXBDDgJ0STL4+S8
+avpglaQ+mb5gHbH0yOtuwDG3sWyHKf7LSRVtzWvOqaGmRUmmDsSPjb5vQqvT8EMq
+UfqFFZhScLalthF3PhG0SLXPvoCoRm2aLkN+O3sv057RqaN8E39223mmz6EMXmLk
+H/U5qk2SUl3dx86dIQcB+2WUVu5zuFyfR1g6tD+DcqzxGc9XB7Gz/0TTDf3OimHb
+rp1x5i/04198ocRZT3MzXx8H25tLMS/rHmE87YdgPhMTWheSUevyhoGNHfAOcDwX
+P2oGzELXbLqHxtjENMEw2E996KrSmpcz7WOqIl3PHS1J6eRZoYQesXE+SZTeIiYb
+wD0kkZGYhBZbtLC4VWIuU2T3AL/2hF6aUh1tj1B6vcV0i3HpIHNbvPAF/I0NUhhc
+Gxwwi+ggG/MBHBbxkq7LvG5DfDbav0ZoZaov5dyhtX0CBWjVYATvjRfeAwARAQAB
+tBlFdUFuZHJlaCA8ZXVAZXVhbmRyZS5vcmc+iQI5BBMBCAAjBQJY1b4eAhsDBwsJ
+CAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQgfkOw801YGCWzg//QtDpwgbDY9uC
+Y9a/RgUsbqGAYzSInsbyDCXrAAhWGzkDMLPeFp03Sw9QyCDe0wWu8L2H4hV/FN58
++4G6353ISwkqsf9R+P9lQs/5dwG7lp5/Gez8bZK3y7zFrdtVwcOCb4De+9fhPsgP
+9pRU8dHpLNo8Ui9IzbiYla7aGxXQdkXU2cvOuEoiuFgvcWU1KWNOWrjImATcC8EF
+8VaEaZYGRXz8lML8KgsAUxrjFkk6tqxrMlOLTjY0BuzcYZpt5XLZ2NuSIDYBoSib
+uBQ1H7DLGa+r0hnNjVEBmMOvFA1hbWa33h1AyYjYhoeVlBYpoHuDosEFqkwZ+otz
+zvImaRAOOFX1IehifTGEFie3imuOHdVuRjXb8SGu8Cgeby0T096A/vf+L1S35nc2
+mdRCUE/SIURW6hfH7uT6KqpokU86vozKmNzIcV3zhAXJ9UYwQqZgg2H3DOcTtZyE
+jVBl2glspoclsfR20T+g+qPqNDAgoDbC71fEAbUTACQau162utpHiabog7e7vyhI
+go5xdjxA8xb3Jtn39pYzbg75ArZqPbxHNZ38m00EBtC5EkD4DFh0cpQ2peuZIh1k
+c5bragCt8o6cV9t4jaq+TtVv4PrFEPqEd+w1FqqwabBq3xSsIgKg2X5rXQkktymB
+un+oN41wofuTZIoGNt8nnGb+skFBxgyJAlYEEwEKAEACGwMHCwkIBwMCAQYVCAIJ
+CgsEFgIDAQIeAQIXgBYhBFva6biy9sa8uw1s5YH5DsPNNWBgBQJmm7wJBQkRiGTr
+AAoJEIH5DsPNNWBgkxoQAJToyFUvioGD/91ztneUBOD2LOkQaIH4ZUTyIEjxpiep
+ry7QIC33wc2OLJo8QKfPZNaZlvy0EcuzSNZz2Za0NUg5y/lzDOCyjrRw7/szHcPX
+saUVHcjwYjQV/yiB1GJcuHefrEwXmgjQbkGmNZw8t7DuEm7qMrAdbAg3b+S4yX8X
+wgAHXhCx33E7sLCwGDzWzXKhWyn3RNoDtTrsSyoXEUi2tUAJ6oEVIQd2MMH3gMxt
+f31sg+cWTMdx7s2ZYatQ9hYOu86HR0O5fGD4T9Ae1TEhV8t3ZiUvozB/BfMUYwGx
+UajxAN+QJZJrsuc98MlqTDk3vViqCyptFJaIjZHaLrB3rhtw9VISnEnXY1WsiL4R
++0R99xKt6D/yZXljXS1HR3w9VLpzE0NikYVkYBbsFFTZ8SrMwVCzY+wWjP0miQ2X
+gAvX3+Lr1PeAmigKkCnt9gKuZz5b2hD0WWb7P9HXLR04XtOq2QOvA5kObl51C+Af
+BcdEM9Q9FzQHqa5ofq0ZeS4WL72nkJFuAiGhi9kcpV70YHBMk0BuSIEuctGempuJ
+4CeH6X2pKMHNJ5ijctZJiMPB8V2AzlWPber44IXD9f8B6HAQsNpZJ4+rWw2zCeKf
+Jj/n0UIqwEU9vG1KMU3OaAqrlaP0ePd3+BgjgIemMSwzNtSamtVc8TbqodXWKQF/
+tCFwYXBvLmltIFN1cHBvcnQgPHN1cHBvcnRAcGFwby5pbT6JAlcEEwEIAEEWIQRb
+2um4svbGvLsNbOWB+Q7DzTVgYAUCaBSRgAIbAwUJEYhk6wULCQgHAgIiAgYVCgkI
+CwIEFgIDAQIeBwIXgAAKCRCB+Q7DzTVgYJ7dEACtW+VEVBIj2v390ph+6bB9hnvq
+b78oC0EGryuKcKh797lld02jOW1WsIa2l7RzsS+XWDoY6c1DhCha75avLdr4uXgz
+oLjScXinRNa5y9ECYdhiAScTVE3PbqURFbd9txPAY6rCP0Lo05tfXrX7zs/5UK8W
+98FN4mSNge7YZEmOSSFFEQLaLRs/JH89GSlAXjfdke5cEiYqvabXXle/Zv/umm7B
+J2ndd1bUgRbcL4SznMMo+JAhHzr1KpuvhFj/Dv4IUeMsWwv5x0KOXcCSUNpEnN0v
+vw1aIFgI7JuQiYyMK0g3ubUfser5jOX7faz4Y5PJEcx6mzTrrdjC8vqCDaN+iA7O
+pIS951yaYs6oI09ev1xQKCO+tJVFgPYMSh4lTMHMndZnMvTGUZy1Mt1tE+u8/Ps+
+Ps6UbApinrL1saeg1ODsels16mANGsQ62LXQfqTaQomKD/FfGHokOIogdj/hwhGC
+XqhAoUtPoO5gQRqToenWybMNyu+fKo1gERU0WjXdqkledgY3Hi8JvjAaBgGyUmoi
+DdRzGt8CAYZ72Tpwj4/yziVPw+myP6JmOvaRatZbL6SvFUEGnmip+ZWhA3yw0oyC
+dSQ2TL6q2G/qjA/0cpxTGEyiObSLqlZgamV8i+bpqXn6yt3CoUk4xm0jsChHK9zF
+w+7WzwhBSyDeeAIm8rkCDQRY1b4eARAA87doimtYEpLB7UxZD0OVC6lBdrBwwpa9
+8pGy6vwMYEgjjefHjwPUikMtjvqg6aIxwDdVFCyYBxJ9+Gn8zJAc48XCVzEYGk1d
+jPtba48Mf1Zbg/Til8Jp4ZknbwiD+2dKnYVO/Jmi6tdFBtb1cHo95FZcbH+BLtmQ
+PjXiK+049AxEahA0KA0bTT1RMt4dcaGK7sv1YzQ4tQiN8hZDOh1tQoEQOdKyOxg7
+bzrorWcvvS6arNJlqr3QKVmcaEMLJRXM4jXfmVWkI4Dui0p5A7bUZADm5RYg+9dD
+kMt/2KPe4u26rCq52akDEVJNJ9dlV2PSPeHOxC31YlahpNdtxC7U1YoiM+QU+YkE
+ZCY9Roos04BmOnH7I5MFsL2m6ZlmHckPObGKFbjQD898g2i3bUrVkTR1ouPlBwtN
+ydgYgYCK0G7l6DRrnI9G9X7J7XZ7WgaGYBcoMFupF1Ixy3hH56xl9wtl+Pc4NKwU
+7xM3WcK9itMYHNs9utRBH+Tm5jhkbduytX8KwsSh2yk7HEXh7+/EuL97jf/S7x37
+yBGgaGB6jAnMcuwIonZPtNnTQzv42Q50wCR9jVocgfjyb65Zyt+Mx4VDFR9IuZ1I
+2ggy/59O1XdrGxOalorxNjFnmslSkRj3IvNLRBgNYuNhScxogNbma8VzSJp7MsUM
+kvHK/YiqEyEAEQEAAYkCHwQYAQgACQUCWNW+HgIbDAAKCRCB+Q7DzTVgYPm2EACy
+cg9Z8rs/Pr5fK6o+ymfWkUlvl3hv8M+sawKnWNzlbx8F2MN96YDpoTYXzFID/1Mu
+TrMWXYyDuzc8imth/SaFUrALP3i0AzkAnMF67gTQ+s7sbffZGYeqP16eJSCPb7i2
+nyp3q/n1pbhR4Tsv8BN0N1cAmwvZ6W5s8HhJfUPN0eyMWxIbRReR1dMClUc1vxl+
+4lgA6B6ZAAENrFJ0KR4RNcDq3T5tHQ/QRG00UB3pFIiEPHBaDkclmyQcG35WOuIq
+GhY8jPiYuPaTTMpIni80BVtVGMoZFyXk77/d8puF8jItpobDs52u5htW6Jyr2yo+
+qml2+4BR1Fx4fwEbrugjQEcwYegU6fu3NW67YRo0/y/AsawHltqBOcFSEbpPJnSo
+haCtwbl3NT/r7J6d+oqDkNMvij3Kfj0m8OqA6e4Ux87XFv9xKAIMh53lgprWGIuk
+ZlabUzaXnsh8KkT/znpQjdXMPc6KaH1UIZ8QxFIM1T61lmhO1Eer6x285V71jHhk
+2LZnZqP/cZGG0M2Vu8vdEC1Bsg8EPinghtvVtxIcoBst5slUG0Wl8sIM8ztmL6L4
+wEw2u8GUK1zaFROyfbi6JzbUZckZUwHxT+oQiw18LhOlkR14Xbu2hSm6tC0Bhb+Y
+WOMD1KfL51LRmE/8KKqkpLkmIczb5rigSBz7OmA/HbkCDQRgu5+vARAA51L+4ljn
+o0DWt32er+JZB0+qhUadvjbsyKRSdlcu3j+fF2aIs+hyT3AlPB3/eSV8GlxMEuEu
+5l3cNcetIXfCSHtOfBJOjGUklUJpS36HBrAGI9cE6y5p0PPj1dCHkJTY9WsrQSNX
+y/r9yD7fiXS7em/oN78HBFFPXn88cdhNCmeRiKW9pnogkOoWvrXHe16noAed3kI/
+4f3KBNsyyaHaWid8W4/PeKRPziQjQtPuHdEr+6B4WO0KC2JXU0G0oD8ocn5eImaS
+X+jhD2cStnCWgfnG3qAQemhjclPgiCU6DPrgCSex+xKb8X3J3yUNT7mObM03bxW1
+vNtHrolBChFuvZluLmhTT0nOg+GfLWeYV0CKgQ+NIq1C4RdAmDZCCC5sjVfyiSGe
+R5G0NavlKwhRycr7h/92gk44/TknxO8Rz0N8Xd18PL749DI4ntPcRW23JJQU8OVk
+cx+3MPHPkNDuvZGWfG/spHHc1k3mXljXZ86bTapzI34XooPdK1CCewzdHPud4wlH
+BqVicSYXGBfVJNUTR5khOflcytcvttLdIK1RV/dJwKZuE5d+UD61+0MafQvNXFol
+AfMQgBOo2K5neMfj/98EkH3NV4NBIN0IyQfuiQ+3G8gyacw0d42vgi2QgK/SNAeK
+wyg9nenrf8+u4lz52VFjMmfEVVWTxWwTDk8AEQEAAYkCPAQYAQgAJgIbIBYhBFva
+6biy9sa8uw1s5YH5DsPNNWBgBQJk/eCDBQkIBKfUAAoJEIH5DsPNNWBgXdUP/27B
+0vAdg9zwhOvRXTgYRtAZjsPPGegc9o8ACxt74aKOYGYICo0Xnru/M4fXVS4LLRf1
+c+iuf9NxonWTJUnORts7i9oM2CDWs3HT3yc06GPwfvHTPUrCFwiOWroD06op1SgT
+I2stjSPO4qK1RrNAnFFZgh9d/Z7NvDiqwlt1XbJB3ZcZJHOSZnhxlOfedPlgqxLw
+z7qztTFm9l4Y816I80CG3/dVDTlqtKQfJDk7RfyTavxLSPR4TcNaYWoqjGnzb48C
+QXyreSrL6OGdReoBuNw8eQSxohBWI3PKBn/G+4HvzlvDFa745T9B4yTnvVJh2SF0
+Cqbg5FcRsHpTdL2qo9e1MleeBkGZnxWFKWZWcJoczD1pxjZGIFNI1aMxoSMB0yA6
+T0PAbuproAk2TXn8NDzsFJP6ERM+3c1ARNiwZ8wCjiNChxX5cEh4ciNltkQ54ZF/
+7SIQWBxcJ8IwHuckIwr30Om0lhOiuPbZWrpLX0/dBCU4qdwOVaQdaRopJU7E2XIW
+rN/8i+o7WAE9xdIdVHZg0H+WPWa/lOs5yfsSXES3Y7wxOR8chW038/y82TECk7LP
++dZyFKJ26VSvqPHxMqmji/UJjOB+K5xaaCflnzsKzsaEf5fRCIrCp6ldIXh0/x0s
+pqsEJPXPOb40oBnNzLOSv9X++wKq+oXWEX8OSqhr
+=bNun
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/src/content/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides b/src/content/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides
deleted file mode 100644
index 22770e6..0000000
--- a/src/content/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides
+++ /dev/null
@@ -1,343 +0,0 @@
----
-
-title: Rollout, feature flag, experiment, operational toggle
-
-date: 2020-10-19
-
-layout: slides
-
-lang: en
-
-ref: rollout-feature-flag-experiment-operational-toggle
-
-article: _articles/2020-10-19-feature-flags-differences-between-backend-frontend-and-mobile.md
-
----
-
-# Rollout, feature flag, experiment, operational toggle
-Different use cases for **backend**, **frontend** and **mobile**
-
----
-
-"Feature flags" tend to come up when talking about **continuous deployment**
-
-???
-
-I'm using "quotes" because I'm mixing up different meanings of "rollout"
-
----
-
-# CI
-continuous integration
-
-# CD
-continuous delivery
-
-# CD
-**continuous deployment**
-
-???
-
-Background: build vocabulary, why are feature flags related to CD
-
-CI solves: manual integration of long-lived branches
-
-CD solves: automation of deployment process
-
-CD solves: releases as frequent as possible
-
-That's where the "GoCD" name comes from
-
----
-
-# Types:
-1. rollout
-2. feature flag
-3. experiment
-4. operational toggle
-
----
-
-# rollout
-## For *rolling out* a new version of software
-
-**Short-lived** using **percentages**
-
-- a [new deployment of k8s][k8s]
-- new [APK released to the Play Store][apk]
-
-[k8s]: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment
-[apk]: https://support.google.com/googleplay/android-developer/answer/6346149?hl=en
-
-???
-
-Relevant as long as the new code is deployed
-
----
-
-# feature flag
-## For turning a feature *on* or *off*
-
-**Medium-lived** using **allow list**, **A/B test**, **percentage**,
-**app version**, *etc*.
-
-- `:new-chargeback-flow`
-- `:new-debit-card-activation-screen`
-
-???
-
-Relevant as long as the new code is being developed
-
----
-
-# experiment
-## For analyzing behaviour
-
-**Medium-lived** using **allow list** and **A/B test**
-
-- `:debit-withdrawal-test`
-
----
-
-# operational toggle
-## For disabling features in `#crash`-like situations
-
-**Long-lived** using **percentage**
-
-- `:bank-barcode-payment`
-- `:savings-bank-barcode-query-provider`
-
-???
-
-Lives for as long as the code is in production.
-
-It feels like a system-level circuit breaker.
-
----
-
-We now know about the types
-
-## But they have different relevance for **backend**, **frontend** and **mobile**
-
----
-
-# backend
-
-1. **rollout**: k8s blue/green, canary and ~`common-rollout`~ `common-xp`
-2. **feature flag**: ~`common-rollout`~ `common-xp` and datasets
-3. **experiment**: `common-xp`
-4. **operational toggle**: ~`common-rollout`~ `common-xp`
-
-???
-
-This is a bit why common-rollout isn't called *common-feature-flag*: it was
-initially designed with backend usage of mostly *rollouts* in mind, and just a
-bit *feature flags*.
-
-Avoid using configuration for doing operational toggles: it is less dynamic, so
-it defeats the purpose.
-
----
-
-# frontend
-
-1. **rollout**: CDN and page refreshes
-2. **feature flag**: percentages and maybe IPs (no `:customer/id` on the website)
-3. **experiment**: via dynamic backend control
-4. **operational toggle**: via dynamic backend control
-
----
-
-# mobile
-
-1. **rollout**: app stores
-2. **feature flag**: via dynamic backend control
-3. **experiment**: via dynamic backend control
-4. **operational toggle**: via dynamic backend control
-
----
-
-Key differentiator is
-## How much **control** we have over the **environment**
-
----
-
-## **backend**
-
-# Full control
-🎉
-
-???
-
-Can edit, update and even delete rollouts as desired.
-
-Mix and match at will!
-
----
-
-## **frontend**
-
-# Partial control
-
-When choose when to make a new version available
-
-???
-
-We can control when a new version is available, partially when someone will
-upgrade it.
-
-But it is easy to fallback to "reload the page and try again".
-
----
-
-## **mobile**
-
-# Very limited control
-
-- app stores can restrict updates (worse for iOS)
-- customers still have to download new versions
-
----
-
-# Costs
-
-- more complex code
-- compatibility with old app versions
-- nesting is exponential
-
----
-
-# Benefits
-
-- dynamicity
-
----
-
-## Weighting costs × benefits
-
-The less control we have, the more we value dynamicity
-
----
-
-## Weighting costs × benefits
-
-- backend: sometimes worth the cost
-- frontend: almost always worth cost
-- mobile: **always** worth cost
-
----
-
-# Best practices
-
----
-
-## Dynamic content > feature flag
-
-Always true for **mobile**, almost always for **frontend**
-
----
-
-## Use `:include-list` for named groups
-
-Always true for **backend**, **frontend** and **mobile**
-
-{% raw %}
-```clojure [2-3]
-{:rules
- #{{:type :include-list
- :content {:filename "debit-team-members.txt"}}}}
-```
-{% endraw %}
-
----
-
-## Always use `:app-version`
-
-only for **mobile**
-
-{% raw %}
-```clojure [2]
-{:rules
- #{{:type :app-version
- :content {:min-version #{{:platform :android
- :code 1000000}
- {:platform :ios
- :code 2000000}}}}}}
-```
-{% endraw %}
-
----
-
-## Extend ~`common-rollout`~ `common-xp` if required
-
-That's how `:include-list`, `:app-version`, *etc.* were born
-
----
-
-## Beware of many nested feature flags
-
-True for **backend**, **frontend** and **mobile**
-
-???
-
-Exponential growth of combinations
-
----
-
-## Don't delete app-facing feature flags
-
-True for **mobile**
-
-???
-
-This could break old app versions, only do this intentionally
-
-We don't have (yet) a strategy for dealing with LTS of the app, and we just say:
-"we'll support every app version out there".
-
----
-
-## Include a feature flag on the whiteboarding phase
-
----
-
-## Include deleting/retiring the feature flag at the end
-
----
-
-## Avoid renaming a feature flag
-
-Use `:app-version` with `:min-version` instead
-
----
-
-# And most importantly...
-
----
-
-# ***Always*** rely on a feature flag on the app
-
-Never do a hot fix, avoid expedited releases at all costs
-
-???
-
-The app is where we have less control, so the feature flag is how we get some of
-that control back.
-
-This doesn't mean you'll need 1 feature flag per PR
-
-There's not such thing as:
-"This is such a small thing, it doesn't need a feature flag"
-
-You should ask yourself:
-"It this crashes the app, am I OK with waiting for the next release train?"
-
----
-
-## Thank you!
-
-References:
-
-1. "[Feature Toggles (aka Feature Flags)](https://martinfowler.com/articles/feature-toggles.html)", by Pete Hodgson
-1. "[Continuous integration vs. continuous delivery vs. continuous deployment](https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment)", by Sten Pittet
-1. [Accelerate](https://itrevolution.com/book/accelerate/), by N. Forsgren, J. Humble and G. Kim
diff --git a/src/content/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides b/src/content/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides
deleted file mode 100644
index 8f17982..0000000
--- a/src/content/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides
+++ /dev/null
@@ -1,266 +0,0 @@
----
-
-title: 'On "local-first": beyond the CRDT silver bullet'
-
-date: 2020-11-14
-
-layout: slides
-
-lang: en
-
-ref: on-local-first-beyond-the-crdt-silver-bullet
-
-article: _articles/2020-11-14-local-first-software-you-own-your-data-in-spite-of-the-cloud-article-review.md
-
----
-
-# On local-first
-
-Beyond the CRDT silver bullet
-
----
-
-# Part 1
-
-Exposition
-
----
-
-## "cloud apps" vs "old-fashioned apps"
-
----
-
-## Target
-
-- documents
-- files
-- personal data repositories
-
-Not: banking services, e-commerce, social networking, ride-sharing, *etc*.
-
----
-
-## 7 Ideals for local-first software
-
----
-
-### 1 - No Spinners: Your Work at Your Fingertips
-
----
-
-### 2 - Your Work Is Not Trapped on One Device
-
----
-
-### 3 - The Network Is Optional
-
----
-
-### 4 - Seamless Collaboration with Your Colleagues
-
----
-
-### 5 - The Long Now
-
----
-
-### 6 - Security and Privacy by Default
-
----
-
-### 7 - You Retain Ultimate Ownership and Control
-
----
-
-## Towards a Better Future
-
-CRDTs (Conflict-free Replicated Data Types) as a Foundational Technology
-
----
-
-### Use case
-
-```
-# in node A and node B
-s = "Hello, World"
-
-# in node A
-s = "Hello, Alice"
-
-# in node B
-s = "Hello, Bob"
-```
-
-How to reconcile those?
-- `Hello, ABloibce`
-- `Hello, AliceBob`
-- `Hello, BobAlice`
-- `Hello, Alice`
-- `Hello, Bob`
-
----
-
-Existing CRDTs differ:
-- performance
-- storage
-- compression
-- metadata overhead
-
----
-
-Hint towards the "automerge" CRDT
-
----
-
-*show comparison table, page 9*
-
----
-
-# Part 2
-
-Critique
-
----
-
-### Software license
-
-> In our opinion, maintaining control and ownership of data does not mean that
-> the software must necessarily be open source.
-
----
-
-#### Example 1 - intentional restriction
-
-```bash
-#!/bin/sh
-
-TODAY=$(date +%s)
-LICENSE_EXPIRATION=$(date -d 2020-10-27 +%s)
-
-if [ $TODAY -ge $LICENSE_EXPIRATION ]; then
- echo 'License expired!'
- exit 1
-fi
-
-echo $((2 + 2))
-```
-
-```bash
-# today
-$ ./useful-adder.sh
-4
-# tomorrow
-$ ./useful-adder.sh
-License expired!
-```
-
----
-
-#### Example 2 - unintentional restriction
-
-```bash
-# today
-$ useful-program
-# ...useful output...
-
-# tomorrow, with more data
-$ useful-program
-ERROR: Panic! Stack overflow!
-```
----
-
-### local-first **requires** free software
-
-Otherwise "The Long Now" (ideal nº5) is lost
-
----
-
-### Denial of existing solutions
-
-> In principle it is possible to collaborate without a repository service,
-> e.g. by sending patch files by email, but the majority of Git users rely
-> on GitHub.
-
-Solution: either GitHub+CRDTs or `git` **`send-email`**
-
----
-
-### Plain text formats
-
-> Git is highly optimized for code and similar line-based text file
-
-It even pulls software to the plain text direction, e.g.:
-- delivery-templates
-- `common-core.protocols.config`
-
-Why not exploit that more?
-
----
-
-### Ditching of web applications
-
-> The architecture of web apps remains fundamentally server-centric
-
-Disagree. Contrast [PouchDB][pouchdb] with Android [Instant Apps][instant-apps]
-
-[pouchdb]: https://pouchdb.com/
-[instant-apps]: https://developer.android.com/topic/google-play-instant
-
-???
-
-Talk on dynamic content
-
----
-
-### Costs are underrated
-
-- storage
-- backups
-- maintenance
-
-Example: blog vs vlog
-
----
-
-### Real-time collaboration a bit overrated
-
-It is only possible on the presence of reliable, medium-quality network
-connection
-
-> X also works when inside an elevator, subway or plane!
-
-<!-- 🤦‍ -->
-
----
-
-### On CRDTs and developer experience
-
-> For an app developer, how does the use of a CRDT-based data layer compare to
-> existing storage layers like a SQL database, a filesystem, or CoreData? Is a
-> distributed system harder to write software for?
-
-Yes.
-
-See "[A Note on Distributed Computing][note-dist-comp]"
-
-[note-dist-comp]: https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf
-
----
-
-## Conclusion
-
-Why this is a "paper I love": it took offline-first and ran with it.
-
-But a pinch of CRDT won't make the world local-first.
-
-The tricky part is the end of the sentence: "**in spite of the Cloud**".
-
----
-
-## Thank you!
-
-References:
-
-1. "[Local-First Software: You Own Your Data, in spite of the Cloud](https://martin.kleppmann.com/papers/local-first.pdf)", by M. Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan
-1. [The Morning Paper](https://blog.acolyer.org/2019/11/20/local-first-software/) article
-1. "[A Note on Distributed Computing](https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf)", by J. Waldo, G. Wyant, A. Wollrath and S Kendall
diff --git a/src/content/style.css b/src/content/style.css
index cbe615b..dbd7967 100644
--- a/src/content/style.css
+++ b/src/content/style.css
@@ -5,6 +5,8 @@
--color-2nd-bg: #f5f5f5;
--color-pre-border: hsla(0, 100%, 0%, 30%);
+ --link-url: url(img/link/light.svg);
+
color: var(--color-fg);
background-color: var(--color-bg);
}
@@ -16,6 +18,8 @@
--color-2nd-fg: #aaaaaa;
--color-2nd-bg: #222222;
--color-pre-border: hsla(50, 100%, 70%, 10%);
+
+ --link-url: url(img/link/dark.svg);
}
a {
@@ -192,7 +196,7 @@ div.header-anchor:hover img {
}
a.anchor {
- background: transparent url(img/link/light.svg) center right no-repeat;
+ background: transparent var(--link-url) center right no-repeat;
padding-right: 22px;
margin-left: 10px;
visibility: hidden;
diff --git a/src/content/tils/categories.adoc b/src/content/tils/categories.adoc
deleted file mode 100644
index f29acda..0000000
--- a/src/content/tils/categories.adoc
+++ /dev/null
@@ -1 +0,0 @@
-= Articles by category
diff --git a/src/content/tils/index.adoc b/src/content/tils/index.adoc
deleted file mode 100644
index 4ae3b92..0000000
--- a/src/content/tils/index.adoc
+++ /dev/null
@@ -1 +0,0 @@
-= TIL
diff --git a/src/headers.txt b/src/headers.txt
deleted file mode 100644
index 5c050ab..0000000
--- a/src/headers.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-blog/ Blog
-tils/ TIL
-podcasts/ Podcasts
-screencasts/ Screencasts
-pastebins/ Pastebins
-about.html About
diff --git a/src/headers/de.txt b/src/headers/de.txt
new file mode 100644
index 0000000..ca848a3
--- /dev/null
+++ b/src/headers/de.txt
@@ -0,0 +1,13 @@
+en/blog/ Blog
+
+en/til/ TIL
+
+en/podcast/ Podcasts
+
+en/screencast/ Screencasts
+
+en/pastebin/ Pastebins
+
+en/slide/ Slides
+
+en/about.html About
diff --git a/src/headers/en.txt b/src/headers/en.txt
new file mode 100644
index 0000000..ca848a3
--- /dev/null
+++ b/src/headers/en.txt
@@ -0,0 +1,13 @@
+en/blog/ Blog
+
+en/til/ TIL
+
+en/podcast/ Podcasts
+
+en/screencast/ Screencasts
+
+en/pastebin/ Pastebins
+
+en/slide/ Slides
+
+en/about.html About
diff --git a/src/headers/eo.txt b/src/headers/eo.txt
new file mode 100644
index 0000000..ca848a3
--- /dev/null
+++ b/src/headers/eo.txt
@@ -0,0 +1,13 @@
+en/blog/ Blog
+
+en/til/ TIL
+
+en/podcast/ Podcasts
+
+en/screencast/ Screencasts
+
+en/pastebin/ Pastebins
+
+en/slide/ Slides
+
+en/about.html About
diff --git a/src/headers/es.txt b/src/headers/es.txt
new file mode 100644
index 0000000..ca848a3
--- /dev/null
+++ b/src/headers/es.txt
@@ -0,0 +1,13 @@
+en/blog/ Blog
+
+en/til/ TIL
+
+en/podcast/ Podcasts
+
+en/screencast/ Screencasts
+
+en/pastebin/ Pastebins
+
+en/slide/ Slides
+
+en/about.html About
diff --git a/src/headers/fr.txt b/src/headers/fr.txt
new file mode 100644
index 0000000..ca848a3
--- /dev/null
+++ b/src/headers/fr.txt
@@ -0,0 +1,13 @@
+en/blog/ Blog
+
+en/til/ TIL
+
+en/podcast/ Podcasts
+
+en/screencast/ Screencasts
+
+en/pastebin/ Pastebins
+
+en/slide/ Slides
+
+en/about.html About
diff --git a/src/headers/pt.txt b/src/headers/pt.txt
new file mode 100644
index 0000000..48f2523
--- /dev/null
+++ b/src/headers/pt.txt
@@ -0,0 +1,13 @@
+#
+
+pt/hea/ HEA
+
+#
+
+#
+
+#
+
+#
+
+pt/sobre.html Sobre
diff --git a/src/headers/ref.txt b/src/headers/ref.txt
new file mode 100644
index 0000000..ca848a3
--- /dev/null
+++ b/src/headers/ref.txt
@@ -0,0 +1,13 @@
+en/blog/ Blog
+
+en/til/ TIL
+
+en/podcast/ Podcasts
+
+en/screencast/ Screencasts
+
+en/pastebin/ Pastebins
+
+en/slide/ Slides
+
+en/about.html About
diff --git a/src/linkonly-dirs.txt b/src/linkonly-dirs.txt
new file mode 100644
index 0000000..3a038f0
--- /dev/null
+++ b/src/linkonly-dirs.txt
@@ -0,0 +1,5 @@
+src/content/css/
+src/content/favicon/
+src/content/images/
+src/content/resources/
+src/content/static/
diff --git a/src/names/categories/de.txt b/src/names/categories/de.txt
new file mode 100644
index 0000000..36e8f75
--- /dev/null
+++ b/src/names/categories/de.txt
@@ -0,0 +1 @@
+categories
diff --git a/src/names/categories/en.txt b/src/names/categories/en.txt
new file mode 100644
index 0000000..36e8f75
--- /dev/null
+++ b/src/names/categories/en.txt
@@ -0,0 +1 @@
+categories
diff --git a/src/names/categories/eo.txt b/src/names/categories/eo.txt
new file mode 100644
index 0000000..36e8f75
--- /dev/null
+++ b/src/names/categories/eo.txt
@@ -0,0 +1 @@
+categories
diff --git a/src/names/categories/es.txt b/src/names/categories/es.txt
new file mode 100644
index 0000000..36e8f75
--- /dev/null
+++ b/src/names/categories/es.txt
@@ -0,0 +1 @@
+categories
diff --git a/src/names/categories/fr.txt b/src/names/categories/fr.txt
new file mode 100644
index 0000000..36e8f75
--- /dev/null
+++ b/src/names/categories/fr.txt
@@ -0,0 +1 @@
+categories
diff --git a/src/names/categories/pt.txt b/src/names/categories/pt.txt
new file mode 100644
index 0000000..7216072
--- /dev/null
+++ b/src/names/categories/pt.txt
@@ -0,0 +1 @@
+categorias
diff --git a/src/names/categories/ref.txt b/src/names/categories/ref.txt
new file mode 100644
index 0000000..36e8f75
--- /dev/null
+++ b/src/names/categories/ref.txt
@@ -0,0 +1 @@
+categories
diff --git a/src/names/category/de.txt b/src/names/category/de.txt
new file mode 100644
index 0000000..46e72f3
--- /dev/null
+++ b/src/names/category/de.txt
@@ -0,0 +1 @@
+category
diff --git a/src/names/category/en.txt b/src/names/category/en.txt
new file mode 100644
index 0000000..46e72f3
--- /dev/null
+++ b/src/names/category/en.txt
@@ -0,0 +1 @@
+category
diff --git a/src/names/category/eo.txt b/src/names/category/eo.txt
new file mode 100644
index 0000000..46e72f3
--- /dev/null
+++ b/src/names/category/eo.txt
@@ -0,0 +1 @@
+category
diff --git a/src/names/category/es.txt b/src/names/category/es.txt
new file mode 100644
index 0000000..46e72f3
--- /dev/null
+++ b/src/names/category/es.txt
@@ -0,0 +1 @@
+category
diff --git a/src/names/category/fr.txt b/src/names/category/fr.txt
new file mode 100644
index 0000000..46e72f3
--- /dev/null
+++ b/src/names/category/fr.txt
@@ -0,0 +1 @@
+category
diff --git a/src/names/category/pt.txt b/src/names/category/pt.txt
new file mode 100644
index 0000000..ae2c934
--- /dev/null
+++ b/src/names/category/pt.txt
@@ -0,0 +1 @@
+categoria
diff --git a/src/names/category/ref.txt b/src/names/category/ref.txt
new file mode 100644
index 0000000..46e72f3
--- /dev/null
+++ b/src/names/category/ref.txt
@@ -0,0 +1 @@
+category
diff --git a/src/pages/en b/src/pages/en
new file mode 120000
index 0000000..2d811cf
--- /dev/null
+++ b/src/pages/en
@@ -0,0 +1 @@
+../content/en \ No newline at end of file
diff --git a/src/pages/pt b/src/pages/pt
new file mode 120000
index 0000000..12d2087
--- /dev/null
+++ b/src/pages/pt
@@ -0,0 +1 @@
+../content/pt \ No newline at end of file
diff --git a/src/pages/root b/src/pages/root
deleted file mode 120000
index efcdaa6..0000000
--- a/src/pages/root
+++ /dev/null
@@ -1 +0,0 @@
-../content \ No newline at end of file
diff --git a/src/slides/en b/src/slides/en
new file mode 120000
index 0000000..5cbb4c2
--- /dev/null
+++ b/src/slides/en
@@ -0,0 +1 @@
+../content/en/slide \ No newline at end of file
diff --git a/src/static.conf b/src/static.conf
index 1007780..45f5028 100644
--- a/src/static.conf
+++ b/src/static.conf
@@ -1,5 +1,6 @@
+export headers_dir=src/headers
+export names_dir=src/names
export root_dir=src/content
-export header_links=src/headers.txt
export list_addr='~euandreh/public-inbox@lists.sr.ht'
export discussions_url_prefix='https://lists.st.ht/~euandreh/public-inbox?search='
export sourcecode_url_prefix="$sourcecode_url/tree"
diff --git a/src/symlinks.txt b/src/symlinks.txt
new file mode 100644
index 0000000..ebd28aa
--- /dev/null
+++ b/src/symlinks.txt
@@ -0,0 +1,74 @@
+# Paths that existed as I changed my mind on where to put them
+en/favicon.ico favicon.ico
+favicon/favicon.ico favicon.ico
+static/favicon.svg img/favicon.svg
+css/styles.css style.css
+static/style.css style.css
+public-key.txt public.asc.txt
+atom.xml en/blog/feed.xml
+feed.xml en/blog/feed.xml
+rss.xml en/blog/feed.xml
+feed.atom en/blog/feed.xml
+feed.en.atom en/blog/feed.xml
+feed.til.en.atom en/til/feed.xml
+
+# Some I think existed, and where the logs show a few hundred missing hits
+images/atom.svg img/atom.svg
+images/link.svg img/link/light.svg
+images/lock.svg img/lock/light.svg
+images/envelope.svg img/envelope/light.svg
+
+# "Official" redirections
+index.html en/index.html
+security.txt .well-known/security.txt
+
+# Current published pages
+static/attachments/autoqemu.tar.gz en/screencast/2021/02/07/autoqemu.tar.gz
+static/attachments/cargo2nix-demo.tar.gz en/blog/2020/10/05/cargo2nix-demo.tar.gz
+static/attachments/cargo2nix.tar.gz en/blog/2020/10/05/cargo2nix.tar.gz
+static/attachments/fallible.tar.gz en/blog/2021/02/17/fallible.tar.gz
+static/attachments/swift2nix-demo.tar.gz en/blog/2020/10/05/swift2nix-demo.tar.gz
+static/attachments/swift2nix.tar.gz en/blog/2020/10/05/swift2nix.tar.gz
+static/atom.svg img/atom.svg
+static/envelope.svg img/envelope/light.svg
+static/link.svg img/link/light.svg
+static/lock.svg img/lock/light.svg
+static/lord-favicon.ico favicon.ico
+static/lord-favicon.png favicon.png
+static/lord-favicon.svg img/favicon.svg
+
+resources/podcasts/2020-12-19-a-test-entry.flac en/podcast/2020/12/19/test-entry.flac
+resources/podcasts/2020-12-19-a-test-entry.flac.torrent en/podcast/2020/12/19/test-entry.flac.torrent
+resources/podcasts/2020-12-19-a-test-entry.ogg en/podcast/2020/12/19/test-entry.ogg
+resources/screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.webm en/screencast/2021/02/07/autoqemu.webm
+resources/screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.webm.torrent en/screencast/2021/02/07/autoqemu.webm.torrent
+
+
+til.html en/til/index.html
+podcast.en.html en/podcast/index.html
+screencasts.en.html en/screencast/index.html
+pastebins.en.html en/pastebin/index.html
+about.html en/about.html
+articles-by-category.html en/blog/categories.html
+til-by-category.html en/til/categories.html
+podcast-episodes-by-category.html en/podcast/categories.html
+screencasts-by-category.html en/screencast/categories.html
+pastebins-by-category.html en/pastebin/categories.html
+
+feed.articles.en.atom en/blog/feed.xml
+feed.blog.en.atom en/blog/feed.xml
+feed.posts.en.atom en/blog/feed.xml
+feed.tils.en.atom en/til/feed.xml
+feed.podcasts.en.atom en/podcast/feed.xml
+feed.screencasts.en.atom en/screencast/feed.xml
+feed.pastebins.en.atom en/pastebin/feed.xml
+
+feed.articles-by-category.en.article-review.atom en/blog/feed.article-review.xml
+feed.articles-by-category.en.mediator.atom en/blog/feed.mediator.xml
+feed.articles-by-category.en.presentation.atom en/blog/feed.presentation.xml
+feed.articles-by-category.en.video-review.atom en/blog/feed.video-review.xml
+feed.pastebins-by-category.en.guix.atom en/pastebin/feed.guix.xml
+feed.pastebins-by-category.en.nix.atom en/pastebin/feed.nix.xml
+feed.tils-by-category.en.ci.atom en/til/feed.ci.xml
+feed.tils-by-category.en.git.atom en/til/feed.git.xml
+feed.tils-by-category.en.shell.atom en/til/feed.shell.xml