summaryrefslogtreecommitdiff
path: root/src/content
diff options
context:
space:
mode:
Diffstat (limited to 'src/content')
-rw-r--r--src/content/en/about.adoc2
-rw-r--r--src/content/en/blog/2020/10/19/feature-flags.adoc2
-rw-r--r--src/content/en/blog/2020/11/07/diy-bugs.adoc2
-rw-r--r--src/content/en/blog/2020/11/14/local-first-review.adoc2
-rw-r--r--src/content/en/blog/categories.adoc1
-rw-r--r--src/content/en/pastebin/2016/04/05/rpn.adoc (renamed from src/content/en/pastebins/2016/04/05/rpn.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/11/nix-pinning.adoc (renamed from src/content/en/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/en/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/en/pastebins/2018/07/13/guixbuilder-nixos.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/13/guixbuilder.adoc (renamed from src/content/en/pastebins/2018/07/13/guixbuilder.adoc)0
-rw-r--r--src/content/en/pastebin/2018/07/13/nix-strpad.adoc (renamed from src/content/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/pastebins/2023/07/22/funcallable-amop.adoc)0
-rw-r--r--src/content/en/pastebin/categories.adoc (renamed from src/content/en/pastebins/categories.adoc)1
-rw-r--r--src/content/en/pastebin/index.adoc (renamed from src/content/en/pastebins/index.adoc)0
-rw-r--r--src/content/en/podcast/2020/12/19/test-entry.adoc (renamed from src/content/en/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/en/podcasts/2020/12/19/test-entry.flac)bin462864 -> 462864 bytes
-rw-r--r--src/content/en/podcast/2020/12/19/test-entry.ogg (renamed from src/content/en/podcasts/2020/12/19/test-entry.ogg)bin97060 -> 97060 bytes
-rw-r--r--src/content/en/podcast/categories.adoc (renamed from src/content/en/screencasts/categories.adoc)1
-rw-r--r--src/content/en/podcast/index.adoc (renamed from src/content/en/podcasts/index.adoc)0
-rw-r--r--src/content/en/podcasts/2020/12/19/test-entry.flac.torrentbin544 -> 0 bytes
-rw-r--r--src/content/en/podcasts/2020/12/19/test-entry.ogg.torrent1
-rw-r--r--src/content/en/screencast/2021/02/07/autoqemu.adoc (renamed from src/content/en/screencasts/2021/02/07/autoqemu.adoc)0
-rw-r--r--src/content/en/screencast/2021/02/07/autoqemu.tar.gz (renamed from src/content/en/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/en/screencasts/2021/02/07/autoqemu.webm)bin12103021 -> 12103021 bytes
-rw-r--r--src/content/en/screencast/categories.adoc (renamed from src/content/en/tils/categories.adoc)1
-rw-r--r--src/content/en/screencast/index.adoc (renamed from src/content/en/screencasts/index.adoc)0
-rw-r--r--src/content/en/screencasts/2021/02/07/autoqemu.webm.torrentbin7646 -> 0 bytes
-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/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides343
-rw-r--r--src/content/en/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides266
-rw-r--r--src/content/en/til/2020/08/12/filename-timestamp.adoc (renamed from src/content/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/tils/2020/12/15/shellcheck-repo.adoc)0
-rw-r--r--src/content/en/til/2020/12/29/svg.adoc (renamed from src/content/en/tils/2020/12/29/svg.adoc)0
-rw-r--r--src/content/en/til/2021/01/12/curl-awk-emails.adoc (renamed from src/content/en/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/en/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/en/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/en/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/en/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/en/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/en/tils/2021/08/11/js-bigint-reviver.adoc)0
-rw-r--r--src/content/en/til/categories.adoc (renamed from src/content/en/podcasts/categories.adoc)1
-rw-r--r--src/content/en/til/index.adoc (renamed from src/content/en/tils/index.adoc)0
-rw-r--r--src/content/favicon.pngbin180 -> 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.asc.txt107
-rw-r--r--src/content/style.css6
90 files changed, 722 insertions, 780 deletions
diff --git a/src/content/en/about.adoc b/src/content/en/about.adoc
index 9911496..14d5e22 100644
--- a/src/content/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/blog/categories.adoc b/src/content/en/blog/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/en/blog/categories.adoc
+++ b/src/content/en/blog/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/en/pastebins/2016/04/05/rpn.adoc b/src/content/en/pastebin/2016/04/05/rpn.adoc
index c567d0d..c567d0d 100644
--- a/src/content/en/pastebins/2016/04/05/rpn.adoc
+++ b/src/content/en/pastebin/2016/04/05/rpn.adoc
diff --git a/src/content/en/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/en/pastebins/2018/07/11/nix-pinning.adoc
+++ b/src/content/en/pastebin/2018/07/11/nix-pinning.adoc
diff --git a/src/content/en/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/en/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/en/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/en/pastebins/2018/07/13/guixbuilder-nixos.adoc
+++ b/src/content/en/pastebin/2018/07/13/guixbuilder-nixos.adoc
diff --git a/src/content/en/pastebins/2018/07/13/guixbuilder.adoc b/src/content/en/pastebin/2018/07/13/guixbuilder.adoc
index 35057f9..35057f9 100644
--- a/src/content/en/pastebins/2018/07/13/guixbuilder.adoc
+++ b/src/content/en/pastebin/2018/07/13/guixbuilder.adoc
diff --git a/src/content/en/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/en/pastebins/2018/07/13/nix-strpad.adoc
+++ b/src/content/en/pastebin/2018/07/13/nix-strpad.adoc
diff --git a/src/content/en/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/en/pastebins/2018/07/25/nix-exps.adoc
+++ b/src/content/en/pastebin/2018/07/25/nix-exps.adoc
diff --git a/src/content/en/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/en/pastebins/2018/07/25/nix-showdrv.adoc
+++ b/src/content/en/pastebin/2018/07/25/nix-showdrv.adoc
diff --git a/src/content/en/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/en/pastebins/2019/06/08/inconsistent-hash.adoc
+++ b/src/content/en/pastebin/2019/06/08/inconsistent-hash.adoc
diff --git a/src/content/en/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/en/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/en/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/en/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/en/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/en/pastebins/2020/02/14/guix-shebang.adoc
+++ b/src/content/en/pastebin/2020/02/14/guix-shebang.adoc
diff --git a/src/content/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/pastebins/2021/06/22/curl-wget.adoc
+++ b/src/content/en/pastebin/2021/06/22/curl-wget.adoc
diff --git a/src/content/en/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/en/pastebins/2021/08/11/h1-spacing.adoc
+++ b/src/content/en/pastebin/2021/08/11/h1-spacing.adoc
diff --git a/src/content/en/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/en/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/en/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/en/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/en/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/en/pastebins/2022/07/14/git-cleanup.adoc
+++ b/src/content/en/pastebin/2022/07/14/git-cleanup.adoc
diff --git a/src/content/en/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/en/pastebins/2023/07/22/funcallable-amop.adoc
+++ b/src/content/en/pastebin/2023/07/22/funcallable-amop.adoc
diff --git a/src/content/en/pastebins/categories.adoc b/src/content/en/pastebin/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/en/pastebins/categories.adoc
+++ b/src/content/en/pastebin/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/en/pastebins/index.adoc b/src/content/en/pastebin/index.adoc
index 433a2c1..433a2c1 100644
--- a/src/content/en/pastebins/index.adoc
+++ b/src/content/en/pastebin/index.adoc
diff --git a/src/content/en/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/en/podcasts/2020/12/19/test-entry.adoc
+++ b/src/content/en/podcast/2020/12/19/test-entry.adoc
diff --git a/src/content/en/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/en/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/podcasts/2020/12/19/test-entry.ogg b/src/content/en/podcast/2020/12/19/test-entry.ogg
index 9bf5500..9bf5500 100644
--- a/src/content/en/podcasts/2020/12/19/test-entry.ogg
+++ b/src/content/en/podcast/2020/12/19/test-entry.ogg
Binary files differ
diff --git a/src/content/en/screencasts/categories.adoc b/src/content/en/podcast/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/en/screencasts/categories.adoc
+++ b/src/content/en/podcast/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/en/podcasts/index.adoc b/src/content/en/podcast/index.adoc
index 1f17da7..1f17da7 100644
--- a/src/content/en/podcasts/index.adoc
+++ b/src/content/en/podcast/index.adoc
diff --git a/src/content/en/podcasts/2020/12/19/test-entry.flac.torrent b/src/content/en/podcasts/2020/12/19/test-entry.flac.torrent
deleted file mode 100644
index 519fb2f..0000000
--- a/src/content/en/podcasts/2020/12/19/test-entry.flac.torrent
+++ /dev/null
Binary files differ
diff --git a/src/content/en/podcasts/2020/12/19/test-entry.ogg.torrent b/src/content/en/podcasts/2020/12/19/test-entry.ogg.torrent
deleted file mode 100644
index 901eac3..0000000
--- a/src/content/en/podcasts/2020/12/19/test-entry.ogg.torrent
+++ /dev/null
@@ -1 +0,0 @@
-d10:created by13:mktorrent 1.14:infod6:lengthi97060e12:x_cross_seed42:mktorrent-9934A4BD4BF787E1BD685FCE62C6057A4:name14:test-entry.ogg12:piece lengthi32768e6:pieces60:dTKf^Q_e]OI}PG+'wg/2Ҥp_y_6!S<e8:url-list57:https://euandre.org/en/podcasts/2020/12/19/test-entry.ogge \ No newline at end of file
diff --git a/src/content/en/screencasts/2021/02/07/autoqemu.adoc b/src/content/en/screencast/2021/02/07/autoqemu.adoc
index b20b092..b20b092 100644
--- a/src/content/en/screencasts/2021/02/07/autoqemu.adoc
+++ b/src/content/en/screencast/2021/02/07/autoqemu.adoc
diff --git a/src/content/en/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/en/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/en/screencasts/2021/02/07/autoqemu.webm b/src/content/en/screencast/2021/02/07/autoqemu.webm
index f553efb..f553efb 100644
--- a/src/content/en/screencasts/2021/02/07/autoqemu.webm
+++ b/src/content/en/screencast/2021/02/07/autoqemu.webm
Binary files differ
diff --git a/src/content/en/tils/categories.adoc b/src/content/en/screencast/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/en/tils/categories.adoc
+++ b/src/content/en/screencast/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/en/screencasts/index.adoc b/src/content/en/screencast/index.adoc
index 083adac..083adac 100644
--- a/src/content/en/screencasts/index.adoc
+++ b/src/content/en/screencast/index.adoc
diff --git a/src/content/en/screencasts/2021/02/07/autoqemu.webm.torrent b/src/content/en/screencasts/2021/02/07/autoqemu.webm.torrent
deleted file mode 100644
index 24bfe73..0000000
--- a/src/content/en/screencasts/2021/02/07/autoqemu.webm.torrent
+++ /dev/null
Binary files differ
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/en/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides b/src/content/en/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides
deleted file mode 100644
index 22770e6..0000000
--- a/src/content/en/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/en/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides b/src/content/en/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides
deleted file mode 100644
index 8f17982..0000000
--- a/src/content/en/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/en/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/en/tils/2020/08/12/filename-timestamp.adoc
+++ b/src/content/en/til/2020/08/12/filename-timestamp.adoc
diff --git a/src/content/en/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/en/tils/2020/08/13/code-jekyll.adoc
+++ b/src/content/en/til/2020/08/13/code-jekyll.adoc
diff --git a/src/content/en/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/en/tils/2020/08/14/browse-git.adoc
+++ b/src/content/en/til/2020/08/14/browse-git.adoc
diff --git a/src/content/en/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/en/tils/2020/08/16/git-search.adoc
+++ b/src/content/en/til/2020/08/16/git-search.adoc
diff --git a/src/content/en/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/en/tils/2020/08/28/grep-online.adoc
+++ b/src/content/en/til/2020/08/28/grep-online.adoc
diff --git a/src/content/en/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/en/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/en/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/en/tils/2020/09/05/oldschool-pr.adoc
+++ b/src/content/en/til/2020/09/05/oldschool-pr.adoc
diff --git a/src/content/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/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/en/tils/2020/11/12/useful-bashvars.adoc
+++ b/src/content/en/til/2020/11/12/useful-bashvars.adoc
diff --git a/src/content/en/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/en/tils/2020/11/14/gpodder-media.adoc
+++ b/src/content/en/til/2020/11/14/gpodder-media.adoc
diff --git a/src/content/en/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/en/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/en/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/en/tils/2020/12/15/shellcheck-repo.adoc
+++ b/src/content/en/til/2020/12/15/shellcheck-repo.adoc
diff --git a/src/content/en/tils/2020/12/29/svg.adoc b/src/content/en/til/2020/12/29/svg.adoc
index e0e75a5..e0e75a5 100644
--- a/src/content/en/tils/2020/12/29/svg.adoc
+++ b/src/content/en/til/2020/12/29/svg.adoc
diff --git a/src/content/en/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/en/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/en/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/en/tils/2021/01/17/posix-shebang.adoc
+++ b/src/content/en/til/2021/01/17/posix-shebang.adoc
diff --git a/src/content/en/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/en/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/en/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/en/tils/2021/04/24/clojure-autocurry.adoc
+++ b/src/content/en/til/2021/04/24/clojure-autocurry.adoc
diff --git a/src/content/en/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/en/tils/2021/04/24/scm-nif.adoc
+++ b/src/content/en/til/2021/04/24/scm-nif.adoc
diff --git a/src/content/en/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/en/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/en/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/en/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/podcasts/categories.adoc b/src/content/en/til/categories.adoc
index f29acda..feb64ff 100644
--- a/src/content/en/podcasts/categories.adoc
+++ b/src/content/en/til/categories.adoc
@@ -1 +1,2 @@
= Articles by category
+:type: categories
diff --git a/src/content/en/tils/index.adoc b/src/content/en/til/index.adoc
index 7e85335..7e85335 100644
--- a/src/content/en/tils/index.adoc
+++ b/src/content/en/til/index.adoc
diff --git a/src/content/favicon.png b/src/content/favicon.png
index a416e71..136d8cb 100644
--- a/src/content/favicon.png
+++ 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.txt b/src/content/public.asc.txt
index 6559b02..d548547 100644
--- a/src/content/public.asc.txt
+++ b/src/content/public.asc.txt
@@ -36,51 +36,64 @@ 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
-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
-s5K/1f77Aqr6hdYRfw5KqGs=
-=0+B8
+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
+=bNun
-----END PGP PUBLIC KEY BLOCK-----
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;