aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore50
-rw-r--r--Makefile200
-rw-r--r--deps.mk522
-rwxr-xr-xmkdeps.sh81
-rw-r--r--src/base.conf13
l---------src/collections/blog1
l---------src/collections/pastebins1
l---------src/collections/podcasts1
l---------src/collections/screencasts1
l---------src/collections/tils1
-rw-r--r--src/content/about.adoc9
-rw-r--r--src/content/blog/2018/07/17/guix-nixos.adoc (renamed from _articles/2018-07-17-running-guix-on-nixos.md)0
-rw-r--r--src/content/blog/2018/08/01/npm-ci-reproducibility.adoc (renamed from _articles/2018-08-01-verifying-npm-ci-reproducibility.md)0
-rw-r--r--src/content/blog/2018/12/21/ytdl-subs.adoc (renamed from _articles/2018-12-21-using-youtube-dl-to-manage-youtube-subscriptions.md)0
-rw-r--r--src/content/blog/2019/06/02/nixos-stateless-workstation.adoc (renamed from _articles/2019-06-02-using-nixos-as-an-stateless-workstation.md)8
-rw-r--r--src/content/blog/2020/08/10/guix-srht.adoc (renamed from _articles/2020-08-10-guix-inside-sourcehut-builds-sr-ht-ci.md)0
-rw-r--r--src/content/blog/2020/08/31/database-i-with-i-had.adoc (renamed from _articles/2020-08-31-the-database-i-wish-i-had.md)0
-rw-r--r--src/content/blog/2020/10/05/cargo2nix-demo.tar.gz (renamed from static/attachments/cargo2nix-demo.tar.gz)bin174080 -> 174080 bytes
-rw-r--r--src/content/blog/2020/10/05/cargo2nix.adoc (renamed from _articles/2020-10-05-cargo2nix-dramatically-simpler-rust-in-nix.md)4
-rw-r--r--src/content/blog/2020/10/05/cargo2nix.tar.gz (renamed from static/attachments/cargo2nix.tar.gz)bin143360 -> 143360 bytes
-rw-r--r--src/content/blog/2020/10/05/swift2nix-demo.tar.gz (renamed from static/attachments/swift2nix-demo.tar.gz)bin174080 -> 174080 bytes
-rw-r--r--src/content/blog/2020/10/05/swift2nix.adoc (renamed from _articles/2020-10-05-swift2nix-run-swift-inside-nix-builds.md)4
-rw-r--r--src/content/blog/2020/10/05/swift2nix.tar.gz (renamed from static/attachments/swift2nix.tar.gz)bin143360 -> 143360 bytes
-rw-r--r--src/content/blog/2020/10/19/feature-flags.adoc (renamed from _articles/2020-10-19-feature-flags-differences-between-backend-frontend-and-mobile.md)0
-rw-r--r--src/content/blog/2020/10/20/wrong-interviewing.adoc (renamed from _articles/2020-10-20-how-not-to-interview-engineers.md)0
-rw-r--r--src/content/blog/2020/11/07/diy-bugs.adoc (renamed from _articles/2020-11-07-diy-an-offline-bug-tracker-with-text-files-git-and-email.md)0
-rw-r--r--src/content/blog/2020/11/08/paradigm-shift-review.adoc (renamed from _articles/2020-11-08-the-next-paradigm-shift-in-programming-video-review.md)0
-rw-r--r--src/content/blog/2020/11/12/database-parsers-trees.adoc (renamed from _articles/2020-11-12-durable-persistent-trees-and-parser-combinators-building-a-database.md)20
-rw-r--r--src/content/blog/2020/11/14/local-first-review.adoc (renamed from _articles/2020-11-14-local-first-software-you-own-your-data-in-spite-of-the-cloud-article-review.md)18
-rw-r--r--src/content/blog/2021/01/26/remembering-ann.adoc (renamed from _articles/2021-01-26-ann-remembering-add-memory-to-dmenu-fzf-and-similar-tools.md)0
-rw-r--r--src/content/blog/2021/02/17/fallible.adoc (renamed from _articles/2021-02-17-ann-fallible-fault-injection-library-for-stress-testing-failure-scenarios.md)4
-rw-r--r--src/content/blog/2021/02/17/fallible.tar.gz (renamed from static/attachments/fallible.tar.gz)bin3174400 -> 3174400 bytes
-rw-r--r--src/content/blog/2021/04/29/relational-review.adoc (renamed from _articles/2021-04-29-a-relational-model-of-data-for-large-shared-data-banks-article-review.md)0
-rw-r--r--src/content/blog/index.adoc1
-rw-r--r--src/content/img/atom.svg (renamed from static/atom.svg)0
-rw-r--r--src/content/img/envelope.svg (renamed from static/envelope.svg)0
-rw-r--r--src/content/img/favicon.svg (renamed from static/lord-favicon.svg)0
-rw-r--r--src/content/img/link.svg (renamed from static/link.svg)0
-rw-r--r--src/content/img/lock.svg (renamed from static/lock.svg)0
-rw-r--r--src/content/index.adoc1
-rw-r--r--src/content/pastebins/2016/04/05/rpn.adoc (renamed from _pastebins/2016-04-05-rpn-macro-setup.md)0
-rw-r--r--src/content/pastebins/2018/07/11/nix-pinning.adoc (renamed from _pastebins/2018-07-11-nix-pinning.md)0
-rw-r--r--src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc (renamed from _pastebins/2018-07-13-gnu-guix-systemd-daemon-for-nixos.md)0
-rw-r--r--src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc (renamed from _pastebins/2018-07-13-guix-users-in-nixos-system-configuration.md)0
-rw-r--r--src/content/pastebins/2018/07/13/guixbuilder.adoc (renamed from _pastebins/2018-07-13-guix-builder-user-creation-commands.md)0
-rw-r--r--src/content/pastebins/2018/07/13/nix-strpad.adoc (renamed from _pastebins/2018-07-13-nix-string-padding.md)0
-rw-r--r--src/content/pastebins/2018/07/25/nix-exps.adoc (renamed from _pastebins/2018-07-25-nix-exps.md)0
-rw-r--r--src/content/pastebins/2018/07/25/nix-showdrv.adoc (renamed from _pastebins/2018-07-25-nix-show-derivation-sample-output.md)0
-rw-r--r--src/content/pastebins/2019/06/08/inconsistent-hash.adoc (renamed from _pastebins/2019-06-08-inconsistent-hash-of-buildgomodule.md)0
-rw-r--r--src/content/pastebins/2019/12/29/raku-tuple-type.adoc (renamed from _pastebins/2019-12-29-raku-tuple-type-annotation.md)0
-rw-r--r--src/content/pastebins/2020/01/04/guix-import-failure.adoc (renamed from _pastebins/2020-01-04-failure-on-guix-tex-live-importer.md)0
-rw-r--r--src/content/pastebins/2020/02/14/guix-shebang.adoc (renamed from _pastebins/2020-02-14-guix-shebang.md)0
-rw-r--r--src/content/pastebins/2020/11/27/guix-build-local.adoc (renamed from _pastebins/2020-11-27-guix-build-local-module.md)0
-rw-r--r--src/content/pastebins/2020/12/15/guix-pack-fail.adoc (renamed from _pastebins/2020-12-15-failure-with-relocatable-guix-pack-tarball.md)0
-rw-r--r--src/content/pastebins/2021/04/03/naive-slugify-js.adoc (renamed from _pastebins/2021-04-03-javascript-naive-slugify.md)0
-rw-r--r--src/content/pastebins/2021/06/08/reading-session-pt1.adoc (renamed from _pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md)0
-rw-r--r--src/content/pastebins/2021/06/22/curl-wget.adoc (renamed from _pastebins/2021-06-22-cloc-curl-and-wget.md)0
-rw-r--r--src/content/pastebins/2021/08/11/h1-spacing.adoc (renamed from _pastebins/2021-08-11-spaces-around-h1-tags.md)0
-rw-r--r--src/content/pastebins/2021/09/02/sicp-3-19.adoc (renamed from _pastebins/2021-09-02-sicp-exercise-3-19.md)0
-rw-r--r--src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc (renamed from _pastebins/2021-09-03-sicp-persistent-amortized-o1-queue.md)0
-rw-r--r--src/content/pastebins/2022/07/14/git-cleanup.adoc (renamed from _pastebins/2022-07-14-git-cleanup-command.md)0
-rw-r--r--src/content/pastebins/2023/07/22/funcallable-amop.adoc (renamed from _pastebins/2023-07-22-funcallable-amop.md)0
-rw-r--r--src/content/pastebins/index.adoc1
-rw-r--r--src/content/podcasts/2020/12/19/test-entry.adoc (renamed from _podcasts/2020-12-19-a-test-entry.md)15
-rw-r--r--src/content/podcasts/2020/12/19/test-entry.flac (renamed from resources/podcasts/2020-12-19-a-test-entry.flac)bin462864 -> 462864 bytes
-rw-r--r--src/content/podcasts/index.adoc1
-rw-r--r--src/content/pt/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md (renamed from _tils/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md)0
-rw-r--r--src/content/screencasts/2021/02/07/autoqemu.adoc (renamed from _screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.md)16
-rw-r--r--src/content/screencasts/2021/02/07/autoqemu.tar.gz (renamed from static/attachments/autoqemu.tar.gz)bin808960 -> 808960 bytes
-rw-r--r--src/content/screencasts/2021/02/07/autoqemu.webm (renamed from resources/screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.webm)bin12103021 -> 12103021 bytes
-rw-r--r--src/content/screencasts/index.adoc1
-rw-r--r--src/content/slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides (renamed from _slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides)0
-rw-r--r--src/content/slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides (renamed from _slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides)0
-rw-r--r--src/content/tils/2020/08/12/filename-timestamp.adoc (renamed from _tils/2020-08-12-simple-filename-timestamp.md)0
-rw-r--r--src/content/tils/2020/08/13/code-jekyll.adoc (renamed from _tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.md)0
-rw-r--r--src/content/tils/2020/08/14/browse-git.adoc (renamed from _tils/2020-08-14-browse-a-git-repository-at-a-specific-commit.md)0
-rw-r--r--src/content/tils/2020/08/16/git-search.adoc (renamed from _tils/2020-08-16-search-in-git.md)0
-rw-r--r--src/content/tils/2020/08/28/grep-online.adoc (renamed from _tils/2020-08-28-grep-online-repositories.md)0
-rw-r--r--src/content/tils/2020/09/04/email-cli-fun-profit.adoc (renamed from _tils/2020-09-04-send-emails-using-the-command-line-for-fun-and-profit.md)0
-rw-r--r--src/content/tils/2020/09/05/oldschool-pr.adoc (renamed from _tils/2020-09-05-pull-requests-with-git-the-old-school-way.md)0
-rw-r--r--src/content/tils/2020/10/11/search-git-history.adoc (renamed from _tils/2020-10-11-search-changes-to-a-filename-pattern-in-git-history.md)0
-rw-r--r--src/content/tils/2020/11/08/find-broken-symlink.adoc (renamed from _tils/2020-11-08-find-broken-symlinks-with-find.md)0
-rw-r--r--src/content/tils/2020/11/12/diy-nix-bash-ci.adoc (renamed from _tils/2020-11-12-diy-bare-bones-ci-server-with-bash-and-nix.md)0
-rw-r--r--src/content/tils/2020/11/12/git-bisect-automation.adoc (renamed from _tils/2020-11-12-git-bisect-automation.md)0
-rw-r--r--src/content/tils/2020/11/12/useful-bashvars.adoc (renamed from _tils/2020-11-12-useful-bash-variables.md)0
-rw-r--r--src/content/tils/2020/11/14/gpodder-media.adoc (renamed from _tils/2020-11-14-gpodder-as-a-media-subscription-manager.md)0
-rw-r--r--src/content/tils/2020/11/30/git-notes-ci.adoc (renamed from _tils/2020-11-30-storing-ci-data-on-git-notes.md)0
-rw-r--r--src/content/tils/2020/12/15/shellcheck-repo.adoc (renamed from _tils/2020-12-15-awk-snippet-shellcheck-all-scripts-in-a-repository.md)0
-rw-r--r--src/content/tils/2020/12/29/svg.adoc (renamed from _tils/2020-12-29-svg-favicon.md)0
-rw-r--r--src/content/tils/2021/01/12/curl-awk-emails.adoc (renamed from _tils/2021-01-12-awk-snippet-send-email-to-multiple-recipients-with-curl.md)0
-rw-r--r--src/content/tils/2021/01/17/posix-shebang.adoc (renamed from _tils/2021-01-17-posix-sh-and-shebangs.md)6
-rw-r--r--src/content/tils/2021/04/24/cl-generic-precedence.adoc (renamed from _tils/2021-04-24-common-lisp-argument-precedence-order-parameterization-of-a-generic-function.md)0
-rw-r--r--src/content/tils/2021/04/24/clojure-autocurry.adoc (renamed from _tils/2021-04-24-clojure-auto-curry.md)0
-rw-r--r--src/content/tils/2021/04/24/scm-nif.adoc (renamed from _tils/2021-04-24-three-way-conditional-for-number-signs-on-lisp.md)0
-rw-r--r--src/content/tils/2021/07/23/git-tls-gpg.adoc (renamed from _tils/2021-07-23-gpg-verification-of-git-repositories-without-tls.md)0
-rw-r--r--src/content/tils/2021/08/11/js-bigint-reviver.adoc (renamed from _tils/2021-08-11-encoding-and-decoding-javascript-bigint-values-with-reviver.md)0
-rw-r--r--src/content/tils/index.adoc1
-rw-r--r--src/headers.txt1
l---------src/pages/root1
-rw-r--r--static/attachments/apollo-server-demo.tar.gzbin22681600 -> 0 bytes
100 files changed, 870 insertions, 113 deletions
diff --git a/.gitignore b/.gitignore
index 34ed78d..d457578 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,35 +1,15 @@
-/generated.mk
-
-# Nix
-/result*
-/tmp/
-
-# Jekyll
-/.bundle/
-/_site/
-/public/
-/.jekyll-cache/
-/images/graphviz/
-
-# Generated resources
-*.ogg
-*.torrent
-*.checksum
-/static/lord-favicon.png
-/music/*.pdf
-/music/*.midi
-/static/lord-favicon.ico
-/favicon.ico
-
-/drafts/
-
-/deps.mk
-/files.mk
-/torrent-files.txt
-
-/TODOs.html
-
-# JEKYLL_COMPAT
-/src/content/
-
-/logs/
+*.htmlbody
+*.conf
+*.snippets
+*.html
+*.html.*.txt
+*.indexentry
+*.feedentry
+*.sortdata
+index.htmlheader
+index.htmlfooter
+index.htmllisting
+index.htmldeps
+feed.xmldeps
+feed.xml
+/src/global.conf
diff --git a/Makefile b/Makefile
index 24c3e6c..0188a50 100644
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,196 @@
.POSIX:
-.DEFAULT:
- $(MAKE) generated.mk
- $(MAKE) -f dynamic.mk $<
+DATE = 1970-01-01
+VERSION = 0.1.0
+NAME = euandre.org
+NAME_UC = $(NAME)
+LANGUAGES = en
+## Installation prefix. Defaults to "/usr".
+PREFIX = /usr
+BINDIR = $(PREFIX)/bin
+LIBDIR = $(PREFIX)/lib
+INCLUDEDIR = $(PREFIX)/include
+SRCDIR = $(PREFIX)/src/$(NAME)
+SHAREDIR = $(PREFIX)/share
+LOCALEDIR = $(SHAREDIR)/locale
+MANDIR = $(SHAREDIR)/man
+DOCDIR = $(SHAREDIR)/doc/$(NAME)
+HTMLDIR = $(SHAREDIR)/html/$(NAME)
+EXEC = ./
+## Where to store the installation. Empty by default.
+DESTDIR =
+LDLIBS =
-all: generated.mk
- $(MAKE) -f dynamic.mk all
-generated.mk: ALWAYS JEKYLL_COMPAT
- sh src/development/dynmake.sh > $@
+.SUFFIXES:
+.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml .xmldeps
+.SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html
-ALWAYS:
+.adoc.conf:
+ mkwb conf src/global.conf $< > $@
+
+.adoc.htmlbody:
+ mkwb htmlbody $< > $@
+
+.htmlbody.html:
+ mkwb html $< > $@
+
+.conf.htmlheader:
+ mkwb html -H $< > $@
+
+.conf.htmlfooter:
+ mkwb html -F $< > $@
+
+.conf.htmllisting:
+ mkwb indexbody $< > $@
+
+.adoc.snippets:
+ mkwb snippets $< > $@
+
+.conf.indexentry:
+ mkwb indexentry $< > $@
+
+.htmlbody.feedentry:
+ mkwb feedentry $< > $@
+
+.conf.sortdata:
+ mkwb sortdata $< > $@
+
+
+
+all:
+include deps.mk
+
+
+sources.adoc = $(articles.adoc) $(listings.adoc) $(pages.adoc)
+sources.htmlbody = $(sources.adoc:.adoc=.htmlbody)
+sources.html = $(sources.adoc:.adoc=.html)
+sources.snippets = $(sources.adoc:.adoc=.snippets)
+sources.conf = $(sources.adoc:.adoc=.conf)
+articles.indexentry = $(articles.adoc:.adoc=.indexentry)
+articles.feedentry = $(articles.adoc:.adoc=.feedentry)
+articles.sortdata = $(articles.adoc:.adoc=.sortdata)
+listings.htmlheader = $(listings.adoc:.adoc=.htmlheader)
+listings.htmlfooter = $(listings.adoc:.adoc=.htmlfooter)
+listings.htmllisting = $(listings.adoc:.adoc=.htmllisting)
+listings.htmldeps = $(listings.adoc:.adoc=.htmldeps)
+listings.html = $(listings.adoc:.adoc=.html)
+feeds.xmldeps = $(feeds.xml:.xml=.xmldeps)
+
+sources = \
+ $(sources.adoc) \
+ $(images.svg) \
+ src/content/style.css \
+
+contents = \
+ $(sources.html) \
+ $(feeds.xml) \
+
+static-contents = \
+ $(sources.extras) \
+ $(images.svg) \
+ src/content/style.css \
+
+
+derived-assets = \
+ $(contents) \
+ $(sources.htmlbody) \
+ $(sources.snippets) \
+ $(sources.conf) \
+ src/global.conf \
+ $(listings.htmlheader) \
+ $(listings.htmlfooter) \
+ $(listings.htmllisting) \
+ $(listings.htmldeps) \
+ $(feeds.xmldeps) \
+ $(articles.indexentry) \
+ $(articles.feedentry) \
+ $(articles.sortdata) \
+
+side-assets = \
+ src/collections/*/*/*/*/*.html.*.txt \
+ src/collections/*/index.html.*.txt \
+ src/collections/*/*.sortdata \
+ src/pages/*/*.html.*.txt \
+
+
+
+## Default target. Builds all artifacts required for testing
+## and installation.
+all: $(derived-assets)
+
+
+$(derived-assets): Makefile deps.mk
+$(sources.conf): src/global.conf src/headers.txt
-JEKYLL_COMPAT:
- sh src/development/JEKYLL_COMPAT/copy-content.sh
+
+src/global.conf: src/base.conf
+ mkwb conf -G src/base.conf > $@
+
+$(listings.html):
+ cat $*.htmlheader $*.htmllisting $*.htmlbody $*.htmlfooter > $@
+
+$(feeds.xml):
+ mkwb feed src/global.conf $*.xmldeps > $@
+
+
+
+check-unit:
+
+
+integration-tests = \
+
+.PRECIOUS: $(integration-tests)
+$(integration-tests): ALWAYS
+ sh $@
+
+check-integration: $(integration-tests)
+
+
+## Run all tests. Each test suite is isolated, so that a parallel
+## build can run tests at the same time. The required artifacts
+## are created if missing.
+check: check-unit check-integration
+
+
+
+## Remove *all* derived artifacts produced during the build.
+## A dedicated test asserts that this is always true.
+clean:
+ rm -rf $(derived-assets) $(side-assets)
+
+
+## Installs into $(DESTDIR)$(PREFIX). Its dependency target
+## ensures that all installable artifacts are crafted beforehand.
+install: all
+ mkdir -p \
+ '$(DESTDIR)$(SRCDIR)' \
+
+ for f in $(contents) $(static-contents) `cat $(sources.snippets)`; do \
+ dir='$(DESTDIR)$(HTMLDIR)'/"`dirname "$${f#src/content/}"`"; \
+ mkdir -p "$$dir"; \
+ cp -P "$$f" "$$dir"; \
+ done
+ for f in $(sources); do \
+ dir='$(DESTDIR)$(SRCDIR)'/"`dirname "$${f#src/content/}"`"; \
+ mkdir -p "$$dir"; \
+ cp -P "$$f" "$$dir"; \
+ done
+
+## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror
+## of the "install" target, and removes *all* that was installed.
+## A dedicated test asserts that this is always true.
+uninstall:
+ rm -rf \
+ '$(DESTDIR)$(SRCDIR)' \
+ '$(DESTDIR)$(HTMLDIR)' \
+
+
+
+PORT = 3333
+## Run file server for local installed static files.
+run:
+ serve -n -p $(PORT) -d '$(DESTDIR)$(HTMLDIR)'
+
+
+ALWAYS:
diff --git a/deps.mk b/deps.mk
new file mode 100644
index 0000000..067d1f1
--- /dev/null
+++ b/deps.mk
@@ -0,0 +1,522 @@
+pages.adoc = \
+ src/content/about.adoc \
+ src/content/index.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-with-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/email-cli-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 \
+
+listings.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 \
+
+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 \
+
+images.svg = \
+ src/content/img/atom.svg \
+ src/content/img/envelope.svg \
+ src/content/img/favicon.svg \
+ src/content/img/link.svg \
+ src/content/img/lock.svg \
+
+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/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-with-i-had.htmlbody src/content/blog/2020/08/31/database-i-with-i-had.snippets src/content/blog/2020/08/31/database-i-with-i-had.conf: src/content/blog/2020/08/31/database-i-with-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/email-cli-fun-profit.htmlbody src/content/tils/2020/09/04/email-cli-fun-profit.snippets src/content/tils/2020/09/04/email-cli-fun-profit.conf: src/content/tils/2020/09/04/email-cli-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/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-with-i-had.html: src/content/blog/2020/08/31/database-i-with-i-had.conf src/content/blog/2020/08/31/database-i-with-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/email-cli-fun-profit.html: src/content/tils/2020/09/04/email-cli-fun-profit.conf src/content/tils/2020/09/04/email-cli-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/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-with-i-had.feedentry: src/content/blog/2020/08/31/database-i-with-i-had.conf src/content/blog/2020/08/31/database-i-with-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/email-cli-fun-profit.feedentry: src/content/tils/2020/09/04/email-cli-fun-profit.conf src/content/tils/2020/09/04/email-cli-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-with-i-had.sortdata: src/content/blog/2020/08/31/database-i-with-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/email-cli-fun-profit.sortdata: src/content/tils/2020/09/04/email-cli-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/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/index.htmllisting: src/content/blog/index.htmldeps
+src/content/pastebins/index.htmllisting: src/content/pastebins/index.htmldeps
+src/content/podcasts/index.htmllisting: src/content/podcasts/index.htmldeps
+src/content/screencasts/index.htmllisting: src/content/screencasts/index.htmldeps
+src/content/tils/index.htmllisting: src/content/tils/index.htmldeps
+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/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
+
+
+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-with-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.blog.sortdata = $(articles.blog.adoc:.adoc=.sortdata)
+articles.blog.indexentry = $(articles.blog.adoc:.adoc=.indexentry)
+articles.blog.feedentry = $(articles.blog.adoc:.adoc=.feedentry)
+src/content/blog/index.htmldeps: $(articles.blog.indexentry)
+src/content/blog/feed.xmldeps: $(articles.blog.feedentry)
+src/content/blog/index.htmldeps src/content/blog/feed.xmldeps: $(articles.blog.sortdata)
+ find $(articles.blog.sortdata) > $@
+
+src/content/blog/feed.xml: src/content/blog/feed.xmldeps
+
+
+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.pastebins.sortdata = $(articles.pastebins.adoc:.adoc=.sortdata)
+articles.pastebins.indexentry = $(articles.pastebins.adoc:.adoc=.indexentry)
+articles.pastebins.feedentry = $(articles.pastebins.adoc:.adoc=.feedentry)
+src/content/pastebins/index.htmldeps: $(articles.pastebins.indexentry)
+src/content/pastebins/feed.xmldeps: $(articles.pastebins.feedentry)
+src/content/pastebins/index.htmldeps src/content/pastebins/feed.xmldeps: $(articles.pastebins.sortdata)
+ find $(articles.pastebins.sortdata) > $@
+
+src/content/pastebins/feed.xml: src/content/pastebins/feed.xmldeps
+
+
+articles.podcasts.adoc = \
+ src/content/podcasts/2020/12/19/test-entry.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)
+src/content/podcasts/index.htmldeps: $(articles.podcasts.indexentry)
+src/content/podcasts/feed.xmldeps: $(articles.podcasts.feedentry)
+src/content/podcasts/index.htmldeps src/content/podcasts/feed.xmldeps: $(articles.podcasts.sortdata)
+ find $(articles.podcasts.sortdata) > $@
+
+src/content/podcasts/feed.xml: src/content/podcasts/feed.xmldeps
+
+
+articles.screencasts.adoc = \
+ src/content/screencasts/2021/02/07/autoqemu.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)
+src/content/screencasts/index.htmldeps: $(articles.screencasts.indexentry)
+src/content/screencasts/feed.xmldeps: $(articles.screencasts.feedentry)
+src/content/screencasts/index.htmldeps src/content/screencasts/feed.xmldeps: $(articles.screencasts.sortdata)
+ find $(articles.screencasts.sortdata) > $@
+
+src/content/screencasts/feed.xml: src/content/screencasts/feed.xmldeps
+
+
+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/email-cli-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.tils.sortdata = $(articles.tils.adoc:.adoc=.sortdata)
+articles.tils.indexentry = $(articles.tils.adoc:.adoc=.indexentry)
+articles.tils.feedentry = $(articles.tils.adoc:.adoc=.feedentry)
+src/content/tils/index.htmldeps: $(articles.tils.indexentry)
+src/content/tils/feed.xmldeps: $(articles.tils.feedentry)
+src/content/tils/index.htmldeps src/content/tils/feed.xmldeps: $(articles.tils.sortdata)
+ find $(articles.tils.sortdata) > $@
+
+src/content/tils/feed.xml: src/content/tils/feed.xmldeps
diff --git a/mkdeps.sh b/mkdeps.sh
new file mode 100755
index 0000000..505ccff
--- /dev/null
+++ b/mkdeps.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+set -eu
+
+export LANG=POSIX.UTF-8
+
+
+normalize() {
+ xargs realpath |
+ awk -vPWD="$PWD/" '{ print substr($0, length(PWD) + 1) }' |
+ sort
+}
+
+pages() {
+ find src/pages/*/*.adoc -type f | normalize
+}
+
+articles() {
+ find src/collections/*/*/ -type f -name '*.adoc' | normalize
+}
+
+listings() {
+ find src/collections/*/index.adoc | normalize
+}
+
+extras() {
+ find src/content/ -type f \
+ -name '*.flac' -or \
+ -name '*.webm' -or \
+ -name '*.tar.gz'
+}
+
+files() {
+ pages
+ articles
+ listings
+}
+
+
+pages | varlist 'pages.adoc'
+articles | varlist 'articles.adoc'
+listings | varlist 'listings.adoc'
+listings | sed 's|/index\.adoc$|/feed.xml|' | varlist 'feeds.xml'
+find src/content/img/ -name '*.svg' | varlist 'images.svg'
+extras | varlist 'sources.extras'
+
+
+files | sed 's/^\(.*\)\.adoc$/\1.htmlbody\t\1.snippets\t\1.conf:\t\1.adoc/'
+files | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.conf\t\1.htmlbody/'
+printf '\n'
+
+articles | sed 's/^\(.*\)\.adoc$/\1.feedentry:\t\1.conf\t\1.htmlbody/'
+articles | sed 's/^\(.*\)\.adoc$/\1.sortdata:\t\1.conf/'
+printf '\n'
+
+listings | sed 's/^\(.*\)\.adoc$/\1.htmlheader\t\1.htmlfooter:\t\1.conf/'
+listings | sed 's/^\(.*\)\.adoc$/\1.htmllisting:\t\1.htmldeps/'
+listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmlheader\t\1.htmlfooter/'
+listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmllisting\t\1.htmlbody/'
+
+for colllink in src/collections/*; do
+ c="$(printf '%s' "$colllink" | normalize)"
+
+ printf '\n\n'
+ name="$(basename "$c")"
+ find "$c"/*/ -type f -name '*.adoc' | varlist "articles.$name.adoc"
+ printf 'articles.%s.%s = $(articles.%s.adoc:.adoc=.%s)\n' \
+ "$name" 'sortdata ' "$name" 'sortdata'
+ printf 'articles.%s.%s = $(articles.%s.adoc:.adoc=.%s)\n' \
+ "$name" 'indexentry' "$name" 'indexentry'
+ printf 'articles.%s.%s = $(articles.%s.adoc:.adoc=.%s)\n' \
+ "$name" 'feedentry ' "$name" 'feedentry'
+
+
+ printf '%s/index.htmldeps: $(articles.%s.indexentry)\n' "$c" "$name"
+ printf '%s/feed.xmldeps: $(articles.%s.feedentry)\n' "$c" "$name"
+
+ printf '%s/index.htmldeps %s/feed.xmldeps: $(articles.%s.sortdata)\n' \
+ "$c" "$c" "$name"
+ printf '\tfind $(articles.%s.sortdata) > $@\n\n' "$name"
+ printf '%s/feed.xml:\t%s/feed.xmldeps\n' "$c" "$c"
+done
diff --git a/src/base.conf b/src/base.conf
new file mode 100644
index 0000000..54ccb99
--- /dev/null
+++ b/src/base.conf
@@ -0,0 +1,13 @@
+export root_dir=src/content
+export header_links=src/headers.txt
+export url_pre='https://euandre.org'
+export email='eu@euandre.org'
+export list_addr='~euandreh/public-inbox@lists.sr.ht'
+export discussions_url_prefix='https://lists.st.ht/~euandreh/public-inbox'
+export sourcecode_url='http://euandre.org/git'
+export sourcecode_url_prefix="$sourcecode_url/tree"
+export author='EuAndreh'
+export site_name="EuAndreh's website"
+export feed_title="EuAndreh's blog"
+export feed_url='feed.articles.en.xml'
+export feed_alternate_url='./'
diff --git a/src/collections/blog b/src/collections/blog
new file mode 120000
index 0000000..8c3a331
--- /dev/null
+++ b/src/collections/blog
@@ -0,0 +1 @@
+../content/blog \ No newline at end of file
diff --git a/src/collections/pastebins b/src/collections/pastebins
new file mode 120000
index 0000000..61731f2
--- /dev/null
+++ b/src/collections/pastebins
@@ -0,0 +1 @@
+../content/pastebins \ No newline at end of file
diff --git a/src/collections/podcasts b/src/collections/podcasts
new file mode 120000
index 0000000..8e5f3ba
--- /dev/null
+++ b/src/collections/podcasts
@@ -0,0 +1 @@
+../content/podcasts \ No newline at end of file
diff --git a/src/collections/screencasts b/src/collections/screencasts
new file mode 120000
index 0000000..09a6cdb
--- /dev/null
+++ b/src/collections/screencasts
@@ -0,0 +1 @@
+../content/screencasts \ No newline at end of file
diff --git a/src/collections/tils b/src/collections/tils
new file mode 120000
index 0000000..435da6e
--- /dev/null
+++ b/src/collections/tils
@@ -0,0 +1 @@
+../content/tils \ No newline at end of file
diff --git a/src/content/about.adoc b/src/content/about.adoc
new file mode 100644
index 0000000..f380ba9
--- /dev/null
+++ b/src/content/about.adoc
@@ -0,0 +1,9 @@
+= About
+
+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:~euandreh/public-inbox@lists.sr.ht[public inbox]
+([https://lists.sr.ht/~euandreh/public-inbox][archive]).
+
+This is my personal website where I write articles, publish software and more
+related work.
diff --git a/_articles/2018-07-17-running-guix-on-nixos.md b/src/content/blog/2018/07/17/guix-nixos.adoc
index 6005f9f..6005f9f 100644
--- a/_articles/2018-07-17-running-guix-on-nixos.md
+++ b/src/content/blog/2018/07/17/guix-nixos.adoc
diff --git a/_articles/2018-08-01-verifying-npm-ci-reproducibility.md b/src/content/blog/2018/08/01/npm-ci-reproducibility.adoc
index f896c6c..f896c6c 100644
--- a/_articles/2018-08-01-verifying-npm-ci-reproducibility.md
+++ b/src/content/blog/2018/08/01/npm-ci-reproducibility.adoc
diff --git a/_articles/2018-12-21-using-youtube-dl-to-manage-youtube-subscriptions.md b/src/content/blog/2018/12/21/ytdl-subs.adoc
index 183c624..183c624 100644
--- a/_articles/2018-12-21-using-youtube-dl-to-manage-youtube-subscriptions.md
+++ b/src/content/blog/2018/12/21/ytdl-subs.adoc
diff --git a/_articles/2019-06-02-using-nixos-as-an-stateless-workstation.md b/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
index d78c1d5..c0cfe75 100644
--- a/_articles/2019-06-02-using-nixos-as-an-stateless-workstation.md
+++ b/src/content/blog/2019/06/02/nixos-stateless-workstation.adoc
@@ -1,6 +1,4 @@
----
-
-title: Using NixOS as an stateless workstation
+= Using NixOS as an stateless workstation
date: 2019-06-02
@@ -55,7 +53,7 @@ After this positive experience with recreating my OS from simple Nix
expressions, I started to wonder how far I could go with this, and
started considering other areas of improvements:
-### First run on a fresh NixOS installation
+== First run on a fresh NixOS installation
Right now the initial setup relies on non-declarative manual tasks, like
decrypting some credentials, or manually downloading **this** git
@@ -64,7 +62,7 @@ repository with specific configurations before **that** one.
I wonder what some areas of improvements are on this topic, and if
investing on it is worth it (both time-wise and happiness-wise).
-### Emacs
+== Emacs
Right now I'm using the [Spacemacs](http://spacemacs.org/), which is a
community package curation and configuration on top of
diff --git a/_articles/2020-08-10-guix-inside-sourcehut-builds-sr-ht-ci.md b/src/content/blog/2020/08/10/guix-srht.adoc
index 4d7e8d5..4d7e8d5 100644
--- a/_articles/2020-08-10-guix-inside-sourcehut-builds-sr-ht-ci.md
+++ b/src/content/blog/2020/08/10/guix-srht.adoc
diff --git a/_articles/2020-08-31-the-database-i-wish-i-had.md b/src/content/blog/2020/08/31/database-i-with-i-had.adoc
index 7d127c1..7d127c1 100644
--- a/_articles/2020-08-31-the-database-i-wish-i-had.md
+++ b/src/content/blog/2020/08/31/database-i-with-i-had.adoc
diff --git a/static/attachments/cargo2nix-demo.tar.gz b/src/content/blog/2020/10/05/cargo2nix-demo.tar.gz
index 281a91c..281a91c 100644
--- a/static/attachments/cargo2nix-demo.tar.gz
+++ b/src/content/blog/2020/10/05/cargo2nix-demo.tar.gz
Binary files differ
diff --git a/_articles/2020-10-05-cargo2nix-dramatically-simpler-rust-in-nix.md b/src/content/blog/2020/10/05/cargo2nix.adoc
index 368b62a..1db3d0c 100644
--- a/_articles/2020-10-05-cargo2nix-dramatically-simpler-rust-in-nix.md
+++ b/src/content/blog/2020/10/05/cargo2nix.adoc
@@ -1,6 +1,4 @@
----
-
-title: "cargo2nix: Dramatically simpler Rust in Nix"
+= cargo2nix: Dramatically simpler Rust in Nix
date: 2020-10-05 2
diff --git a/static/attachments/cargo2nix.tar.gz b/src/content/blog/2020/10/05/cargo2nix.tar.gz
index 8a9985a..8a9985a 100644
--- a/static/attachments/cargo2nix.tar.gz
+++ b/src/content/blog/2020/10/05/cargo2nix.tar.gz
Binary files differ
diff --git a/static/attachments/swift2nix-demo.tar.gz b/src/content/blog/2020/10/05/swift2nix-demo.tar.gz
index f688572..f688572 100644
--- a/static/attachments/swift2nix-demo.tar.gz
+++ b/src/content/blog/2020/10/05/swift2nix-demo.tar.gz
Binary files differ
diff --git a/_articles/2020-10-05-swift2nix-run-swift-inside-nix-builds.md b/src/content/blog/2020/10/05/swift2nix.adoc
index c922589..84f4d34 100644
--- a/_articles/2020-10-05-swift2nix-run-swift-inside-nix-builds.md
+++ b/src/content/blog/2020/10/05/swift2nix.adoc
@@ -1,6 +1,4 @@
----
-
-title: "swift2nix: Run Swift inside Nix builds"
+= swift2nix: Run Swift inside Nix builds
date: 2020-10-05 1
diff --git a/static/attachments/swift2nix.tar.gz b/src/content/blog/2020/10/05/swift2nix.tar.gz
index bfab3f1..bfab3f1 100644
--- a/static/attachments/swift2nix.tar.gz
+++ b/src/content/blog/2020/10/05/swift2nix.tar.gz
Binary files differ
diff --git a/_articles/2020-10-19-feature-flags-differences-between-backend-frontend-and-mobile.md b/src/content/blog/2020/10/19/feature-flags.adoc
index c62c2d1..c62c2d1 100644
--- a/_articles/2020-10-19-feature-flags-differences-between-backend-frontend-and-mobile.md
+++ b/src/content/blog/2020/10/19/feature-flags.adoc
diff --git a/_articles/2020-10-20-how-not-to-interview-engineers.md b/src/content/blog/2020/10/20/wrong-interviewing.adoc
index 9cdfefb..9cdfefb 100644
--- a/_articles/2020-10-20-how-not-to-interview-engineers.md
+++ b/src/content/blog/2020/10/20/wrong-interviewing.adoc
diff --git a/_articles/2020-11-07-diy-an-offline-bug-tracker-with-text-files-git-and-email.md b/src/content/blog/2020/11/07/diy-bugs.adoc
index b1dd117..b1dd117 100644
--- a/_articles/2020-11-07-diy-an-offline-bug-tracker-with-text-files-git-and-email.md
+++ b/src/content/blog/2020/11/07/diy-bugs.adoc
diff --git a/_articles/2020-11-08-the-next-paradigm-shift-in-programming-video-review.md b/src/content/blog/2020/11/08/paradigm-shift-review.adoc
index c98c131..c98c131 100644
--- a/_articles/2020-11-08-the-next-paradigm-shift-in-programming-video-review.md
+++ b/src/content/blog/2020/11/08/paradigm-shift-review.adoc
diff --git a/_articles/2020-11-12-durable-persistent-trees-and-parser-combinators-building-a-database.md b/src/content/blog/2020/11/12/database-parsers-trees.adoc
index 05e800e..1870fad 100644
--- a/_articles/2020-11-12-durable-persistent-trees-and-parser-combinators-building-a-database.md
+++ b/src/content/blog/2020/11/12/database-parsers-trees.adoc
@@ -1,6 +1,4 @@
----
-
-title: Durable persistent trees and parser combinators - building a database
+= Durable persistent trees and parser combinators - building a database
date: 2020-11-12
@@ -22,7 +20,7 @@ I've made any progress on the database project
There are a few areas where I've made progress, and here's a public post on it.
-## Proof-of-concept: DAG log
+== Proof-of-concept: DAG log
The main thing I wanted to validate with a concrete implementation was the
concept of modeling a DAG on a sequence of datoms.
@@ -80,7 +78,7 @@ This code [already exists][clj-poc], but is yet fairly incomplete:
[clj-poc-o2-1]: https://euandre.org/git/mediator/tree/src/core/clojure/src/mediator.clj?id=db4a727bc24b54b50158827b34502de21dbf8948#n146
[clj-poc-o2-2]: https://euandre.org/git/mediator/tree/src/core/clojure/src/mediator.clj?id=db4a727bc24b54b50158827b34502de21dbf8948#n253
-## Top-down *and* bottom-up
+== Top-down *and* bottom-up
However, as time passed and I started looking at what the final implementation
would look like, I started to consider keeping the PoC around.
@@ -94,7 +92,7 @@ The good thing about a reference implementation is that it has no performance of
resources boundary, so if it ends up being 1000x slower and using 500× more
memory, it should be find. The code can be also 10x or 100x simpler, too.
-## Top-down: durable persistent trees
+== Top-down: durable persistent trees
In promoting the PoC into a reference implementation, this top-down approach now
needs to go beyond doing everything in memory, and the index data structure now
@@ -120,15 +118,15 @@ what it will look like:
building a new path from root to the leaf. The upside is that writes a lock
free, and no coordination is needed between readers and writers, ever;
-1. the downside is that a single leaf update means at least `H` new nodes that
+2. the downside is that a single leaf update means at least `H` new nodes that
will have to be flushed to disk, where `H` is the height of the tree. To avoid
that, the writer creates these nodes exclusively on the in-memory memtable, to
avoid flushing to disk on every leaf update;
-1. a background job will consolidate the memtable data every time it hits X MB,
+3. a background job will consolidate the memtable data every time it hits X MB,
and persist it to disk, amortizing the cost of the Copy-on-Write B-Tree;
-1. readers than will have the extra job of getting the latest relevant
+4. readers than will have the extra job of getting the latest relevant
disk-resident value and merge it with the memtable data.
The key difference to existing Copy-on-Write B-Trees is that the new trees
@@ -155,7 +153,7 @@ more[^learn-more-db] and mature it more.
"[Intro to Database Systems](https://www.youtube.com/playlist?list=PLSE8ODhjZXjbohkNBWQs_otTrBTrjyohi)"
course and Alex Petrov's "[Database Internals](https://www.databass.dev/)" book.
-## Bottom-up: parser combinators and FFI
+== Bottom-up: parser combinators and FFI
I chose Rust as it has the best WebAssembly tooling support.
@@ -226,7 +224,7 @@ and property-based testing for libedn.
[rust-ffi]: https://blog.eqrion.net/future-directions-for-cbindgen/
[libedn-repo]: https://euandre.org/git/libedn/
-## Conclusion
+== Conclusion
I've learned a lot already, and I feel the journey I'm on is worth going
through.
diff --git a/_articles/2020-11-14-local-first-software-you-own-your-data-in-spite-of-the-cloud-article-review.md b/src/content/blog/2020/11/14/local-first-review.adoc
index 68ae03c..c24095a 100644
--- a/_articles/2020-11-14-local-first-software-you-own-your-data-in-spite-of-the-cloud-article-review.md
+++ b/src/content/blog/2020/11/14/local-first-review.adoc
@@ -1,6 +1,4 @@
----
-
-title: "Local-First Software: You Own Your Data, in spite of the Cloud - article review"
+= Local-First Software: You Own Your Data, in spite of the Cloud - article review
date: 2020-11-14
@@ -21,7 +19,7 @@ This is a review of the article
"[Local-First Software: You Own Your Data, in spite of the Cloud][article-pdf]",
by M. Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan.
-### Offline-first, local-first
+== Offline-first, local-first
The "local-first" term they use isn't new, and I have used it myself in the past
to refer to this types of application, where the data lives primarily on the
@@ -44,7 +42,7 @@ around I think there's a chance people will prefer saying "local-first" in
[presentation]: {% link _slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides %}
[article-pdf]: https://martin.kleppmann.com/papers/local-first.pdf
-### Software licenses
+== Software licenses
On a footnote of the 7th ideal ("You Retain Ultimate Ownership and Control"),
the authors say:
@@ -138,7 +136,7 @@ to achieve "The Long Now".
It is less bad, but still not quite there yet.
-### Denial of existing solutions
+== Denial of existing solutions
When describing "Existing Data Storage and Sharing Models", on a
footnote[^devil] the authors say:
@@ -184,7 +182,7 @@ people don't do it already, since Git is built to work like that.
[git-local-first]: https://drewdevault.com/2018/07/23/Git-is-already-distributed.html
-### Ditching of web applications
+== Ditching of web applications
The authors put web application in a worse position for building local-first
application, claiming that:
@@ -216,7 +214,7 @@ applications are possible.
[pouchdb]: https://pouchdb.com/
[instant-apps]: https://developer.android.com/topic/google-play-instant
-### Costs are underrated
+== Costs are underrated
I think the costs of "old-fashioned apps" over "cloud apps" are underrated,
mainly regarding storage, and that this costs can vary a lot by application.
@@ -241,7 +239,7 @@ maintain, backup and store their content.
The dial measuring "cloud apps" and "old-fashioned apps" needs to be specific to
use-cases.
-### Real-time collaboration is optional
+== Real-time collaboration is optional
If I were the one making the list of ideals, I wouldn't focus so much on
real-time collaboration.
@@ -268,7 +266,7 @@ When discussing "working offline", I'd rather keep this type of person in mind,
then the subset of people who are offline when on the elevator will naturally be
included.
-### On CRDTs and developer experience
+== On CRDTs and developer experience
When discussing developer experience, the authors bring up some questions to be
answered further, like:
diff --git a/_articles/2021-01-26-ann-remembering-add-memory-to-dmenu-fzf-and-similar-tools.md b/src/content/blog/2021/01/26/remembering-ann.adoc
index 0d02384..0d02384 100644
--- a/_articles/2021-01-26-ann-remembering-add-memory-to-dmenu-fzf-and-similar-tools.md
+++ b/src/content/blog/2021/01/26/remembering-ann.adoc
diff --git a/_articles/2021-02-17-ann-fallible-fault-injection-library-for-stress-testing-failure-scenarios.md b/src/content/blog/2021/02/17/fallible.adoc
index 96c6f49..8a097f8 100644
--- a/_articles/2021-02-17-ann-fallible-fault-injection-library-for-stress-testing-failure-scenarios.md
+++ b/src/content/blog/2021/02/17/fallible.adoc
@@ -1,6 +1,4 @@
----
-
-title: "ANN: fallible - Fault injection library for stress-testing failure scenarios"
+= ANN: fallible - Fault injection library for stress-testing failure scenarios
date: 2021-02-17
diff --git a/static/attachments/fallible.tar.gz b/src/content/blog/2021/02/17/fallible.tar.gz
index 7bf2a58..7bf2a58 100644
--- a/static/attachments/fallible.tar.gz
+++ b/src/content/blog/2021/02/17/fallible.tar.gz
Binary files differ
diff --git a/_articles/2021-04-29-a-relational-model-of-data-for-large-shared-data-banks-article-review.md b/src/content/blog/2021/04/29/relational-review.adoc
index e15b478..e15b478 100644
--- a/_articles/2021-04-29-a-relational-model-of-data-for-large-shared-data-banks-article-review.md
+++ b/src/content/blog/2021/04/29/relational-review.adoc
diff --git a/src/content/blog/index.adoc b/src/content/blog/index.adoc
new file mode 100644
index 0000000..afd64d4
--- /dev/null
+++ b/src/content/blog/index.adoc
@@ -0,0 +1 @@
+= Blog
diff --git a/static/atom.svg b/src/content/img/atom.svg
index 37bace2..37bace2 100644
--- a/static/atom.svg
+++ b/src/content/img/atom.svg
diff --git a/static/envelope.svg b/src/content/img/envelope.svg
index c2251f4..c2251f4 100644
--- a/static/envelope.svg
+++ b/src/content/img/envelope.svg
diff --git a/static/lord-favicon.svg b/src/content/img/favicon.svg
index ce566b2..ce566b2 100644
--- a/static/lord-favicon.svg
+++ b/src/content/img/favicon.svg
diff --git a/static/link.svg b/src/content/img/link.svg
index e5c7050..e5c7050 100644
--- a/static/link.svg
+++ b/src/content/img/link.svg
diff --git a/static/lock.svg b/src/content/img/lock.svg
index 1a4a18e..1a4a18e 100644
--- a/static/lock.svg
+++ b/src/content/img/lock.svg
diff --git a/src/content/index.adoc b/src/content/index.adoc
new file mode 100644
index 0000000..275f7c4
--- /dev/null
+++ b/src/content/index.adoc
@@ -0,0 +1 @@
+= index
diff --git a/_pastebins/2016-04-05-rpn-macro-setup.md b/src/content/pastebins/2016/04/05/rpn.adoc
index 25ca6ba..25ca6ba 100644
--- a/_pastebins/2016-04-05-rpn-macro-setup.md
+++ b/src/content/pastebins/2016/04/05/rpn.adoc
diff --git a/_pastebins/2018-07-11-nix-pinning.md b/src/content/pastebins/2018/07/11/nix-pinning.adoc
index 2d35e09..2d35e09 100644
--- a/_pastebins/2018-07-11-nix-pinning.md
+++ b/src/content/pastebins/2018/07/11/nix-pinning.adoc
diff --git a/_pastebins/2018-07-13-gnu-guix-systemd-daemon-for-nixos.md b/src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc
index c2b8b62..c2b8b62 100644
--- a/_pastebins/2018-07-13-gnu-guix-systemd-daemon-for-nixos.md
+++ b/src/content/pastebins/2018/07/13/guix-nixos-systemd.adoc
diff --git a/_pastebins/2018-07-13-guix-users-in-nixos-system-configuration.md b/src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc
index 880d347..880d347 100644
--- a/_pastebins/2018-07-13-guix-users-in-nixos-system-configuration.md
+++ b/src/content/pastebins/2018/07/13/guixbuilder-nixos.adoc
diff --git a/_pastebins/2018-07-13-guix-builder-user-creation-commands.md b/src/content/pastebins/2018/07/13/guixbuilder.adoc
index 82204a8..82204a8 100644
--- a/_pastebins/2018-07-13-guix-builder-user-creation-commands.md
+++ b/src/content/pastebins/2018/07/13/guixbuilder.adoc
diff --git a/_pastebins/2018-07-13-nix-string-padding.md b/src/content/pastebins/2018/07/13/nix-strpad.adoc
index 359bda5..359bda5 100644
--- a/_pastebins/2018-07-13-nix-string-padding.md
+++ b/src/content/pastebins/2018/07/13/nix-strpad.adoc
diff --git a/_pastebins/2018-07-25-nix-exps.md b/src/content/pastebins/2018/07/25/nix-exps.adoc
index 23d75b6..23d75b6 100644
--- a/_pastebins/2018-07-25-nix-exps.md
+++ b/src/content/pastebins/2018/07/25/nix-exps.adoc
diff --git a/_pastebins/2018-07-25-nix-show-derivation-sample-output.md b/src/content/pastebins/2018/07/25/nix-showdrv.adoc
index 813965d..813965d 100644
--- a/_pastebins/2018-07-25-nix-show-derivation-sample-output.md
+++ b/src/content/pastebins/2018/07/25/nix-showdrv.adoc
diff --git a/_pastebins/2019-06-08-inconsistent-hash-of-buildgomodule.md b/src/content/pastebins/2019/06/08/inconsistent-hash.adoc
index 51d8ad3..51d8ad3 100644
--- a/_pastebins/2019-06-08-inconsistent-hash-of-buildgomodule.md
+++ b/src/content/pastebins/2019/06/08/inconsistent-hash.adoc
diff --git a/_pastebins/2019-12-29-raku-tuple-type-annotation.md b/src/content/pastebins/2019/12/29/raku-tuple-type.adoc
index 3d5ff34..3d5ff34 100644
--- a/_pastebins/2019-12-29-raku-tuple-type-annotation.md
+++ b/src/content/pastebins/2019/12/29/raku-tuple-type.adoc
diff --git a/_pastebins/2020-01-04-failure-on-guix-tex-live-importer.md b/src/content/pastebins/2020/01/04/guix-import-failure.adoc
index 3388a8d..3388a8d 100644
--- a/_pastebins/2020-01-04-failure-on-guix-tex-live-importer.md
+++ b/src/content/pastebins/2020/01/04/guix-import-failure.adoc
diff --git a/_pastebins/2020-02-14-guix-shebang.md b/src/content/pastebins/2020/02/14/guix-shebang.adoc
index 67d504d..67d504d 100644
--- a/_pastebins/2020-02-14-guix-shebang.md
+++ b/src/content/pastebins/2020/02/14/guix-shebang.adoc
diff --git a/_pastebins/2020-11-27-guix-build-local-module.md b/src/content/pastebins/2020/11/27/guix-build-local.adoc
index 350d50f..350d50f 100644
--- a/_pastebins/2020-11-27-guix-build-local-module.md
+++ b/src/content/pastebins/2020/11/27/guix-build-local.adoc
diff --git a/_pastebins/2020-12-15-failure-with-relocatable-guix-pack-tarball.md b/src/content/pastebins/2020/12/15/guix-pack-fail.adoc
index 2834f90..2834f90 100644
--- a/_pastebins/2020-12-15-failure-with-relocatable-guix-pack-tarball.md
+++ b/src/content/pastebins/2020/12/15/guix-pack-fail.adoc
diff --git a/_pastebins/2021-04-03-javascript-naive-slugify.md b/src/content/pastebins/2021/04/03/naive-slugify-js.adoc
index f765495..f765495 100644
--- a/_pastebins/2021-04-03-javascript-naive-slugify.md
+++ b/src/content/pastebins/2021/04/03/naive-slugify-js.adoc
diff --git a/_pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md b/src/content/pastebins/2021/06/08/reading-session-pt1.adoc
index b97ef08..b97ef08 100644
--- a/_pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md
+++ b/src/content/pastebins/2021/06/08/reading-session-pt1.adoc
diff --git a/_pastebins/2021-06-22-cloc-curl-and-wget.md b/src/content/pastebins/2021/06/22/curl-wget.adoc
index 1030c7b..1030c7b 100644
--- a/_pastebins/2021-06-22-cloc-curl-and-wget.md
+++ b/src/content/pastebins/2021/06/22/curl-wget.adoc
diff --git a/_pastebins/2021-08-11-spaces-around-h1-tags.md b/src/content/pastebins/2021/08/11/h1-spacing.adoc
index 9a00ece..9a00ece 100644
--- a/_pastebins/2021-08-11-spaces-around-h1-tags.md
+++ b/src/content/pastebins/2021/08/11/h1-spacing.adoc
diff --git a/_pastebins/2021-09-02-sicp-exercise-3-19.md b/src/content/pastebins/2021/09/02/sicp-3-19.adoc
index 75ee346..75ee346 100644
--- a/_pastebins/2021-09-02-sicp-exercise-3-19.md
+++ b/src/content/pastebins/2021/09/02/sicp-3-19.adoc
diff --git a/_pastebins/2021-09-03-sicp-persistent-amortized-o1-queue.md b/src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc
index 8cf7ea2..8cf7ea2 100644
--- a/_pastebins/2021-09-03-sicp-persistent-amortized-o1-queue.md
+++ b/src/content/pastebins/2021/09/03/sicp-persistent-queue.adoc
diff --git a/_pastebins/2022-07-14-git-cleanup-command.md b/src/content/pastebins/2022/07/14/git-cleanup.adoc
index 52cd17f..52cd17f 100644
--- a/_pastebins/2022-07-14-git-cleanup-command.md
+++ b/src/content/pastebins/2022/07/14/git-cleanup.adoc
diff --git a/_pastebins/2023-07-22-funcallable-amop.md b/src/content/pastebins/2023/07/22/funcallable-amop.adoc
index 37c79fe..37c79fe 100644
--- a/_pastebins/2023-07-22-funcallable-amop.md
+++ b/src/content/pastebins/2023/07/22/funcallable-amop.adoc
diff --git a/src/content/pastebins/index.adoc b/src/content/pastebins/index.adoc
new file mode 100644
index 0000000..433a2c1
--- /dev/null
+++ b/src/content/pastebins/index.adoc
@@ -0,0 +1 @@
+= Pastebins
diff --git a/_podcasts/2020-12-19-a-test-entry.md b/src/content/podcasts/2020/12/19/test-entry.adoc
index a9235eb..3ec8811 100644
--- a/_podcasts/2020-12-19-a-test-entry.md
+++ b/src/content/podcasts/2020/12/19/test-entry.adoc
@@ -1,20 +1,7 @@
----
-
-title: A test entry
-
-date: 2020-12-19
-
-layout: post
-
-lang: en
-
-ref: a-test-entry
-
-slug: a-test-entry
+= A test entry
audio: true
----
After.
diff --git a/resources/podcasts/2020-12-19-a-test-entry.flac b/src/content/podcasts/2020/12/19/test-entry.flac
index 786ab59..786ab59 100644
--- a/resources/podcasts/2020-12-19-a-test-entry.flac
+++ b/src/content/podcasts/2020/12/19/test-entry.flac
Binary files differ
diff --git a/src/content/podcasts/index.adoc b/src/content/podcasts/index.adoc
new file mode 100644
index 0000000..1f17da7
--- /dev/null
+++ b/src/content/podcasts/index.adoc
@@ -0,0 +1 @@
+= Podcasts
diff --git a/_tils/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md b/src/content/pt/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md
index 2e7fc32..2e7fc32 100644
--- a/_tils/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md
+++ b/src/content/pt/2020-08-12-nome-de-arquivo-com-timestamp-simplificado.md
diff --git a/_screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.md b/src/content/screencasts/2021/02/07/autoqemu.adoc
index 92a79c2..e295a71 100644
--- a/_screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.md
+++ b/src/content/screencasts/2021/02/07/autoqemu.adoc
@@ -1,21 +1,7 @@
----
-
-title: AutoQEMU - automate installation and SSH setup of ISO OS images
-
-date: 2021-02-07
-
-updated_at: 2022-03-06
-
-layout: post
-
-lang: en
-
-ref: autoqemu-automate-installation-and-ssh-setup-of-iso-os-images
+= AutoQEMU - automate installation and SSH setup of ISO OS images
video: true
----
-
After reading begriffs "[Tips for stable and portable software]", the
"Begriffs Buildfarm?" section caught my attention, as this is something I would
be interested in.
diff --git a/static/attachments/autoqemu.tar.gz b/src/content/screencasts/2021/02/07/autoqemu.tar.gz
index 3022f14..3022f14 100644
--- a/static/attachments/autoqemu.tar.gz
+++ b/src/content/screencasts/2021/02/07/autoqemu.tar.gz
Binary files differ
diff --git a/resources/screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.webm b/src/content/screencasts/2021/02/07/autoqemu.webm
index f553efb..f553efb 100644
--- a/resources/screencasts/2021-02-07-autoqemu-automate-installation-and-ssh-setup-of-iso-os-images.webm
+++ b/src/content/screencasts/2021/02/07/autoqemu.webm
Binary files differ
diff --git a/src/content/screencasts/index.adoc b/src/content/screencasts/index.adoc
new file mode 100644
index 0000000..083adac
--- /dev/null
+++ b/src/content/screencasts/index.adoc
@@ -0,0 +1 @@
+= Screencasts
diff --git a/_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
index 22770e6..22770e6 100644
--- a/_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
diff --git a/_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
index 33fc239..33fc239 100644
--- a/_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
diff --git a/_tils/2020-08-12-simple-filename-timestamp.md b/src/content/tils/2020/08/12/filename-timestamp.adoc
index 7495fc9..7495fc9 100644
--- a/_tils/2020-08-12-simple-filename-timestamp.md
+++ b/src/content/tils/2020/08/12/filename-timestamp.adoc
diff --git a/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.md b/src/content/tils/2020/08/13/code-jekyll.adoc
index 6566928..6566928 100644
--- a/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.md
+++ b/src/content/tils/2020/08/13/code-jekyll.adoc
diff --git a/_tils/2020-08-14-browse-a-git-repository-at-a-specific-commit.md b/src/content/tils/2020/08/14/browse-git.adoc
index d06f0c1..d06f0c1 100644
--- a/_tils/2020-08-14-browse-a-git-repository-at-a-specific-commit.md
+++ b/src/content/tils/2020/08/14/browse-git.adoc
diff --git a/_tils/2020-08-16-search-in-git.md b/src/content/tils/2020/08/16/git-search.adoc
index f3ae6f0..f3ae6f0 100644
--- a/_tils/2020-08-16-search-in-git.md
+++ b/src/content/tils/2020/08/16/git-search.adoc
diff --git a/_tils/2020-08-28-grep-online-repositories.md b/src/content/tils/2020/08/28/grep-online.adoc
index 8b3b63f..8b3b63f 100644
--- a/_tils/2020-08-28-grep-online-repositories.md
+++ b/src/content/tils/2020/08/28/grep-online.adoc
diff --git a/_tils/2020-09-04-send-emails-using-the-command-line-for-fun-and-profit.md b/src/content/tils/2020/09/04/email-cli-fun-profit.adoc
index 320f3ab..320f3ab 100644
--- a/_tils/2020-09-04-send-emails-using-the-command-line-for-fun-and-profit.md
+++ b/src/content/tils/2020/09/04/email-cli-fun-profit.adoc
diff --git a/_tils/2020-09-05-pull-requests-with-git-the-old-school-way.md b/src/content/tils/2020/09/05/oldschool-pr.adoc
index 5b4e445..5b4e445 100644
--- a/_tils/2020-09-05-pull-requests-with-git-the-old-school-way.md
+++ b/src/content/tils/2020/09/05/oldschool-pr.adoc
diff --git a/_tils/2020-10-11-search-changes-to-a-filename-pattern-in-git-history.md b/src/content/tils/2020/10/11/search-git-history.adoc
index 251abe9..251abe9 100644
--- a/_tils/2020-10-11-search-changes-to-a-filename-pattern-in-git-history.md
+++ b/src/content/tils/2020/10/11/search-git-history.adoc
diff --git a/_tils/2020-11-08-find-broken-symlinks-with-find.md b/src/content/tils/2020/11/08/find-broken-symlink.adoc
index bc97fc6..bc97fc6 100644
--- a/_tils/2020-11-08-find-broken-symlinks-with-find.md
+++ b/src/content/tils/2020/11/08/find-broken-symlink.adoc
diff --git a/_tils/2020-11-12-diy-bare-bones-ci-server-with-bash-and-nix.md b/src/content/tils/2020/11/12/diy-nix-bash-ci.adoc
index 3336482..3336482 100644
--- a/_tils/2020-11-12-diy-bare-bones-ci-server-with-bash-and-nix.md
+++ b/src/content/tils/2020/11/12/diy-nix-bash-ci.adoc
diff --git a/_tils/2020-11-12-git-bisect-automation.md b/src/content/tils/2020/11/12/git-bisect-automation.adoc
index 9c34b2a..9c34b2a 100644
--- a/_tils/2020-11-12-git-bisect-automation.md
+++ b/src/content/tils/2020/11/12/git-bisect-automation.adoc
diff --git a/_tils/2020-11-12-useful-bash-variables.md b/src/content/tils/2020/11/12/useful-bashvars.adoc
index 33a072e..33a072e 100644
--- a/_tils/2020-11-12-useful-bash-variables.md
+++ b/src/content/tils/2020/11/12/useful-bashvars.adoc
diff --git a/_tils/2020-11-14-gpodder-as-a-media-subscription-manager.md b/src/content/tils/2020/11/14/gpodder-media.adoc
index a74b225..a74b225 100644
--- a/_tils/2020-11-14-gpodder-as-a-media-subscription-manager.md
+++ b/src/content/tils/2020/11/14/gpodder-media.adoc
diff --git a/_tils/2020-11-30-storing-ci-data-on-git-notes.md b/src/content/tils/2020/11/30/git-notes-ci.adoc
index f8dd063..f8dd063 100644
--- a/_tils/2020-11-30-storing-ci-data-on-git-notes.md
+++ b/src/content/tils/2020/11/30/git-notes-ci.adoc
diff --git a/_tils/2020-12-15-awk-snippet-shellcheck-all-scripts-in-a-repository.md b/src/content/tils/2020/12/15/shellcheck-repo.adoc
index 71d10a3..71d10a3 100644
--- a/_tils/2020-12-15-awk-snippet-shellcheck-all-scripts-in-a-repository.md
+++ b/src/content/tils/2020/12/15/shellcheck-repo.adoc
diff --git a/_tils/2020-12-29-svg-favicon.md b/src/content/tils/2020/12/29/svg.adoc
index 54cca9a..54cca9a 100644
--- a/_tils/2020-12-29-svg-favicon.md
+++ b/src/content/tils/2020/12/29/svg.adoc
diff --git a/_tils/2021-01-12-awk-snippet-send-email-to-multiple-recipients-with-curl.md b/src/content/tils/2021/01/12/curl-awk-emails.adoc
index 880ddf1..880ddf1 100644
--- a/_tils/2021-01-12-awk-snippet-send-email-to-multiple-recipients-with-curl.md
+++ b/src/content/tils/2021/01/12/curl-awk-emails.adoc
diff --git a/_tils/2021-01-17-posix-sh-and-shebangs.md b/src/content/tils/2021/01/17/posix-shebang.adoc
index 938d1bd..5f5b897 100644
--- a/_tils/2021-01-17-posix-sh-and-shebangs.md
+++ b/src/content/tils/2021/01/17/posix-shebang.adoc
@@ -1,6 +1,4 @@
----
-
-title: POSIX sh and shebangs
+= POSIX sh and shebangs
date: 2021-01-17
@@ -49,7 +47,7 @@ set -eu
```
1. when running via `./script.sh`, if the system has an executable at `/bin/sh`, it will be used to run the script;
-1. when running via `sh script.sh`, the sh options aren't ignored as previously.
+2. when running via `sh script.sh`, the sh options aren't ignored as previously.
TIL.
diff --git a/_tils/2021-04-24-common-lisp-argument-precedence-order-parameterization-of-a-generic-function.md b/src/content/tils/2021/04/24/cl-generic-precedence.adoc
index 8051232..8051232 100644
--- a/_tils/2021-04-24-common-lisp-argument-precedence-order-parameterization-of-a-generic-function.md
+++ b/src/content/tils/2021/04/24/cl-generic-precedence.adoc
diff --git a/_tils/2021-04-24-clojure-auto-curry.md b/src/content/tils/2021/04/24/clojure-autocurry.adoc
index c1e277f..c1e277f 100644
--- a/_tils/2021-04-24-clojure-auto-curry.md
+++ b/src/content/tils/2021/04/24/clojure-autocurry.adoc
diff --git a/_tils/2021-04-24-three-way-conditional-for-number-signs-on-lisp.md b/src/content/tils/2021/04/24/scm-nif.adoc
index f53451b..f53451b 100644
--- a/_tils/2021-04-24-three-way-conditional-for-number-signs-on-lisp.md
+++ b/src/content/tils/2021/04/24/scm-nif.adoc
diff --git a/_tils/2021-07-23-gpg-verification-of-git-repositories-without-tls.md b/src/content/tils/2021/07/23/git-tls-gpg.adoc
index fd42c1c..fd42c1c 100644
--- a/_tils/2021-07-23-gpg-verification-of-git-repositories-without-tls.md
+++ b/src/content/tils/2021/07/23/git-tls-gpg.adoc
diff --git a/_tils/2021-08-11-encoding-and-decoding-javascript-bigint-values-with-reviver.md b/src/content/tils/2021/08/11/js-bigint-reviver.adoc
index d71174d..d71174d 100644
--- a/_tils/2021-08-11-encoding-and-decoding-javascript-bigint-values-with-reviver.md
+++ b/src/content/tils/2021/08/11/js-bigint-reviver.adoc
diff --git a/src/content/tils/index.adoc b/src/content/tils/index.adoc
new file mode 100644
index 0000000..4ae3b92
--- /dev/null
+++ b/src/content/tils/index.adoc
@@ -0,0 +1 @@
+= TIL
diff --git a/src/headers.txt b/src/headers.txt
new file mode 100644
index 0000000..994b8b8
--- /dev/null
+++ b/src/headers.txt
@@ -0,0 +1 @@
+about.html About
diff --git a/src/pages/root b/src/pages/root
new file mode 120000
index 0000000..efcdaa6
--- /dev/null
+++ b/src/pages/root
@@ -0,0 +1 @@
+../content \ No newline at end of file
diff --git a/static/attachments/apollo-server-demo.tar.gz b/static/attachments/apollo-server-demo.tar.gz
deleted file mode 100644
index 72bb6d5..0000000
--- a/static/attachments/apollo-server-demo.tar.gz
+++ /dev/null
Binary files differ