Compare commits

..

574 Commits

Author SHA1 Message Date
joeac 87527646fa certbot is --non-interactive 2026-07-07 13:29:26 +01:00
joeac 30af54b750 tls before nginx 2026-07-07 13:26:51 +01:00
joeac ac0ebb5302 add actualbudget 2026-07-07 13:25:30 +01:00
joeac 4bf24c2b18 mox_clientsettings: reverse proxy to mox 2026-07-07 13:06:55 +01:00
joeac 20b396effd adds mox nginx configs 2026-07-07 13:03:08 +01:00
joeac b3677dad4c zen, not sbl, .spamhaus.org 2026-07-07 11:13:32 +01:00
joeac b181f59f4c mkdir ~/mox/data if needed 2026-07-07 11:07:53 +01:00
joeac 5d849384bc chown tls_certs 2026-07-07 10:27:10 +01:00
joeac 5e640711ce fix cert-name in tls.mk 2026-07-07 10:22:32 +01:00
joeac 44e4605be8 adds install_tls rule 2026-07-07 10:11:01 +01:00
joeac 60ba3328fa improves certbot cmds 2026-07-07 10:07:17 +01:00
joeac 5a5301fefb fixes certonly command 2026-07-07 10:06:33 +01:00
joeac 4ee7c34161 mox depends on tls certs 2026-07-07 09:53:24 +01:00
joeac fe1d19a9c7 mox/reinstall 2026-07-07 09:49:24 +01:00
joeac 6d8541f052 install tls_domain, not tls_module 2026-07-07 09:48:09 +01:00
joeac ba2359f8b9 again 2026-07-07 09:41:35 +01:00
joeac 9ef09754be fix renew rule call 2026-07-07 09:37:48 +01:00
joeac cbe223166e certbot delete is non-interactive 2026-07-07 09:35:42 +01:00
joeac fb2785f694 again 2026-07-07 09:34:55 +01:00
joeac f9dcf157a0 fix delete_cert for real this time 2026-07-07 09:33:13 +01:00
joeac 83a482de03 fix syntax in delete_cert rule call 2026-07-07 09:30:11 +01:00
joeac 208f383925 if master node, install all subdomains, else none 2026-07-07 09:28:21 +01:00
joeac 05f9535a9b tls.mk: remove 'test' 2026-07-07 09:23:02 +01:00
joeac c18fd9c44e tls.mk: subdomains, not modules 2026-07-07 09:20:06 +01:00
joeac 07fa302d43 tls.mk 2026-07-07 09:10:58 +01:00
joeac 4a2b27f54a microlog post 2026-07-06 2026-07-06 12:58:25 +01:00
joeac ff507ea16a adds conf to mox deps 2026-07-05 23:23:01 +01:00
joeac 639196f0c9 install mox config 2026-07-05 23:18:11 +01:00
joeac 404cb2d98c also dirs != ordinary files 2026-07-05 23:08:02 +01:00
joeac 665d808660 fix case in last two commits 2026-07-05 23:06:29 +01:00
joeac 15027fef29 ditto, and fix dir 2026-07-05 23:05:18 +01:00
joeac 26ae12f638 calcs gemini_user in make, not shell 2026-07-05 23:04:09 +01:00
joeac 56393380b9 only make .env if dir exists 2026-07-05 23:01:56 +01:00
joeac d51d1a1266 adds mox_clientsettings to blade-canongate 2026-07-05 22:59:42 +01:00
joeac af5599ba54 missed a - 2026-07-05 22:58:57 +01:00
joeac ce8017c6d2 remove ref to removed install_dyndns rule 2026-07-05 22:47:45 +01:00
joeac b64f8ddffa replaces - with _ in vars 2026-07-05 22:30:21 +01:00
joeac e926d562c0 adds mox ports 2026-07-05 22:29:03 +01:00
joeac 064adbc0b7 adds mox sub-subdomains 2026-07-05 22:28:53 +01:00
joeac 4872b95c43 cp, not mv, resolv.conf 2026-07-05 16:30:24 +01:00
joeac 4547dd5681 unbound-anchor requires sudo 2026-07-05 16:27:06 +01:00
joeac 655ac1404a fix /etc/resolv.conf.joeac.net-backup rule 2026-07-05 16:24:12 +01:00
joeac 521d768635 adds mox 2026-07-05 16:09:20 +01:00
joeac f736c46b81 defines openrc rules for all modules (so they can be uninstalled) 2026-07-04 20:13:36 +01:00
joeac f537b99d02 uses IMAGE_PREFIX var in gemini.Dockerfile 2026-07-04 20:12:04 +01:00
joeac ad4b03871e moves container.mk vars to vars.mk so that IMAGE_PREFIX is defined
before it is used in COMPOSE_CMD
2026-07-04 20:11:07 +01:00
joeac 4ef4bbd4ad gives gemini pi-broughton -> blade-canongate 2026-07-04 20:02:02 +01:00
joeac 2e44bfa09a remove nginx site requires sudo 2026-07-04 14:25:49 +01:00
joeac 424b4c6971 uses ip addr instead of hostname to simplify dns config 2026-07-04 14:18:42 +01:00
joeac 4130448a55 swaps master node to blade-canongate 2026-07-04 08:43:00 +01:00
joeac ed6a6e5a34 update.sh exports XDG_RUNTIME_DIR 2026-07-03 16:29:17 +01:00
joeac 36ccd48cfc fix dollars in static.conf.template getting removed 2026-07-03 16:23:01 +01:00
joeac 61f2b376ee chown /var dirs 2026-07-03 16:02:05 +01:00
joeac b59888dc99 splits sudo to avoid env confusion 2026-07-03 15:50:14 +01:00
joeac d29e120c72 ...but for real this time 2026-07-03 15:40:15 +01:00
joeac 16cc43ad28 fix bin/pp again? 2026-07-03 15:37:36 +01:00
joeac 3773af632c fix bin/pp rule 2026-07-03 15:34:19 +01:00
joeac 2aeb58d9ed no quotes around COMPOSECMD 2026-07-03 15:23:13 +01:00
joeac affc7521d6 chmod +x for joeac.net openrc service 2026-07-03 15:21:41 +01:00
joeac f5a7d78d4f uses custom COMPOSECMD in joeac.net openrc services 2026-07-03 15:14:02 +01:00
joeac c42c636231 splits sudo to avoid env confusion 2026-07-03 15:08:46 +01:00
joeac 99b21dbe8e stores src in $HOME and more perm tweaks 2026-07-03 15:01:48 +01:00
joeac 3af4546839 adds XDG_RUNTIME_DIR explicitly in update.sh 2026-07-03 13:38:21 +01:00
joeac ace7801796 typo in openrc.mk: joeac.net.$(module) 2026-07-03 13:23:20 +01:00
joeac 7d0a920c8c provides ETHERPAD_VERSION in vars.mk 2026-07-03 12:37:02 +01:00
joeac f24f1ff4b7 provides ALPINE_VERSION in vars.mk 2026-07-03 12:31:49 +01:00
joeac 703359301b envsubst uses -io flags instead of positional params 2026-07-03 12:29:31 +01:00
joeac 66da50eb92 logins back in after updating groups 2026-07-03 12:27:50 +01:00
joeac 757a24894a chmod 770 on /home/joeac.net 2026-07-03 12:20:24 +01:00
joeac 4b19aabba6 chmod on .env 2026-07-03 12:14:02 +01:00
joeac 626642cd25 get_var_value 2026-07-03 12:12:25 +01:00
joeac a1c91da619 set +e install.sh 2026-07-03 12:07:05 +01:00
joeac fac4169389 removes CONTAINER_PREFIX from example.env (redundant) 2026-07-03 12:06:34 +01:00
joeac a5f1ea1358 copes with empty var values 2026-07-03 12:05:45 +01:00
joeac db8df130fe removes ^ from expr for portability 2026-07-03 12:02:38 +01:00
joeac 52f4ab3157 more portable conditon 2026-07-03 12:00:02 +01:00
joeac 8519d854fb expr has : 2026-07-03 11:51:16 +01:00
joeac edd01e4445 absolutely provides dir to make in install.sh 2026-07-03 11:47:05 +01:00
joeac 9ea2820411 absolutises example.env 2026-07-03 11:46:36 +01:00
joeac 967818f315 absolute chown /home/jeoac.net/joeac.net 2026-07-03 11:45:43 +01:00
joeac ca8e06f300 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-07-03 11:44:50 +01:00
joeac a611b5010f another attempt to fix perms 2026-07-03 11:44:22 +01:00
joeac 2bc353c8fc install.sh gives rw permissions to user over repo using groups 2026-07-03 11:41:00 +01:00
joeac d4dd979311 install.sh gives rw permissions to user over repo using groups 2026-07-03 11:39:27 +01:00
joeac cd4bafbed3 install.sh: no password for joeac.net user 2026-07-03 11:22:56 +01:00
joeac 51d7222c84 install.sh: adds missing joeac/ in repo URL 2026-07-03 11:21:25 +01:00
joeac 888df5c664 install.sh: replaces doas with sudo 2026-07-03 11:20:36 +01:00
joeac 220394ed0d don't set -x in install.sh 2026-07-03 11:19:26 +01:00
joeac 89280d6087 install.sh: wget to /usr requires doas 2026-07-03 11:19:01 +01:00
joeac cb3ad780b1 install.sh: chmod +x in /usr needs doas 2026-07-03 11:17:46 +01:00
joeac 9615c940bb specifies explicit ENVSUBST_VERSION if wget from github 2026-07-03 11:17:17 +01:00
joeac 33e0fb21d6 set -x in install.sh 2026-07-03 11:15:10 +01:00
joeac 2a8b2b3a40 install.sh specifies latest version of envsubst when installing with go
install
2026-07-03 11:11:43 +01:00
joeac f765e1d38f go get -> go install 2026-07-03 11:06:21 +01:00
joeac e6c011d007 removes extraneous " in install.sh 2026-07-03 11:04:37 +01:00
joeac ba8aaa4ade removes redundant README stuff 2026-07-03 11:04:00 +01:00
joeac 9a93c6f983 install.sh installs dependencies 2026-07-03 11:03:36 +01:00
joeac 803e9e00e0 install.sh picks up where left off with env vars 2026-07-03 10:49:19 +01:00
joeac bb795a9555 install.sh picks up with cloning where left off 2026-07-03 10:46:58 +01:00
joeac ac81aeed31 install.sh doesn't attempt to re-add joeac.net user if already exists 2026-07-03 10:44:52 +01:00
joeac 6a4d6d88c5 install.sh creates remote_smtp_password 2026-07-03 10:41:08 +01:00
joeac 32ae7e2b38 checks for some dependencies in install.sh 2026-07-03 10:35:44 +01:00
joeac 4e62da3d52 installs etherpad data dir 2026-07-03 10:29:34 +01:00
joeac b19ae63ceb Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-07-03 10:28:22 +01:00
joeac 17c7e2446c pulls out GEMINI_CERTIFICATES_DIR and GEMINI_COMITIUM_DATA_DIR 2026-07-03 10:28:13 +01:00
joeac 1dab2c159a uninstalling module openrc file uses -f flag to avoid errors 2026-07-03 10:17:07 +01:00
joeac 9cabb1053d adds missing dollar in uninstall_module 2026-07-03 10:17:07 +01:00
joeac caa2f2d59c adds needed sudo to nginx module uninstall 2026-07-03 10:17:07 +01:00
joeac 6a23042b74 makes capitalise func POSIX-compatible 2026-07-03 10:17:07 +01:00
joeac 33d13bb455 appends /data to VAULTWARDEN_DATA_DIR 2026-07-03 10:13:09 +01:00
joeac 0074ad6643 pulls out ETHERPAD_DATA_DIR 2026-07-03 10:12:49 +01:00
joeac e2d3c05376 make install installs vaultwarden data dir 2026-07-03 10:09:47 +01:00
joeac c62f30ec32 adds missing space in openrc.mk 2026-07-03 10:06:10 +01:00
joeac 536a108040 install.sh sets up .env and DIGITALOCEAN_TOKEN 2026-07-03 09:57:48 +01:00
joeac c1525eaa60 automatically makes user.USER service for initing XDG_RUNTIME_DIR 2026-07-03 09:30:26 +01:00
joeac dcd2e1cd19 adds install.sh to install joeac.net under user joeac.net 2026-07-03 09:18:18 +01:00
joeac 19865adb6a pulls out USER variable 2026-07-03 09:02:22 +01:00
joeac b705e9e1e5 nginx installation uses templates and vars instead of explicit conf for
each module
2026-07-02 23:16:29 +01:00
joeac 87a6a3f1f8 adds PUBLIC_ROOT_DIR_ln to vars.mk 2026-07-02 22:33:50 +01:00
joeac 5914e2e578 removes capitalise from container.mk as now in vars.mk 2026-07-02 22:28:43 +01:00
joeac e39c7a47fc etherpad/settings is templated for port 2026-07-02 22:28:13 +01:00
joeac 24c55e142b PORT_module is aliased to MODULE_PORT 2026-07-02 22:27:50 +01:00
joeac de19519be0 makes module rules for all modules, not just ones to be installed here 2026-07-02 22:24:07 +01:00
joeac 3d87e928d4 make_module uses Makefile, not install.mk 2026-07-02 22:23:55 +01:00
joeac c89f338601 re-orders vars.mk 2026-07-02 17:55:00 +01:00
joeac 6feaddc542 adds some line breaks to vars.mk 2026-07-02 17:52:25 +01:00
joeac eaecbcf41f moves ports from .env to make 2026-07-02 17:51:33 +01:00
joeac 7b07b75747 Revert "sets MASTER_NODE to blade-canongate, not pi-broughton"
This reverts commit 0f397b0ee3.
2026-07-02 17:06:11 +01:00
joeac 0f397b0ee3 sets MASTER_NODE to blade-canongate, not pi-broughton 2026-07-02 17:03:44 +01:00
joeac 69918e681f microlog post: 2026-07-02 2026-07-02 16:21:33 +01:00
joeac cb90b72836 only pushes if is own image 2026-07-02 09:50:13 +01:00
joeac f5a6ffa8de COMPOSE_CMD specifies IMAGE_PREFIX 2026-07-02 09:48:13 +01:00
joeac d3845601e9 gets container_image_name from podman-compose config 2026-07-02 09:44:20 +01:00
joeac 1385472aaf push_module does not require build_module 2026-07-02 09:42:26 +01:00
joeac 5fd15c706b build_module only requires Dockerfile if one exists 2026-07-02 09:41:07 +01:00
joeac 5bd502c72f better crontab with update.sh 2026-07-02 09:39:10 +01:00
joeac f39c4a51dd adds empty build, push rules 2026-07-02 09:35:47 +01:00
joeac 8e857abf29 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-07-02 09:34:38 +01:00
joeac 2abd95da6d has empty make_module rules 2026-07-02 09:34:38 +01:00
joeac 15a3697679 removes any existing joeac.net openrc service file before installing 2026-07-02 09:26:33 +01:00
joeac a2d7299e72 tidy Makefile 2026-07-02 09:23:33 +01:00
joeac dcdda64b9e distinguishes NGINX_SUBDOMAINS from SUBDOMAINS 2026-07-02 09:19:09 +01:00
joeac 5cc5b04b18 moves subdomain defs to top of vars.mk so can be used for SUBDOMAINS var 2026-07-02 09:17:14 +01:00
joeac 0c87d0cc65 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-07-02 09:08:02 +01:00
joeac a7ea5780cc prunes dyndns crontabs on reinstall 2026-07-02 09:06:46 +01:00
joeac 6f06fc9503 prunes nginx sites on reinstall 2026-07-02 09:04:02 +01:00
joeac 6bc1f2d05f prunes nginx sites on reinstall 2026-07-02 08:53:24 +01:00
joeac c736041f3c adds uninstall_nginx_module rule content 2026-07-02 08:29:49 +01:00
joeac 8a5ad04776 adds reinstall rule 2026-07-02 08:10:25 +01:00
joeac 6a726a331d simplifies uninstall rule with var 2026-07-02 08:10:13 +01:00
joeac b0fe5b4a44 uses vars to simplify install rule 2026-07-02 08:05:51 +01:00
joeac 0e4aaabb54 all nginx modules are installed on master node 2026-07-01 18:45:42 +01:00
joeac 8ddbae5ee2 fix foreach in BUILD_RULES, PUSH_RULES 2026-07-01 18:40:13 +01:00
joeac cfa0dd5a9a adds reinstall/uninstall nginx module rules 2026-07-01 18:39:20 +01:00
joeac 5644789d64 all rule builds stuff 2026-07-01 18:37:44 +01:00
joeac c7c8a96a57 moves helper makefiles into make/ dir 2026-07-01 18:31:34 +01:00
joeac f73512107c renames some module rules 2026-07-01 18:26:22 +01:00
joeac f8401d00a4 fixes indent in dyndns.mk 2026-07-01 18:22:53 +01:00
joeac b79037c055 only install openrc module if it is an openrc module 2026-07-01 18:20:01 +01:00
joeac 8af9a55187 move uninstall_joeac.net_service to openrc.mk 2026-07-01 18:19:43 +01:00
joeac 1b200f217b move vars to vars.mk 2026-07-01 18:19:26 +01:00
joeac c0e6d13a1f moves stuff to nginx.mk 2026-07-01 18:11:08 +01:00
joeac 2b00e03999 pulls out uninstall to openrc.mk 2026-07-01 17:55:30 +01:00
joeac bf2dabe3f4 pulls out more dyndns stuff to dyndns.mk 2026-07-01 17:49:04 +01:00
joeac d0f549ce22 removes unneeded nginx vars in Makefiles 2026-07-01 17:33:53 +01:00
joeac 89165e9d88 pulls vars out to container.mk 2026-07-01 17:29:16 +01:00
joeac a601e93d00 pulls out nginx_module.mk 2026-07-01 17:22:50 +01:00
joeac fa4d275cc0 pulls out container.mk 2026-07-01 17:11:59 +01:00
joeac 9867d4f232 pulls out openrc.mk 2026-07-01 16:51:44 +01:00
joeac e3b3484905 switches to directory for submake file 2026-07-01 16:47:06 +01:00
joeac def393b930 only restart openrc service if one exists on reinstall 2026-07-01 16:47:06 +01:00
Joe Carstairs c1096e2b01 pulls out nginx.mk 2026-07-01 15:46:05 +01:00
Joe Carstairs 04e1dad952 pulls out crontab.mk 2026-07-01 15:24:01 +01:00
Joe Carstairs e170bafffc pulls out dyndns.mk 2026-07-01 15:21:01 +01:00
Joe Carstairs 23f31a8c4d Makefile installs modules per hostname 2026-07-01 15:10:23 +01:00
joeac d5a5375379 add missing " in ln.joeac.net/milehouse 2026-06-30 17:06:31 +01:00
joeac 7d520d864e Makefile: adds reinstall rule 2026-06-30 16:59:23 +01:00
joeac 16063402be post changes update index in http 2026-06-30 16:41:00 +01:00
joeac 0520592fc5 fix typo: errant ) in Makefile 2026-06-30 16:23:26 +01:00
joeac f27a25fdf5 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-06-30 16:20:24 +01:00
joeac 0181a703f9 add microlog post 2026-06-30 2026-06-30 16:20:20 +01:00
joeac aad7967402 fix ln.joeac.net/milehouse 2026-06-30 13:47:35 +01:00
joeac 7814c0323e remove empty vaultwarden dir from tracking 2026-06-30 10:16:22 +01:00
joeac eb1ee09769 fixes meta http-equiv tags for redirects 2026-06-30 10:02:28 +01:00
joeac 5265f3e83c uninstall uses sub-install.mk 2026-06-30 09:49:34 +01:00
joeac 5aa03f88dc fixes ln/install.mk 2026-06-30 09:46:17 +01:00
joeac ff2a56ac12 improves yq command 2026-06-30 09:43:50 +01:00
joeac 51ce3374b9 adds ln module 2026-06-30 09:36:12 +01:00
joeac 16576fd1f6 can have a sub-install.mk 2026-06-30 09:35:32 +01:00
joeac 3ff52465dd Makefile doesn't assume that every service has Makefile and Compose
service
2026-06-30 09:35:18 +01:00
joeac 0e9f8e2dd6 silences which complaining if no arch 2026-06-30 08:51:23 +01:00
joeac 4225f3c8da Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-06-30 08:23:19 +01:00
joeac fff8c26df9 more container prefixes in compose.yml 2026-06-29 19:38:17 +01:00
joeac 7d8a986784 adds sane defaults in example.env 2026-06-29 19:29:38 +01:00
joeac 4e25b796ca remove bollocks advice on LOCAL_SMTP_USER 2026-06-29 19:27:30 +01:00
joeac 581c1c0c0a see also LOCAL_SMTP_PORT in example.env 2026-06-29 19:26:46 +01:00
joeac 8d1b6b114a uses env vars in compose.yml 2026-06-29 19:24:48 +01:00
joeac 75ca9d485d adds etherpad module 2026-06-29 12:01:49 +01:00
joeac 74dc86d56c fixes /etc/periodic/daily/joeac.net in Makefile 2026-06-29 12:00:17 +01:00
joeac 3e3c866ec0 uninstalls nginx module confs in Makefile 2026-06-29 11:59:47 +01:00
joeac 2b0c63a783 removes errant ) in Makefile 2026-06-29 11:59:15 +01:00
joeac 8386beac1d installs dyndns in Makefile 2026-06-29 11:59:02 +01:00
joeac dc9694fb32 Makefile: realpath ~ instead of realpath ~/.config/.. which may not exist 2026-06-29 09:29:19 +01:00
joeac 70a155a0a7 Makefile: CPU_ARCH can use arch instead of lscpu to find CPU architecture 2026-06-29 09:28:53 +01:00
joeac 673aaf1c13 installs nginx per module 2026-06-29 09:06:17 +01:00
joeac c059bc34d8 adds pwd.joeac.net.conf to nginx 2026-06-29 07:40:09 +01:00
joeac f2a3552286 abuses container_name in compose.yml 2026-06-29 07:32:35 +01:00
joeac f491fe517a adds vaultwarden module on pwd.joeac.net 2026-06-29 07:32:35 +01:00
joeac f6c8f4fae6 remove redundant uninstall_service rule in Makefile 2026-06-29 07:32:35 +01:00
joeac b43ea19e1e starts joeac.net services on boot 2026-06-29 07:32:35 +01:00
joeac c6ff40e288 moves openrc -> openrc/init.d 2026-06-29 07:32:35 +01:00
joeac 86509e2598 installs joeac.net services as separate OpenRC services 2026-06-29 07:32:35 +01:00
joeac adc5498641 adds nginx config, can make install_nginx 2026-06-29 07:32:29 +01:00
joeac 74d779ee35 adds nginx config, can make install_nginx 2026-06-26 10:40:50 +01:00
joeac cc25a91cf1 adds advisory openrc/user-runlevel-default 2026-06-26 09:45:19 +01:00
joeac 13c909f085 chmod 700 in http.Dockerfile (WTF?) 2026-06-25 19:10:25 +01:00
joeac 2823433f7c Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-06-25 19:04:23 +01:00
joeac abfb28dea2 http.Dockerfile: db dir is owned by nginx and mode 600 2026-06-25 19:04:12 +01:00
joeac ebac73704b rename 2026-06-25.md -> .gmi 2026-06-25 18:57:54 +01:00
joeac 74f1df6893 provides SMTP_PORT, SMTP_USER and SMTP_PASSWORD explicitly in compose.yml ;( 2026-06-25 18:54:13 +01:00
joeac 1ef4c22ec6 apk add php85-pdo, php83-pdo_sqlite in http.Dockerfile 2026-06-25 18:52:59 +01:00
joeac 262516d3da apk add gettext gnutls in smtp.Dockerfile (deps of msmtp) 2026-06-25 18:52:02 +01:00
joeac 1304c5180f Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-06-25 17:52:13 +01:00
joeac c3cabed6e7 db is g+rw in http.Dockerfile 2026-06-25 17:51:59 +01:00
Joe Carstairs 274b79f293 microlog post 2026-06-25 2026-06-25 16:29:45 +01:00
joeac aa76b5ad79 prepares DB_PATH in http.Dockerfile 2026-06-25 12:48:47 +01:00
joeac 84496271c4 adds http/vendor to http image 2026-06-25 12:48:07 +01:00
joeac ac4670492e fixes COPY instructions in gemini.Dockerfile 2026-06-25 11:56:33 +01:00
joeac aaed0c2547 adds gcc (dependency for agate) in gemini/Dockerfile 2026-06-25 11:47:54 +01:00
joeac ed13289934 compose down timeout is 5s, not 300s 2026-06-25 11:45:36 +01:00
joeac a575ecdd68 don't make anything in gemini/run.sh 2026-06-25 11:30:55 +01:00
joeac 0a2a4c68fa rc-update adds joeac.net service to 'default' 2026-06-25 11:29:58 +01:00
joeac d9692da89c replaces 'stop' with 'down' to remove containers (so that they get
re-created with fresh images)
2026-06-25 11:29:12 +01:00
joeac fbbc8d2d8b Revert "adds --rm to podman-compose up command to remove containers after"
This reverts commit 812d59e4dd.
2026-06-25 11:27:33 +01:00
joeac d27186a177 copies gemini/run.sh into image 2026-06-25 11:26:22 +01:00
joeac 812d59e4dd adds --rm to podman-compose up command to remove containers after
stopped
2026-06-25 11:25:10 +01:00
joeac 995c258aa5 adds install, uninstall rules to Makefile 2026-06-25 11:17:01 +01:00
joeac bd9af70a97 removes dependencies from openrc/joeac.net 2026-06-25 11:17:01 +01:00
joeac 465c40b927 removes extra command make from openrc/joeac.net 2026-06-25 11:17:01 +01:00
joeac 6f11b8c453 removes redundant JOEACNET_USER var from openrc/joeac.net 2026-06-25 11:17:01 +01:00
joeac 86ec9e9d54 uses rootless podman in Makefile 2026-06-25 11:17:01 +01:00
joeac 78fe3e7956 bin/pp is executable and a dependency of out rule in http/Makefile 2026-06-25 11:17:01 +01:00
joeac ad8a8c3cac openrc/joeac.net 2026-06-25 11:17:01 +01:00
joeac 46596fc5f6 maps env vars for msmtp image in smtp.Dockerfile 2026-06-25 11:15:54 +01:00
joeac f09bbf8d4a replaces prune_blog script with http/Makefile rules 2026-06-25 09:49:14 +01:00
joeac 83e0f1cda5 http: replaces prune_out script with make rules 2026-06-25 08:22:27 +01:00
joeac aa4f63a8ce uses grep short flags for POSIX compatibility 2026-06-24 22:43:32 +01:00
joeac 499a10837f minor changes to composer.lock 2026-06-24 22:12:49 +01:00
joeac 405ccd1709 adds composer install to http/Makefile 2026-06-23 09:00:49 +01:00
joeac b735c95c84 php-fpm gets env vars 2026-06-23 08:43:40 +01:00
joeac e61a0f1de9 php-fpm logs errors 2026-06-23 08:43:35 +01:00
joeac 52b013e165 fastcgi SCRIPT_FILENAME looks in /usr/share/nginx/html 2026-06-23 08:27:52 +01:00
joeac 76081fd88f adds =404 to end of try_files directive 2026-06-23 08:18:46 +01:00
joeac 4a9649f096 adds ; in fastcgi_pass directive in http/nginx.conf 2026-06-23 08:14:40 +01:00
joeac 061b6986a3 php-fpm.conf lives in /etc/php85/fpm/pool.d in http image 2026-06-23 07:58:32 +01:00
joeac ff49052baa php-fpm runs on socket in /run 2026-06-23 07:57:33 +01:00
joeac 7bd5255c63 http.Dockerfile: runs php-fpm and nginx 2026-06-23 00:06:54 +01:00
joeac 473f4b19f0 nginx.conf: moves server into http block 2026-06-23 00:06:44 +01:00
joeac e04d1e55a1 adds nginx/php-fpm config 2026-06-22 23:45:46 +01:00
joeac e23f053b89 http ports: 8080:80, not 8080:8080 2026-06-22 22:59:37 +01:00
joeac ddc416a45a Makefile: build_$(module) depends on $(module).Dockerfile 2026-06-22 22:56:20 +01:00
joeac c07f55e8d4 move smtp/Dockerfile to smtp.Dockerfile 2026-06-22 22:55:34 +01:00
joeac d3e832f064 http/Dockerfile: COPY to nginx folder 2026-06-22 22:53:53 +01:00
joeac 6e5c1c158c gemini/Makefile: FEED_TARGET includes comitium.json, not
subscriptions.json
2026-06-22 22:47:14 +01:00
joeac 07a326114e cleans $(FEED_TARGET) before rebuildings comitium feeds in
gemini/Makefile
2026-06-22 22:46:18 +01:00
joeac 2725d4085c removes line breaks from gemini.Dockerfile for prettiness 2026-06-22 22:42:12 +01:00
joeac 860cd61ba5 adds placeholder rules to smtp/Makefile 2026-06-22 22:41:57 +01:00
joeac 4bfd6d05ca gemini.Dockerfile: don't make in image build, make before image build 2026-06-22 22:34:52 +01:00
joeac 9e0af5fdff gemini.Dockerfile: apk add make 2026-06-22 22:26:27 +01:00
joeac 8ac3e35b1a crond version has -r30 2026-06-22 22:23:31 +01:00
joeac cc4d918a07 Revert "forget about crond container"
This reverts commit 63e3b7fb17.
2026-06-22 19:17:05 +01:00
joeac 63e3b7fb17 forget about crond container 2026-06-22 19:09:14 +01:00
joeac 562cfaebf8 removes unnecessary http args from compose.yml 2026-06-22 19:02:02 +01:00
joeac b47b670d94 uses crond container in gemini.Dockerfile 2026-06-22 19:01:46 +01:00
joeac 7aa8403b70 adds stuff for http to example.env 2026-06-22 19:01:21 +01:00
joeac 6ec142e8f4 replace another :: with cut for POSIX compatibility 2026-06-22 17:51:14 +01:00
joeac 49cf91b789 rss.trivial.upphtml, not .uppxml 2026-06-22 17:50:06 +01:00
joeac 4437e86f72 replace 'source' with '.' in rss.uppxml for POSIX compatibility 2026-06-22 17:37:18 +01:00
joeac 8ec5e261d4 http/Makefile: can cp pp.1 manpage to share 2026-06-22 17:33:52 +01:00
joeac 815c820e6a gitignores bin/pp, share/man/man1/pp.1 2026-06-22 17:27:31 +01:00
joeac 4490194389 replaces :: with cut for POSIX compatibility in upp* source files 2026-06-22 17:26:29 +01:00
joeac 71052b8c26 pp.1 symlink uses relative path 2026-06-22 17:12:10 +01:00
joeac dc43029892 removes POSIX-incompatible :: substitutions in prune_blog 2026-06-22 14:05:35 +01:00
joeac bf592223de forget symlink: cp pp 2026-06-22 13:53:46 +01:00
joeac 8b3fb3f4a2 don't track pp.o 2026-06-22 13:46:12 +01:00
joeac e9909ef057 build_$(module) depends on make_$(module) 2026-06-22 13:44:05 +01:00
joeac e49ccc5aa3 no more prefixes in container_image_name (incompatible with compose.yml) 2026-06-22 13:42:35 +01:00
joeac e78c1cba6d container_image_name includes joeac.net- prefix 2026-06-22 13:37:52 +01:00
joeac 689ff9bd5c podman-compose builds to $(container_image_name) 2026-06-22 13:37:44 +01:00
joeac 7c3ce01b27 podman uses sudo 2026-06-22 13:31:52 +01:00
joeac 6081b7ad79 http.Dockerfile copies build output instead of making it 2026-06-22 13:29:52 +01:00
joeac 0e902c1f57 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-06-22 13:29:22 +01:00
joeac df20a2ea1e smtp/Dockerfile uses msmtp package on git.joeac.net 2026-06-22 13:16:28 +01:00
joeac 870fdc3f65 adds root Makefile 2026-06-22 09:24:36 +01:00
joeac 5f11d27f58 adds smtp/Makefile (empty) 2026-06-22 09:12:35 +01:00
joeac e9df237ca9 adds prune to all rule in http/Makefile 2026-06-22 08:58:20 +01:00
joeac 8b6081dbbf http.Dockerfile uses docker.io/arm32v7/nginx as base 2026-06-19 15:38:02 +01:00
joeac f064c794e3 reorder gemini.Dockerfile 2026-06-19 13:56:23 +01:00
joeac 960e959bd6 get agate image from repository 2026-06-18 21:27:34 +01:00
joeac ba30ad22f8 get comitium image from repo 2026-06-18 21:26:23 +01:00
joeac 29db3ce86a first draft of http.Dockerfile 2026-06-18 20:16:22 +01:00
joeac 2d89475f0b renames capsule -> gemini 2026-06-18 20:01:32 +01:00
joeac f71fbdafac updates readme: swaps website for http 2026-06-18 19:58:41 +01:00
joeac 90b16dad40 remove website service from compose.yml 2026-06-18 19:36:13 +01:00
joeac 05b9308c1b adds redirect from links/rss.xml -> microlog/rss.xml 2026-06-18 19:22:18 +01:00
joeac ca8e6824ea remove Astro website 2026-06-18 19:21:59 +01:00
joeac a0f2505728 updates subscribe.upphtml: no /rss.xml 2026-06-18 19:21:01 +01:00
joeac 3651679c86 adds microlog/rss.uppxml 2026-06-18 19:18:01 +01:00
joeac b0bffe5d72 rss.xml resilient in case multiple blog posts on the same day 2026-06-18 19:15:56 +01:00
joeac 86446de9a8 meta.upphtml accepts NO_META flag 2026-06-18 19:11:02 +01:00
joeac a63b8c6a0b replaces <hr /> with --- in 2024-07-16.gmi 2026-06-18 19:09:42 +01:00
joeac ef681069c7 adds component_files to blog_post_rule, and adds component_files
variable
2026-06-18 19:08:42 +01:00
joeac 5797bc85bf adds blog_rss_feed_rule to http/Makefile 2026-06-18 19:08:17 +01:00
joeac 4c829133a3 adds component files to out_rule deps 2026-06-18 19:07:56 +01:00
joeac 2328446520 more sophisticated escape_upphtml in gmi2upphtml 2026-06-18 19:07:45 +01:00
joeac af4adc0fc8 remove random ; in rss.uppxml 2026-06-18 19:04:34 +01:00
joeac f61a00d292 rss.uppxml uses ' instead of " for version 2026-06-18 19:04:23 +01:00
joeac 7d4ce6f073 rss.xml uses description instead of content:encoded 2026-06-18 19:04:11 +01:00
joeac db5b029f78 blog/rss.xml has no meta tags in content 2026-06-18 19:03:39 +01:00
joeac e8754afca2 blog/rss.xml escapes HTML 2026-06-18 19:03:24 +01:00
joeac c179adccb2 replace <hr> with <hr/> 2026-06-18 18:25:28 +01:00
joeac caed7bbfdf http: adds blog/rss/xml 2026-06-18 10:13:54 +01:00
joeac ff9df11a15 symlinks http/share/man/man1/pp.1 -> http/pp/pp.1 2026-06-18 09:49:51 +01:00
joeac 5396812290 blog/microlog posts have link to index 2026-06-18 09:47:46 +01:00
joeac 9996a47d0c fixes missing post titles in microlog 2026-06-18 09:43:52 +01:00
joeac abd249030b http: adds post.css to blog/microlog posts 2026-06-18 09:43:32 +01:00
joeac 3c132ca4dc http/Makefile doesn't prune non-post files in
http/src/blog,http/src/microlog
2026-06-18 09:25:04 +01:00
joeac f219908d67 prune_blog takes optional BLOG_POST_PATTERN argument 2026-06-18 09:22:49 +01:00
joeac 5e371cf734 prune_blog also removes argfiles 2026-06-18 09:20:50 +01:00
joeac 76901304c4 Makefile clean doesn't clean non-post files under blog,microlog 2026-06-18 09:18:03 +01:00
joeac 83c25e328f only gitignores blog/microlog posts, not everything under
http/src/blog,http/src/microlog
2026-06-18 08:58:32 +01:00
joeac ccd7140d6d http: redirects blog/subscribe to /subscribe 2026-06-18 08:58:02 +01:00
joeac 0db52b89f0 adds trivial html layout 2026-06-18 08:57:48 +01:00
joeac 93cda87bbd http: adds microlog index 2026-06-18 08:46:45 +01:00
joeac 35ef330df8 fix css bug in http microlog: ul inside microlog posts not getting list
markers
2026-06-18 08:45:51 +01:00
joeac 348b76aa04 http/Makefile: fix bug, only upphtml files being built because no
layouts exist for other formats
2026-06-18 08:44:29 +01:00
joeac df748183ab http: adds /subscribe 2026-06-18 08:19:45 +01:00
joeac e470dfc258 http/Makefile includes layout files in deps 2026-06-18 08:17:08 +01:00
joeac 56e2c037b5 moves <main> to default.layout 2026-06-18 08:16:51 +01:00
joeac c5c4167361 remove 2025-10-05 blog post 2026-06-17 22:08:18 +01:00
joeac 2f70f87f41 reverses blog post order 2026-06-17 22:06:05 +01:00
joeac 0519d155fa fixes blockquote block margins 2026-06-17 22:04:36 +01:00
joeac 6d801d0f0e symlinks http/bin/pp to http/pp/pp 2026-06-17 21:54:36 +01:00
joeac fd21d77526 adds pp build to http/Makefile 2026-06-17 21:54:16 +01:00
joeac 5b927900ae increases pp max buffer size 64,000 chars 2026-06-17 21:49:02 +01:00
joeac 5fcb2bcc83 gitignores pp build output 2026-06-17 21:48:24 +01:00
joeac 6dd4caf947 adds pp sources 2026-06-17 21:48:24 +01:00
joeac 506d1adfcc fix bug in Makefile out_rule 2026-06-17 18:35:39 +01:00
joeac e506f7c2e6 reorganises Makefile, adds headings 2026-06-17 18:31:46 +01:00
joeac 574b2d6646 Makefile: named params in out_rule macro 2026-06-17 18:27:13 +01:00
joeac b0adbd4419 parameterises blogs in all rule 2026-06-17 18:23:27 +01:00
joeac 8125081177 parameterises blogs in clean rule 2026-06-17 18:23:11 +01:00
joeac 229339dc17 macroises prune_blog rules 2026-06-17 18:22:43 +01:00
joeac 99b54df287 fix bug in prune_blog: rm '' 2026-06-17 18:21:28 +01:00
joeac 70689047ca macroises blog_rule 2026-06-17 18:19:09 +01:00
joeac b4be3ed2a6 re-orders Makefile and renames some vars 2026-06-17 18:18:51 +01:00
joeac 8e814917b6 Makefile: blogs are configurable 2026-06-17 17:59:18 +01:00
joeac a8686d9169 re-orders Makefile 2026-06-17 09:56:48 +01:00
joeac 830f63641b factors out prune_blog to bin 2026-06-17 09:56:48 +01:00
joeac 3e0def4305 remove unnecessary continue indices in prune_out 2026-06-17 09:34:05 +01:00
joeac 722a304023 factors out prune_out to bin 2026-06-17 09:23:42 +01:00
joeac 423fa1ed26 Makefile: macroises blog_rule 2026-06-17 09:12:09 +01:00
joeac 6cdc0ad1e6 Makefile: renames blog_rule macro 2026-06-17 09:10:37 +01:00
joeac 65b3169d98 fix bug in blog script: set layout_name to default 2026-06-17 09:08:39 +01:00
joeac 122febceb4 public rule follows symlinks 2026-06-16 22:09:31 +01:00
joeac a3cc84b617 separates prune from all 2026-06-16 22:07:58 +01:00
joeac 20855b2976 http/Makefile: updates all rule with new incremental rules 2026-06-16 22:04:10 +01:00
joeac 93d9d86361 adds prune_out rule 2026-06-16 22:03:54 +01:00
joeac f83df38d5e out rule is incremental 2026-06-16 22:03:47 +01:00
joeac dcd563fdc7 silences prune rules 2026-06-16 22:03:14 +01:00
joeac 84ea47f08d copying public happens in Makefile, not mkws 2026-06-16 22:02:46 +01:00
joeac b79a0873dd can pass PATH_PATTERN to mkws 2026-06-16 21:56:01 +01:00
joeac 9adbe55164 move sitemap.uppxml into src 2026-06-16 21:55:33 +01:00
joeac 248b3088b3 rename rules to prune 2026-06-16 21:23:38 +01:00
joeac f653f7ba23 http/Makefile: more iterative 'all' rule 2026-06-15 18:18:58 +01:00
joeac be6466c0ff fix blog script bug: multiple posts on the same day overwrite each other 2026-06-15 18:16:26 +01:00
joeac c2aef5c998 http/Makefile: pattern rule for iterative blog building 2026-06-15 18:13:07 +01:00
joeac 3094407195 blog script now takes optional -f FILE_PATTERN arg 2026-06-15 18:12:46 +01:00
joeac 00af1b4b56 http/Makefile: can remove deleted posts 2026-06-15 18:09:59 +01:00
joeac e10f74c5b6 http: adds blog index page 2026-06-12 10:16:09 +01:00
joeac e2b8cdbce3 http: default layout passes SITE_URL to pages 2026-06-12 10:15:56 +01:00
joeac 6cd664dba6 remove unnecessary backslash from grep expression in http/bin/blog 2026-06-12 10:12:25 +01:00
joeac 0d8f27357a rename SRC -> PAGE in blog.layout.upphtml to avoid overwriting SRC 2026-06-12 09:32:59 +01:00
joeac ce1ebb3ad3 extracts longlog metadata including updated date 2026-06-09 21:29:10 +01:00
joeac 0065d36bc8 blog script takes extract_args_cmd 2026-06-09 21:17:05 +01:00
joeac 7a952de4f8 chmods I guess? 2026-06-09 21:16:35 +01:00
joeac 37d61b5b21 fixes passing POST_TITLE to postprocessor from blog script 2026-06-09 21:03:16 +01:00
joeac 75f5a8bbf5 fixes passing POST_TITLE as an arg to mkws 2026-06-09 21:02:50 +01:00
joeac da1670c57c fixes links in gmi2upphtml 2026-06-09 19:46:34 +01:00
joeac 87dec12b01 cut longlog metadata from blog 2026-06-09 18:20:23 +01:00
joeac 547db8ac94 2024-01-14 longlog post: 'Published:' -> 'Published on:' 2026-06-09 18:19:42 +01:00
joeac 0892937941 parameterises postprocess cmd in blog script 2026-06-09 18:19:16 +01:00
joeac b4f9be57d3 http: builds blogs from gemlogs 2026-06-09 16:11:06 +01:00
joeac 3ecf19cb8a moves <main> from layout to individual pages 2026-06-09 09:14:18 +01:00
joeac 531c9d5a38 swaps " for ' in error.upphtml 2026-06-09 09:12:41 +01:00
joeac 2d6d17261c http: adds contact page 2026-06-04 15:16:34 +01:00
joeac 668c105ccf http: adds otp-dialog component 2026-06-04 15:16:34 +01:00
joeac 813836fbba http: adds scripts 2026-06-04 15:16:34 +01:00
joeac fac1199cd6 http: adds actions.js file to interface JS -> PHP 2026-06-04 15:16:34 +01:00
joeac 171c957c40 http: adds php api routes under do/ 2026-06-04 15:16:34 +01:00
joeac 231ffbd0e8 adds mail.php 2026-06-04 15:14:03 +01:00
joeac e4cd434586 adds db.php 2026-06-04 15:12:26 +01:00
joeac 38370c101f http: adds phpmailer dependency 2026-06-04 15:11:10 +01:00
joeac a89e757718 http: inits php composer 2026-06-04 15:10:45 +01:00
joeac e58cbf7b72 http: adds error page 2026-06-02 18:30:12 +01:00
joeac 902ad835b4 http: fixes meta tags 2026-06-02 18:27:20 +01:00
joeac 3f4df7c503 updates index.upphtml to match existing homepage 2026-06-02 18:12:44 +01:00
joeac a304b1f744 changes " to ' in uppcss files to work around bug in pp 2026-06-02 18:12:29 +01:00
joeac 94e5dfd091 http: add navbar to l.upphtml 2026-06-02 18:07:43 +01:00
joeac bdd64372fd adds images symlink to http/public 2026-06-02 18:02:14 +01:00
joeac ec2cd858bd not sure what this change is, maybe a chmod on mkws? 2026-06-02 18:00:37 +01:00
joeac 6bc4552d41 mkws copies from public if it exists 2026-06-02 18:00:14 +01:00
joeac 86f40be2cb mkws outputs to 'out' instead of 'public' 2026-06-02 17:59:45 +01:00
joeac 7ac7ed3cec feed.uppcss: changes " to ' to work around pp bug 2026-06-02 17:50:16 +01:00
joeac a1866254f9 sitemap.uppxml: uses find instead of wildcard expansion to find html files inside
subfolders
2026-06-02 17:45:39 +01:00
joeac b7fc80b5f5 http/Makefile: public target depends on bin 2026-06-02 17:35:19 +01:00
joeac 629dd5525e http/Makefile: all cleans before building 2026-06-02 17:35:04 +01:00
joeac 0897d11405 microlog: post 2026-06-02 2026-06-02 15:05:55 +01:00
joeac 8725d22874 http/Makefile 2026-05-12 21:40:09 +01:00
joeac b386c66837 delete weird file that got created by accident 2026-05-12 21:30:10 +01:00
joeac 3759fd137c mkws processes css 2026-05-12 21:29:38 +01:00
joeac eb48cdb9a3 inits http ssg with mkws 2026-05-12 20:56:32 +01:00
joeac 512f130117 Fix error log in capsule/build_microlog.bash 2026-05-08 20:41:32 +01:00
joeac 0ca370c285 fix capsule Makefile 2026-05-08 20:40:52 +01:00
joeac 0092231f3d microlog post: 2026-05-08.1 2026-05-08 19:43:43 +01:00
joeac edfc6e77a2 feeds: Radical with Amol Rajan 2026-05-08 19:26:55 +01:00
joeac 92137412c3 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-05-08 08:38:35 +01:00
joeac af7c620129 microlog post: 2026-05-08 2026-05-08 08:38:27 +01:00
joeac da09e09caa Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-05-07 21:29:29 +01:00
joeac bda908bfaf minor edit to 2026-05-07 microlog post 2026-05-07 14:27:07 +01:00
joeac c71a74355f Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-05-07 14:22:55 +01:00
joeac 0f23ba1415 microlog: 2026-05-07 2026-05-07 13:30:17 +01:00
joeac 4c8db72ec1 removes commented-out bits from website.Dockerfile 2026-05-07 12:15:00 +01:00
joeac a7a5f76cb8 renames images 2026-05-07 12:14:42 +01:00
joeac 2281b71b92 adds image names to compose.yml 2026-05-03 20:00:48 +01:00
joeac 3d28103804 capsule.Dockerfile: don't bother making feeds ahead of 'make all' 2026-04-30 17:28:36 +01:00
joeac 7f37fd666d capsule.Dockerfile uses run.sh 2026-04-30 17:27:53 +01:00
joeac f8f9573410 can run capsule with capsule/run.sh 2026-04-30 17:27:35 +01:00
joeac 144f3ed14d capsule.Dockerfile: uses Makefile 2026-04-30 17:20:50 +01:00
joeac 1492a916e9 updates comment in capsule.Dockerfile 2026-04-30 17:19:40 +01:00
joeac 260216c685 fix Makefile 2026-04-30 17:18:18 +01:00
joeac 2254ce56f6 gitignore comitium generated files 2026-04-30 17:13:34 +01:00
joeac 9cb1499561 add Makefile for capsule 2026-04-30 17:12:42 +01:00
joeac 4d5ae9164b microlog post: 2026-04-28 2026-04-28 19:36:38 +01:00
joeac d7413cccee fix list syntax in microlog post 2026-04-27 2026-04-28 19:30:13 +01:00
joeac c519c04a28 update headshot 2026-04-28 17:57:31 +01:00
joeac 4db6690bc4 move feeds.txt to comitium-data 2026-04-28 08:41:10 +01:00
joeac 27a7269148 microlog post: 2026-04-27 2026-04-27 16:45:22 +01:00
joeac d5067dff46 website: redirect links -> microlog 2026-04-27 09:10:50 +01:00
joeac 769c764feb website: add rss feed for microlog 2026-04-27 09:10:36 +01:00
joeac b53412d728 website: add microlog posts for old links 2026-04-27 09:10:25 +01:00
joeac 3f9988d206 website: remove links 2026-04-27 09:10:02 +01:00
joeac 295e63d821 website: remove links page 2026-04-27 09:09:38 +01:00
joeac 4729e27ea8 website: remove links from navbar 2026-04-27 09:09:32 +01:00
joeac b590a2ffef adds link to microlog to navbar 2026-04-25 13:13:47 +01:00
joeac 52b254ff59 adds microlog index page to website 2026-04-25 13:13:20 +01:00
joeac f78387413a adds MicrologFeed component to website 2026-04-25 13:13:08 +01:00
joeac f17061b4cb adds microlog posts to website 2026-04-25 13:10:06 +01:00
joeac 00effae167 renames blog.css -> post.css 2026-04-25 13:08:54 +01:00
joeac e50b62afa2 create MicrologPost component in website 2026-04-25 13:07:56 +01:00
joeac 6470d7f8bd adds microlog content collection to website 2026-04-25 13:07:25 +01:00
joeac 5a56c572af FormattedDate component can be hidden 2026-04-25 13:06:00 +01:00
joeac ac8011ddb1 blog feed: entries are subheadings 2026-04-25 13:05:40 +01:00
joeac d98908ad5c feed.css: feed entry title gets font-weight 400 2026-04-25 13:05:11 +01:00
joeac 6d58eee37f renderGemtextToHtml(): title is optional 2026-04-25 13:04:51 +01:00
joeac fab6515531 adds astro sync to npm scripts 2026-04-25 11:50:10 +01:00
joeac 60f6f4cd80 BlogPost.astro: remove redundant import 2026-04-25 11:39:48 +01:00
joeac 7792e96334 factor out renderGemtextToHtml() 2026-04-25 11:35:01 +01:00
joeac 8744ba58c9 moves website/public/images to common/images 2026-04-25 11:02:50 +01:00
joeac 728bc67ddf website symlinks point to common/, not capsule/ 2026-04-25 10:56:21 +01:00
joeac b09fd38e65 moves capsule/content/images to common/images 2026-04-25 10:50:55 +01:00
joeac 9a64bad16e build longlog.gmi from posts and header template 2026-04-25 10:48:02 +01:00
joeac 92b58d8999 move longlog posts to common/ 2026-04-25 10:46:58 +01:00
joeac db02bd8483 remove longlog/index.gmi (redundant) 2026-04-25 10:46:04 +01:00
joeac a3696af35b longlog.gmi: reduce padding to 4 spaces 2026-04-25 10:44:58 +01:00
joeac dfc210c1e6 move microlog posts to common/ 2026-04-25 10:08:20 +01:00
joeac bf8a4a338f moves capsule/Dockerfile to capsule.Dockerfile 2026-04-25 10:07:24 +01:00
joeac e8ef355d0e move capsule log headers to templates/ 2026-04-25 10:06:17 +01:00
joeac 2738eb065c build microlog from source files 2026-04-25 10:06:08 +01:00
joeac 0fc8a660c3 make build_loglog.bash executable 2026-04-25 09:44:31 +01:00
joeac ec7a9d3419 microlog appends .n to dates when multiple entries for the same date 2026-04-25 09:41:07 +01:00
joeac 69a1ffb7b9 fix build_loglog.bash bug where every entry has the same date 2026-04-25 09:39:15 +01:00
joeac f9e28d6191 build_loglog.bash tees to /dev/null instead of ./0 2026-04-25 09:31:28 +01:00
joeac ae447e47ac sub to Cory Doctorow's blog on pluralistic.net 2026-04-24 10:50:36 +01:00
joeac 44ed26aa79 sub to XR RSS feed 2026-04-24 10:47:58 +01:00
joeac 8969503da5 re-subs to my own gemini feeds 2026-04-24 10:46:54 +01:00
joeac d380b248ab microlog post 2026-04-24 2026-04-24 10:37:01 +01:00
joeac 3c28331b1c subscribe to dieter helm 2026-04-23 16:33:48 +01:00
joeac 3e5fddcba1 adds mwgmac.github.io to followed feeds 2026-04-21 10:51:50 +01:00
joeac 9a2602e91b update homepage 2026-04-21 10:46:21 +01:00
joeac 3483994b50 2026-04-16 microlog post 2026-04-16 21:49:56 +01:00
joeac 0c58fcb3f3 adds green apocalypse longlog post to longlog index 2026-04-16 21:35:53 +01:00
joeac f54c7532ae Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-04-16 20:06:39 +01:00
joeac 1550231681 add flavour 2026-04-16 20:06:23 +01:00
joeac 84531839fb COPY loglog-header.gmi in capsule/Dockerfile 2026-04-16 20:05:46 +01:00
joeac 6363a0aeb3 subscribe to this blog! 2026-04-16 20:04:07 +01:00
joeac 357b174431 subscribe to eph.smol.pub 2026-04-14 17:59:31 +01:00
joeac d428f8f7d1 second 2026-04-14 post 2026-04-14 17:57:37 +01:00
joeac 37a0010637 add to microlog post 2026-04-14 2026-04-14 17:24:41 +01:00
joeac 6344f05549 microlog post 2026-04-14 2026-04-14 11:27:47 +01:00
joeac 3edfeaa661 2026-04-13 microlog post 2026-04-13 13:37:51 +01:00
joeac 8e193ce86f website/Dockerfile -> website.Dockerfile and copies symlink targets into capsule 2026-04-13 09:43:02 +01:00
joeac 4198ceb4b3 merge adjacent blockquotes when transforming gemtext -> HTML 2026-04-13 09:40:48 +01:00
joeac ef451a063b reorganises images in capsule, symlinks to website 2026-04-13 09:40:10 +01:00
joeac 1a64bce2fb website can get pubDate from filename instead of frontmatter 2026-04-13 08:37:56 +01:00
joeac cf6dbc2aa1 redirects capsule-longlog, not gemlog 2026-04-13 08:37:35 +01:00
joeac 38606d2190 longpost 2026-04-12: Green apocalypse (my dissertation proposal) 2026-04-12 09:34:05 +01:00
joeac cbd437de2b microposts 2026-04-11 2026-04-11 11:35:07 +01:00
joeac 93ddf62926 re-order some old microlog posts 2026-04-11 11:28:14 +01:00
joeac be1d212a73 error warning in loglog header 2026-04-11 11:24:04 +01:00
joeac 2c3fca1f3b fixes warmedal.se link in 2026-04-29 microlog 2026-04-11 09:04:59 +01:00
joeac 7c706af8bd fixes log links in loglog 2026-04-11 09:03:46 +01:00
joeac 384ad70a73 fixes longlog index links 2026-04-11 08:47:26 +01:00
joeac dd9a2cb770 fixes longlog.gmi placement 2026-04-11 08:46:03 +01:00
joeac e5901c1e09 fix logs/index.gmi link 2026-04-11 08:45:37 +01:00
joeac fa53d51d45 fixes CMD syntax in capsule/Dockerfile 2026-04-11 08:38:30 +01:00
joeac 78d5d9dfc4 do not rc-service crond start as this is unnecessary and fails the build 2026-04-11 08:09:12 +01:00
joeac 902dcbff02 runs build_loglog with bash 2026-04-11 08:08:41 +01:00
joeac 367099dd60 rewrites apk add command in capsule/Dockerfile to avoid inline comments 2026-04-10 15:30:07 +01:00
joeac 5681cf9420 re-organises capsule logs 2026-04-10 15:14:00 +01:00
joeac db6757652e refreshes comitium feed after server start in capsule/Dockerfile 2026-04-10 10:14:20 +01:00
joeac 81c01d8fc9 builds loglog in Dockerfile 2026-04-10 10:02:36 +01:00
joeac 4f3ca6cdfd loglog builder 2026-04-10 10:01:33 +01:00
joeac 719c9afde5 uses yyyy-mm-dd format for shortlog post headings 2026-04-10 10:00:15 +01:00
joeac d29a85bf5c gemlog index URLs relative to root 2026-04-10 09:59:38 +01:00
joeac bd193a7eaf symlink gemlog/index.gmi -> logs/gemlog.gmi instead of the other way around 2026-04-10 08:04:48 +01:00
joeac 4a87e022cf RUN rc-service crond start && rc-update add crond in capsule/Dockerfile 2026-04-07 12:40:16 +01:00
joeac 706e49c570 add logs 2026-04-07 12:29:41 +01:00
joeac ce660ae88d COPY redirects.mjs 2026-03-28 10:30:55 +00:00
joeac 6fdc30e819 gemlog: 2026-03-28 2026-03-28 08:45:21 +00:00
joeac 2676f47a12 adds busybody-openrc to run crond inside capsule 2026-03-26 08:57:30 +00:00
joeac 82d08e8aa8 tidying in gemlog posts 2026-03-24 22:07:31 +00:00
joeac 706f5913e6 moves blog posts to new position to be consistent with gemlog 2026-03-24 22:07:05 +00:00
joeac 4b720b8dd7 port gemlog to blog 2026-03-24 22:06:32 +00:00
joeac 46bc365021 description is optional 2026-03-24 22:04:06 +00:00
joeac 550d285a8b adds extended-glob loader 2026-03-24 22:02:07 +00:00
joeac 268eff17f1 upgrades astro-gemtext 2026-03-24 22:01:49 +00:00
joeac 579c31b7c7 redirects old blog posts to new 2026-03-24 22:01:38 +00:00
joeac 782c3df3d3 add 2026-03-21 to gemlog index 2026-03-24 17:02:03 +00:00
joeac f1ec639ffe commits symlinks to comitium output 2026-03-24 16:45:51 +00:00
joeac ba0f349be9 improves website/Dockerfile 2026-03-24 16:14:48 +00:00
joeac ac31fbf862 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-03-22 08:16:40 +00:00
joeac 1a59baaacc apk add git for npm install in website/Dockerfile 2026-03-22 08:16:26 +00:00
joeac 0d14069272 attempt slightly smaller layer sizes for website/Dockerfile 2026-03-21 22:27:56 +00:00
joeac c3a2656d90 Uses node:lts-alpine3.22 instead of 3.23, which does not exist right now 2026-03-21 22:27:56 +00:00
joeac 162e84ba9b links comitium output to capsule content instead of copying 2026-03-21 22:27:55 +00:00
joeac 91bf7c7252 corrects COPY lines in capsule/Dockerfile 2026-03-21 22:26:56 +00:00
joeac 8283e6819f apk del in capsule/Dockerfile to cut layer size 2026-03-21 22:26:56 +00:00
joeac 8ad2307fb7 2026-03-21: genesis 2026-03-21 22:24:31 +00:00
joeac 65464e8ee5 render .gmi posts as gemtext 2026-03-21 22:24:08 +00:00
joeac a09f874bba enable .gmi content type 2026-03-21 22:23:45 +00:00
joeac 9332601f5b upgrade to Astro 6 2026-03-21 22:22:42 +00:00
joeac 6f96a69440 gemlog: 2026-03-21.gmi 2026-03-21 08:23:31 +00:00
joeac 43c15167b3 fix comitium crontab (one too many components) 2026-03-20 21:53:47 +00:00
joeac b788f4f627 unsub from tuxmachines because it's way too busy 2026-03-20 21:41:59 +00:00
joeac 07b695d15b uses apk del in smtp/Dockerfile to cut layer size 2026-03-20 10:14:01 +00:00
joeac 28b2e27469 adds feeds 2026-03-19 20:04:04 +00:00
joeac 30f7199fce fixes COPY instruction in Dockerfile 2026-03-19 19:55:35 +00:00
joeac e446354c83 Merge branch 'main' of https://git.joeac.net/joeac/joeac.net 2026-03-19 19:29:53 +00:00
joeac ec5cb3722f Adds subscriptions.gmi 2026-03-19 19:29:49 +00:00
joeac 9e41d5f82d Adds link to feed to homepage 2026-03-19 19:29:36 +00:00
joeac f630d2494d corrects COPY .certificates instruction in capsule/Dockerfile 2026-03-19 19:24:48 +00:00
joeac 8200b7b1da copy comitium output to content folder 2026-03-19 09:57:59 +00:00
joeac 83fb55570e comitium 2026-03-19 09:19:35 +00:00
joeac df21b00724 updates README 2026-03-17 07:36:45 +00:00
joeac e75753f8bc fixes images in 2025-01-19 gemlog post 2026-03-17 07:32:15 +00:00
joeac d5a8169bdb "blog" => "gemlog" 2026-03-16 22:17:53 +00:00
joeac 0c6d52390e nicifies blog some 2026-03-16 22:17:29 +00:00
joeac 930a70c35a flatten blog structure 2026-03-16 13:35:51 +00:00
joeac d35fa6849a .gitignore future certs 2026-03-16 13:24:12 +00:00
joeac ef29455a1d remove old certs 2026-03-16 13:23:52 +00:00
joeac 419d7d1c43 combines RUN statements in capsule/Dockerfile
to cut layer sizes
2026-03-16 13:23:03 +00:00
joeac 407fb8103b copy blog to gemini:// 2026-03-16 12:50:53 +00:00
joeac 623e56acd9 upgrade to alpine 3.23 2026-03-16 10:58:34 +00:00
282 changed files with 7567 additions and 15076 deletions
+3
View File
@@ -5,3 +5,6 @@ indent_size = 2
[*.{md,markdown,mdx}]
max_line_length = 80
[{Makefile,*.mk}]
indent_style = tab
+1
View File
@@ -26,3 +26,4 @@ pnpm-debug.log*
**/*.tfstate.backup
*.sqlite
DIGITALOCEAN_TOKEN
+66
View File
@@ -0,0 +1,66 @@
include make/vars.mk
submake_file = $(shell [ -f "$(module)/Makefile" ] && echo "$(module)/Makefile")
install_submake_file = $(shell [ -f "$(module)/install.mk" ] && echo "$(module)/install.mk")
define make_module_rule =
.PHONY: make_$(module)
make_$(module): $(module)/.env
$(if $(submake_file),\
$(MAKE) --makefile=$(notdir $(submake_file)) --directory=$(module))
endef
define module_env_rule =
$(module)/.env: .env
cp .env $(module)/.env
endef
define install_module_rule =
.PHONY: install_$(module)
install_$(module): install_openrc_$(module) install_dyndns_$(module) $(if $(SUBDOMAIN_$(module)),install_tls_$(SUBDOMAIN_$(module))) $(install_submake_file)
$(if $(install_submake_file),$(MAKE) --makefile=$(notdir $(install_submake_file)) --directory=$(dir $(install_submake_file)) install)
endef
define reinstall_module_rule =
.PHONY: reinstall_$(module)
reinstall_$(module): reinstall_openrc_$(module) reinstall_dyndns_$(module) $(if $(SUBDOMAIN_$(module)),reinstall_tls_$(SUBDOMAIN_$(module))) $(install_submake_file)
$(if $(install_submake_file),$(MAKE) --makefile=$(notdir $(install_submake_file)) --directory=$(dir $(install_submake_file)) reinstall)
endef
define uninstall_module_rule =
.PHONY: uninstall_$(module)
uninstall_$(module): uninstall_openrc_$(module) uninstall_dyndns_$(module) $(if $(SUBDOMAIN_$(module)),install_tls_$(SUBDOMAIN_$(module)))
$(if $(install_submake_file),\
$(MAKE) --makefile=$(notdir $(install_submake_file)) --directory $(dir $(install_submake_file)) uninstall
)
endef
.PHONY: all
all: $(ENV_RULES) $(MAKE_RULES) $(BUILD_RULES) $(PUSH_RULES)
$(foreach module,$(ALL_MODULES),$(eval $(call make_module_rule)))
$(foreach module,$(ALL_MODULES),$(eval $(call module_env_rule)))
.PHONY: install
install: install_tls install_nginx $(ENV_RULES) $(INSTALL_RULES) install_crontab
.PHONY: reinstall
reinstall: reinstall_tls reinstall_nginx reinstall_dyndns $(ENV_RULES) $(REINSTALL_RULES) reinstall_crontab
.PHONY: uninstall
uninstall: uninstall_nginx uninstall_dyndns uninstall_tls uninstall_joeac.net_service $(UNINSTALL_RULES) uninstall_crontab
$(foreach module,$(ALL_MODULES),$(eval $(install_module_rule)))
$(foreach module,$(ALL_MODULES),$(eval $(reinstall_module_rule)))
$(foreach module,$(ALL_MODULES),$(eval $(uninstall_module_rule)))
.PHONY: clean
clean:
$(foreach module,$(MAKE_MODULES),$(MAKE) --directory=$(module) clean;)
include make/container.mk
include make/openrc.mk
include make/nginx.mk
include make/crontab.mk
include make/dyndns.mk
include make/tls.mk
+87 -27
View File
@@ -1,44 +1,104 @@
# joeac.net
Joe Carstairs' personal website
Joe Carstairs' public Internet presence
Structure:
To install:
```
/
├── website: My public-facing website
└── infrastructure: The infrastructure of my website as code
```sh
wget -O- https://git.joeac.net/joeac/joeac.net/raw/branch/main/install.sh | sh
```
## Running with Podman
## DNS setup
These instructions will probably work with Docker, too: just substitute `podman`
for `docker` in all the commands.
A/AAAA DNS records are added automatically by `make install`, but in order to
get `mox` working as an email server, you'll have to manually add the following
DNS records.
To run with Podman, first set up your environment variables. Copy `example.env`
to `.env` and edit the values accordingly.
Deliver mail for mail.joeac.net to mail.joeac.net:
Then, create the `remote_smtp_password` secret, storing the password for the
remote SMTP server which will send the contact emails on behalf of the website.
```bash
sudo podman secret create remote_smtp_password /path/to/remote/smtp/password
```
mail.joeac.net. MX 10 mail.joeac.net.
```
Now build and start the containers:
All emails from the email server will be signed with two DKIM keys. So that
clients can verify the authenticity of the messages, provide these keys as TXT
records:
```bash
sudo podman-compose build && sudo podman-compose up -d
```
2026a._domainkey.mail.joeac.net. TXT v=DKIM1;h=sha256;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvYfjrzmYgBtYofzBwI80aiW98+M2g6z+gd1Iwz9g0y30rPFNTctFn9GwBNuYBgZiZxB+sqjEbPMbr3li/R7i0A9t/KbNNJhkNC+4IjKJjk+jw1CXm4vXOUa4YSYWwy7NVYTH/QwZGz6fwjVM7YvDnnE4gG2NwrVx+AXlONt2R1G+qgV6HAIIvVi8T0yCjjqEc5B5bKlqk0XU9vSyUFJhhKnR/KNRe79C+H9GWJzcU7HUCmIHX04Xi0JeB/wm3weF1xjtGTsWyy5BmHHsfWGqSr2Dbg5o6AI5W0h4VkQ4QzdEYGVQ9ZBDyqFQwQFXLn0oHZjCD/vFzPOPdM5pxF/OgwIDAQAB
2026b._domainkey.mail.joeac.net. TXT v=DKIM1;h=sha256;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzcrk9FUt6AdrvnAP3KawuOTLw7uL5SJ+ZYmShuz41zwM6bPQteGSSwddFXIxcqVlJrdFahrK4KvHX/sw/hWVfZoPLDdwsGN5eI8cqQjNDE+JDu9BbPlTituva4Hkve0hbAKDqA8jmbcZg6aU7b44Kzq8UpWAlPO273Rq2tsbCBcITt8B3NFoeY9CSsZU1LqGl855GUtaNyhlPaAvfab3Q9/4wyusPhCHlBYaRK+ZzuSMs5KEOG6n4kbZfMVi2+4c/bPU5PdTuyvbSIEqjNH4TpfatE0I9ubGv0WbAzr5EZbv5+xtukZ/dIisPPMjn1AbjpSJYNYr2OYgey6+WvzRmQIDAQAB
```
## Running on the host machine
Specify the MX host is allowed to send for our domain and for itself (for DSNs).
~all means softfail for anything else, which is done instead of -all to prevent
older mail servers from rejecting the message because they never get to looking
for a dkim/dmarc pass.
To run on the host machine, first, as before, set up your environment variables
by copying `example.env` to `.env` and editing the values as appropriate.
```bash
npm run start
```
mail.joeac.net. TXT v=spf1 ip4:217.155.190.42 ip6:fdc9:6aec:7a18:0:2e0:4cff:fe61:9b17 mx ~all
```
Note that emails may not work locally without further setup. These instructions
are of course woefully incomplete.
Emails that fail the DMARC check (without aligned DKIM and without aligned SPF)
should be rejected, and request reports. If you email through mailing lists that
strip DKIM-Signature headers and don't rewrite the From header, you may want to
set the policy to p=none.
```
_dmarc.mail.joeac.net. TXT v=DMARC1;p=reject;rua=mailto:dmarcreports@mail.joeac.net!10m
```
Remote servers can use MTA-STS to verify our TLS certificate with the WebPKI
pool of CA's (certificate authorities) when delivering over SMTP with
STARTTLSTLS.
```
mta-sts.mail.joeac.net. CNAME mail.joeac.net.
_mta-sts.mail.joeac.net. TXT v=STSv1; id=20260705T153220
```
Request reporting about TLS failures.
```
_smtp._tls.mail.joeac.net. TXT v=TLSRPTv1; rua=mailto:tlsreports@mail.joeac.net
```
Client settings will reference a subdomain of the hosted domain, making it
easier to migrate to a different server in the future by not requiring settings
in all clients to be updated.
```
clientsettings.mail.joeac.net. CNAME mail.joeac.net.
```
Autoconfig is used by Thunderbird. Autodiscover is (in theory) used by
Microsoft.
```
autoconfig.mail.joeac.net. CNAME mail.joeac.net.
_autodiscover._tcp.mail.joeac.net. SRV 0 1 443 mail.joeac.net.
```
For secure IMAP and submission autoconfig, point to mail host.
```
_imaps._tcp.mail.joeac.net. SRV 0 1 993 mail.joeac.net.
_submissions._tcp.mail.joeac.net. SRV 0 1 465 mail.joeac.net.
```
Next records specify POP3 and non-TLS ports are not to be used. These are
optional and safe to leave out (e.g. if you have to click a lot in a DNS admin
web interface).
```
_imap._tcp.mail.joeac.net. SRV 0 0 0 .
_submission._tcp.mail.joeac.net. SRV 0 0 0 .
_pop3._tcp.mail.joeac.net. SRV 0 0 0 .
_pop3s._tcp.mail.joeac.net. SRV 0 0 0 .
```
Optional: You could mark Let's Encrypt as the only Certificate Authority allowed
to sign TLS certificates for your domain.
```
mail.joeac.net. CAA 0 issue "letsencrypt.org"
```

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 914 KiB

+29
View File
@@ -0,0 +1,29 @@
# Hararis Sapiens on Religion
Published on: 14 Jan 2024
Ive been slowly re-reading Yuval Noah Hararis 2014 classic, Sapiens, which apart from being ridiculously over-scoped and hilariously under-evidenced, is proving delightfully entertaining.
=> https://www.ynharari.com/book/sapiens-2
Ive just finished chapter 12, covering the world history of all religion in thirty pages. Of course, at that level of brevity, there will be many deficiencies. But heres some thoughts - not terribly well organised - which stand out to me.
Hurari generally assumes a materialist metaphysic (a problem which blights the book more generally). Nothing exists except physical stuff. This gives him severe tunnel vision. As a consequence of this restricting metaphysic, he is forced to adopt limiting accounts of what the role of religion is in world history, and therefore what religion is.
> The crucial historical role of religion has been to give superhuman legitimacy to all social orders and hierarchies. Religion can thus be defined as a system of human norms and values that is founded on a belief in a superhuman order. (p. 234)
It might seem a little unfair to criticise Harari for giving a materialist account of religion. Sapiens is, after all, a materialist world history.
But this account is just one extreme example of how that project, to give a materialist account of world history, will inevitably lack the metaphysical resources to really understand the human story.
On Hararis view, any human enterprise which attempts to understand that which transcends direct human experience is at best an effort in imaginative story-telling. All scientific theory, theology, ethics and metaphysics either contorted out of all recognition into a pragmatic fiction or is cast to the flames.
In particular, its a view which is incapable of taking seriously some of the most important questions human beings have grappled with in the course of their history. Those who know me wont be surprised at which ones Im going to pick out: who was the being which made their covenant with Abraham? How is that promise being fulfilled? And who the heck was Jesus of Nazareth?
If Hararis characterisation of religion is adequate - and the Abrahamic faiths come under that banner - then those questions are reduced to nothing more profound than Doctor Who fans arguing over canon. The question of who God is becomes a mere tool for the organisation of society, rather than a substantial and important question on a matter of fact.
This is a shortcoming for its own sake: a materialist account of religion cannot adequately account for the phenomenon of religion itself.
But it is also a shortcoming even by its own lights. Without giving serious consideration to the substantial matter of what Harari calls religion (which, to his mind, includes the Abrahamic faiths, Hinduism, paganism, animism, Buddhism, Shintoism, Confucianism, capitalism, communism and Nazism), even the material facts are inexplicable. Why would, as Harari is keen to point out, out, people fight and die over and over again for a fiction?
The material facts themselves prove that religion as he construes it is not window dressing to the real story of history. It cannot merely serve as a mechanism in the churning of material history. It is itself the centre of the story.
+255
View File
@@ -0,0 +1,255 @@
# EUHWC Toast to the Lassies 2024
At the EUHWC Burns meet in Ullapool last weekend, I had the last privilege of giving the Toast to the Lassies. Particularly for the benefit of those who werent there, here it is in full!
Published on: 29 Jan 2024
Had Burns, instead of his sweet bonnie Jean,
his skills poetical for to mature
had any one of our clubs lassies seen
he would forever have remained obscure.
If he had nothing but this box of worms
Scotia would have been poorer, that Im sure.
Now none of us can claim to be a Burns,
Im no poetic master, still, Ill have a punt,
though lets be clear, Ill do it on my terms.
Ive everywhere avoided being blunt -
politeness matters more than any schema -
but it is hard when Islas such a cunt.
It was a challenge to produce a terza rima
I could recite withouten snoring;
youve been so stiff I thought youse had oedema.
The bother is this year is youll all been boring:
no drugs, no sex, no gossiping or lies,
no rock and roll, and hardly any whoring.
But hey well, rules is rules, Ive had to try!
At least it cant be worse than the reply.
Ill start with Audrey, the clubs senior member,
for if theres something that I say which disconcerts her,
its fine: the poor old girl, she wont remember.
She likes to let us think shes a hard worker
but were electing a third social sec…
its pretty clear shes just another shirker.
This lady, half American, half Czech,
for study, moved to Scotland for to do
American history really, what the heck?
The club is so much louder thanks to you:
impressive vocals for just five foot two.
That woman, Willow, reggles is bespeckled
with her sickle and her fishing tackle
shackled by the shins while she is heckled;
the way that Willow waddles maks me cackle
like a speckled jackal getting tickles,
worth a shekel in the tabernacle;
I chuckle muckle at her love of pickles
which she wiggles when she has the heart
while work for the Committees fickle trickles.
Her modus operandi: you cant rush art.
Her reimbursements programmes going great;
any day now, shell maybe even start.
She cannot walk without Audrey, her mate:
I wonder when theyre going to consummate.
Although they make them pretty tough in Peebles,
the thought of actually going up a peak
fills Shona Lewis with the heeble-jeebles.
New car? We miss your beautiful antique!
How long before this ones also up a creek?
Once there was a lass called Hannah Collier
whom even hell below regarded nasty,
deeply despised by all that dwells there.
Datings proceeding slowly for our lassie;
not far from giving up til she beguiles
a hot Italian in Southsider: classy!
At first, Michaelo seems to be all smiles
till it transpires hes one of Dantes demons…
I guess its back to posters of Harry Styles.
One day youll get a decent boy, keep dreamin;
somewhere there waits a handsome Mr Collier.
Hopefully when she meets him shell no be steamin.
Hannah, Im not sure why you chose to maul your
poor skeleton at Subway (shes still tetchy)
and then abandon what remains of all your
dignity at Ryvoan with a Frenchie!
I think he wishes that he never met ye.
And has a quiet Felicia eer been seen?
The energy she has is frankly wild.
Ive never seen a hillwalker so keen!
Ssie ischt raschtlos und nie gelangweilt.
She eats raw oats with soggy protein powder:
a camping pot has neer been worse defiled.
She uses what her Maker has endowed her
with: her recorder skills are off the charts;
youse think Im joking, but I wouldnt doubt her!
This lass of the land of the Rot-Gold-Schwarz
will soon depart, though long we might beseech you
to stay. Of course, youll break all of our hearts,
but mine most of all. Any time, Felicia,
Creag Meagaidh calls, I know routes up the rear
dark and under-explored that I can teach you!
I wont deny I think its rather queer
the things you do with chickpeas, but no matter.
Youre keen, youre quick, youre cool, that much is clear.
In fact, I think youd make a damn good faffer:
swoop down on distilleries like the Luftwaffe.
And now we come to our girl Emily Topness!
Youre keen for social sec. Youd suit the role
because… Im not quite sure, its embdys guess.
We met your sister, and she was just as dull.
No, please drone on about Icelandic soil!
Poor Joe here down the fronts bored out his skull.
And since I mentioned Joe I hate to spoil
it for you but youve got the inferior Joe,
by Jove, no joke, its Jock heres got the style!
Nah, write the boy a sonnet, get in the flow,
Whatever you producell beat by thrice
your Masters thesis. Whatd you got to show
for months of hunting for the butterflies?
There werent any. Oh, and have some sense,
cos Ive heard rumours I assume theyre lies
youve called yourself the poet in residence.
You know you cant compete, drop the pretence.
Tereza was our gear sec for last year.
She helped herself to stuff: thats factual.
Now when she asks to loan a bit club gear
we have to ask her to provide collateral.
She picked up tin whistle pretty sharp!
Which is to say, shes not a natural.
Shes nowhere happier than under tarp
gazing up at the moon and stars alone
somewhere distant and remote like Glen Tarff.
Now what to say about Lucy Ma-the-soooon....
she likes… to faff… mm hmmm… well, moving on!
And now we come to Emilie the French.
She seems to be nice on the trips we see her
but my distrust of frogs will neer be quenched.
Claims shes a pharmacist? So shes a dealer.
Need some pills in a pinch? You call, shes there
at your door in her rally-approved four-wheeler.
One question we have is, why are you here?
Most folk are in uni, youve no refutin
you were kicked out after second year!
Now the Engineering grad, Sophia Newton.
Your namesake, Isaac, was a man convicted,
constructed calculus; but no computin,
not even Isaacs, couldve eer predicted
youd drop the Eng for creative writing!
now thats what I would call a self-inflicted
inflection point! It must be quite enlightening,
but that doesnt excuse when you give us an earful.
The blood boils in our veins, the rage heightening,
and youre an American, that makes me fearful.
Whats your secret? You have us knackered!
What are you on to always be so cheerful?
Now we approach the topic of Merzbacher.
Wait, shes not here? Abandoned ship?
She says shes informatics: so shes a hacker?
She has strong views, she lets her anger rip.
Poor George got an earful, full of future advice,
but why hasnt she been on another club trip?
Were cruel to focus on this list of vice;
the fact remains: shes headstrong and nice.
On Skye, a lady gave her poles to Sasha,
which was really nice - I mean just the best -
but Sasha really didnt have to flash her.
Quick history lesson: way back, RBS
led the banking system to self-destruct
and left taxpayers to pick up the mess.
Since then, the names so irredeemably fucked
theyve had to ditch the brand once and for all.
Theres one lassie who I need not instruct
What, these days, the Royal Bank is called
cos NatWests nasty history of scandal
didnt stop Booth from working there at all.
Nothing motivates her more than to trample
upon the working class. They set her free.
She sank the pound quicker than the Belgrano,
because there is no such thing as society,
thats how it is, is it? All right, I see.
Now, coming all the way from Glenmore Lodge,
its Ellies turn! We have done what we can,
although Im scared what shell put in my squash.
She wasnt into Benji, but listen man,
youre lucky that you dodged her drunken benders.
Youll wake up in a tent in Kyrgystan,
as for how you got there, no-one remembers,
and if youd known youd be sleeping next to Ellie,
you wouldve brought some fucking ear defenders.
Shell wrap you in bubblewrap, from your ears to your belly,
cotton clothes for none, and no complaining,
applying safety to the max, spare socks in your wellies.
Shes always at her Mountain Leader training,
practicing her night nav in the locale,
pursuing QMDs - unless its raining.
But some water should not scare our gal!
Shes had much experience with the wet as of late:
after all, she got on well with our navy pal.
What was the age of that particular first mate?
Older than your ex - always part of the plan?
Ah, of course! He was a spry twenty-eight!
Youths for the losers, lets get you a real man,
mature and rugged, but kind and astute?
Just make sure hes not as old as your gran.
One request we all have is you ditch the uke:
never have strings been pluckèd quite so shitely;
we would all much rather be hit by a nuke.
And please shut up about your nice society.
We are all glad you had a fun summer,
but bringing it up throws us right back to sobriety.
To lose you of course would be a bummer:
that is, for your carefully groomed newcomers.
Now time for the main woman, El Presidente!
To here, its been like getting stones to bleed,
but in Isla Burslems case weve material aplenty!
As Holy Scripture says, let those who lead
well be worthy of double honour, so
your bit is double length its quite the screed!
Ill start off with her brilliant boyfriend oh!
Not boyfriend! Friend? To me this rather smacks
of low commitment, but what do I know?
So far, hes disappointing, but on track.
Whats he up to Isla: seven minutes? neat!
Despite that, he is never holding back
your blossoming romance with Dr Peat.
Dont deny it, that launch was pretty hard!
Its fifth base next: thats photos of his feet.
Its fair to say her reputations marred.
We all regret that we did once anoint
her President: her premierships ill-starred.
Hey - youre meant to be in charge of this joint!
Youre seldom seen cos of the mountaineering
meets that youre always on. Youd made your point
before you chose to go off disappearing
to New Zealand… we get the message! Plus
weve had enough of all your domineering:
maybe its time we put you on a bus!
Nah, Im just joking. All Ive saids refutable.
But the boys, we mean this next bit, all of us,
so stop me Isla if this isnt suitable
but honestly we think your mum is beautiful.
Alas, I have to bring an end to this rhyme.
I know it wasnt much, in our defence,
the fact you used ChatGPTs a crime.
I hope Ive not caused over much offence
dont worry, that is it, Ive said my bit,
so Ill turn from the ladies to the gents.
Yeah, dont look away now, we wrote this shit!
I see you looking at your laces, Chris!
Wit without real goodwill is not legit,
so boys, dont send sincerity to piss!
Why did God say hed take our hearts of stone
and give us hearts of flesh? For this, for this!
Here is flesh of our flesh, bone of our bone;
love, and love nothing more but God alone.
+42
View File
@@ -0,0 +1,42 @@
# Why Easter is the best week of the year
Based on a talk given to my colleagues at Scott Logic for Maundy Thursday, 2024.
Published on: 30 Mar 2024
As you might have noticed, it is Easter this week! So I'd like to take five or five minutes of your time to share why I and about two billion other humans going about the place just now think Easter is the best week of the year. And it's got something to do with a special Christian ritual called Communion.
Communion, at its heart, is about as simple a ritual as you can get. You get together with a bunch of other people. You share some bread, and you share some wine.
And its because of this ritual that so many people regard Easter as the best week of the year. I want to explain to you why that is, and more than that, I want to convince you that Easter is the best week of the year for you, too!
If youve passed by _The Hub_ at the top of Johnstone Terrace here in Edinburgh recently, you might have notice the banner which is draped over the railings just now reading, RITUALS THAT UNITE US.
Now, that might seem like an odd idea. But wouldnt that be great, if we actually had a ritual which could unite us? Because the world could surely do with a bit more unity right now. The world seems so divided, and sometimes it seems like theres no hope for real unity.
We can see that in our politics. Were divided about foreign policy, about taxation policy, about trade policy, about environmental policy.
And the conflicts that we have in this country seem pretty trivial when we remember the conflicts that are playing out in other parts of the world right now. In Israel and Gaza. In Sudan. In Russia and Ukraine.
And theres plenty of conflict happening on the small scale, too. Often its the smallest-scale conflicts which hurt us the most deeply. Your landlord pushes you around. That friend you trusted like no-one else in the world lets you down. The partner or spouse you loved like no-one else in the world you end up fighting.
Its possible that youre going to be reading this right now with a heavy heart because of a broken relationship in their life. And doesnt that hurt more than anything else we know?
When the world is groaning so heavily under the weight of conflict, and some banner on _The Hub_ tells us a ritual can unite us, that seems so out of proportion to the scale of the problem, doesnt it? What can a ritual do? A bit of old superstition? An excuse to divide people, maybe what can a ritual do to unite us?
Well, two thousand years ago, a man had a meal with his friends. Together, they shared a meal of bread and wine which, in that time and place, was the most ordinary meal imaginable.
And yet, in that most ordinary event imaginable, something was happening which was totally unimaginable. As this man, Jesus, shared the elements of this meal, he made some extraordinary statements about what he was doing: take, eat, this is my body drink this, all of you; this is my blood of the new covenant. (The word covenant means a promise.)
He told them he wasnt just giving them bread and wine, he was giving his body and his blood, and a promise.
Before Jesus ate another meal, he was flogged and nailed to a cross. His blood was spilt and his body broken, even to death.
And yet, that wasnt the end of the Easter story. Because three days later, mourners turned up at Jesus tomb to pay their respects, and found the tomb empty, the stone rolled away. Then they became the first of crowds of incredulous eyewitnesses to see Jesus, the same Jesus who was killed on a cross, alive.
Some magic trick, right? But this matters a hell of a lot more than just some magic trick. Because Jesus became the first person in history to prove that you really can both have your cake and eat it. He gave his life, and lived! As a result, we can have his life and our own. We can join with Jesus through the ritual of Communion which he established, and thereby, through Jesus body, join together with everyone else who takes part in that ritual, as one body. Then we can start living our brand-new, full-fat, original-recipe life overflowing with generosity where we too can both give our life to others and enjoy it ourselves. Indeed, Jesus taught us and showed us that its precisely by giving our lives to others that we get to truly live ourselves.
This is why, in spite of all the division which persists in the world today, two billion people regard this week as the best week of the year. Two billion people, from every nation on Earth, speaking thousands of languages, of every age and culture and gender and race, who defy the divisions of this world to insist on joining together as one body in Jesus.
Because Jesus new covenant, his promise to all of us, is that in an apparently hopelessly divided world, there exists real hope for unity. And thats why Easter is the best week of the year.
+16
View File
@@ -0,0 +1,16 @@
# Tracking pixels
Concerning a notice in the privacy policy of an HR app
Published on: 10 Apr 2024
I recently made the mistake of reading the privacy policy of the HR app my employer uses. Take this choice excerpt:
> *Tracking Pixels*
>
> We may place tracking pixels in our Applicant Tracking System (ATS). These pixels are used for analytics purposes, including to track statistical information around when an email sent to you is opened.
Translation:
> We reserve the right to know whether you have read our emails, how long you spent reading them, at what time and in what physical location you read them, and any other information we can get our hands on. We reserve the right to do this as soon as you open an email, without asking for your permission first, and ask for your forgiveness later. That is, if you ever find out: which you won't, because we also reserve the right to hide this information in a Privacy Policy which we know you won't read, and we design our data-harvesting monster to be completely undetectable to anyone except determined experts, on purpose. We reserve the right to leave this data lying unused in a data warehouse where someone might steal it, and we also reserve the right to use it, if we can think of something satisfactorily dastardly to do with it. On the bright side, we probably won't, so having your data leaked to hackers and fraudsters is probably the worst you have to worry about. Unless we sell your data to advertisers, or a ~black hole of stolen data~ Large Language Model. Oh yeah, we probably reserve the right to do that, too. We doubt anyone will ever check.
+24
View File
@@ -0,0 +1,24 @@
# Who consecrates the tabernacle? (Ex 29)
A quick, cursory and possibly completely rubbish observation I've made on Exodus 29.
Published on: 11 Apr 2024
I've been reading Exodus recently, and the ending of Chapter 29 stuck out to me.
For pages and pages (since Chapter 25!) God has been giving Moses exact and exorbitant instructions for how to build the tabernacle, what offerings to give upon it, who the priests are going to be, what the priests are going to be wearing. It's the fanciest IKEA manual you've ever read. No expense spared. Everything is drowning in gold, silver, incense, myrrh, silk, fragrant oil, you name it.
What's this about? The answer seems obvious: it's to sanctify the temple! To make it beautiful enough and pure enough that even God could live there.
But right at the end of Chapter 29, in vv 43-44, there's this wonderful twist (NIV, emphasis mine):
> ... and the place will be consecrated by *my glory*. So *I* will consecrate the tent of meeting and the altar and will consecrate Aaron and his sons to serve me as priests.
All this work, and at the end of the day, it's *God* who sanctifies his own temple? So why all the fuss? Well, it looks like the final two verses of the chapter give us the answer:
> Then I will dwell among the Israelites and be their God. They will know that I am the LORD their God, who brought them out of Egypt so that I might dwell among them. I am the LORD their God.
So on a cursory reading, it looks like God is telling them something extraordinary about the kind of God he is. He is not like the other gods, who demand this kind of worship to appease their pride. Nor is there, unlike the other gods, anything the Israelites could do to make a place habitable for him. That's because there's nothing the Israelites could do to cleanse themselves of their sin: only the 'glory' of God could do that. And indeed, God has no need of worship to puff up his pride, since his glory existed before the world was made, and human beings can do nothing to either add to it or subtract from it.
Instead of a vain god who seeks tribute, this is a Father God who seeks to 'dwell' (literally to 'camp') among his people. The God who has put into motion a rescue plan to pull the Israelites out of Egypt specifically for this purpose. As it was in the beginning, when God dwelt in the Garden with Adam and Eve. This is his mission. This is what he's like. And he wants his people to know this, so that they can dwell together.
+179
View File
@@ -0,0 +1,179 @@
# God Is Not Great, initial thoughts
My spark notes on Hitchen's classic 2007 polemic against religion, plus some initial thoughts on how I want to respond to it.
Published on: 14 Apr 2024
These are my 'spark notes' on *God Is Not Great*, Christopher Hitchen's classic 2007 polemic against religion in all its forms, and call to adopt secular humanism as its rightful replacement.
The book can be coherently read as a collection of independent essays. That said, with a few exceptions, each chapter in *God Is Not Great* contributes to one of three main themes, and I think this is a helpful way of summarising the overall movement of the book. The three themes I've identified are as follows:
1. Religion is evil
2. Religion is untrue
3. Secular humanism is a better alternative to religion
As for the exceptions: Chapters 13 and 17 in part contribute to both the first theme and the third, while Chapters 1, 3, 12 and 14 don't fit into these broad themes, and are self-standing.
## 1. Religion is evil
### Chp 2
* Religion is violent, because:
* It has to be missionary, because it is insecure in its own beliefs (p17)
* It provokes tribalistic conflict, in a similar manner to racism (pp35-36)
### Chp 4
* Religion is bad for your health, because:
* Faith in medicine is a threat to religion's thrall (p47)
* Religious doctrines may contradict sound medical advice
* The right to religious freedom may be abused to deflect criticism of unhealthy practices (p50)
* Religion has a special relationship with child abuse, and is incapable of accepting open moral criticism of itself for this
### Chp 13
* Religion tends towards evil, because it requires fanaticism in order to spread, and fanaticism tends towards evil (p192)
### Chp 16
* Religion causes child abuse, because:
* Terrifying children with eschatology is child abuse
* Religious education is propaganda and should not be inflicted on children who are not yet mature enough to respond to it rationally
* Religion consistently mandates cruel genital mutilation of children
* Christians and Muslims have spread misinformation about masturbation, which leads to dangerously sexually repressed adult men, which in turn leads to sexual abuse of children by those men (as well as sexual abuse of women)
* Child abuse in churches is not a case of a few bad eggs, it is institutional and based on an ideological need to control the minds and sexual organs of children
* Religion institutionalised torture in medieval Europe
* Religion makes honest and nuanced debate about abortion impossible, because:
* Nuanced debate is pushed out by extreme and implausible religious doctrine
* Religious people would rather use the unborn as objects of doctrine than human beings in need of protection
### Chp 17
* Religion is the only reason anti-Semitism is possible
* Religion in its fullest expression is indistinguishable from totalitarianism, because:
* The defining characteristic of both religion and totalitarianism is the absolute right to rule of the ruler, even when they rule with caprice
* Religion and totalitarianism are also characterised by the need to extinguish heresy with violence
* Religion and totalitarianism alike must propose a total solution to all life's problems, require blind faith from its adherents, and demand all aspects of life public and private be submitted to total supervision. This doesn't bring out the best in us
* Religious/totalitarian systems are unable to take accountability and therefore improve over time, in contrast to secular humanist systems
* History has proven this as fact:
* In the ancient world, religious totalitarianism was the normal form of government
* Calvin, the inspiration for the Presbyterian Christian tradition, which included South African apartheid, was the epitome of a totalitarian dictator, demanding total control on the private lives of his citizens in Geneva, on the pain of humiliation in this life and eternal torment in the next
* History has also proven that, rather than standing in opposition to the supposedly secular totalitarianisms of the twentieth century, religion actually aided and abetted totalitarianism:
* Rome supported fascist movements throughout Europe, including Italy, Hungary, Spain, and Ireland
* Rome accommodated Naziism by handing over control of its schools, permitting the use of parish records to identify those with Jewish ancestry, disbanding Catholic opposition political parties, declaring Hitler's birthday a Church holiday, and running the 'rat line' to South America after the military defeat of Naziism
* Although not quite as arse-licking as the Vatican, Germany's Protestant churches also mostly capitulated to Nazi totalitarianism
* Japanese soldiers committed enormous atrocities across the Far East in the name of their god-emperor, Hirohito
* The strategy of the Communists was first, to use religion as a prop to gain power, and then to replace religion with itself. Notice the striking commonalities between religion and communist totalitarianism:
* Infallible leaders
* A permanent war on heresy
* Institutionalised torture
* Scapegoating the innocent rather than accepting accountability for failures
* Justifying any means necessary in order to achieve an ultimate end
## 2. Religion is untrue
### Chp 5
* Religion was a barbaric attempt to explain physical phenomena. Science now does a much better job, so religion can be discarded as a redundant theory
### Chp 6
* Religion is 'solipsistic', which is to say:
* Religion divides the world into an in-group and an out-group
* When the in-group receives good fortune, that is interpreted as God's blessing
* When the in-group receives bad fortune, this is inexplicable
* Whatever happens to the out-group is irrelevant
* This is a redundant theory which explains little, and therefore we should not believe it
### Chp 7
* We should believe that the Pentateuch is a fiction, because:
* Exodus is inconsistent with the archaeological evidence
* Textual evidence in Deuteronomy suggests the texts were written much later than the supposed events were supposed to have taken place
* Throughout the Pentateuch, Moses is referred to in the third person, which is not consistent with the claim that Moses himself authored it
* The Pentateuch contains events we should *hope* to be false, such as Moses ordering multiple massacres, and the Ten Commandments classifying wives as their husbands' property
* The Pentateuch, indeed, the whole Bible, is limited in scope to a small corner of the Middle East, which is not consistent with the universal nature of the supposed God who is supposed to have inspired its authorship
### Chp 8
* We should not believe the Gospels, because:
* Matthew and Luke disagree on the virgin conception
* Matthew and Luke disagree on the genealogy of Jesus
* Matthew and Luke disagree on when Mary and Jesus escaped to Egypt
* Luke dates the birth of Christ during both the reign of Herod in Judea and the governorship of Quirinius in Syria, but these two events did not overlap, so this is impossible
* As far as we know, the Romans did not, and would not, demand that the people assemble in one place in order to be counted for a census
* The Gospels disagree about the Sermon on the Mount
* The Gospels disagree about the Anointing of Jesus
* The Gospels disagree about the Crucifixion and Resurrection of Jesus
* The Gospels disagree about the betrayal of Judas
* The Gospels disagree about the denial of Peter
* John suggests he thinks Jesus was probably born in Galilee to an ordinary family with no proven link to King David's genealogy
* Mary's attested behaviour during the ministry of Jesus is not consistent with the Nativity story
* John 8:3-11 (the stoning of the woman caught in adultery) is a later insertion to John's Gospel
### Chp 9
* The Koran is borrowed from a hotchpotch of Jewish and Christian myths
### Chp 10
* Miracles (such as the Resurrection of Jesus) should not be believed, because:
* See Hume's *On Miracles*
* Extraordinary claims require extraordinary evidence
* Believing miracles is comparable to believing reports of aliens (p144)
### Chp 11
* Religions are founded in credulity
### Chp 15
* The crucifixion story makes no sense, because:
* I'm supposed to be morally responsible for Adam's sin, but I amn't!
* Even Adam can't be fully blamed for Adam's sin, because he was set up!
* The Jews who crucified Jesus are supposed to be blameworthy for their crime, even though the crucifixion was allegedly both necessary and inevitable
* I'm allegedly given the free will to either accept or deny the offer, even though denying the offer will lead to an eternity of torment: any sensible God who cared a mite would not have given me the choice
* Religious rules are impossible to follow, and this leads to either spiritual policing, organised hypocrisy, or both
## 3. Secular humanism is a better alternative to religion
### Chp 13
* Faith has inspired great heroism. But the heroism is better explained by the heroes' humanism than it is by their faith itself
* For example, Martin Luther King Junior didn't really preach Christianity, because he preached forgiveness, while Christ preached eternal torment for the 'inattentive' (pp175-6)
### Chp 17
* Religion is the only thing sustaining anti-Semitism
* Secular humanist political systems can take accountability, respond to criticism and improve over time, while religious systems exempt themselves from legitimate criticism, stifling progress
* The only alternative to totalitarianism is pluralism, which is inherently secular
### Chp 18
* Secular humanism has been a powerful positive force throughout history in face of oppression by religion, as proved by example:
* Socrates proved that conscience is innate, and that a great way to mock dogma is with satire which pretends to accept that dogma
* Lucretius, Democritus and Epicurus had better explanations for the way the world worked than religion (which is why their work was suppressed in Christian Europe and nearly lost forever as a result). Once rediscovered, their ideas kick-started the Scientific Revolution in Europe
* Spinoza's deistic ideas had a huge influence despite Jews collaborating with their Christian oppressors to try and ban his writing out of existence
* Boyle and Voltaire may have been closet atheists, agnostics or deists
* Kant 'overthrew' the cosmological and ontological arguments for the existence of God, and proved (by means of the Categorical Imperative) that human decency does not require any theological assumptions
* Let's chuck some more names in the ring: Gibbon, Hume, Paine, Franklin, Darwin, Einstein
* Jews were once doubly ghettoed: on the outside by oppressive Christians, and on the inside by oppressive self-racialisation. Secular humanism freed Jews from both these ghettoes, which in turn led to an outpouring of secular Jewish brilliance
* Ancient Jews were on the road to a quasi-secular Hellenism, before that was ruined forever by the tyrannical and fanatical Judas Maccabeus, with disastrous consequences for the history of Western civilisation. The Abrahamic religions we know today were not inevitable, and it is possible to imagine what Western history would have been like without it
### Chp 19
* Secular humanism is a better alternative to religion, because:
* Religion requires clinging to immovable dogma and being unwilling to change your mind
* Seeking truth requires being willing to change your mind
* Secular humanism is therefore on the side of seeking truth, and religion is on the side of wilful ignorance
* Secular humanism is on the side of progress, because it is what enables the expansion of scientific knowledge and the development of new technology
## The odds and ends
* Chp 1: an introduction to the themes of the book with little substantial
* Chp 3: titled 'A Short Digression on the Pig', it does what it says on the tin
* Chp 12: titled 'A Coda: How Religions End', it does what it says on the tin
* Chp 14: contrary to the hopes of some Westerners disillusioned with organised Western religion, Eastern religions like Buddhism, Hinduism and Taoism are not a solution to the problems of religion
I would be interested to try writing apologetic and/or evangelistic responses to these ideas. But it's not a priority for me right now. Anyway, if I ever want to come back to it, I'll probably come back to these spark notes to give me a head start.
+34
View File
@@ -0,0 +1,34 @@
# How I made YouTube work for me
I just learned YouTube channels have an RSS feed. This is terrific news.
Published on: 2 May 2024
One of my bad habits in life is wandering through YouTube. I've always had AutoPlay turned off, but I still found myself switching off and sleepwalking from one 'recommendation' to the next.
A lot of what I watch in these times is crap. It's often when I'm tired and just want to switch off, so naturally enough, longer, more emotionally or intellectually material in other words, exactly the kind of videos I actually *do* want to watch I ignore. (For me, it's often mediocre sketch comedy videos. That's my poison, it turns out.)
Now, there is a time for switching off and doing something light. But I don't want watching junk videos to be my answer. Any more than when I'm hungry after a long day of work, I don't want to be resorting to junk food all the time. I really want to get out of this bad habit, and though it's not a huge problem, I've still not been able to fully kick it, either.
Still, there are YouTube channels I really *want* to keep up with. Musicians. Short film channels. Video essayists. And, yes, even one or two sketch channels: though YouTube is a bit flooded with sketch comedy, some it is really good and brings me joy, and that's a good thing!
This is where RSS comes in.
So if you don't know, an RSS file is a file someone puts on their website which tells you, in a standard format, what pages are on their website. It's a pretty old standard in Web terms, and it's very stable. There are a wide range of apps out there, called 'feed readers', which you can use to keep track of RSS feeds, notifying you when something new gets published in your website and putting it in a feed for you to review.
It turns out YouTube channels have RSS feeds.
This is terrific news.
It means I can use my RSS feed reader to subscribe to YouTube channels, instead of YouTube's own subscription system.
And that means I don't need any of YouTube's personalisation features. I can delete all my search history, all my watch history, and stop them from collecting any more. This means YouTube is now incapable of providing recommendations that I'm actually likely to click on. Which is exactly what I want.
This is what my YouTube homepage looks like right now:
=> /images/blog/2024/05/02/beautiful_youtube_homepage.jpg My YouTube homepage with a blank space where the recommendations used to be
So I can both subscribe to the channels I'm genuinely interested in, and not get sucked into watching junk.
Awesome!
+57
View File
@@ -0,0 +1,57 @@
# LLMs do not understand anything
Save this for the next time someone tells you that LLMs 'understand' things.
Published on: 13 Jun 2024
LLMs do not understand what they are talking about. They just don't. It's not how they're built. They have a statistical model of language, not a semantic one. Philosophical puzzles about whether silicon can be conscious *do not arise_, because LLMs are _not even close to the right shape_ for having _anything like* 'understanding'.
If you don't believe me, there are plenty of examples out there on the Internet, but this is as good as any. It includes Chat GPT 4o explaining in detail why \~\~A → \~A (which is a classical contradiction) is trivially true in classical logic.
It's even better given that I had explicitly asked it to explain why that sentence implies the trivial logic, not why it is trivially true. And even had the explanation not been complete garbage from beginning to end, it would only have shown that the sentence was *true*, not that it was trivial.
In other words, the output:
* Attempts to prove a contradiction (unprompted!)
* Confuses the concepts 'truth' and 'triviality'
* Is irrelevant to the prompt
In case you want it handy, I'll put the full conversation down below. The good bit is at the end. The only edits I've made are to replace TeX syntax with Unicode.
---
Me:
> You have the following axioms.
>
> 1. |- (A -> B) -> A
> 2. |- (~B -> ~A) -> (A -> B)
> 3. |- (A -> (B -> C)) -> ((A -> B) -> (A -> C))
> 4. A -> B, A |- B
>
> Prove ~~A -> A.
Chat GPT 4o:
> To prove ~~ A → A, we will use the given axioms and inference rules. Let's denote the axioms as follows:
>
> 1. ⊢ (A → B) → A 2. ⊢ (\~ B → \~ A) → (A → B) 3. ⊢ (A → (B → C)) → ((A → B) → (A → C)) 4. If A → B and A, then ⊢ B
>
> Here is the proof step-by-step:
>
> 1. *Axiom (2) Instantiation:* From axiom 2, we have:
>
> ⊢ (\~ A → \~\~ A) → (\~\~ A → A)
>
> Let B = A and A = \~ A.
>
> 2. *Intermediate Step:* To use this axiom, we need to show \~ A → \~\~ A.
>
> 3. *Negation Introduction:* By definition of negation, \~ A → \~\~ A is a tautology, because if A is false, then \~ A is true, and \~\~ A (which is A) must be false, making \~ A → \~\~ A always true.
>
> 4. *Modus Ponens Application:* Since \~ A → \~\~ A is true, we apply modus ponens (axiom 4) to derive:
>
> ⊢ \~\~ A → A
>
> Thus, we have proved \~\~ A → A using the given axioms and inference rules.
+110
View File
@@ -0,0 +1,110 @@
# Doctor Who, Gayness, and the Church
Series 14 of Doctor Who has a schizophrenic relationship with Christianity. Its also gay. I think there might be a connection.
Published on: 8 Jul 2024
Ive recently finished the most recent series of Doctor Who, series fourteen (or Season One as our new benevolent overlords at Disney+ are styling it.) Its pretty fun, by the way. I can recommend it for light watching[^1].
Theres a few discussion points coming out of that series that would be worth dwelling on. But Ive been particularly thinking about the schizophrenic attitude the series has taken to Christianity, along with how gay this series is: and what these two themes might fit together, to give us something important to say about Jesus Christ, being gay, and the universe.
## The Doctors schizophrenic relationship with Christianity
First, lets look at that schizophrenic attitude to Christianity I mentioned.
The series ticks up an impressive tally of explicit or strongly implicit references to Christian beliefs and morals, and *none* of them are positive.
In episode 3, *Boom*, the far-future Anglican church has become an army, with the ranks of the clergy becoming equivalent to arms-bearing ranks in the soldiery. The Doctor claims that the Church has been an army for most of its history[^2], and that his companion Ruby Sunday (and therefore us) has been living in a blip. An all-powerful arms company has tricked the Church into fighting a non-existent foe in order to keep them buying weapons. The Doctor attributes their ability to fall for such a deception to religious faith:
> I mean, most armies would notice that they were fighting smoke and shadows, > but not this lot, Ruby, you know why? They have faith. Faith! The magic word > that keeps you never having to think for yourself.
In episode 4, *73 Yards*, Kate Lethbridge-Stewart, head of UNIT, makes this offhand comment, suggesting the oft-repeated claim that all religion is founded in credulity[^3]:
> Thats what we do, all of us. We see something inexplicable, and invent the > rules to make it work. Mankind saw the sun rise and created God: or we saw the > arrival of a Sontaran, one or the other.
In episode 5, *Dot and Bubble*, The Doctor is rejected by the people he is trying to save. They rant that he is not one of us, call his claims about the TARDIS magic and voodoo, and in the same breath assert that it is their God-given duty to maintain the standards of Finetime (their space colony).
In episode 6, *Rogue_, a party of murderous aliens turns up at an upper-class Georgian dance party and demand to be married. The priest denies them, not on the grounds that they are unrepentant murderers with obviously no intention of taking their marriage vows seriously, but on the grounds that they are creatures from hell, _ie* you dont look like us[^4].
There are other references to Christianity here and there which are, in themselves, neutral or ambiguous. This adds to the sense that Christianity is an important theme for the series.
But the message is clear. Its consistently drilled in: Christian beliefs and morals are stupid and bigoted.
And yet, when the series culminates in its epic two-part finale, the story is plastered wall-to-wall with Christ-like imagery. It transpires that the Doctor has unwittingly been acting as an Angel of Death by carrying the invisible God of Death, Sutekh, on his TARDIS, infecting everyone he goes near with the curse of death. Finally, through one of his children, the curse is unleashed, and everyone in the universe is given over to death. Even in death, they continue to suffer, and one of the characters describes themselves as being in hell. The Doctor battles Sutekh face-to-face and defeats him. Sutekh becomes one of the only creatures which The Doctor, usually a staunch pacifist, can bring himself to kill. Then, the whole world is restored to life. Ruby Sunday even gets to meet her birth mother for the first time, and their relationship is wonderfully restored.
So on the one hand, any outward sign of Christianity is despised, but the heart of the Christian story — the Resurrection — becomes the template for the climactic redemption story which ties the whole series together.
Thats what I mean when I say this series has a schizophrenic relationship to Christianity.
## Whats this got to do with gayness?
In series fourteen, Doctor Who goes gay.
Im not playing culture wars here. The Doctor literally kisses a man in episode six.
=> /images/blog/2024/06/30/ncuti-gatwa-promo-pic.webp Look at this official BBC promo pic and tell me Ncuti Gatwa isnt playing The Doctor gay.
But its not just that. When we first meet his companion, Ruby Sunday (in the Christmas special), shes busy falling in love with a woman. Ncuti Gatwa plays The Doctor camp (brilliantly by the way). The Doctor refers to Ruby as babes. Its got gay written all over it, and this is definitely on purpose.
From this perspective, its not hard to imagine where the hostility to the Church might come from.
The Church has failed to teach well and Biblically on sexuality, at least in the last couple of centuries. Everyone has suffered as a result of this, but gay people often feel the sharpness of this particularly keenly[^5].
The Church has put its weight behind a variety of unhelpful teachings on sexuality over the centuries[^6]. But two, contradictory, ones stand out as particularly salient today.
One is *prudishness*. Sex is evil. Sex is the origin of all evil: the Devil seduced Eve, and Eve seduced Adam, and thats when it all went downhill. Sex is naughty. Sex is bad. Remember when Jesus said, whoever looks at a woman to lust for her has already committed adultery with her in his heart (Matt 5:28)? He was saying that *all sexual desire* is sinful. Remember when Paul advised, It is good for a man not to touch a woman (1 Cor 7:1)? He was saying that its *bad* for a man to touch a woman *under any circumstances*.
This is, of course, false and dreadful teaching. The truth is that sex is a gift from God, given so that we can bear his image by loving each other in this most intimate and wonderful way. This is the consistent message of both Testaments. But the idea that theres somehow something *inherently wrong* with sex has undeniably been a part of the Churchs teaching since at least the Victorian period (and possibly a great deal longer than that).
The other is that sex is an *essential aspect of humanity*. If you arent having sex, youre missing out on an irreplacable part of your created purpose. This has reacted explosively with the ideas of the Sexual Revolution. The net result is that we have not so much been *freed to have sex* as weve been *enslaved to have sex*. Virginity is an embarassment both for men and for women.
The radical Biblical idea that you can have a completely fulfilled life, deeply enriched by loving relationships, *without* having sex or getting married, is forgotten.
Everyone has been harmed by these teachings. But those who experience significant attraction towards the same sex have been harmed double.
Faced by the impossible demands of bad Church teaching on sexuality on top of the complexities of living with same-sex desire has left those people with nowhere to go. They can *just say no*, and be made to feel that theyre missing out on completing their full humanity. Or they can indulge their same-sex attraction, and be judged not only promiscuous but a pervert to boot.
No wonder so many gay people have given up on the Church (and I havent even talked about discrimination or violence towards gay people).
And no wonder that The Doctor has become strikingly anti-Christian at the same time as it has become strikingly gay.
## What next?
Doctor Whos criticisms of the Church hurt when they hit the mark. They hurt more when theyre unfair. But thats not the point. That point is this: the Church has lost control of the conversation. And weve lost control of the conversation because we threw it away. We threw it away encased in bomb-proof concrete and left it to sink to the bottom of the deepest available ocean trench.
If we in the Church are feeling hurt, we should start by feeling hurt by our own sin.
The work of regaining trust on the question of sexuality will be the work of decades: and thats if we start working full-pelt right now. But there is hope.
I was encouraged last December by the visit to my local church, Bruntsfield Evangelical, of *Living Out*[^7], a charity dedicated to helping churches across the UK talk about sexuality. Ed and Andy, both same-sex attracted men, led us through talks and discussions, and played recordings of perspectives from their same-sex attracted female colleagues who couldnt make it on the day.
They were primarily there to talk to us about how to support people like them: same-sex attracted Christians who might be in our church who believe they are called to singleness, helping them to thrive, living their true selves openly, surrounded by love and empowered to share their love with others, just as we want for everyone in our church. In fact, I heard some of the best news Id ever heard about my own sexuality, even though I am in the minority of people who have never experienced significant same-sex attraction.
Whether or not you agree with their stance that the right place for sex is within a marriage between a man and a woman, charities like *Living Out* are driving the Church in the right direction: serious, Biblical sexual doctrine which helps us to realise in practice how we are all made in the image of the God of love.
And how needed! How desperately needed! And Doctor Who gives us a little glimpse of that, too.
Because not only is the series apparently anti-Christian, it also expresses a need for Christian salvation. The Resurrection story is one which everyone needs to hear, to have their death transformed to life, to have their full humanity affirmed and celebrated and tended and to delight in it and to see it flourish. To know the God of love and life, behind all and over all, with a plan and a means to defeat the grip of death on the world.
So lets keep having those frank conversations about sexuality in the Church. It matters for all of us.
1: Unless youre bothered by plotholes big enough to fly a TARDIS through. Oh, and you can probably skip episodes 1 and 3.
=> https://www.doctorwhotv.co.uk/doctor-who-opinion-empire-death-2-102716.htm
2: For the record, this is flatly false. Though exceptions are widespread, the overwhelming mainstream opinion is that priests should not bear arms. This is not new, but has been the consistent orthodoxy, taken straight from Jesus teachings by the Church Fathers and maintained constantly since then. Can the Church be legitimately criticised for its use of violence? Absolutely, lets have that discussion. Has the Church almost always been a *literal army*? No. The Church has *never* been an army.
3: See *God is Not Great* by Christopher Hitchens, Chapter 11 for an epitome example of this put forward by a prominent atheist apologist.
4: In the spirit of charity, I have to accept that this admits of multiple interpretations. It is possible that by calling them creatures from hell, the priest is referring precisely to their unrepentant murderousness. However, the priest has already tried to avoid the creatures gaze by the pitiably schoolboyish ploy of *looking elsewhere*, priming the viewers to think that the priest is a silly coward: certainly not the kind to make a noble, principled defence of justice with his head in the jaws of death. Plus, if we interpret creatures from hell as meaning you dont look like us so you must be evil, that would fit with the consistent framing of the series: that religious morality is equivalent to bigotry.
5: Though it must be remembered that many gay people have remained and thrived within the Church in spite of the challenges, serving in diverse ways, not least the priesthood.
6: I found the Ezra Institute to give a good introduction to the history of Church teachings on sexuality.
=> https://www.ezrainstitute.com/resource-library/articles/sex-and-the-history-of-christianity
7: For a great and humane introduction to what these guys are like, have a listen to this Living Out podcast episode. I get that if you havent grappled with issues like these before, it can be really challenging, and you might find it hard to trust people who take a different view to yourself. I know: Ive been there myself! The best way to start is to listen to a human voice.
=> https://www.livingout.org/resources/podcasts/68/misstep-7-godliness-is-heterosexuality-the-plausibility-problem-7
+547
View File
@@ -0,0 +1,547 @@
# What do academics think LLM hallucination means?
What does the word hallucination actually mean in reference to LLMs when used by academics? And where does that word come from? Ive trawled the academic literature for answers.
Published on: 16 Jul 2024
Updated on: 17 Jul 2024
The word, hallucination as applied to LLMs has me enthralled right now. Its such a *weird* word. And problematic, I think.
If you dont know what Im on about, have a quick look at IBMs introduction to the topic. It gives you a good intuition what people are talking about, and helpfully illustrates the deep conceptual confusions which have me gripped.
=> https://www.ibm.com/topics/ai-hallucinations
But this got me asking: what do people actually mean when they say that an LLM is hallucinating? And why that word? Where does it come from, and how did it end up in our mouths?
As far as I could see, nobody seems to have answered this question before, except with the odd bit of unsubstantiated guessing. I think its important that we know where this word came from and what it means.
So I ended up going on a bit of a treasure hunt. Ive skimmed well over a hundred academic articles to trace where the word came from, how its been used over time, and how its spread from field to field.
The result is that I have what I hope is a pretty compelling story of where this weird old word come from and what its supposed to mean. Ive also got an excruciating amount of evidence.
What Ill do, is first present my story, and then step through the excruciating detail, providing you with all my sources, so you can check my working, and perhaps see what important evidence I might have missed. If youre just here for the headlines, you dont have to read the excruciating bits.
Before I proceed, two caveats.
1. I am not a subject matter expert. Judge the quality of my arguments and my evidence. Do not treat me as an authority.
2. For the purposes of this post, Im just considering academic literature. The ways that people use the word hallucination in popular discourse may be quite different. (For the record, I think they do: but thats a story for another day.)
## The long and short of it
So this is my theory.
In 1999, the word hallucination was coined accidentally and off-hand by a couple of researchers, Baker and Kanade, in the field of computer vision (CV).
The word caught on in CV, and came to have a fairly unambiguous meaning. Given an image with missing pixels you want to fill in, hallucinating meant generating those missing pixels by means of information in a deep learning models training data, rather than by means of any information contained in the input image. (This was also known as example-based in-painting). It was a term of art, not jargon.
Then, sometime between 2017 and the end of 2018, a few different researchers in natural language processing (NLP) adopted the term. They were probably aware of the term's usage in CV, and transferred it to mean something similar in NLP.
When these NLP researchers used it, they used it to refer to when a model produces content which is irrelevant to the input, or contains information not contained in the input.
When the word hallucination first appeared in two or three papers in NLP, the authors used it as a technical term for their own limited purposes. However, it was soon adopted in various contexts for similar concepts.
For example, in image captioning, hallucination came to mean producing a caption which mentions an object which wasnt depicted in the input image. In machine translation, it came to mean generating a translation which was in the right language, but which meant something completely irrelevant to the input. In abstractive summarisation, it came to mean producing a summary containing details which werent in the text the model was supposed to summarise.
When the term entered NLP, it underwent a striking transformation. It acquired a *valence*.
In CV, the term referred to normal behaviour, and was value-neutral. It was just a description of what a certain machine does. We need to fill in these missing pixels. The model will do that by hallucinating them.
In contrast, in NLP, the term hallucination was always used to describe *abnormal* behaviour, and almost always used with a negative valency. In other words, while CV folk used it to describe what they expected their models to do, NLP folk used it to describe a *bug*.
(There were odd exceptions, though. You do get the periodic paper which insists that there are positive applications of hallucination. But the fact they have to insist so hard rather proves that that boat has already sailed. And even they are still buying in to the idea that hallucination is abnormal behaviour.)
Now, that brings us up to about 2020. From 2020, we get another change.
From about 2020 until the present, academics have attempted to *jargonise* the word hallucination. Broadly, they have so far *failed*.
When I say that people have attempted to jargonise the word, I mean that people are using it while assuming a specific definition. They are using it with technical qualifiers like extrinsic. They are using it without explaining the meaning or the context, as if you should already know what the word means. And hallucination itself is becoming an object of study.
When I say that they have failed, I mean that there is no widely agreed and specific meaning for the word, which in my mind, is a crucial feature of jargon. However, the intended meanings tend to coalesce around the idea of an abnormal behaviour of LLMs whereby they produce output which is not epistemically supported by their input.
## Excruciata
OK, that was the long and short of it. Now for the excruciating detail. To recap, I think these six claims are enough to support my theory:
1. Since 2022, academics have treated hallucination as jargon
2. Since 2017/18, the word hallucination has typically been used to describe LLMs producing unfaithful output
3. Up to now, academics have not agreed a specific meaning for the word hallucination
4. The word hallucination entered the NLP literature around 2017/2018, probably from CV
5. The word hallucination was not jargon in CV, but was a term of art for example-based in-painting
6. The word hallucination entered the CV literature in Baker & Kanade 1999
Ill work through each of these in turn, showing how I got there from the available evidence.
Feel free to use this as a cheap way to harvest citations for your own research.
### 1. Since 2022, academics have treated hallucination as jargon
My evidence for this is twofold: surveys of hallucination usually treat the word as jargon, and many original research papers do, too.
First, lets look at those surveys. These first five all belong together.
- Ji et al 2022 [^16] - Liu et al 2023 [^30] - Rawte et al 2023 [^42] - Wang, Cunxiang et al 2023 [^48] - Huang, Lei et al 2023 [^13]
All the latter four of these surveys lean heavily on Ji et al 2022 for their definition of hallucination. Since they all source their definition of hallucination from Ji et al 2022, it follows that their definitions are all extremely similar, and often verbatim. Ji et al 2022 had this to say about the word hallucination:
> Within the context of NLP, the most inclusive and standard definition of > hallucination is the \[sic\] generation that is nonsensical or unfaithful to > the provided source content.
They also made a distinction between *intrinsic* hallucination, which they regarded as the generation output that contradicts the source content, and *extrinsic* hallucination, which they regarded as the generation output that cannot be verify \[sic\] with the source content. Some of the other surveys pick up on this intrinsic/extrinsic distinction. To me, extending the word with technical epithets suggests they regard the word itself as already having an agreed, specific meaning.
Meanwhile, Li, Wei et al 2022 [^26], another survey, offers no definition of hallucination, but uses it freely along with the intrinsic/extrinsic distinction. This suggests they expect their expert readers to already know some agreed meaning of the word hallucination. This is a hallmark of jargon in my books.
Original research also shows the word hallucination being used as jargon. For example, Maynez et al 2020 [^35], despite being often cited when other authors first introduce the term hallucination, provides no definition of the term. They do, however, use the intrinsic/extrinsic distinction (this might be the paper which coined the distinction).
All the following papers use the word hallucination, sometimes in passing comments, sometimes as the principal focus of the paper, without attempting to define the word.
- Mao et al 2020 [^32] - Wang, Alex et al 2020 [^47] - Lin et al 2022 [^29] - Kumar et al 2022 [^21] - Lee, Hwanhee et al 2022 [^23] - Li, Junyi et al 2023 [^27] - Guerreiro et al 2023 [^12] - Dahl et al 2024 [^6] - Song et al 2024 [^46]
Dahl et al 2024 also use the word without defining it, even as they tack on their own bespoke technical epithets, open-domain and closed-domain. Plus, in many of these examples, the context is not enough to make clear what the word hallucination is taken to mean.
All these examples demonstrate that the authors assume that their audience, *viz* technical experts, will come with an agreed and specific meaning of the word hallucination pre-baked and ready for precise academic application.
In other words, these authors, including both surveys and primary literature, use the word hallucination as if it is jargon.
### 2. Since 2017/18, the word hallucination has typically been used to describe LLMs producing unfaithful output
Recall those surveys I referred to before. They mostly depended on Ji et al 2022s definition, which was:
> \[...\] generation that is nonsensical or unfaithful to the provided source > content. [^16]
Whatever we might think about hallucination, the word unfaithful really is a jargon word in the field of natural language processing, with an agreed, specific meaning. An LLM is unfaithful just in case it produces output which is not epistemically supported by the input.
This is most often used in the case of summarisers. In that case, a summariser is unfaithful just in case it produces a summary containing information which is not implied by any information in the document it was supposed to summarise.
(Nonsensical is not a jargon term as far as I know. I have never encountered any attempt in the NLP literature to define nonsensical, and although this definition is often quoted, the term nonsensical is rarely used in practice.)
Now, I am not claiming that this is the only way or even the dominant way in which the term hallucination has been used. Indeed, in section 3, Im going to show precisely that this is *not* the case: in fact, the word hallucination continues to be used in diverse ways in the academic literature.
All I want to claim here is that it is *typical* for academics to use the word hallucination to mean something in the rough area of unfaithfulness.
This is an important part of the story, because this is the meaning which links the word most closely to its etymological roots in computer vision.
All I need to do really is provide enough citations. I know I havent read everything. But if what was typical in my reading is unusual in the literature at large, Ive been the victim of some extraordinary bad luck. Have a look at these papers:
* Durmus et al 2020 [^7] defines hallucination as one of two kinds of failures of faithfulness
* Huang, Luyang et al 2020 [^14] defines hallucination as creating content not present in the input
* Maynez et al 2020 [^35] introduces hallucination as a cause of unfaithfulness
* Zhao et al 2020 [^56] defines hallucination as including material that is not supported by the original text
* Nan et al 2021 [^38] defines hallucination as putting out claims not supported by the input
* Zhou, Chunting et al 2021 [^59] defines hallucination as failures of faithfulness in machine translation
* Mao et al 2020 [^32] clearly uses hallucination to mean unfaithfulness
* King et al 2022 [^18] is aware of usages of hallucination to refer to unfactuality, but narrows in on failures of faithfulness, which they call consistency
So there you have it. Hallucination has widely been taken to roughly mean unfaithfulness.
### 3. Up to now, academics have not agreed a specific meaning for the word hallucination
So we know that it was normal for academics to use hallucination to mean something like unfaithfulness. But was it also normal for academics to use it for other meanings?
I think it was. There are a number of ways which authors used the word which are not consistent with the unfaithfulness interpretation.
The main way is that authors have assumed that in order to be a hallucination, the output has to *contradict* something: either the input, or the training data, or the facts, or itself. This contrasts with the faithfulness interpretation, under which a hallucination can be perfectly consistent with the input, the training data, the facts, and itself, as long as it isnt *supported* by the input.
All the following papers are clear that hallucination requires contradicting something, usually the facts:
* Huang, Yichong et al 2021 [^15]
* Zhu et al 2021 [^60]
* Pagnoni et al 2021 [^40]
* Shuster et al 2021 [^45]
* Zhang, Yue et al 2023 [^55]
* Rawte et al 2023 [^42]
* Dahl et al 2024 [^6]
* Magesh et al 2024 [^31]
On the other end of the spectrum, a few authors seemed to believe that hallucinated outputs *cannot* contradict the corresponding inputs. (This is also inconsistent with the unfaithfulness view.)
* Durmus et al 2020 [^7]
* Huang, Luyang et al 2020 [^14]
* Nan et al 2021 [^38]
Theres also disagreement on whether nonsense, or incoherence, counts as hallucination.
On the one hand, Durmus et al 2020 [^7] argue that nonsensical outputs are not hallucinations, since it doesnt make sense to ask whether nonsensical outputs are faithful. Likewise, Shuster et al 2021 [^45] contrast hallucination with incoherence.
But on the other hand, Pagnoni et al 2021 [^40] include misleading and incorrect grammar in their definition of hallucination, while Ji et al 2022 [^16] explicitly include nonsensical outputs in their widely-quoted definition of hallucination.
Some authors have managed to recognise the ambiguity of the term. Both King et al 2022 [^18] and Farquhar et al 2024 [^9] acknowledge that the word hallucination has been used variably to cover failures of faithfulness and failures of factuality, and are careful to define their terms for their own purposes to avoid being misunderstood in the context of this ambiguity.
So it seems that although many academics have treated the term hallucination as jargon, in actual fact, there is no widely agreed specific meaning of the word.
---
I will slide in here with a quick side note. While some authors treated hallucination as jargon for unfaithfulness or unfactuality, other authors contemporaneously managed to talk about these topics without using the word hallucination at all. Here are some examples:
* Cao, Ziqiang et al 2018 [^3]
* Li, Haoran et al 2018 [^25]
* Falke et al 2019 [^8]
* Goodrich et al 2019 [^11]
* Kryściński et al 2019 [^20]
* Cao, Meng et al 2020 [^4]
* Zhang, Yuhao et al 2019 [^54]
* Marcus & Davis 2020 [^33]
* Marcus 2020 [^34]
* Krishna et al 2021 [^19]
* Bai et al 2022 [^1]
* Weidinger et al 2022 [^50]
* Perez et al 2022 [^41]
* Min et al 2023 [^36]
* Muhlgay et al 2024 [^37]
Probably not a significant enough point to merit a whole section. But there you are. I think it adds to the picture that hallucination is failed jargon.
### 4. The word hallucination entered the NLP literature around 2017/2018, probably from CV
So people have been using the word hallucination in the NLP literature recently. But where did it come from?
I think it entered the NLP literature somewhere around 2017/18, and probably was borrowed from the field of computer vision (CV).
I can't offer a theory for a single, original usage of the word in NLP. But there are three papers I feel are pretty close. These are the three oldest papers I could find in the NLP literature which use the word hallucination.
* Wiseman et al 2017 [^51]
* Rohrbach et al 2018 [^44]
* Lee, Katherine et al 2018 [^22]
Both Rohrbach et al and Lee et al use a form of language which suggests they are intentionally coining a technical term. Heres Rohrbach et al:
> In Figure 1 we show an example where a competitive captioning model, Neural > Baby Talk (NBT) (Lu et al., 2018), incorrectly generates the object “bench.” > We refer to this issue as object *hallucination*.
And heres Lee et al:
> These mistranslations are completely semantically incorrect and also > grammatically viable. They are untethered from the input so we name them > *hallucinations*.
I have no reason to believe that these two papers are deliberately plagiarising each other. Its reasonable to assume that these two papers genuinely coined a similar term for a similar phenomenon at the same time.
Wiseman et al 2017, in contrast, doesnt look like its attempting to coin a technical term. They just use the word once, presumably as a stylistic flourish to help illustrate their point. But they do use it for a closely related concept.
> \[…\] we see the model hallucinates factual statements, such as “in front of > their home crowd,” which is presumably likely according to the language model, > but ultimately incorrect (and not supported by anything in the box- or line- > scores).
Just to add to the picture, Ehud Reiter, in his 2018 blog post [^43], gives us an insight into the International Natural Language Generation conference of 2018. He claims that at that conference, hallucination was a hot topic of discussion, and cites Rohrbach 2018 to support his claim that hallucination is a well-known problem in neural approaches to image captioning.
It might be fruitful to have a peruse of the [INLG 2018 Proceedings](https://aclanthology.org/events/inlg-2018) to see whether that interest in hallucination was reflected in the written contributions, or if it was mainly contained in verbal discussions. I havent taken the liberty to do this myself: by all means, have a look yourself and let me know what you find!
I think all this suggests that the word hallucination entered the field gradually, not with a bang, and perhaps spread by word of mouth at conferences as much as it spread through published papers, at least at first.
But we still have to explain why all these different authors seem to have independently come up with a similar meaning for the word hallucination.
I think the best explanation is that they got the word hallucination from computer vision (CV). If my fifth section is cogent, then hallucination was used in CV to refer to deep learning models generating data based on information in their training data, not from information contained in or implied by the input. This would explain how independent authors in NLP all independently coined the word hallucination in their own field to mean pretty similar things. They were probably aware of the usage in the CV literature and adopted it by analogy.
So, I reckon the word hallucination probably entered the NLP literature from a few authors independently, and they chose that word because they were borrowing it from the CV literature, where it was already being used for a similar concept.
But that depends on my next claim: so lets look at that!
### 5. The word hallucination was not jargon in CV, but was a term of art for example-based in-painting
I want to argue that hallucination, although it wasnt jargon, was widely used in the computer vision (CV) literature to refer to what was more technically called example-based in-painting, that is, filling in gaps in images using the information from training data baked into neural networks.
First look at Baker & Kanade 1999 [^2]. If my sixth section is correct, this is where the term entered CV, but thats not crucial to my argument here. Even if Ive missed some crucial evidence, it is nonetheless pretty certain that they had a seminal effect on the use of the word in the field they are early in the fields history, and widely cited by other CV papers which use the word hallucination. Theyre even cited as the origin of the term in machine learning by the NLP paper, Farquhar et al 2024 [^9], a quarter of a century later.
Baker & Kanade are writing about a new algorithm theyve used in order to increase the resolution of low-resolution images of human faces. The intended application is for surveillance camera footage. They use the word hallucination once in their title (Hallucinating faces), once in their abstract, and 79 times in the main body of the text.
Across those 79 occurrences, they are using it to refer to one of three things:
* Their algorithm: *eg_ their face hallucination algorithm
* The output of their algorithm: _eg_ hallucinated faces
* What their activity does: _eg* a face is hallucinated by our algorithm
The closest they come to explaining what they *mean* by the word is in their abstract:
> Although numerous resolution enhancement algorithms have been proposed in the > literature, most of them are limited by the fact that they make weak, if any, > assumptions about the scene. We propose an algorithm that can be used to learn > a prior on the spatial distribution of the image gradient for frontal images > of faces. We proceed to show how such a prior can be incorporated into a > super-resolution algorithm to yield 4-8 fold improvements in resolution (16-64 > times as many pixels) using as few as 2-3 images. The additional pixels are, > in effect, hallucinated.
(By super-resolution, they mean increasing the resolution of images. This is typically reduced to a particular kind of image in-painting problem, which in general means filling in gaps in images.)
So, their idea is that, rather than limiting your algorithm to the information contained in the input image, you can get better results by baking in assumptions about the image to the algorithm.
Why is this supposed to work? They hope that for a clever enough algorithm, the information that this blurry splodge is a full-frontal portrait of a human face will provide just enough information to accurately guess what a higher-resolution version of the image would have been.
As for how that information, about what full-frontal portraits of human faces look like, gets baked into the algorithm in practice: thats done by training a neural network on full-frontal images of faces. Hence why this field was so close to NLP, which, in recent years at least, has leaned heavily on neural networking or deep learning approaches.
To recap, they dont provide a specific meaning, but they do use it to roughly mean the process of inventing missing pixels in images, not on the basis of information contained in the input, but based on information contained in training data instead.
To see how this term was picked up by later authors in the field working on super-resolution, in-painting and other related tasks, see:
* Criminisi 2004 [^5]
* Fawzi et al 2016 [^61]
* Nazeri et al 2019 [^39]
* Xiong et al 2019 [^53]
* Xiang et al 2022 [^52]
But also notice other papers, on similar topics, which get on just fine without using the term at all:
* Karras et al 2017 [^17]
* Zhou, Bolei et al 2017 [^58]
* Liao et al 2018 [^28]
And notice how Wang, Zhihao et al 2020 [^49] introduce the word, as an alternative to another technical term:
> Face image super-resolution, a.k.a. face hallucination (FH), can often help > other face-related tasks
The fact that nobody ever attempts to define the word hallucination, and it doesnt appear to be required lingo in any field, no matter how niche, to me implies that it wasnt treated as jargon in CV, at least during the period from 1999 until 2018ish. (The usage in reference to LLMs may well have gone back to affect the usage in CV: I havent checked.)
So again. The word hallucination was used in CV roughly to mean filling in gaps in images by means of information contained in training data, baked into an algorithm by training a neural network on many examples. It was used widely, but not universally, and was not treated as jargon.
### 6. The word hallucination entered the CV literature in Baker & Kanade 1999
I think that the word hallucination entered the CV literature in Baker & Kanade 1999. My argument for this is pretty straightforward.
I found the word hallucination in Baker & Kanade 1999 [^2]. I couldnt find it in CV anywhere earlier.
To add to that, they dont use the word hallucination in a way which suggests that they intentionally borrowed it from somewhere else.
My best theory is that they wanted a name for their algorithm to mark it out from the competition, and the glove fit. I think thats plausible enough, and its consistent with the way Baker & Kanade use the word.
Its also worth noting that according to Zhiwei et al 2009 [^57], the foundational work in the field was published only in the same year (*viz* Freeman & Pasztor 1999 [^10]). So there wasnt really anywhere else for the word to have come *from*. The only possibility is that they borrowed the word from another field. If anybody reading this is able to suggest other fields which used the word hallucination before 1999, please let me know!
## Congratulations
If youve made it this far, you are a *hero*. Pat yourself on the back. Please send me your corrections!
---
## References
I have made little to no attempt to normalise these references into a standard citation format. Please dont tell the citation police.
1. Bai et al 2022. Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback. arXiv:2204.05862v1 \[cs.CL\] 12 Apr 2022
=> https://arxiv.org/abs/2204.05862
2. Baker, Simon & Kanade, Takeo 1999. Hallucinating Faces. Tech. Report, CMU-RI-TR-99-32, Robotics Institute, Carnegie Mellon University, September, 1999
=> https://www.ri.cmu.edu/publications/hallucinating-faces-2
3. Cao, Ziqiang et al 2018. Faithful to the Original: Fact Aware Neural Abstractive Summarization. The Thirty-Second AAAI Conference on Artificial Intelligence (AAAI-18)
=> https://cdn.aaai.org/ojs/11912/11912-13-15440-1-2-20201228.pdf
4. Cao, Meng et al 2020. Factual Error Correction for Abstractive Summarization Models. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing, pp 62516258, November 1620, 2020
=> https://aclanthology.org/2020.emnlp-main.506.pdf
5. Criminisi, Perez & Toyama, "Region filling and object removal by exemplar-based image inpainting," in IEEE Transactions on Image Processing, vol. 13, no. 9, pp 1200-1212, Sept 2004, doi: 10.1109/TIP.2004.833105
=> https://doi.org/10.1109/TIP.2004.833105
6. Dahl et al 2024. Large Legal Fictions: Profiling Legal Hallucinations in Large Language Models. arXiv:2401.01301v1 \[cs.CL\] 2 Jan 2024
=> https://arxiv.org/abs/2401.01301v1
7. Durmus et al 2020. FEQA: A Question Answering Evaluation Framework for Faithfulness Assessment in Abstractive Summarization. Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pp 50555070, July 5 - 10, 2020
=> https://aclanthology.org/2020.acl-main.454.pdf
8. Falke et al 2019. Ranking Generated Summaries by Correctness: An Interesting but Challenging Application for Natural Language Inference. Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, pp 22142220, Florence, Italy, July 28 - August 2, 2019
=> https://aclanthology.org/P19-1213.pdf
9. Farquhar, S., Kossen, J., Kuhn, L. et al 2024. Detecting hallucinations in large language models using semantic entropy. Nature 630, 625630 (2024). 19 June 2024. https://doi.org/10.1038/s41586-024-07421-0
=> https://doi.org/10.1038/s41586-024-07421-0
10. Freeman, W. T., & Pasztor, E. C. (1999). Learning low-level vision. Proceedings of the Seventh IEEE International Conference on Computer Vision. doi:10.1109/iccv.1999.790414
=> https://doi.org/10.1109/iccv.1999.790414
11. Goodrich et al 2019. Assessing The Factual Accuracy of Generated Text. arXiv:1905.13322v1 \[cs.CL\] 30 May 2019
=> https://arxiv.org/abs/1905.13322v1
12. Guerreiro et al 2023. Hallucinations in Large Multilingual Translation Models. arXiv:2303.16104v1 \[cs.CL\] 28 Mar 2023
=> https://arxiv.org/abs/2303.16104v1
13. Huang, Lei et al 2023. A Survey on Hallucination in Large Language Models: Principles, Taxonomy, Challenges, and Open Questions. arXiv:2311.05232v1 \[cs.CL\] 9 Nov 2023
=> https://arxiv.org/abs/2311.05232v1
14. Huang, Luyang et al 2020. Knowledge Graph-Augmented Abstractive Summarization with Semantic-Driven Cloze Reward. Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pp 50945107, July 5-10, 2020
=> https://aclanthology.org/2020.acl-main.457.pdf
15. Huang, Yichong et al 2021. The Factual Inconsistency Problem in Abstractive Text Summarization: A Survey. arXiv:2104.14839v1 \[cs.CL\] 30 Apr 2021
=> https://arxiv.org/abs/2104.14839v1
16. Ji et al 2022. Survey of Hallucination in Natural Language Generation. arXiv:2202.03629v1 \[cs.CL\] 8 Feb 2022
=> https://arxiv.org/abs/2202.03629v1
17. Karras et al 2017. PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION. arXiv:1710.10196v3 \[cs.NE\] 26 Feb 2018
=> https://arxiv.org/abs/1710.10196v3
18. King et al 2022. Dont Say What You Dont Know: Improving the Consistency of Abstractive Summarization by Constraining Beam Search. arXiv:2203.08436v1 \[cs.CL\] 16 Mar 2022
=> https://arxiv.org/abs/2203.08436v1
19. Krishna, Roy & Iyyer 2021. Hurdles to Progress in Long-form Question Answering. Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, pp 49404957, June 611, 2021
=> https://aclanthology.org/2021.naacl-main.393.pdf
20. Kryściński et al 2019. Evaluating the Factual Consistency of Abstractive Text Summarization. arXiv:1910.12840v1 \[cs.CL\] 28 Oct 2019
=> https://arxiv.org/abs/1910.12840v1
21. Kumar et al 2022. Language Generation Models Can Cause Harm: So What Can We Do About It? An Actionable Survey. arXiv:2210.07700v1 \[cs.CL\] 14 Oct 2022
=> https://arxiv.org/abs/2210.07700v1
22. Lee, Katherine et al 2018. Hallucinations in Neural Machine Translation. Conference on Neural Information Processing Systems (NeurIPS 2018), Montréal, Canada
=> https://openreview.net/pdf?id=SJxTk3vB3m
23. Lee, Hwanhee et al 2022. Factual Error Correction for Abstractive Summaries Using Entity Retrieval. Proceedings of the 2nd Workshop on Natural Language Generation, Evaluation, and Metrics (GEM), pp 439-444, December 7, 2022
=> https://aclanthology.org/2022.gem-1.41.pdf
24. Lewis et al 2020. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. 34th Conference on Neural Information Processing Systems (NeurIPS 2020)
=> https://proceedings.neurips.cc/paper/2020/file/6b493230205f780e1bc26945df7481e5-Paper.pdf
25. Li, Haoran et al 2018. Ensure the Correctness of the Summary: Incorporate Entailment Knowledge into Abstractive Sentence Summarization. Proceedings of the 27th International Conference on Computational Linguistics, pp 14301441, August 20-26, 2018
=> https://aclanthology.org/C18-1121.pdf
26. Li, Wei et al 2022. Faithfulness in Natural Language Generation: A Systematic Survey of Analysis, Evaluation and Optimization Methods. arXiv:2203.05227v1 \[cs.CL\] 10 Mar 2022
=> https://arxiv.org/abs/2203.05227v1
27. Li, Junyi et al 2023. HaluEval: A Large-Scale Hallucination Evaluation Benchmark for Large Language Models. arXiv:2305.11747v3 \[cs.CL\] 23 Oct 2023
=> https://arxiv.org/abs/2305.11747v3
28. Liao, L., Hu, R., Xiao, J., & Wang, Z. (2018). Edge-Aware Context Encoder for Image Inpainting. 2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). doi:10.1109/icassp.2018.8462549
=> https://doi.org/10.1109/ICASSP.2018.8462549
29. Lin, Hilton & Evans 2022. TruthfulQA: Measuring How Models Mimic Human Falsehoods. Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics Volume 1: Long Papers, pp 3214-3252, May 22-27, 2022
=> https://aclanthology.org/2022.acl-long.229.pdf
30. Liu et al 2023. TRUSTWORTHY LLMS: A SURVEY AND GUIDELINE FOR EVALUATING LARGE LANGUAGE MODELS ALIGNMENT. arXiv:2308.05374v1 \[cs.AI\] 21 Mar 2024
=> https://arxiv.org/abs/2308.05374v1
31. Magesh et al 2024. Hallucination-Free? Assessing the Reliability of Leading AI Legal Research Tools. arXiv:2405.20362v1 \[cs.CL\] 30 May 2024
=> https://arxiv.org/abs/2405.20362v1
32. Mao et al 2020. Constrained Abstractive Summarization: Preserving Factual Consistency with Constrained Generation. arXiv:2010.12723v1 \[cs.CL\] 24 Oct 2020
=> https://arxiv.org/abs/2010.12723v2
33. Marcus & Davis 2020. GPT-3, Bloviator: OpenAIs language generator has no idea what its talking about. Technology Review, August 22, 2020
=> https://www.technologyreview.com/2020/08/22/1007539/gpt3-openai-language-generator-artificial-intelligence-ai-opinion/
34. Marcus 2020. The Next Decade in AI: Four Steps Towards Robust Artificial Intelligence. Robust AI. 14 Feb 2020
=> https://arxiv.org/abs/2002.06177v1
35. Maynez et al 2020. On Faithfulness and Factuality in Abstractive Summarization. Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pp 19061919, July 5 - 10, 2020
=> https://aclanthology.org/2020.acl-main.173.pdf
36. Min et al 2023. FACTSCORE: Fine-grained Atomic Evaluation of Factual Precision in Long Form Text Generation. arXiv:2305.14251v1 \[cs.CL\] 23 May 2023
=> https://arxiv.org/abs/2305.14251v1
37. Muhlgay et al 2024. Generating Benchmarks for Factuality Evaluation of Language Models. arXiv:2307.06908v2 \[cs.CL\] 4 Feb 2024
=> https://arxiv.org/abs/2307.06908v2
38. Nan et al 2021. Improving Factual Consistency of Abstractive Summarization via Question Answering. Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing, pp 68816894, August 16, 2021
=> https://aclanthology.org/2021.acl-long.536.pdf
39. Nazeri et al 2019. EdgeConnect: Structure Guided Image Inpainting using Edge Prediction. 2019 IEEE/CVF International Conference on Computer Vision Workshop (ICCVW)
=> https://doi.org/10.1109/ICCVW.2019.00408
40. Pagnoni et al 2021. Understanding Factuality in Abstractive Summarization with FRANK: A Benchmark for Factuality Metrics. Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, pp 48124829, June 611, 2021
=> https://aclanthology.org/2021.naacl-main.383.pdf
41. Perez et al 2022. Red Teaming Language Models with Language Models. arXiv:2202.03286v1 \[cs.CL\] 7 Feb 2022
=> https://arxiv.org/abs/2202.03286
42. Rawte et al 2023. A Survey of Hallucination in “Large” Foundation Models. arXiv:2309.05922v1 \[cs.AI\] 12 Sep 2023
=> https://arxiv.org/abs/2309.05922v1
43. Reiter 2018. Hallucination in Neural NLG, blog post, Nov 12, 2018
=> https://ehudreiter.com/2018/11/12/hallucination-in-neural-nlg
44. Rohrbach et al 2018. Object Hallucination in Image Captioning. arXiv:1809.02156v1 \[cs.CL\] 6 Sep 2018
=> https://arxiv.org/abs/1809.02156v1
45. Shuster et al 2021. Retrieval Augmentation Reduces Hallucination in Conversation. arXiv:2104.07567v1 \[cs.CL\] 15 Apr 2021
=> https://arxiv.org/abs/2104.07567v1
46. Song et al 2024. FineSurE: Fine-grained Summarization Evaluation using LLMs. arXiv:2407.00908v1 \[cs.CL\] 1 Jul 2024
=> https://arxiv.org/abs/2407.00908v1
47. Wang, Alex et al 2020. Asking and Answering Questions to Evaluate the Factual Consistency of Summaries. Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pp 50085020, July 5-10, 2020
=> https://aclanthology.org/2020.acl-main.450.pdf
48. Wang, Cunxiang et al 2023. Survey on Factuality in Large Language Models: Knowledge, Retrieval and Domain-Specificity. arXiv:2310.07521v1 \[cs.CL\] 11 Oct 2023
=> https://arxiv.org/abs/2310.07521v1
49. Wang, Zhihao et al 2020. Deep Learning for Image Super-resolution: A Survey. arXiv:1902.06068v2 \[cs.CV\] 8 Feb 2020
=> https://arxiv.org/abs/1902.06068v2
50. Weidinger et al 2022. Taxonomy of Risks posed by Language Models. FAccT 22, June 2124, 2022, Seoul, Republic of Korea. doi: 10.1145/3531146.3533088
=> https://dl.acm.org/doi/pdf/10.1145/3531146.3533088
51. Wiseman, Hieber & Rush 2017. Challenges in Data-to-Document Generation. arXiv:1707.08052v1 \[cs.CL\] 25 Jul 2017
=> https://arxiv.org/abs/arXiv:1707.08052v1
52. Xiang et al 2022. Deep learning for image inpainting: A survey. doi: 10.1016/j.patcog.2022.109046
=> https://doi.org/10.1016/j.patcog.2022.109046
53. Xiong et al 2019. Foreground-aware Image Inpainting. 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)
=> https://doi.org/10.1109/CVPR.2019.00599
54. Zhang, Yuhao et al 2019. Optimizing the Factual Correctness of a Summary: A Study of Summarizing Radiology Reports. arXiv:1911.02541v1 \[cs.CL\] 6 Nov 2019
=> https://arxiv.org/abs/1911.02541v1
55. Zhang, Yue et al 2023. Sirens Song in the AI Ocean: A Survey on Hallucination in Large Language Models. arXiv:2309.01219v1 \[cs.CL\] 3 Sep 2023
=> https://arxiv.org/abs/2309.01219v1
56. Zhao et al 2020. Reducing Quantity Hallucinations in Abstractive Summarization. Findings of the Association for Computational Linguistics: EMNLP 2020, pp 22372249, November 16 - 20, 2020
=> https://aclanthology.org/2020.findings-emnlp.203.pdf
57. Zhiwei Xiong, Xiaoyan Sun, & Wu, F. (2009). Image hallucination with feature enhancement. 2009 IEEE Conference on Computer Vision and Pattern Recognition. doi:10.1109/cvpr.2009.5206630
=> https://doi.org/10.1109/cvpr.2009.5206630
58. Zhou, Bolei et al 2017. Places: An Image Database for Deep Scene Understanding. arXiv:1610.02055v1 \[cs.CV\] 6 Oct 2016
=> https://arxiv.org/abs/1610.02055v1
59. Zhou, Chunting et al 2021. Detecting Hallucinated Content in Conditional Neural Sequence Generation. Findings of the Association for Computational Linguistics: ACL-IJCNLP 2021, pp 13931404, August 16, 2021
=> https://aclanthology.org/2021.findings-acl.120.pdf
60. Zhu et al 2021. Enhancing Factual Consistency of Abstractive Summarization. Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, pp 718733, June 611, 2021
=> https://aclanthology.org/2021.naacl-main.58.pdf
61. Fawzi et al 2016. Image inpainting through neural networks hallucinations. EPFL, Switzerland & IBM Research Watson, USA
=> https://www.cs.toronto.edu/~horst/cogrobo/papers/ivmsp2016.pdf
+26
View File
@@ -0,0 +1,26 @@
# Questions I have about sex
Mark Vernon got me thinking about how the Churchs teaching on sex may be evolving.
Published on: 17 Dec 2024
Updated on: 17 Dec 2024
I just listened back to Mark Vernon talking about sexual desire and Christian spirituality.
=> https://www.markvernon.com/the-gospel-sexual-desire-and-the-abuse-scandals-in-the-church-what-has-the-erotic-to-do-with-god
He recounts how his sex ed at an evangelical camp as a boy taught him to think hard about holding hands with someone, just in case it led to something immoral. He felt he had been taught a sexual naïvety, which has perhaps blinded people to the possibility of abuse and misunderstood the gospel.
He puts forward an alternative to that naïvety, whereby sexual experience is an image or a foretaste of love for, or union with, God, exploring thoughts by Origen, Julian of Norwich, Dante, William Blake, Iris Murdoch, and various parables and episodes from the Gospels themselves.
Part of whats so interesting about this, is I feel I got my first proper sex ed, as an adult, in an evangelical Christian context and it pretty much lined up completely with what he was putting forward.
Im also currently reading (as is Mark Vernon) Diarmaid MacCullochs epic history of Christian sexuality, [Lower Than the Angels][lower-than-the-angels].
=> https://www.penguin.co.uk/books/313582/lower-than-the-angels-by-macculloch-diarmaid/9780241400937
But so far (Im about a third of the way through and up to about the 5th century) there have only been odd glimmers of positive Christian understandings of sexuality. The overwhelming Christian consensus of the early Church (according to MacCulloch) is that sexual desire is a symptom of humanitys fallen state, not our longing for God.
So I want to know: what changed between Marks experience and mine? How is Christian teaching about sex changing right now? Was my experience typical of other Christians growing up today, in evangelical churches, across the denominational spectrum, across Britain, across the global Church? What *is* the Christian consensus on sex now, and how old is it, and where did it come from?
I guess Ive got two-thirds of a gigantic tome to work through, first of all. Thatll be a start. Any answers? Postcards please.
+136
View File
@@ -0,0 +1,136 @@
# How I read things on the Internet now (no, of course I don't leave the terminal!)
I've been sprucing up how I follow what's happening on the Internet. I can now read all the things I want to read pretty efficiently, and enjoy doing it, which is exciting.
Published on: 19 Jan 2025
## The problem
I like to read things on the Internet sometimes. Or listen to things. Or watch things.
Some interesting people write blog posts. Some beautiful people make music. Some silly people make comedy sketches. Sometimes my friends are sharing stuff with their friends, which means me (WIP on that front: I'll get back to that).
I want to know about it. I want to read interesting things that will educate me. I want to hear beautiful music. I want to hear about what my friends are up to.
I can't read everything as it comes in, it's too much: I'll need to sift a lot of it out quickly. I'll need to sift through it regularly to stay on top of it: like, several times a week, if not daily. And sometimes, while I'm doing my daily sifting, I'll find something I really want to read, but I haven't got time right now: I'll save this for the weekend.
For a while, I've been hosting CommaFeed on PikaPods. This has been OK (OMG, RSS is cool), but the interface is just clunky enough to make it a chore to use. That means I don't sift through stuff regularly, and that means my feed piles hundreds of unread posts high.
=> https://www.commafeed.com
=> https://www.pikapods.com
=> gemini://joeac.net/blog/2024/05-02_no_more_youtube
It also hasn't been any good for distinguishing between stuff I don't want to read *ever*, and stuff I don't want to read *right now* but will get round to later. I could in theory use the bookmarking feature built-in to my browser, but removing things after I've read them is too clunky, so I don't do it.
## The solution
Every morning, I open my terminal and run newsboat.
=> https://newsboat.org
=> /images/longlog/2025-01-19_newsboat.webp newsboat showing how many unread posts I have at a glance in the opening view
I know the unread count is pretty fresh, because I've set up a systemd service to run newsboat at startup to fetch the feeds.
I press `l` twice to open a post. Then I press `n` to navigate to the next unread post until I run out of unread posts.
=> /images/longlog/2025-01-19_newsboat-post.webp newsboat displaying a post
If I encounter something I want to read later, but don't have time right now, I press `b`, which runs a home-made bookmarking script. Here it is:
```### readlater.sh ###
```
```# newsboat passes a few arguments: the first one is the post URL
```url="$1"
```
```# I turn the URL into a suitable filename
```filename=$( \ echo $url | \ sed "s/.*:\/\///" | \ sed "s/\//./g" | \ sed "s/\.html\$//g" \ )
```filename="$filename".html
```
```# If I've already got this in my reading list, I don't add it again
```if [[ -a "$HOME/readlist/unread/$filename" ]]; then exit 0 fi
```
```# Otherwise, I download the post with curl and pipe it to a file in my reading list folder, ~/readlist/unread
```curl "$url" > "$HOME/readlist/unread/$filename"
I can also run this script manually and pass it a URL of my choice at any time, say, if I find an interesting article while browsing the Web.
When I want to read from my reading list, I run `readnow.sh`, which simply opens my reading list folder, `~/readlist/unread`, in my terminal file browser of choice: namely, ranger.
=> https://ranger.github.io
=> /images/longlog/2025-01-19_ranger.webp ranger showing the contents of my reading list with a preview
Although ranger has a preview, I'll typically open the file up in my terminal web browser of choice, which is w3m (plus a couple of custom key-bindings).
=> https://w3m.sourceforge.net
I've configured this to be my preferred web browser in ranger by shifting it to the top of the list of HTML browsers in `~/.config/ranger/rifle.conf`.
```### ~/.config/ranger/rifle.conf ###
```
```...
```
```ext x?html?, has w3m, terminal = w3m "$@"
```ext x?html?, ...
```
```...
Having configured my default web browser in my ranger config, all I need to do is press `l`.
=> /images/longlog/2025-01-19_w3m.webp A post displaying in w3m
No ads, no cookie popups, no giant banner images taking 2 seconds to load and shifting the content all over the place: just the text I want to read. Isn't it beautiful?
Once I'm finished reading the post, I'll press `q` to quit w3m and return to ranger. Assuming I don't need to read it again, I'll press `dm` to move the post to `~/readlist/read` - my way of marking a post as 'read'.
I've done this by writing a super simple script, `markread.sh`:
```### markread.sh ###
```
```filename="$(basename $1)"
```
```if [[ -a "$HOME/readlist/unread/$filename" ]]; then
``` mv "$HOME/readlist/unread/$filename"
``` "$HOME/readlist/read/$filename"
``` echo "Marked $filename as read."
```else
``` echo "I couldn't find a file in ~/readlist/unread with the name: $filename"
```fi
...and hooking it onto the custom keybinding, `dm`, in ranger:
```### ~/.config/ranger/rc.conf ###
```
```...
```
```# map `dm` to run markread.sh in the shell, providing the active filename as the first and only argument
```map dm shell markread.sh %f
```
```...
## The result
I can now keep up to date, and I enjoy doing it.
I get not everyone likes to live in the terminal. I think the key takeaways are:
* Make it really easy to sift through new posts
* When you sift, sift through every post, and for each one, either read it straight away, or add it to your reading list
* Sift daily
* Make it really easy to add things to your reading list
* Make it really easy to browse, read things, and mark things read in your reading list
* Set aside time to catch up on your reading list
* Make the whole thing joyful (both because joy is good, and because you won't do it otherwise)
## Next steps
I still haven't really figured out social media. I'd like to stay up to date with what my friends are doing, especially the ones I don't see very often. If my friends are posting stuff on the Internet, I'd love to see it.
I still need to know:
* Are my friends posting stuff on the Internet?
* If so, where?
* What's the best way of subscribing to their posts
* even if they live on different websites and in different formats?
* What's the best way of sending and receiving comments/replies/reactions?
TBC. Answers on a postcard please.
+56
View File
@@ -0,0 +1,56 @@
# Why scientists need philosophers
This is a practice essay, OK? Don't shoot me if it's no good.
Published on: 24 Jan 2025
I've recently been working at a Philosophy of Science MOOC on Coursera, the online courses website. Later on, they set you an exercise to write a short essay addressing how philosophy can contribute to science.
=> https://www.coursera.org/learn/philosophy-physical-sciences
So this is my punt. Life is too short to revise or, hell, even research this, so don't take any of this as my settled opinion or as my best work. Whatever. With that caveat in mind, it might still be entertaining at least, or maybe even spark some thoughts.
---
Walk into a particular room in the Science Museum in Kensington, and you will find yourself enveloped in a cavern of ironmongery and miscellanea. The shelves droop under the weight of bolts, files, screws, bits, grinders, saws, protractors, clamps and pins. The inventory scrolls endlessly past you, voices reciting the lists of trinkets like an incantation.
This is the workshop of James Watt, meticulously reconstructed from the original as it was left in his home in Birmingham after his death. This entrancing space invites you to imagine a tireless creative, endlessly tinkering away at his next contraption.
And yet for all that - and for all his immense valorisation as the lynchpin of Britain's industrial revolution - Watt was reluctant to think of himself as the engineer everyone else loved. He aspired to be remembered not as an engineer but as a scientist.
To understand why James Watt, one of the most admired engineers who ever lived, wished he were famed as a scientist instead, is to understand something essential about modern Western thought.
In Watt's lifetime, scientists increasingly became the elite of society. In the nineteenth and twentieth century, this trend only gathered pace. We constructed our modern public health infrastructure on the advice of pathologists and made medicine scientific. We funded scientific expeditions to map the world, even to its remotest corners (in part to help us conquer it). We adopted radical new economic policies in response to scientific economic theories. We built vast infrastructure networks to communicate waves of invisible energy discovered by pioneering physicists, and built nuclear plants to generate more of the stuff by means of nuclear science. We even designed social programmes on the basis of scientific anthropology. By the end of the twentieth century, scientists were our prophets, priests and kings. Or so we thought.
In the 1990s, at the so-called 'end of history', it was assumed that there would be no more need for social upheaval. Humanity had arrived at the ideal system of social organisation. And among other ideologies - secularism, libertarianism, democracy - an essential part of the package is that science was our ultimate and incontestible way of securing knowledge about the world.
Yet now, that certainty is broken. Religious fundamentalism, whether Christian, Muslim, Hindu, or else besides, is politically empowered in many places, together with its rejection of science.
At the same time, the myth of science is ever more punctured. The supposedly scientific West has increasingly come to appreciate that their scientific heritage also includes much we would rather ignore - phrenology, race science, systematic blindness to female bodies in medicine.
Meanwhile, scientists themselves are noticing that their holy calling has turned out to be rather less holy than they had hoped. They find science pulled between the competing demands of truth and tenure. Scientific knowledge is locked behind the paywalls of exclusive journals, which even many academics struggle to access, never mind the general public.
What then for science in the twenty-first century?
Yet there is another story available. It starts with confessing that the old stories got things wrong in important ways. When we put ideology aside, science has not been on an uncontested march to universal acceptance since Galileo. There has been continual change, continual conflict, continual readjustment of our ideas to the changing demands of the age.
In Galileo's day, it may have been a fight to establish that there was much to be seen by simply looking. As empirical observation started to prove its worth in the early modern period, thinkers wrestled with new problems: how to reconcile the evidence of Scripture with the evidence of the senses? How to understand how sensation can give us knowledge at all, granted that any observer may be vulnerable to illusions, tricks and dreams? And if that's how sense data work, what then for our mathematical or logical knowledge, which seems to already bind the world even before we start experiencing it?
This centuries-long struggle culminated in the work of Kant, who in his 1786 magnum opus, the *Critique of Pure Reason*, set out a masterful - if infamously obscure - system, which enabled thinkers to understand just how empirical knowledge might work.
Yet two generations later, Charles Darwin lit the flame under new controversy about the relationship between scientific and religious knowledge. His bizarre and wildly imaginative theory of evolution by natural selection challenged the Genesis Creation accounts, and this was soon to be followed up with the theory of tectonic shift.
Some said that where scientists contradicted the authority of Scripture, the word of God must always win. Others said that science alone had the keys to knowledge, and if what the Bible said couldn't be proven scientifically, then it couldn't be accepted. Some said that science and religion were two incommensurable attempts to study the same subject matter, while others said that they covered completely separate spheres.
Gradually, all of these views moved to the extremes. Now, most people (though not all) agree that science and religion have overlapping spheres, and can inform one another, but neither the Book of Nature nor the Book of Scripture has the decisive final say.
Now, in our post-Christendom Western context, it's more important than ever to understand how science and religion can talk to one another. Religious minorities - as all religions now are in the West - are vulnerable to the risk of becoming epistemic islands, cut off from the knowledge of the rest of the community, unless we can find ways that science can talk across creedal differences.
We need, too, for scientifically marginalised communities, such as non-white people, whom science has ignored, or worse, to be more tightly integrated into science, both so that knowledge might increase, and so that the benefits knowledge gives might be fairly shared.
In light of these urgent needs, today's philosophers are considering science not just as an epistemic problem, but as a social problem. As philosophers once established science as the bedrock of modern knowledge, so philosophers today have the task of figuring out how science can glue together our societies.
Science has been at its most dangerous when it hasn't been questioned. At all times, as long as we practice science, we need to consider what it means, what it means to do science well, how it can generate knowledge, and how it ought to be used as a powerful instrument of change.
And perhaps that might justify James Watt in his obsession to be seen as a scientist: since we can't get by just with practitioners. We need people who can see our practices from the outside and shine a mirror back on us. If we want science, then we need philosophers.
+49
View File
@@ -0,0 +1,49 @@
# A paradox about 'should'
I seem to have accidentally proven that drinking wine both is and is not a thing you should do. Let's hope that wine doesn't disappear in a puff of logical smoke.
Published on: 28 Jan 2025
We're pretty familiar with the idea that there can be reasons for doing something, and reasons against. Drinking wine is bad for your liver, but good for your social life.
But look what happens if we express this in this way:
1. Drinking wine is bad for your liver.
2. You shouldn't do things which are bad for your liver.
3. All things you shouldn't do aren't things you should do.
4. Therefore, drinking wine isn't a thing you should do.
In contrast to this:
5. Drinking wine is a good social activity.
6. You should do things which are good social activities.
7. Therefore, drinking wine is a thing you should do.
Now both 1-4 and 5-7 seem like logically valid arguments with true premises, but 4 and 7 are contradictory!
I don't think there's any use in complaining about premise 3. All that gives us is the possibility that wine is both a thing you should do, and a thing you shouldn't do. But that's an absurdity. Something can't be both obligatory and forbidden at the same time. It's scarcely any better than a contradiction: it is inconsistent with any useful concept of obligation.
Remember that we would quite like to know, at the end of all our argument, whether we should drink wine or whether we shouldn't. 'Both' is not an adequate answer, because it's not a useful guide for action: we can't both drink wine and not drink wine. So if 'should' is to function as we need it to, 3 must be true.
I think a more profitable way forward is this. Let's re-write premise 2:
2. All things which are bad for your liver are things such that the fact that that thing is bad for your liver is a reason not to do it.
We can similarly re-write premise 6:
6. All things which are good social activites are things such that the fact that they are good social activities is a reason to do them.
Then premise 3, if it's to play the same logical role in the argument, would have to read:
3. All things such that the fact that that thing is bad for your liver is a reason not to do it is not a thing such that the fact that that thing is a good social activity is a reason to do it.
Our re-written 2 and 6 seem to adequately capture the sense of the original, but 3 is now obviously false. With our re-written sentences, we can avoid generating a contradiction without doing any fatal damage to our concept of 'should'.
OK. Grant for the sake of argument that that was a good move. What have we achieved? Have we actually solved the problem?
We started out with a pair of arguments which generate a contradiction. Our move generated a new pair of arguments which don't generate a contradiction. So what? Isn't the first contradiction still there?
Perhaps you could say that our re-written version of 2 (and so on) are more accurate elaborations of the originals. Fine. But what about those originals, then? You've still either got to say that they're true, false, or gibberish. Producing your second argument hasn't convinced me to move my opinion about the originals. The original premises seem just as true, and the original arguments just as valid, as when we began.
What gives? Answers on a postcard as usual please.
+63
View File
@@ -0,0 +1,63 @@
# Surprised By Hope
I've been working on my resurrection doctrine. Here's where I've got to.
Published on: 2 May 2025
A couple of months ago, I was chatting to my friend Neil on the way home from church, and in that conversation, I confessed to him that I had no idea what happens to people after they die.
This might come as a surprise to some people who know me. Lots of people have solid ideas about what happens to people after they die. For different people, those ideas are very different. Here in Scotland, many people believe that death is a final end. Many more believe that death marks a physical, and perhaps also a spiritual, reunion with the rest of the universe, as the matter of your body begins to be slowly digested and recycled: hence why ever more people are opting to be cremated rather than buried in one piece. Other minorities believe in an immortal soul that goes to some other place - be it heaven, hell, purgatory, nirvana or reincarnation. I belong to the Christian community, which is supposed to have clear answers on these questions passed down from ancient times, and people who know me know that I think hard about doctrines. So it may be a surprise that amongst all the convictions which people have all around me, and amongst all my own convictions on other topics, I hadn't the faintest clue what happens to people after they die.
If you are surprised, let me surprise you some more: I am of no fixed opinion on a whole range of really important philosophical and theological topics, from the existence of the soul to the purpose of sex, from the nature of the sacraments to the metaphysics of the mind. But late last year, I set myself some New Year's resolutions to address some of these questions. Not, by any means, to decide once and for all the end of the matter: just to form a well-informed opinion. Sometimes staying quiet isn't good enough: I'm aiming to rectify my silence on these topics, because I think these topics are too important to ignore.
And one of the issues I picked out was this very issue: what happens to people after they die? To that end, Neil recommended me a book by the conservative Anglican theologian, Tom Wright, called *Surprised By Hope*, published in 2007, at which point I was just learning to spell.
As a result of this book, I feel I understand what the Christian orthodoxy is, and feel able to treat that view as my working assumption.
Wright defends traditional Christian orthodoxy. He claims that his view is orthodox, and I'm roundly convinced that it is. When I wrote down in bullet points what his view amounted to, I found that I had more or less re-written half the Nicene Creed.
- Jesus Christ was crucified under Pontius Pilate. - On the third day, he rose from the dead. - He ascended into heaven and is seated at the right hand of the Father. - He will come again in glory to judge the living and the dead. - His kingdom will have no end. - We look for the resurrection of the dead, and the life of the world to come.
Amen. That's pretty much it. All that I need to stress, to avoid under-stating Wright's view, is that he specifically thinks that physical creation, including our bodies, will be transformed into a new kind of physicality, including new kinds of physical bodies for you and me, and that the 'world to come' means that heaven and earth - which he regards as God's physical space and our physical space - will be united.
He contrasts this orthodox view with several views common today amongst Christians, some of which have even been muddled up with the traditional orthodoxy:
* 'Jesus was raised to new life, spiritually, like a ghost.'
* 'Jesus literally ascended into the sky, as if he had an invisible jetpack: and that's where he is now.'
* 'The Christian hope is that we will go to be united with God in heaven after we die.'
* 'The Christian hope is that we will be snatched up to heaven at the rapture and taken to a resurrection life there.'
* 'The Christian hope is that we will experience God's eternal life temporarily before we die.'
* 'Jesus won't really judge anyone, because he loves everyone, and because he's meek and lowly, not judgy.'
* 'The world will be redeemed through the work of the Church.'
* 'Only God can ever make a difference to the sinful state of the world, so the only works we should care about now are "saving souls".'
I am happy to admit that I have often been guilty of most of these heresies. The only ones I've never been tempted by are the 'rapture' view, and the thing about the invisible jetpack.
Wright has not definitively put any of these ideas to rest for me. *Surprised By Hope* is just not that kind of book. It's not a treatise. It's actually quite light on substantial argument in favour of Wright's position. Wright's main achievement for me, isn't to convince me that he's right, but that his position is a good starting point, a good place from which I should need to be convinced.
He does this chiefly by showing that his view is the consensus view of the New Testament. (He claims to be showing it is the consensus view of 'the early Church', but he never presents much evidence outside the New Testament, so I'm being charitable by restricting his claim to the New Testament authors.) Say what you like about Scriptural authority; if Mark, Matthew, Luke, John and Paul all were convinced something was apostolic teaching, you'd better well take it seriously.
If you want convincing, take a look for yourself. Some of the key New Testament texts are John 5; Acts 17:30-32, 24:14-16; 1 Cor 15, 16:22; 2 Cor 4-5; Rom 6, 8; Col 3:1-4; Eph 1:10; 1 Thess 4:14-18 and of course Rev 21-22.
You can also try convincing yourself that this is coherent with the Old Testament hope, by looking at Isa 11, Dan 7, Ps 2, and having another look at the assumptions behind Paul's behaviour in Acts 24:14-16.
The only significant problem texts I've found for Wright's view are 2 Cor 4-5 and Rev 21-22. In 2 Cor 4-5, Paul seems to plainly assert that we will have to leave the body in order to face the judgement seat of Christ, and which makes no apology for the assertion that, even though Christ has reconciled us to God, we will still have to face judgement for our deeds - which seems to justify the infamously un-Biblical doctrine of purgatory. If you assume that Paul's writings express a completely consistent view, however, you will have routes out; in particular, you could look at the language of Rom 6 and 8. Large chunks of Paul's letter to the Romans also suggest, if taken out of context, that we will have to leave our bodies behind, and that even those reconciled through Christ will face judgement for their deeds - except that key verses contradict both of those views. Clearly, that's not what Paul meant in Romans; so, you might argue, it's not what he meant in 2 Cor either: provided you assume that Paul's writings present a consistent view. (If Paul changed his mind, no explanation is necessary why Rom and 2 Cor seem to be inconsistent: they could actually be inconsistent in that case.)
Meanwhile, in Rev 21-22, John has a vision of a 'new heaven and a new earth, for the first heaven and the first earth had passed away'. This directly contradicts Wright's emphatic insistence that God's new creation will be continuous with the first. For Wright, this isn't an academic detail, it's needed in order to give us a motive to care for the world we've currently got. Without continuity, he fears we'd be right to join those who are content with trashing the natural environment because the whole thing's going to end up in fire and brimstone anyway. Yet this piece of Revelation seems to permit exactly that.
If you were to defend Wright against Revelation, you might point out that Revelation is a literal description of a vision John had, and is therefore not in every detail an accurate picture of the future, but a metaphor, an image of the future. (Fine, but if the wholesale replacement of heaven and earth is a metaphor, what is it a metaphor for? If the literal future is continuity, why not describe a vision of continuity?) And you may also assume that the entire Bible is consistent on the matter of God's ultimate future, and on that assumption, bring your analysis of the rest of the New Testament to bear.
Whatever you do with the problem texts, it seems clear to me that the overwhelming weight of Biblical evidence favours the traditional orthodox position over any of the alternatives. Given that, I'm happy to take it as a starting point as I continue to think about what happens to people after they die.
So, I may go back to Neil now, and say - maybe not quite yet 'I have an opinion' - but at least 'I know what my working assumptions are.' I know what is the orthodox Christian view: that is, the consensus view of the relevant experts. The consensus view of relevant experts is generally a good place to start.
I still have plenty of concerns, though. Here are my top three quandaries on this topic now.
Firstly, it would be rather unsettling if the orthodox Christian vision for God's ultimate future popped entirely into existence after the Ascension. The apostles say that their teaching was given to them by the Holy Spirit - but are we going to trust our entire doctrine on the future to what a small number of men claim was told to them by an invisible being behind closed doors? If the view of the New Testament authors is trustworthy, then it at the very least needs to cohere very well with the Old Testament. The New Testament hope should be woven deep into the Old Testament promises. I find Genesis, Daniel, Isaiah and the Psalms promising, but I've only gotten skin-deep into comparing these texts to the New Testament: I'd like to go both deeper into these texts, and broader across the Old Testament.
Secondly, I want to hear the opposition in their own words. Wright very openly admits that his view is currently a minority opinion even within Christianity, despite being Christian orthodoxy. Given that is the case, it's reasonable to expect the opposition to have some good arguments on their side. Wright has not presented any strong arguments from opposing views, which makes me suspect not that there are no good arguments, but that he has omitted to cover them in his short and accessible book. And if there really are no strong arguments against the traditional view, then we should expect powerful explanations as to why so few people accept what apparently they should.
Thirdly, I have residual concerns from the metaphysics of mind. I recall from my undergraduate days that continuity is a major concern amongst the relevant experts. I think a minority of them even claim that the person who goes to sleep and the person who wakes up again are completely distinct people who just so happen to time-share the same body. If continuity is a major problem, then it is a major problem for resurrection doctrine, too, which even in the New Testament is compared to a kind of sleep, admitting that there is some kind of discontinuity between the old body and the resurrection body. Add to this the easily observable fact that many Christian bodies have rotted and are no longer suitable for re-animation: their new bodies will have to be physically discontinuous as well as mentally discontinuous with their old bodies. If I will be given a new body, is it metaphysically plausible that the person who inhabits that body will be the same 'me' that inhabits this body, now?
Much love all. As always, answers on a postcard please.
+80
View File
@@ -0,0 +1,80 @@
# Does resurrection doctrine give us unique reasons to work for justice?
Tom Wright claims that the only Christian grounds for striving for justice now is in resurrection doctrine. I'm not convinced.
Published on: 4 May 2025
I've been reading Tom Wright's *Surprised By Hope*, defending his orthodox view on resurrection. One of his key claims is that only by accepting the orthodox position on resurrection can Christians justify striving for justice on earth.
To argue this, he needs to first show that resurrection doctrine does justify striving for justice on earth, and secondly that the available alternatives fail to do so. Firstly, the positive argument.
## Does resurrection give us reasons to work for justice?
Wright's argument depends on his view on what God's ultimate future will look like: the present creation will not be abandoned, destroyed, or replaced, but physically transformed into the new creation.
He argues that our work now has value, because, at the time when God transforms the old world into the new, he will incorporate the outcomes of our good works into the new creation, like an architect incorporating the works of many stonemasons into a great cathedral.
He argues this on the basis of 1 Cor 15. I found it a struggle to find a good justification for Wright's view in chapter 15 alone, but I did find some crucial context in chapter 3, just before he begins the first of his many exhortations to the Corinthians. It would be best to read the whole chapter, but here is verses 11-15:
> For no one can lay any foundation other than the one already laid, which is Jesus Christ. If anyone builds on this foundation using gold, silver, costly stones, wood, hay or straw, their work will be shown for what it is, because the Day will bring it to light. It will be revealed with fire, and the fire will test the quality of each persons work. If what has been built survives, the builder will receive a reward. If it is burned up, the builder will suffer loss but yet will be saved—even though only as one escaping through the flames.
This at least implies that the outcome of all our work will persist at least until the time of judgement, when it will undergo testing, and those that pass the test will enjoy a reward. You could read this as being like a quality check, with God dishing out benefits to those that pass his assessment. But you could read it in another way, more favourable to Wright. The works will be proven, and the ones that withstand the process will themselves generate a benefit. You could think of it like baking: when you put a cake in the oven, you prove whether or not you got the recipe right; if not, it goes in the bin, and if you did get it right, you get to enjoy the cake. So I agree that 1 Cor provides a reason to think that the outcome of our works will somehow persist until the time of judgement.
However, Wright doesn't just think that our works will persist until the time of judgement, he also believes that they will at that time be transformed and then incorporated into the new creation. 1 Cor doesn't directly justify this view. It is, at least, coherent. Baking a cake in the oven transforms the dough.
So it seems reasonable to me to use 1 Cor to justify Wright's view that our works will be transformed into the new Creation. However, that's before considering any counter-arguments, and I have two which concern me.
One is that, as Ecclesiastes points out, the profits of our work will be laid to waste by time. We don't know when God is going to bring about the new creation. It could be tomorrow, and we should be behaving today in light of that possibility - but of all the available possibilities, most of them are in the distant future, so we should expect on average that there will be a long interval between my deeds today and the judgement of them. Since time lays waste to all our endeavours, we should expect that the profits of our work will have vanished long before the judgement. Therefore, it would be unreasonable to work for justice in the hope that our work will persist until the time of judgement in order to be incorporated into the new creation, as Wright argues we should do.
This first problem is probably the most important, but it's vulnerable to some counter-arguments, which rather miss the point. So I'm going to move on to my second problem, which is more niche, but which I think holds stronger against counter-arguments.
In 1845, the HMS Erebus and HMS Terror left Britain on an expedition to explore the Northwest Passage. In July 1845, they were spotted by whalers in Baffin Bay. None of the sailors were ever seen alive again by Europeans. Both ships became locked into ice in September 1846, and probably never sailed again. In April 1848, the remaining crew began a desperate 250-mile march to the nearest European outpost. It is almost certain that all of them died.
Now, suppose that one of those sailors, between 1846 and 1848, did something good. Maybe a major act of heroism, or maybe a small, kind word. I think it's reasonable to suppose that someone, at some time, did something good.
All the profits of that good act have now completely perished. They are not recorded in the small records the sailors left behind. None of the sailors who benefited lived to pass on the benefits. None survived to pass on the light of justice to the next generation.
At the time of judgement, then, there will be no remnant of this good act for God to test, transform and incorporate into his new creation.
Does this mean that the good act was wasted? Was it only worth a shot just in case, despite all the odds, the sailors made it home again?
I think this is a cruel conclusion: but it seems to be where Wright must go.
If it is implausible that the profits of all our good works will make it through to the time of judgement, then we have to accept that 1 Cor 3 is true only in some metaphorical sense, not that our works will literally persist in order to be tested. And if that is true, then the premise of Wright's argument is false: our work will not necessarily be incorporated into the new creation, so that cannot generate reasons for working for justice now.
I am not convinced by Wright's positive argument. I would like to consider alternative interpretations of 1 Cor. This is what Wright goes on to do.
## Do alternative views give us reason to work for justice?
The first view which Wright considers is the gnostic view that resurrection is just an afterlife in heaven. He argues that this does not generate reasons for working for justice now, but his argument is really the converse of the argument in favour of his own view, which I've already considered above, so I'll move on.
The other alternative Wright considers is what he calls 'evolutionary optimism'. You might also call this 'progressivism'. By this he means the view that the new creation will be made the Church gradually building upon its own works, generation after generation, approaching and eventually achieving God's perfect standard by its works. This is the Victorian optimism which is still a powerful force in our politics: that history is building upon itself, and progressing from barbarism to civilisation, from brutishness to beauty, from tragedy to justice.
He argues that this view, too, does not give us reasons to work for justice now. His argument is intriguing: if our work for justice is condemned to only ever be partially successful, then we have no reason to do it. In fact, contra the evolutionary optimist, no amount of hard work on our part will ever achieve perfect justice, and therefore if bringing in the new creation is all about our works, we have no reason to strive for justice.
I'm intrigued by the premise that if we know that our work will at best be partially successful, then we have no reason to do it.
This isn't how we ordinarily think: typically, if I think attempting to go to the gym twice a week is going to be partially successful, I would say that this generates a reason for me to go to the gym.
But I sense there may be an interesting meta-ethical thesis here: perhaps what we ordinarily call 'partial success' is in fact a mistake, papering over what is in fact simply a failure.
There's an obvious error theory: we had to create the concept of the 'partial success' in order to generate reasons in the world as it appears, the world as described in Ecclesiastes as 'vanity', where the best-laid plans of mice and men gang aft agley, and all our works crumble into the dust eventually. In order to think we had reasons at all, we needed to invent the concept of the 'partial success'.
But is there a good argument for the view that there is no such thing as a partial success?
In 1915, the HMS Endurance, under the command of Captain Ernest Shackleton, became stuck fast in Antarctic pack ice in the Weddell Sea. In the face of extraordinary challenges, Shackleton vowed to bring all his sailors back to the UK alive: and in one of the most famous exploits of Antarctic exploration, he succeeded.
It would have been wrong, had Shackleton vowed only to bring back _most_ of his sailors. We know that he would have been able to bring _all_ of them back, because he in fact did so. To strive for less would have been negligent.
This is to illustrate a general principle: we ought to strive for the best that we are able.
Grant that necessarily, no particular justice is inevitable. It follows that necessarily, it is possible to prevent all injustice. Therefore, perfect justice is achievable.
And yet we _know_ that we will not achieve perfect justice. It's way too hard.
It does seem that I've proven a contradiction: both that perfect justice is possible and that it is impossible. I expect these are two different kinds of modality. I'm not too bothered to carefully distinguish them, as long we agree that these two things can both be true in some sense. By analogy, consider that, if you can run a mile in so many seconds, you can run it in a second less; that, by sorites, it follows that you can run a mile in a minute; and that you obviously cannot run a mile in a minute: it is too hard. Perfect justice is perhaps a little like this: it is achievable in the sense that it is physically possible for us to achieve it, but unachievable in the sense that it's way too hard.
So, since perfect justice is in some sense achievable, it follows that we ought to strive for it. But since we know we will not achieve perfect justice, it follows that we cannot have a reason to strive for it: we cannot genuinely strive for what we know we cannot do. Therefore, if you reject that God will work to transform our world of vanity into something fundamentally different where perfect justice is not only genuinely achievable but actually realised, then you will be stuck in this hopeless tension, where you both must bring about perfect justice, and have no reason to do it, because you have no hope of success.
Where from here? I would really like to find alternative interpretations of 1 Cor, and weigh them up against Wright's interpretation. It may be that, whatever the counter-arguments, Wright's view is the strongest available. It may not.
+65
View File
@@ -0,0 +1,65 @@
# Figuring things out
I thought I needed to 'figure things out'. Here's what I did instead.
Published on: 23 Jun 2025
'You could always do a Panic Masters.' In my last year of undergraduate studies, that was often the sort of advice we liked to console one another with. A lucky few people in my year had a clear sense of vocation, but most of us felt confused.
Not that we lacked options - graduating with a good degree from a good university, we were lucky to have a great deal more options than most people our age. We went all sorts of directions. Some followed the money, going into big boring management consultancy, big bad tech companies or startups swimming in venture capital. Others wanted something more noble, and pursued teaching or the third sector. Others still went travelling the world on a shoestring or worked a low-skilled job living with their parents, hoping to 'figure things out'.
I thought I needed to figure things out. But I was sure I wasn't going to do that by pulling pints, going on holiday, or staying in the university (even though I felt passion for academia). I needed something different, something that would move my life forward, and ideally, something that would pay the bills. Then, maybe after a year or two, I would have a better idea of what longer-term future I saw for myself. This, I thought, is the way to start figuring things out.
But by January of this year (2025), nothing seemed to have changed. I was still working in the same job. I hadn't discovered a passion for software engineering. Nor had I discovered a passion for anything else. I was more skilled, I suppose, but I didn't have any clearer ideas about how the skills I have should guide me into any career into particular. I had looked at other jobs, but not made many serious applications. I had applied to a Masters programme in 2024, got an offer, turned it down, and applied again in 2025. I was disappointed that I apparently hadn't made much progress.
So I vowed to do something about it. I promised myself to study the matter. I wanted to know what route to pursue. And, being Christian, I thought, I had to figure out how to leverage my theological resources to answer this question. I believed that God would have a path set out for me, and so I had to find out what it was. A friend told me I needed discernment. That, I thought, was what I needed to do - discern the will of God for my career.
I supposed, what God willed me to do in general was quite obvious -- he wants me to live in line with the gospel. But that doesn't say much about my career choices. So I expected to find something a little more specific. I didn't expect to find it in the Bible directly, of course, as there's not much about software engineering in the Bible. But maybe the Holy Spirit was trying to nudge me in the right direction, and I just needed to figure out how to hear him.
By the way, if you're not a super-spiritual sort and this is starting to sound a little kooky, I'm with you -- but I didn't see any other possibility. After all, what else could 'discernment' mean in practice, if not 'discerning' some still small voice?
So I studied. I got myself copies of some tracts, including Tim Keller's Every Good Endeavour and William Taylor's Revolutionary Work.
=> https://uk.10ofthose.com/product/9781444702606/every-good-endeavour-paperback Every Good Endeavour
=> https://uk.10ofthose.com/product/9781910587997/revolutionary-work-paperback Revolutionary Work
These writers showed me how I had for so long been stuck in a view of work which didn't make sense and wasn't leading me anywhere. I came away shaken off from how I had been thinking before, and given a new perspective from which to start re-thinking my attitudes to work. It's been exhilirating, and I recommend both books to anyone for whom work is a major concern (but especially to those who, like me, are already infected with middle-class thinking, or those at risk of catching it).
The will of God for my life really is as simple as I had feared. What God wants for me is the same as what he wants for everyone: to live in line with the gospel. God probably doesn't have any special extras for me personally. If the Holy Spirit does want to speak to me and wants me to hear it, I can trust him to make that happen, and in the meantime, I can carry on listening to God's words in the miraculous way he has already provided, not in private whispers but in the blinding clear public light of the testimony of the Bible and of the Church to Jesus Christ.
I still have unanswered questions about my future career. But my angst is gone.
My angst is gone because I see now I was asking the wrong questions. I wasn't really anxious about which career I ought to pursue. I perceived -- rightly -- that I had been called to walk a narrow path in a life full of junctions. But this led me to think that for me, those junctions are mostly about my career choices. It followed that the career choices I faced had the power to lead me astray from God's way if I chose wrong. Without a map charting the way ahead, without a rule by which to determine which was God's way and which the wrong way, I feared that my career choices were a dangerous gamble. If I got it wrong, I wouldn't be a genuine follower of Christ, I wouldn't genuinely be trying to do what's right, and I wouldn't be fulfilling my God-given destiny.
What I didn't see was that I had re-worded the world's anxieties in God-speak. It sounded reassuringly pious, but it wasn't right. In fact, it was idolatry.
As I observed at the start of this essay, a large part of my generation of university graduates, Christian and non-Christian, share this angst. Most wouldn't word it in Christian-sounding God-speak. They might say they're worried about fulfilling their potential. But it's the same angst - the fear that if you don't choose the right career, you won't be living life to the full, or you won't be making the most of your talents and passions, or you won't be genuinely doing what's right, but just following the rest of the world into a lukewarm career-ladder rat-race. I hadn't 'leveraged my theological resources' at all: I'd only leveraged my theological thesaurus.
I think the scales fell from my eyes when commentators brought me back to the New Testament's advice on work, which doesn't talk about career choices at all. Since Jesus calls all his followers to enter by the narrow gate (Matt 7:13-14), likewise, Paul urged the Ephesians to 'live a life worthy of the calling which you have received' while arguing that Christ has given different gifts of service to each of us, his workers (Eph 4:1, 7-13). But almost all of the people Jesus and Paul were addressing had very little control over what work they were doing. Indeed, almost all people in the world today have very little control over what work they do. The paralysis of choice that I face is also a rare privelege. But that means that, when Jesus calls his followers to enter by the narrow gate, and Paul urges Christians to use their gifts of service, they can't possibly be primarily talking about career choices: most of their audience didn't have careers and they didn't have choices. They just had work, and if they didn't carry on working, they wouldn't eat (2 Thess 3:10).
The narrow gate is not about choosing the right career in a world of options. The narrow gate is choosing to trust God in a world of temptation to worship anything else.
Nor does Paul encourage us to switch jobs until we find our God-provided perfect match of talents and passions to service. Indeed, some of his most powerful encouragement and advice to Christian workers is addressed to people who had almost no control whatsoever over what work they did: slaves (eg Eph 6:5-8). In two areas where people did have some limited control, namely, circumcision and marriage, Paul advises the Corinthians that 'each person should remain in the situation they were in when God called them' (1 Cor 17:24).
So God's will for me in my situation is the same as it is for everyone else: to come back to our father when he calls. In practice, accepting the good news of Jesus Christ means continually confessing my sin and repenting of it. And that means being turned inside out: no longer turned in on myself by sin, but turned outside onto God my father and onto my neighbour in love.
Nor is there any need for angst, because this is the good news: that we have all already failed to fulfil our God-given purpose, which is to love God and one another. If we felt angst, it was justified, and indeed the situation was far worse than we feared. But despite that, Jesus Christ has made a way for us to be acceptable, and if we trust in him, we are permanently secure; free from fear, and free to turn back, however faltingly, to the way we were made to be.
For me, this has changed how I think about my career choices.
I've come to see that my career choices are a rare privelege, and something I should thank God for. It's also a responsibility to take seriously, as it's an opportunity to choose between service and self-service.
I shouldn't choose a career just because it's easy, and I should seek out careers with opportunities to serve, and commit to using the opportunities I have in whatever work I'm doing to serve. I shouldn't choose a career just because it fits my university-educated, middle-class prejudices about what work is dignified and what isn't; what kind of job counts as a 'proper job' and what is 'dead-end'.
I also shouldn't choose a career just because it's perceived as 'noble'. The world needs carers, teachers and preachers. It also needs principled, committed, competent white-collar workers making sure that certain boring, technical, invisible systems work well. These systems make caring, teaching and preaching possible. Through my own experience, I've been humbled by brilliant people in front-line jobs doing amazing work, but I've also seen how important those tertiary systems are.
I also shouldn't dwell too long on my career choices, paralysed by an irrational angst that the value of my life hangs on making the right decision. I should remember that Jesus calls everyone alike, although most people don't have anywhere near as much power over their own career as I do. And I should remember that, as a result, God will use pretty much any line of work for his glory if I commit it to him.
So I shouldn't choose what's easy, nor what's perceived as noble, and nor should I be paralysed by choice. But what ought I do instead?
Instead, I should commit my work to God right now, starting from this morning. I don't have to wait until I find a perfect career, because I will never have a perfect career. God can use the line of work I'm already in for his glory, and if I don't believe that, I'm not just doubting myself, I'm doubting him. I should trust his power. And when I do have career choices, I should commit those to him too, not fretting endlessly as if one career is holy and another damned, but prioritising service to God and others over myself and trusting God with the rest.
Comfort, elitism and moralism are all forms of idolatry. I can toil endlessly pursuing any of them and never be satisfied. But instead, I can rest easy in the knowledge that my place in God's family is secure, and work hard knowing that whenever and wherever and however I make sacrifices for the good of others, God is working through me and by me, even though I fall far short of fulfilling my potential and my God-given purpose.
I haven't 'figured things out'. As it transpires, there wasn't anything to 'figure out'. I was saddled with angst at a phantom problem, which my knowledge of the gospel should have told me did not exist. I cannot earn my worth on earth. But because of Christ, my value is secure. Because of that, I am free to work without snobbery, without shame and without angst for the sake of love and in the certain hope that in the end, by God's work, not mine, everything will be figured out.
+223
View File
@@ -0,0 +1,223 @@
# Why Psalm 118 is the theme tune to Matthew's Gospel
Partly inspired by what I misheard at Cornhill Summer School 2025.
Published on: 26 Jun 2025
Psalm 118 is one of the best-loved hits in the Hebrews' ancient songbook, the Psalms, and also one of the most re-interpreted.
It has been heavily used in both Jewish and Christian liturgy since ancient times. It is heavily referenced in the Rabbinical literature. Depending how generous you are with what counts as an 'allusion', you can count between twenty and sixty quotes and allusions to Psalm 118 in the New Testament. It has been frequently set and re-set to music, memorised, sung, interpreted and re-interpreted.
But why should we care about an old song and its ensemble of interpretations? At least part of the answer that its long history of usage includes another Biblical text which urgently appeals to us today: the Gospel of Matthew.
If we can understand why Matthew referred to Psalm 118, not once, not twice, but five times, all in the space of five chapters, we might understand a little better the story that Matthew wants to tell us.
To understand why it's so important for Matthew, first, let's get on the same page on what the psalm actually says.
## A story in four characters
The psalm features four characters: a hero, a congregation, some enemies, and the Lord.
The hero narrates the psalm's central block, from verse 5 to verse 21. He is a warrior hero: he 'cuts off' his enemies. He is nearly defeated, but is eventually victorious, and ascribes his victory to the Lord. He then approaches the 'gates through which the righteous shall enter', and appeals to go through so that he can praise the Lord there.
> When hard pressed, I cried to the Lord;
> he brought me into a spacious place.
>
> The Lord is with me; I will not be afraid.
> What can mere mortals do to me?
>
> The Lord is with me; he is my helper.
> I look in triumph on my enemies.
>
> It is better to take refuge in the Lord
> than to trust in humans.
>
> It is better to take refuge in the Lord
> than to trust in princes.
>
> All the nations surrounded me,
> but in the name of the Lord I cut them down.
>
> They surrounded me on every side,
> but in the name of the Lord I cut them down.
>
> They swarmed around me like bees,
> but they were consumed as quickly as burning thorns;
>
> in the name of the Lord I cut them down.
> I was pushed back and about to fall,
> but the Lord helped me.
>
> The Lord is my strength and my defense;
> he has become my salvation.
>
> Shouts of joy and victory
> resound in the tents of the righteous:
>
> “The Lords right hand has done mighty things!
> The Lords right hand is lifted high;
> the Lords right hand has done mighty things!”
>
> I will not die but live,
> and will proclaim what the Lord has done.
>
> The Lord has chastened me severely,
> but he has not given me over to death.
>
> Open for me the gates of the righteous;
> I will enter and give thanks to the Lord.
>
> This is the gate of the Lord
> through which the righteous may enter.
>
> I will give you thanks, for you answered me;
> you have become my salvation.
Having heard the hero's account, the final section is dominated by the congregation. They thank the Lord for his saving work, which they describe thus: 'the stone the builders rejected has become the chief cornerstone.' This implies that the hero had initially faced rejection, before being vindicated. The people show their praise by bringing a sacrifice bound with branches up to the altar, and finally the psalm is book-ended by repetition of the opening motif: 'give thanks to the Lord, for he is good, for his mercy endures forever!'
> The stone the builders rejected
> has become the cornerstone;
>
> the Lord has done this,
> and it is marvelous in our eyes.
>
> The Lord has done it this very day;
> let us rejoice today and be glad.
>
> Lord, save us!
> Lord, grant us success!
>
> Blessed is he who comes in the name of the Lord.
> From the house of the Lord we bless you.
>
> The Lord is God,
> and he has made his light shine on us.
>
> With boughs in hand, join in the festal procession
> up to the horns of the altar.
There is potentially a fifth character, the 'builders' who rejected the stone. Interpreters often identify these 'builders' either with the enemies or with the congregation, though not always. The text doesn't say.
Apart from the Lord, none of these four (or five) characters are named in the text.
This is where the intrigue lies: who are these characters? Who are the enemies? Who is the congregation? And who is this embattled hero, this 'stone the builders rejected' which has become 'the chief cornerstone'?
If I were to enumerate all the solutions that have been proposed to this puzzle, reading this essay would give you piles. But in order to understand some of the context in which Matthew was writing, permit me briefly to introduce two of the most popular Jewish interpretations.
## Moses
The first is Moses. Psalm 118 lays on thick the references to the Song of the Sea in Ex 15.
The central line, 'the Lord is my strength and song, he has become my salvation!' is a direct quote from Ex 15:2. Like Ex 15, the psalm uses the divine name frequently. Not only that, but the psalm, like Ex 15, prefers the relatively unusual form YH rather than the more common YHWH. The psalm echoes Ex 15 also in its references to the right hand of the Lord doing mighty things, his chosen hero being hard-pressed by foreign nations and enjoying the Lord's 'salvation', and by the hero's response, 'praising' and 'exalting' the Lord.
> The Lord is my strength and my defense;
> he has become my salvation.
>
> He is my God, and I will praise him,
> my fathers God, and I will exalt him.
>
> The Lord is a warrior;
> the Lord is his name.
>
> Pharaohs chariots and his army
> he has hurled into the sea.
>
> The best of Pharaohs officers
> are drowned in the Red Sea.
>
> The deep waters have covered them;
> they sank to the depths like a stone.
>
> Your right hand, Lord,
> was majestic in power.
>
> Your right hand, Lord,
> shattered the enemy.
>
In short, the psalm is absolutely reeking with references to the Song of the Sea, Moses' classic number-1 hit. No ancient Jew, for whom the psalm was originally written, could have failed to smell it.
The Midrash Tehillim, a Jewish commentary on the psalter composed in the early medieval period, even ascribes the psalm to Moses, claiming that he sang it on the first Pesach (Passover). Certainly, the psalm has featured heavily in Jewish celebrations of both Pesach and Sukkoth (another exodus-inspired festival) since ancient times.
However, perhaps surprisingly, Moses is not the most common Jewish reading of the hero of Psalm 118. That accolade goes to the next great hero of the Hebrew Scriptures: David.
## David
Although, unlike many other psalms, this one is not explicitly described as being 'of David', very many Jewish interpreters associate this psalm with that improbable king. For instance, the Targum -- an Aramaic paraphrase and commentary on the Hebrew Scriptures -- explicitly reads David, Samuel and Saul into the psalm. David has also been a favourite reading of some Christian readers, including John Calvin.
Why is this? One reason might be the psalm's context in the psalter. The psalter is divided into five books, and contemporary scholars theorise that in the second Temple period, editors arranged these five books thematically.
Books I and II tell how God had a covenant with David, and Book III laments that the covenant with David has failed, perhaps because David failed to keep the commands of the Torah. The task of Books IV and V is to show that God will restore his Davidic kingdom and fulfil his promises.
Psalm 118 sits in this final block, as the last psalm of Book IV. This suggests we should expect David, or a type of David, to feature: a returning king, coming back to fulfil his destiny to rule as an intermediary between God and his people. (Presumably, this time, he's got to be a true keeper of the Torah in order for this to work.)
Notice that a Davidic interpretation is inherently implicitly also a Messianic interpretation. David is dead. God promised that he would establish an everlasting throne in Jerusalem, where a human mediator would rule on his behalf, and God and his people could live together in peace forever. David, for all his merits, has conspicuously failed to deliver on this promise. So, if this psalm looks back to David, it must also look forward to the one who will fulfil God's promises to David.
So in this traditional Davidic interpretation, it's understood that God is going to choose someone who will re-establish that Davidic throne, and this time it's going to really work. Which means this time, it's going to be really different.
## Jesus
On the face of it, the New Testament authors seem to have nothing to do with the traditional interpretations. Instead of Moses or David, they exclusively identify the hero of Psalm 118 with Jesus. What are they up to?
One reason the New Testament authors went ham for Psalm 118 is simply because it was well-known. I mentioned that it was used heavily at Pesach and Sukkoth. As a result, lots of Jews were very familiar with its ideas and its language. Many ordinary people would have memorised it.
But that in itself doesn't explain why the New Testament authors used it. They didn't refer to Scripture arbitrarily, but they subverted shared interpretations in order to tell a new story. The cleverest instance of this is in the Gospel of Matthew.
Matthew first gets his reader tuned in to Psalm 118 as Jesus enters Jerusalem on the back of a colt. Matthew quotes the crowds quoting Psalm 118, shouting 'Hosanna to the son of David! Blessed is he who comes in the name of the Lord!' In case we missed the application, he pairs this with his own quotation from the prophecy of Zechariah: Jesus is the coming king who will fulfil God's promises. The crowd also wave him in with branches, typical of Sukkoth celebrations and a reference to Ps 118:27.
> A very large crowd spread their cloaks on the road, while others cut branches from the trees and spread them on the road. The crowds that went ahead of him and those that followed shouted, 'Hosanna to the Son of David!' 'Blessed is he who comes in the name of the Lord!' 'Hosanna in the highest heaven!'
So now we know Jesus is the returning king, we're expecting his imminent victory over his enemies, right? That's what Psalm 118, and its traditional Mosaic and Davidic interpretations, suggests, and so it's clearly what Matthew wants us to think. But that's when things take a sudden turn.
Immediately after this, Jesus tells the Parable of the Tenants. He implies that the well-educated, respectable religious leaders are complicit in murder and enemies of God. It's a shocking teaching, and it doesn't go down well. Perplexingly, Jesus quotes Psalm 118 again in the midst of this teaching.
> Jesus said to them, 'Have you never read in the Scriptures:
>
> "The stone the builders rejected
> has become the cornerstone;
> the Lord has done this,
> and it is marvelous in our eyes"?
>
>Therefore I tell you that the kingdom of God will be taken away from you and given to a people who will produce its fruit. Anyone who falls on this stone will be broken to pieces; anyone on whom it falls will be crushed.'
Matthew depicts Jesus continuing to teach in the Temple while sparring with the religious elites. Jesus caps off what was already a dreadful day by declaring seven devastating woes on the religious leaders. As he finally exits the Temple, he leaves another ominous quote from Psalm 118 hanging in the air: 'For I tell you, you will not see me again until you say, Blessed is he who comes in the name of the Lord.'
This doesn't make sense at all. According to the Psalm 118 storyline, we were supposed to be seeing Jesus cutting down his enemies and arriving at the Temple to celebrate with God's people. But now he's doing the opposite: he's cutting down God's people and then leaving the Temple mired in controversy.
Jesus then, after taking a private seminar for his disciples, invites them to what he knew would be his last supper. Matthew shows the reader how Judas had already betrayed Jesus behind his back. And yet, Matthew doesn't let up. He points out that they are celebrating their Pesach meal, and at the end, he points out that they finished with a hymn.
Why these apparently irrelevant details? He's begging you to put two and two together. His Jewish readers would have immediately clocked that the hymn in question was Psalm 118, ritually sung at the end of the Pesach meal.
So even at the very moment Jesus' total defeat in shame and misery is sealed, they're still singing this song about a victorious returning king, coming to re-establish David's throne forever?
The point that Matthew wants us to clock is the point Jesus made to the religious leaders in the Parable of the Tenants: 'the stone the builders rejected has become the chief cornerstone.' He really is the perfect Moses and the perfect David that God has promised. But before his great victory, he needs a great rejection. The surprise is that neither Jesus' rejection nor his victory look anything like what anyone expected.
Rather than being hard-pressed by foreign nations and defeating them in battle, Jesus is oppressed by his own people, the Jews. (We should understand this in the context that Matthew's Gospel was written primarily for an audience of Jews, hence why he expects them to pick up on all the references to Psalm 118.)
But this oppression is only the surface layer: his real fight was his fight with the spiritual powers of sin and death. By going to the cross, he consented to be hard-pressed.
And his Resurrection is his victory. Through it, he shows that he has defeated death. Now he is ascended to the right hand of the Father, where he rules as the perfect David, as the one who could both act as a human intermediary between God and humanity, and as one who could truly keep God's law. He is also the perfect Moses, who, by God's power, led his people out of captivity to sin and death in order to worship God. The old covenants are broken, but God has remained faithful and delivered on them anyway, and in doing so has created a new people, the Church, who will enter the gates of righteousness because Jesus has opened the way.
For a contemporary Jewish reader of Matthew's Gospel, the references to Psalm 118 would automatically have conjured all the associations with Moses and David, and as a result, all the Messianic secondary meanings, that he needed to make his point. He could have expected his original readers to join the dots.
For a contemporary reader, particularly one like me that didn't get an old-fashioned Biblical education, it might take a bit more work to spot the links. But isn't it worth it? This psalm helps us to understand the message of Matthew's Gospel: Jesus fulfils God's promises in a way that nobody expected.
## Conclusion
As I've discovered, Matthew's way is far from the only way of reading Psalm 118. That's to be expected: as I noted at the start, none of the characters apart from the Lord are named in the text. It's up to us as readers to impose allegories onto the text, if that is what we choose to do.
And that is what interpreters from ancient times have strove to do. Indeed, Matthew didn't ignore or overwrite previous interpretations: he used Psalm 118 precisely because he knew that if he put Jesus into Psalm 118, his readers would have made the link to Moses and David themselves. In order to get Matthew's subversive new reading, you've got to be fluent in the rich tradition of old readings.
Therefore I will keep reading. As I've encountered Psalm 118 recently, I've re-discovered how understanding one Biblical text can shed dramatic new light on another. If God is willing, perhaps this will help me to see him once again in sharp relief.
## Further reading
=> https://biblehub.com/commentaries/calvin/psalms/118.htm Calvin's commentary on Psalm 118
=> http://targum.info/pss/ps5.htm Cook, EM. 2001. Targum Tehillim: An English Translation. Book V
=> https://etsjets.org/wp-content/uploads/2020/01/files_JETS-PDFs_62_62-4_JETS_62.4_721-738_Vaillancourt.pdf Vaillancourt, IJ. 2019. Psalm 118 and the eschatological son of David. JETS 62(4) pp 721-738
=> https://www.researchgate.net/publication/237449388_Psalm_118_and_social_values_in_Ancient_Israel Botha PJ 2003. Psalm 118 and social values in Ancient Israel. OTE 16(2) pp 195-215
I was inspired to write this essay by the teaching on Psalm 118 at Cornhill Summer School 2025.
=> https://www.biblegateway.com/passage/?search=Psalm%20118 Psalm 118
+36
View File
@@ -0,0 +1,36 @@
# Changing my ambitions
When I started my first degree, I had unrealistic and unhelpful ambitions. For my second degree, I'm setting my sights on different targets.
Published on: 18 Sep 2025
Is 'virtue' a terribly old-fashioned word? I don't mind either way. If I've run into you for more than three seconds in the last couple of weeks, you'll know that I've just started my second degree, and I'm very happy about it. I'm having a great deal of fun, and expect my studies to continue to be fun. But fun is not my goal. My goal is virtue.
In particular, the virtues I'm striving after in my degree are a greater ability to ask questions well, and to answer them well; to write well, and to dispute -- that is, speak with, listen, reason, discuss -- well. Insightfully, sensitively, humanely, intelligently, informedly, fluently: well.
But what about all the starving children! I hear you cry. In the past, I myself have got myself stuck fearing that doing another degree would be ignoring some more immediate duty to do something about all the evil in the world. So, is my degree selfish? Or how can it not be? How can this be good?
I believe it's precisely by abandoning that restrictive sense of public duty which has freed me at last to do something good. Let me explain.
During my first degree, I had a great deal of ambition. I was genuinely convinced that I could find robust answers to big questions if I thought about them hard enough. I thought I was clever enough to make progress, or at least contribute. I thought I could, if I wanted to, get into a PhD programme and end up employed as Dean of Philosophy of Oxford, paid to smoke from a pipe all day in a tweed jacket with leather patches while quietly resolving all the world's burning intellectual issues.
What's changed? If I were a pessimist, I might mention my encounter with that devil, reality. It turns out that I'm not actually the cleverest person in the room, that the biggest philosophical problems are pretty intractable, and that I can't get into Oxford -- and even if I could, it wouldn't necessarily be right to uproot myself from my friends, family and church community to pursue my dream career.
All this did matter a great deal. It's what slowly convinced me to finally drop those unrealistic philosophical ambitions. It's why, a year and a half ago, I turned down the offer of a Master's in Philosophy at a excellent university (albeit not Oxford).
But that's not the whole story. I'm not sat here with a sob story of broken dreams. After I turned down that PhD, I didn't feel deflated, I felt liberated. I haven't just dropped those ambitions, I've found new ones.
My friends, family and church community ought to matter far more to me, I realised, than my career. So, turning away from academia, I turned towards love.
This is what the gospel does. It's the most good story, beautifully true, which says to the human heart: since God so loved us, so also we ought to love one another.
When I'm targeting virtue, I find it helpful to imagine a character who displays the virtues I'm after. So picture Helpful John. He's an encouragement. Whenever you talk to Helpful John, you come away feeling emotionally mature and intellectually confident, because his overwhelming respect wipes away your anxiety. He listens to you carefully, and insists on understanding you at more than a superficial level. When it's appropriate to do so, he can ask devious questions which unlock new possibilities you hadn't considered before. He knows lots of relevant and often surprising facts. He can compare your perspective with that of strange and subversive alternative perspectives. He doesn't like to tell people what to think, but when he speaks or when he writes, you pay attention, because you know he is capable of profound insight.
Helpful John sounds great. A model to replicate, right? Not in every respect, necessarily. Helpful John might not be the life and soul of the party. He might not be the first person you go to for comfort in times of trouble. He might not be the most reliable person in the world, or the best with children, or the best with hand tools. Helpful John is a character, but he doesn't have to be good at everything.
Helpful John is roughly my north star. I don't expect to become Helpful John. But with the Spirit's help, with me continuing to lean in to the process, I do intend for Useless Joe to become more like Helpful John in his most enviable respects.
Is this selfish? Is this a shortage of ambition? Wouldn't you love to have a Helpful John as a friend? A brother? Across the table at small group at church? In your workplace?
So forgive me if I'm old-fashioned: I believe virtue is a virtue. A better world is one full of better people.
+44
View File
@@ -0,0 +1,44 @@
# Arianism
I'm summarising what I've learned recently about Arianism: the heresy par excellence, named for the early-fourth-century Alexandrian priest, Arius. I'll conclude with some reflections on why we still need to reject Arian temptations and affirm Nicene orthodoxy today.
Published on: 9 Oct 2025
Arianism neither started nor ended with Arius. When he preached in the 320s, he, like so many of his contemporary Alexandrians, only followed Origen in subordinating the Son to the Father. In Alexandria, there was a strong emphasis on the absolute transcendence and perfection of God, and therefore the difference between that and the Jesus who was born, was tempted, suffered and died. Arius was unremarkable in that respect. He was only remarkable in drawing the logical conclusion: since God is indivisible, ingenerate, immutable, eternal and impassible, but the Son of God was begotten, born of a woman, was tempted, suffered and died, it follows that the Son of God is not fully God. The image of the Father, sure, but not sharing in his Godhead: that wouldn't do justice to the Father's Godhead.
The movement later characterised as 'Arianism' did not share all his teaching. In particular, the idea that the Son was begotten in time -- that 'there was when he was not' -- was a slur, and respectable Arians accepted that the Son is eternal. Some historians deny that there was any coherent movement worth calling 'Arianism', however, I think the creeds and councils of the fourth century show that there was a theological movement, self-consciously and unashamedly associated with Arius, which privileged God's transcendence over the Godhead of the Son. So, although the name 'Arianism' is certainly intended to be derogatory, and there was surely no conspiracy to follow Arius as such, I think the term 'Arianism' is meaningful and has a referent.
Whether or not individual bishops completely agreed with Arius theology, very many were sympathetic to his pro-transcendence leaning. So, when he applied his considerable arts of persuasion to influential likeminded bishops like Eusebius of Nicomedia, he succeeded in establishing a considerable alliance behind him. What had already been a theological strain was forced by the heat of controversy to coalesce into a faction.
Arius and his supporters were set back temporarily by the Council of Nicaea in 325, when the emperor Constantine personally backed the homoousion under the impression this would resolve the dispute. But Nicaea lost influence very quickly, and the Eusebian faction gained ground. By 328, Arius himself had been reconciled into the church by Constantine. And through the 330s, Eusebius of Caesarea, another Arian sympathiser, repeatedly engineered the exile of key supporters of Nicaea, including Eustathius, Marcellus and Athanasius.
In this period, it may be fair to characterise Athanasius as standing more or less alone in fighting against Arianism. This changed somewhat in the 340s, when he gathered the support of the bishop of Rome and many other western bishops in his cause. He remained anathema in the East.
He still had a great deal of sympathy back in Egypt, however. The imperial administration had installed Gregory of Cappadocia, a stalwart Arian, in place of Athanasius as bishop of Alexandria from 339 until 346. Yet when Athanasius returned to reclaim his see in 346, he was greeted with, according to Gregory of Nazanius, 'universal cheers ..., nightlong festivities, the whole city gleaming with light, and both public and private feasting'. And when Arius was exiled again, and another Arian, George of Cappadocia, again installed in his place in 356, the results were riots. When George attempted to carry out one of his key roles as bishop -- distributing money to widows -- many widows had to be beaten to accept money from his hands. After five years, George was lynched in 361. The people of Alexandria were roundly behind their local hero, and did not take kindly to Rome imposing their agenda on them by force.
While Egypt held strong for Athanasius, the Arian party became ever more triumphant in the rest of the Empire. In 358 and 359, a series of fraught councils in East and West produced conflicting resolutions, and the emperor Constantius resolved in 360 to get the situation under control. He called a council to Constantinople and ensured an even result. These were the homoean creeds, asserting that while the Son is like the Father, we cannot and must not say anything about their ousia.
These creeds have subsequently been called the 'Arian' creeds. The reason for describing the homoean party as 'Arian' is, first, that they explicitly rejected Nicaea and the homoousion, and second, they failed to affirm the full Godhead of the Son, saying only that the Son is 'like the Father' and that he is 'God from God', pointedly omitting the Nicaean elaboration, 'true God from true God'.
The councils of 358-360 were chaotic. Councils overrode councils. The emperor rejected creeds and forced his own ones through. Swathes of bishops were banished or deposed. Amidst all the chaos, Athanasius found himself making unexpected friends: the Cappadocian Fathers, including Basil 'the Great', while preferring 'homoiousion' or 'like essence' to his Nicene 'homoousion' or 'same essence', ended up on his side against the triumphant homoeans. The violence of those councils bred hostility, and with a common grudge, a coalition had suddenly formed against the homoeans and around Nicaea.
Perhaps Constantius might have been able to force his way, but he died in only 361. His replacement was Julian. While Julian's reign was short, he brought about a sharp change in direction.
Julian, 'the Apostate', had converted from Christianity to paganism, and during his reign, the alliance between Church and Empire was briefly severed. In a deliberate attempt to sow chaos, he refused to mediate on behalf of the Church and allowed all banished bishops to return from exile. At one time, there were five competing bishops all in Antioch.
One result of this severance was that bishops were free to form their own alliances and make their own case. As a result, the Nicene alliance emerged from Julian's brief reign decisively stronger.
The Nicene alliance would have to wait until 379 for a sympathetic emperor. But once Theodosius acceded, the Nicene victory was absolute and irreversible. He decreed that all clergy had to agree to the Nicene Creed, and called a council to amend and affirm the Creed.
This did not mean that Arianism died out. Eusebius of Nicomedia had sponsored a mission to the Goths, and, being outside of the emperor's grasp, they held strong to their Arian convictions for centuries after. Indeed, when the Goths later took possession of large parts of the Western Empire, Arians may well have significantly outnumbered Nicenes in the West, long after the matter was settled within the Empire. And certain theologies today, which seek to reduce Jesus to a mere emanation from or pointer towards a transcendent God, or a religious genius or a spiritual guru, rather than the real presence of God, are Arian in so far as they seek to protect the transcendence of God at the cost of his choice to dwell with us in Jesus Christ.
So it's worth considering what's lost in the difference between the Nicene faith which is now indisputably Christian orthodoxy, and Arianism in all its forms. If a preacher today elides away Jesus' full Godhead, what does it matter?
Three problems arise in consequence. One is that, if Jesus is not true God, then his miracles are meaningless. This is particularly problematic for those who want to read the Gospels as mere myth without affirming the truth of any of its particular historical content. If Jesus is not true God, then the miracles lose their mythic function. If Jesus is not true God, then a story about him healing someone far away has nothing to do with me. But if Jesus is true God, if he is Emmanuel, then his healings have the power to function as a mythic sign, pointing to something about God's plans to redeem the world. For his miracles to work as myth, whether or not they are true history, Jesus must be true God.
Secondly, if Jesus is not true God, then what kind of salvation can he offer? If a mere man can save us from our sin, what does that mean about sin? If we can be saved by a religious genius, a guru, someone specially in-touch with the spiritual reality, then salvation is no more than fixing up the material world. How's that going, two thousand years on? Has the Church made any progress in translating Jesus' teaching into universal peace? No doubt the Church has done some good -- but it doesn't seem credible that the Church is about to fix the world's problems by following Jesus' self-help agenda. In contrast, if Jesus is God, we can affirm the biblical notion that sin is a crime against God, which separates us from him. Since it is a crime against God, only God can bring about reconciliation. And since God has proven that he is bringing about that reconciliation in Jesus Christ, we can hold strong to our trust in his promise not simply to fix the world according to its own rules -- for that would be impossible -- but to change the rules in a second creation.
Finally, if Jesus is not true God, then we have no way of knowing anything at all about his relationship to God. If he is not true God, then all we can see in Jesus is a man. We can guess at some super-spiritual connection if we like, seeing his words, deeds and miracles as evidence of some semi-divine status. But that would be pure guesswork, in other words, wishful thinking, in other words, fantasy. Athanasius called it 'mania': pulling wild theological claims out of your own head with no substantial basis in reality. But if Jesus is true God, and God gives humans the gift of the Holy Spirit to recognise that Godhead, then we can know that Jesus is true God by seeing him for what he is. This is not fantasising without a grounding in reality, this is the most basic form of knowing: seeing and believing. If Jesus is not God, then Christian faith is fantasy, but if Jesus is true God, then Christian faith can stand firm.
With Arius, we have a religion that reduces the Gospels to fairy stories with no relevance for you or me, a religion that reduces the Church to a struggling self-help movement, and a religion that rests on fantasy. But if we stick to Nicene orthodoxy, instead, we have a religion that reads the Gospels as true myth, real history profused with life-changing theology; a religion that can have hope for the world as still needing God's work of reconciliation to be perfected, yet containing within it anticipations of that future, including in the Church; and a religion that rests on true faith, certain knowledge derived not from wishful thinking but encountering the very essence of God in Jesus Christ.
+60
View File
@@ -0,0 +1,60 @@
# Why did the church become persecuting in the fourth century?
In one generation, Christians in the Roman Empire went from officially persecuted to becoming imperially-backed persecutors themselves. It's important to understand why, to prevent the church from persecuting today.
Published on: 11 Dec 2025
In the year 325, Constantine stood before an assembly of Christian bishops. He had just the year before killed his last remaining rival in battle, leaving him as the sole Augustus of the Roman Empire, from Brittania to Arabia. The bishops must have assembled before him in reverent awe.
Many of them sported scars from torture they had endured in the reign of Diocletian, Constantine's predecessor. Diocletian had sponsored an enormous and brutal persecution of Christians. But that generation of bishops was witnessing an epochal shift of power. Over his reign, Constantine would divert large chunks of the wealth and influence of the Roman state into the safe-keeping of the bishops. Under Constantine's leadership, the bishops would be transformed from enemies of the state to the state's agents.
Official Roman persecution of Christians was decisively coming to an end. But the tragedy of the fourth century is that rather than ushering in a new age of religious tolerance, the bishops only continued the Roman habit of religious persecution, directing the force of the Empire first against internal rivals, 'heretics', and then against pagans and Jews.
Why did Constantine bestow so much power on the bishops? Part of the answer may be the creaking disfunction of the Roman state. The imperial systems for protecting the poor were falling apart. The justice system was notoriously corrupt, and was known to effectively be a means for the rich to get their way by paying for the best lawyers and greasing the palms of the judges. The poor-relief system, based on the magnanimity of local patrons, was stuttering as an increasing proportion of the aristocracy's surplus wealth went to fund the tottering military system, frequently consuming huge resources in ill-fated expeditions against the Sassanids or fighting coups and civil wars between rival emperors.
The bishops were already in control of an impressive poor-relief system within Christian communities, and, unlike the Roman system, which rewarded rich philanthropists with honours, the Christian system encouraged patrons to give anonymously via their bishop, meaning the bishops were in control of how large amounts of Christian money was spent. When Constantine ascended, they were ready to go with their own bureaucratic systems independent of the imperial civil service.
Constantine may have regarded the bishops, fresh out of persecution, as less corrupt than imperial pen-pushers. However, in the long run, the effect of his transfer of power was to transform the episcopate into an alternative civil service, perhaps no less corrupt than the first. But how did this power turn into persecution?
As the bishops became ever more powerful, Constantine and his successors became increasingly dependent on their power. Bishops had huge moral influence over their congregations, and their word had the power to stop -- or start -- riots. Emperors also needed them to keep distributing poor relief, an important foundation for the emperor's moral authority. When the hugely unpopular George of Cappadocia was installed in Alexandria in 357, the local widows refused to receive alms from him: as a result, they were physically beaten by George's imperial goons.
Since the emperors needed the bishops' support, they became increasingly willing to acquiesce to their demands. And one of the bishops' demands was that the emperor use his authority to help them crush heresy.
The bishops of the fourth century inherited a dichotomy between orthodoxy and heresy which had developed in the early church. Orthodoxy meant true belief, defined and enforced by the bishop. Whoever promoted false beliefs, and together with it insurrection against the bishop's authority, was defined as a heretic.
Orthodoxy was conceived of as the unchanging teaching of the apostles, who were in turn taught directly by the Holy Spirit. Orthodoxy might have to be re-stated as sneaky heretics sought to twist its language, but orthodoxy was never supposed to be innovative: only heresy was innovative. Further, heresy was always thought of as a combination teaching falsehoods, behaving immorally, and refusing to take part in mainstream Christian community. It all came as a package. Truth means right behaviour means loyalty.
It's difficult to explain exactly why this system emerged. It's true that faith lies at the root of Christian religion, and that Christ taught that he is truth. The Epistles are clear that false teachings can be dangerous, and Christians have a duty to resist them. But that doesn't in itself explain why the bishop gets to decide which teachings are true or false, nor why the myth of an unchanging apostolic orthodox teaching should have prevailed over the idea that Christian teaching can grow over time as it encounters new problems and contexts.
This system may have been motivated by the need for a distinguishing feature to ground Christian family identity in the absence of an identity based on nationality, social class, sex, or religion. It may also have been some kind of reaction or defence mechanism against persecution. In a world that was often hunting for an excuse to persecute Christians, it was a matter of life and death that Christian communities were tight-knit, loyal to one another, and visibly living according to the highest moral standards.
Whatever the case may be, the result by the Constantinian turning point was that bishops had significant influence over their local Christian communities, and an ideological commitment to maintaining their communities' loyalty to the bishop and his teachings.
And the bishops' desire to crush heretics only increased as the fourth century wore on. With the wealth and power of the civil service increasingly transferred to the episcopate, the aristocracy which had dominated the civil service inevitably moved in to capture the episcopate. Those aristocrats guarded their power jealously, and elections became increasingly marred by accusations of corruption. When Athanasius was elected in 328, he was accused of being underage, of bribing electors and of beating up his Meletian opponents once he got in office. No doubt, the aristocratic bishops were more than happy to use the church's concept of orthodoxy to keep out challengers, as Athanasius did when he used the label 'Arian' to describe just about anyone who wanted him out of power, no matter how distant their ideas were from those of Arius. As bishops found the need to fight ever stiffer competition for their jobs, accusations of heresy multiplied.
As a result of their dependence on episcopal power, Constantine and his successors supported the bishops in their attempts to crush heresy. The bishops appealed to the emperor to adjudicate on disputes, and the emperor responded by calling councils such as Nicaea (325), Antioch (341), Constantinople (360) and Constantinople again (381). Under the emperor's authority, bishops were exiled from their sees, and some theological views were condemned as heresy while others affirmed as orthodoxy, to justify the empowerment of some and the dethronement of others. The particular orthodoxies implied by succeeding emperors was not consistent, leading to some emperors and councils being known to history as 'Nicene' and others as 'Arian'.
Apart from simply doing a favour for the bishops, the emperors had their own reasons for wanting to defend the bishops from challengers. The bishops now had the keys to the welfare system and the justice system. The emperor therefore could not tolerate rival bishops fighting for authority. That would only undermine those systems, which underpinned imperial power and moral authority.
The emperors may also have been motivated by the need to uphold true religion and keep peace in the Empire. It was a universal consensus that, if the Empire was to flourish, it would only be with God's blessing, and that would only happen in turn if the people were united in acceptable worship. Before the Edict of Milan in 313, which finally ended official persecution of Christians in the Roman Empire, there had been a long debate about whether Christian worship counted. It was controversial because Christian worship didn't look much like worship at all to pagan eyes, in particular because Christians didn't make sacrifices. When Constantine settled the issue in favour of Christians, it must have signalled a step change, where acceptable worship became less about proper rites and more about proper belief. This trend may have led emperors to regard heresy as a threat to the Empire's security. Further, where there were schisms, there was no peace, and the Emperor's mission, to unite the world under one government in perpetual peace, was incomplete.
These forces amplified one another in a terrible feedback loop. As bishops increasingly were empowered to define and enforce orthodoxy, they increasingly monopolised local church leadership, which made them more desirable as imperial bureaucrats, which meant they got more power, which meant they were more able still to define and enforce orthodoxy. It was a spiral which led to the definition of orthodoxy being continually sharpened (even as the myth persisted, ever less plausibly, that they were defending pristine, unaltered apostolic teachings). Eventually, it pushed bishops to support persecution not only of Christians who disagreed with them, but also pagans and Jews.
Orthodoxy may also have become more important in the fourth century because of the large number of new converts. With so much influx, insiders may have felt that their core belief-identity was being threatened, and so will have enforced orthodoxy more strictly, while outsiders may have felt the need to prove their authenticity by strongly committing to orthodoxy. Committing violence against heretics, pagans, and Jews may also have functioned as a way to prove that you're an authentic Christian. This drive towards violence was pushed especially strongly from the monastic sector, which exploded in scale in the fourth century.
When orthodoxy gets sharp enough, it eventually gets sharp enough to cut the church in half. To put it another way, bishops competed to get imperial backing for their thinking, and therefore their right to power. Since this imperial backing must have some consistency to remain legitimate, this means orthodoxy gets standardised across the Empire, and that means that local differences of opinion become international schisms. Although the Arian controversy never resulted in a schism within the Empire, there were numerous schisms in the fourth and fifth centuries, culminating in the epic Nestorian schism, which split the imperial church three ways along Chalcedonian, Antiochene and Alexandrian fault lines.
My main reaction to this period of church history is dismay. It seems to me that the church was captured by the Empire and the aristocracy. The church became in large part a way for powerful people to grab, hold onto and accumulate power. When that happens today, the Gospel is suppressed, and the church loses moral authority.
To avoid this happening again, we ought to protect the right of Christians and others to believe and gather free from persecution. True belief is important, but that doesn't mean we should attempt to compel agreement. Christian leaders cannot enforce their teachings if dissatisfied Christians can just go to the church next door.
Opening communion also disempowers those forces which seek to enforce orthodoxy. If the bishop can't bar you from taking communion, they can't force you to accept what they teach or to support their political programme.
Finally, established churches are vulnerable to the perverse incentive structures of the state, and must be disestablished. The Church of England should not have seats in the Lords and should not crown British monarchs.
I believe in one holy, catholic and apostolic church -- but I do not believe in one opinion or one authority. My realistic ideal of church unity now involves a plurality of disestablished denominations which robustly disagree with one another on important points of belief, but which admit one another to communion and are willing to work together for the sake of the Gospel.
I have to caveat my pessimism about the fourth century. As much as I regret the imperialisation of the church, I remain attached to the particular orthodoxies which it produced at Nicaea, Constantinople and Chalcedon. I've been convinced that they are important ground truths for theology, and have stood the test of time because they are intellectually robust. Other creeds and councils (including creeds from fourth-century councils) have been forgotten, but these stand tall. I suppose that Nicaea, Constantinople and Chalcedon give good guardrails for theology, and, whatever the political forces which gave rise to them, have been subsequently vindicated by their theological fruits and by the enduring testimony of the church.
In summary, the church became increasingly persecuting in the fourth century as a result of the entangled interests of, on the one hand, an increasingly landed, aristocratic episcopate which needed to protect its influence amidst stiff competition, and, on the other hand, of embattled emperors who regarded the bishops as a better way of exerting the Empire's power and achieving the Empire's mission amidst the failure of the old imperial systems: provided they could be kept happy and kept in unchallenged power. This persecuting force produced the church's foundational ecumenical creeds, but was just as effective at producing disharmony as enforcing harmony, and ultimately led to the massive and ongoing Nestorian schism. This is a sober lesson for today's church, and should move us to protect freedom of belief and gathering for all, to disestablish the church and to open the communion.
+48
View File
@@ -0,0 +1,48 @@
# 10 very short stories about the Reformation
I'm summarising a few of the big stories about the Reformation I've been studying recently.
Published on: 16 Feb 2026
Updated on: 27 Feb 2026
1. Moral corruption in public office
Since the major reforms of Pope Gregory VII (r. 1073-1085) and his successors, the Roman Church had gone through several cycles of moral panic, attempting to crack down on the 'abuses' of the clergy. The main abuses that got folk worked up were simony (i.e. bribery), nepotism, holding multiple benefices, keeping mistresses and having illegitimate children with them, and getting entangled in secular power politics. The Reformation occurred just at a particularly severe instance of one of these moral panics. Both Protestants and Catholics responded with unprecedented reforms, in many ways similar: the clergy was transformed from a comfortable club for elites into a smaller band of well-educated and committed professionals. In the new Latin church, increasingly, nobility was neither necessary nor sufficient, but education and moral virtue were. Amongst Catholics, the priest became the spiritual equivalent of a Personal Trainer. They became experts at hearing confessions and guiding the highly personal development of their flock. Amongst Protestants, priests and ministers focused much more on shared community life, leading communal Psalm-singing and teaching their congregations with sermons. Amongst both Catholics and Protestants, clergy were expected to be resident in their parish or diocese, preach the Gospel, catechise, and administer sacraments.
2. The Eucharist
In the 14th and 15th centuries, people in Latin Christendom became increasingly devoted to celebrating the Eucharist. However, ordinary people became increasingly estranged from it. The Eucharist was only distributed to the laity under one kind, and then perhaps as infrequently as once a year at Easter, the legal minimum. The liturgy became a spectacle, but not something ordinary people could participate in or even understand. This had led to major protests, including the Hussite and Lollard revolts, in the fifteenth century. These revolts had been repressed by the Church. However, in the sixteenth century, the Church failed to hold back the tide. Protestants reformed the liturgy, turning the priest to face the congregation, translating the liturgy into the vernacular, and distributing the elements in both kinds. Catholics, while not abolishing the Mass altogether as the Protestants did, mandated frequent attendance at Mass and encouraged priests to explain to the laity what was happening in their own language as the liturgy went on. Christians in the Latin tradition now receive communion in a variety of ways, much of that diversity explicable in sixteenth-century terms, but almost all receive communion frequently, receive both species, and can interpret what they are doing theologically: these are all Reformation legacies. The fractious politics of the sixteenth century meant that these different developments of the Eucharist hardened into explicitly irreconcilable doctrines. Christians in the Latin tradition still do not all offer one another communion as a result of this ongoing schism.
3. Monastic reform
In the fifteenth century, there was a well-established monastic system in Latin Christendom. It functioned as a legitimate alternative career to marriage for elite men and women. They had a useful social role: they were paid by other elites to pray for the souls of themselves and their loved ones, thereby, they believed, reducing the duration of their stay in Purgatory. However, in the sixteenth century, this system broke down. Theologians challenged the doctrine of Purgatory, undermining the usefulness of the system. The growing middle-classes resented a system which entrenched the power of the aristocracy. The poor resented the accumulation of wealth in many monasteries, which typically required exorbitant entry fees, or were limited to people of noble birth, or both. In many places, monasteries were overhauled, ending the practice of praying for the souls of benefactors and opening up membership to those of humbler origins, and going out into the world to preach the Gospel and do works of charity. In many other places, the monastic system was abolished altogether.
4. Justification
How can I be right with God? In the medieval Roman Church, there were several doctrinal positions available, and none was authorised as the official 'correct' answer. One thing everyone agreed on, even revolutionaries like Jan Hus, was that you had to _do something_ to be right with God. Being justified was a matter of God working in you to transform you from something wretched to something holy. So, if there was no holiness, there was no justification. Profoundly unsatisfied with this, Martin Luther presented a radical alternative: justification is a free, gracious gift of God, won by Christ's work, not ours. Becoming holy isn't completely irrelevant, but for Luther, becoming holy, or 'sanctification', comes second, and is not the condition of justification. This idea drove a wedge through the Church. Is this doctrine simply presenting the gospel truth of freedom in Christ, or is it an excuse for being lax on sin?
5. The authority of Scripture versus tradition
In the sixteenth century, various schismatics who we now know broadly as Protestants intoned with one voice, that venerating saints is idol-worship. Christians have venerated saints since at least the 3rd century, if not before, and is a tradition affirmed across the Christian world, in Rome, Constantinople, Alexandria and Antioch. How could the Protestants come up with such a novel idea? Their answer: they got it from Scripture. They argued that Scripture consistently condemns worshipping anything other than God, and nowhere promotes exceptions for a special kind of worship for a special kind of non-God. When it was pointed out to them that the cult of saints was an ancient and universal Christian practice, and affirmed by councils and the Pope, they answered that Scripture is a superior authority to the Church.
6. Confessionalisation
In the sixteenth century, there was a sudden profusion of confessions and catechisms. While Christians have used confessions, or creeds, since ancient times to rule on their disputes, the Reformation confessions took on different functions. For the Lutherans, the confessions sought to unify the Lutheran churches in distinction to the Catholic, making no attempt to reconcile their differences, but in contrast, to spell out and emphasise those differences. For the Reformed churches, that went even further, with each national church producing their own confessions in distinction with each other. The Reformed confessions didn't even function to unite the Reformed churches internationally: they had a local, and perhaps even temporal, character. Confessions became longer and ever more precise as time went on, becoming 'lawyer-like' in contrast to the sparse, poetic quality of the ancient creeds. The Catholics were by all means at it too, spelling out exactly what distinguished them from the Protestants in the Tridentine Profession of Faith and in numerous catechisms. All this was doubtless only possible because of the recent introduction of the printing press to Europe from China. For the first time, Christians were using confessional texts at scale not to unite Christians but to divide them.
7. Kings and clerics
Pope Gregory VII was famous for fighting the Holy Roman Emperor for the right to decide who gets to invest priests. This issue and others continued to grind at the relationship between the Pope and Europe's princes. From the 12th century, popes claimed to have ultimate authority on both spiritual and temporal matters, and attempted to exercise this alleged authority with mixed success. Kings fought back. The kings of France and Spain did particularly well at exacting papal concessions, and by the sixteenth century ended up pretty much in charge of Catholicism in their respective realms. In Germany, Switzerland, Scandinavia, England and Scotland, monarchs were more under the papal thumb, sometimes much more. Ulrich Zwingli, the great Swiss reformer, complained that the Swiss had to accept whatever Roman carriage-driver the Pope decided to send as their priest or bishop. In 1538, Henry VIII declared himself the Supreme Head of the Church of England. This move was little distinguished from the actions of his French and Spanish counterparts (apart from its brazenness). But in the context of the time, he was compelled to make entreaties with the German Protestants. After a period of ambiguity, under his grand-daughter Elizabeth, England ended up firmly in the Protestant camp.
NB. It has since been pointed out to me that Elizabeth is famously Henry VIII's daughter, not his grand-daughter. I leave this error in situ, so as not to give the false impression that these short stories are in any way to be admired or trusted.
8. Mysticism
In the late Middle Ages, a movement known as _devotio moderna_ or 'the modern devotion' swept Europe. It challenged the old rituals of public, communal, vocal prayer, and emphasised private meditation and mental prayer. For adherents, the goal was to transform your soul and re-orient it towards God. Along the way, you'd be likely to use methods from books written by Christendom's top gurus, but there was doubtless plenty of unregulated mysticism happening, too. In the Reformation, mystical experiences became ambiguous on both sides of the fence, for different reasons. Protestants emphasised shared over private spirituality, and suspected mystics of practicing needless and idolatrous false religion. But Protestants also emphasised the work of the Spirit in each believer by faith, and often continued practicing private spirituality. Meanwhile, Catholics celebrated private spirituality and were perfectly happy emphasising that it took hard work to approach a direct encounter with God's presence, but were unsettled by the thought that if you could have a such an encounter by praying and meditating, you wouldn't need the mediation of the Church to bring you God's presence through the sacraments.
9. Conciliarism
The medieval Latin church had a thing for councils. Councils functioned as a way to solve disagreements in a fair way, thus generating robust consensus: in theory, at least. Idealists, called 'conciliarists,' wanted to prioritise councils over every other authority, even the Pope: though that meant that ecumenical councils were deeply distrusted by exactly the one person who had the sole authority to call them. These conflicts still lay unresolved when Martin Luther led a revolt against Rome in 1517. For some decades, leaders on both sides of the divide held out hope that an ecumenical council might heal the schism. However, power politics got in the way, and by the end of the Council of Trent, it was abundantly clear that councils had become solidly subservient to papal authority, and were only ever going to exacerbate the split. Conciliarism was finally dead.
10. Persecution
In 1520, Martin Luther was declared an heretic in a papal bull issued by Pope Leo X. In response, Martin Luther burned the bull in public and announced that Leo X was the Antichrist. Various players in various quarters tried various strategies for resolving the schism, and it seems that few were willing to give up on violent coercion. In both Catholic and Protestant domains, magistrates burned books and burned people in an attempt to quell heresy.
+10
View File
@@ -0,0 +1,10 @@
# What is an agnostic?
Published on: 4 Mar 2026
I learned today that the first agnostic was 'Darwin's Bulldog', Thomas Henry Huxley. He attended the Metaphysical Society, an extremely broad selection of England's foremost thinkers who gathered in London nine times a year throughout the 1870s to discuss the ultimate questions. He tried all the usual appellations: atheist, theist, pantheist, materialist, idealist, Christian. He found all of them wanting. All the various '-ists', he felt, 'were quite sure they had attained a certain "gnosis,"-had, more or less successfully, solved the problem of existence; while I was quite sure I had not, and had a pretty strong conviction that the problem was insolube.' Thus, negating the term 'gnostic', he coined 'agnostic'.
Thus for Huxley, as with all the first agnostics, the term did not intend the metaphysical neutrality it's often taken to mean today. For Huxley, it's a positive epistemological assertion: sure, I don't know, but neither do you: the matter is in principle unknowable. 'Agnostic' is not a way for Huxley to diplomatically sidestep metaphysical debates without having to take a side, it's a confrontational view which contradicts the theist, the atheist, and all the rest.
I wonder what people in my life think of this, who have described themselves as 'agnostic'. Did they mean what Huxley meant, or did they mean something more irenic? Does Huxley's approach challenge them? Is neutrality really an adequate stance?
+43
View File
@@ -0,0 +1,43 @@
# The structure of Genesis
Published on: 21 Mar 2026
I've been reading the Book of Genesis recently. Last night, I tried a favourite exercise of mine. It's very simple. I wrote down a list, in order, of all the 'episodes' in Genesis. That is, I wrote down a list that went:
* Creation
* Adam and Eve
* Cain and Abel
* Genealogy of Noah
* Noah and the Flood
* …
…and so on, all the way to Joseph.
Once I'd finished this, I was surprised at the result. I realised that, without consciously thinking it, I had been expecting to find a single, clear structure, and in particular, one that went: patriarch, genealogy, patriarch, genealogy, and so on. I didn't find that at all.
For sure, patriarchs and genealogies are major structures in Genesis, and you'll get a long way thinking about Genesis as a story of six patriarchs and so many genealogies (though the genealogies are rather more difficult to count). Indeed, you *can*, if you really want, slice up Genesis into six neat patriarch cycles and glue them back together again with genealogies: Adam (1-5), Noah (5-11), Abram (11-25), Isaac (25-27), Jacob (27-36), Joseph (36-50). But this way of thinking cannot comprehensively account for the whole book.
For one thing, there are a good few pieces in Genesis which are difficult to fit into a patriarch jigsaw. Why is there so much material about Cain, Hagar, Ishmael, Esau, and Dinah, including genealogies? Why is the Tower of Babel in there? If Genesis is all about the patriarchs, these are all lengthy side-alleys. (May I say pends? Closes?)
For two things, this neat six-part series is more messy than it might at first appear. On this model, the genealogies function to glue together the patriarch narratives. Sometimes, this model works well: the genealogy in chapter 5 does a good job of connecting Adam to Noah, and the one in chapter 10 gets us from Noah to Abram. But from Abram to Jacob to Joseph, there's no need for genealogies to stitch things together, because we're only taking one step on the genealogical ladder at a time, from father to son to grandson.
So, in chapter 25, instead of a 'genealogy' from Abram to his son Isaac, we get genealogies of Keturah and Esau: genealogical 'dead ends' from a patriarchal point of view. In chapter 36, where we're 'supposed' to be linking Jacob to his son Joseph, we get another genealogy of Esau. And in chapter 27, at the join between the supposed 'Isaac cycle' and the supposed 'Jacob cycle,' there's no genealogy at all.
I'm not for a moment trying to tell you that this model is *useless* for understanding Genesis. Far from it! I don't think you can understand Genesis as a coherent whole without considering it as a story of six patriarchs. I'm just saying this model is *inadequate*. It seems that to account for the Book of Genesis, we're going to have to structure it in multiple ways. To me, that's wonderfully exciting.
In particular, I'm considering all these to be worthwhile ways to look at Genesis as a whole:
* Genealogies! (Without assuming they are centred on the six patriarchs!)
* 'These are the generations of…' (how many occurrences can you find?)
* Yahweh speaking to people! (Always one person alone: did you notice that?)
* Wives! (How many can you think of? Will you include Potiphar's wife in this analysis? What about Dinah?)
* Anti-patriarchs and foreigners! (Does Adam get as much column space as Abimelech, or Esau?)
* Wells! (Some of them appear twice, or even thrice…)
* Names and naming! (Do you remember why Jacob is called 'Jacob'?)
* Deaths and burials! (How did Abraham end up buried in that cave?)
None of these structural lenses is adequate for seeing the whole thing in focus. But each one adds a new dimension. They all pile on top of one another. It's difficult to think of a physical analogy, because in my experience, things don't tend to occupy the same physical space at the same time, and I don't want to resort to the 'kaleidoscope' cliché. I guess it's a bit like quantum super-position, but instead of something being both 'up' and 'down' at the same time, it's multiple Persian rugs. Each one has its own colour scheme, its own patterns, its own delicately balanced symmetries. And yet, just as each rug is intricately harmonious within itself, it is no less intricately arranged into complex symphony with every other rug. And yet, somehow, all the rugs are simultaneously woven out of the same yarn. Picture that!
Of course, you can also read Genesis without attempting to comprehend the entire thing at once. You can also study a single episode, like the Tower of Babel, without trying to squeeze it into a grand narrative of the whole of Genesis. I suspect lots, if not all, of the stories in Genesis were originally told orally and independently of each other, and I think it's perfectly valid to read them independently once again.
Nevertheless, the author or authors of Genesis, and, more importantly, the Holy Ghost who moved them, once decided that it would be a good idea to put these stories and genealogies in an orderly sequence in the same scroll, and deliberately and explicitly relate them to one another. By considering structural lenses, we're joining the human authors, and generations of readers, in the faith that these stories mean something to each other, that they have something to tell us not only independently but also together.
+51
View File
@@ -0,0 +1,51 @@
# I'm a Protestant, why should I care about Vatican II?
This week in the New College, I've been studying the Second Vatican Council (1962-65), and in particular the Dogmatic Constitution on the Church, also known as 'Lumen Gentium.'
The Roman Catholic Church had inherited a rather secular view of what the Church is: it is a visible institution, 'as visible as the Kingdom of France' as Reformation polemicists once fained to put it, and in particular, a kind of monarchy, the Pope its King. After Vatican I closed in 1870, certain of the Church's earthly powers were increasingly in the hands of the Pontiff: not only monarchy, but an absolute one at that.
In the 1960s, the bishops deemed this inadequate. One particular concern was ecumenism, then in fashion. It is hardly possible to form cordial relations with other ecclesial organisations so long as one is officially bound to describe them as not real Church. Another concern was the Jews: it is hardly possible in a post-Holocaust world to pronounce the Jews nothing more than traitors against God. The bishops demanded a new understanding.
Once I understood this much, I stopped. Why carry on? I'm not Catholic. This isn't 'my' doctrine. I'm not at all tempted to view the Church as nothing other than a visible institution. If anything, I'm more tempted to say, 'the Church is just the collection of all the Christian people that's it! Why bother getting all metaphysical?'
So, I set myself a challenge: I'd try and persuade myself to care about Lumen Gentium. What follows is my best case.
My case rests on this claim: if the Church is nothing more than all the Christians, then Christ died for nothing.
Here's the wedge: who does Christ save?
Just the Christians, of course! Is that your view? Sounds sensible. Good Catholic doctrine. It was put like this at the 11th session of the Council of Florence-Ferrara, on the 4th of February, 1442:
> It firmly believes, professes and preaches that all those who are outside the catholic church, not only pagans but also Jews or heretics and schismatics, cannot share in eternal life and will go into the everlasting fire which was prepared for the devil and his angels, unless they are joined to the catholic church before the end of their lives.
Perhaps you wouldn't have put it with quite that degree of extraordinary pastoral sensitivity. But is that basically your view? It is untenable! It is cruel, and it makes God out to be cruel. It is also unlivable. It is not possible to go about treating your brother, your friend, your colleague, your local shopkeep as if they're on a one-way train to eternal hellfire, and you're waving at them from the other track. If you do, you will be perceived as dangerously insane, and rightly so. In fact, almost nobody does behave as if this doctrine is true, and good thing, too!
Perhaps another Roman Catholic Council can suggest something more irenic?
> Those also can attain to salvation who through no fault of their own do not know the Gospel of Christ or His Church, yet sincerely seek God and moved by grace strive by their deeds to do His will as it is known to them through the dictates of conscience. Nor does Divine Providence deny the helps necessary for salvation to those who, without blame on their part, have not yet arrived at an explicit knowledge of God and with His grace strive to live a good life. Whatever good or truth is found amongst them is looked upon by the Church as a preparation for the Gospel.
That, of course, is Lumen Gentium.
Yet, if this is true, what role does Christ play after all? If Christ's Church isn't strictly necessary for salvation, then why did God bother sending his Son? We proclaim that Christ is the only way that God saves the world, but if we admit that some Jews and Muslims and all the rest might just be saved too, don't we deny that Christ is the only door?
So, if Christ only saves the Christians, then his salvation is cruelly limited. If he saves some non-Christians too, then the salvation isn't really from him.
Lumen Gentium attempts to get us out of this bind. Do you care yet?
According to Lumen Gentium, the Church is the 'budding-forth' of the kingdom of the heavens:
> From this source [Jesus] the Church, equipped with the gifts of its Founder and faithfully guarding His precepts of charity, humility and self-sacrifice, receives the mission to proclaim and to spread among all peoples the Kingdom of Christ and of God and to be, on earth, the initial budding-forth of that kingdom.
What strikes me about this 'budding-forth' image, is that a budding is both a promise and a foretaste of a coming flowering. See why this budding-forth matters:
> Its end is the kingdom of God, which has been begun by God Himself on earth, and which is to be further extended until it is brought to perfection by Him at the end of time, when Christ, our life, shall appear, and "creation itself will be delivered from its slavery to corruption into the freedom of the glory of the sons of God." So it is that that messianic people, although it does not actually include all men, and at times may look like a small flock, is nonetheless a lasting and sure seed of unity, hope and salvation for the whole human race.
This is what the budding-forth is a promise and a foretaste *of*: the liberation of the whole world. That's how it can be hope for all people, not only Christians. One more for the hat-trick:
> God gathered together as one all those who in faith look upon Jesus as the author of salvation and the source of unity and peace, and established them as the Church that for each and all it may be the visible sacrament of this saving unity.
You poor Protestant schismatic, you probably never heard the word 'sacrament' before. Let me explain: a 'sacrament' is an effective sign. Effective: it does what it says. Sign: it says what it does. It's also a mysterious unity of not-two-but-one events. Take communion: no, take communion. When you do, notice, it is effective: it actually brings you together with the rest of the body of Christ into communion with Christ the head. It is a sign: the bread and wine represent Christ's body and blood and point to his Passion which makes that communion possible. It is a physical reality: it is bread and wine. It is a spiritual reality: it is the flesh and blood of Christ. It is not two realities: it is mysteriously one.
Describing the Church as a 'sacrament,' in my opinion, is a stroke of brilliance. It is effective: not to say that the Church is perfect, it is a foretaste now of God's final redemption of the whole creation, and actually can bring forward flashes of light in the darkness, however flawed the earthly Church may be. It is a sign: as a gathering of followers of Christ, it points forward to the time when 'every knee shall bow, whether in the heavens or on the earth or under the earth, and every tongue confess that Jesus Christ is Lord, to the glory of God the Father.' It is a physical reality: a gathering of people, bound together by various organisational structures and other physical binds, like shared buildings, rituals, sacred objects. It is a spiritual reality: the body of Christ, one in his headship, the holy communion of saints refusing from age to age to respect boundaries of time, space, or even death. It is not two realities: it is mysteriously one.
Does this help you to loosen the bind you're in? At least credit it with the attempt.
+96
View File
@@ -0,0 +1,96 @@
# Green apocalypse (my dissertation proposal)
I want you to panic: thus Greta Thunberg exhorted the delegates at the World Economic Forum in Davos in 2019. I want you to act as if the house is on fire, because it is.
In her speech, Thunberg projected her audience into an imaginary crisis. The house is on fire. Try and escape there is no way out. Fight the fire. Do it now. No cost too great.
A crisis situation demands an immediate response, and renders inaction unintelligible. No one can recognise that their house is on fire and lie on the sofa watching TV. In a crisis situation, decision-making adopts a certain, necessary, urgent character.
For the world leaders gathered in Davos, in contrast, continuing to set fossils on fire was a conceivable course of action. Climate change was not a literal crisis for them: in fact, climate change is not literally a crisis for anyone. That's not to say that it isn't real, or that it isn't really a big problem: all I mean is that it does not pose an undeferrable, immediate, existential threat to anyone, in the way that heatwaves, floods, and fires do.
Thunbergs speech exhorted her audience to imagine what it would be like if setting fossils on fire were as inconceivable as sitting watching TV while your house is on fire, and to act as if it were true. She created an imaginary crisis to try to persuade her audience to act in a certain way.
The rhetoric of Thunbergs speech echoes across our public fora. Political speech, newspaper articles, pop-science, scientific journals, novels, poems, films, and computer games abound with imaginary crises of this kind. The Woodland Trust is currently campaigning for local and national governments across the UK to declare a state of nature emergency. This amounts to nothing more, and nothing less, than declaring official belief in an imaginary crisis.
These imaginary crisis narratives fascinate me: Im planning to write a dissertation about them over the next four months. Maybe I can persuade you that theyre worth caring about?
These sorts of narratives are frequently labelled apocalypses. Phrases such as climate apocalypse and environmental apocalypse are increasingly common. However, neither of these terms are quite adequate.
Take climate apocalypse. Climate change is often woven inextricably into other, diverse problems: deforestation, habitat loss, soil degradation, overfishing, plastic pollution, ocean acidification, capitalism, imperialism, democracy, hunger, war, justice. The word climate suggests that weather patterns can be neatly sliced out of this thickly knotted web of concerns. Perhaps some specialist scientific literature does attempt this, but a lot of what I want to study is not that particular kind of scientific literature.
The word green is already associated with this whole web of concerns: think green energy, green tourism, Green Party, green agriculture.
The word green is also more suitable than climate because it is open. By using the word green, I dont have to arbitrarily exclude literature from consideration just because it doesnt focus on weather patterns or some other fixed list of concerns. I also considered eco-apocalypse, but green apocalypse has the advantage that green can be detached and function as a self-standing epithet, while eco can only exist as a prefix in ordinary English.
Green is also much more beautiful than eco. (I dare you to disagree!)
I am interested in hope. In order to face our big problems, we need hope.
Hope is not merely a feeling. Hope means action. Hope is never easy. In easy situations, there is no need for hope. Hope means right action in difficult circumstances. Nevertheless, hope is also a feeling. Hope includes a conviction that not all is lost: that however rocky the road, good will win out in the end.
The opposite of hope is despair. Despair means a conviction that all is indeed lost. Since all is lost, action is pointless. Despair means no action, means resigning to mere lamentation.
A lot of folk complain that green apocalypse is no good, because it induces despair instead of hope. A woman on my degree programme told us that she once started an undergraduate degree in Environmental Science, but found it so depressing that she had to switch subjects for the sake of her sanity. Evidently, her Environmental Science department, despite apparently being experts in the field, either didnt realise the importance of hope (improbable in my view), or were incapable of telling hopeful stories about the environment (relatable!). So, is the apocalyptic form at fault? Come to mention it, what is an apocalypse?
Sometimes, the word apocalypse has taken on a meaning close to the disaster of the disaster movie genre: a total catastrophe far outweighing any redemptive afterwards. This usage is exemplified in the phrase nuclear apocalypse, as well as in the phrase post-apocalypse to refer to a time after such a total catastrophe.
However, apocalypse has a deeper resonance, coming from its ultimate entry point into the English language: the Apocalypse of St John, also known as the Book of Revelation, the last book of the Christian Bible. This work inspired nineteenth-century scholars to coin the word apocalyptic in order to name a genre of literature, viz. the genre of literature to which the Apocalypse belongs.
In Koine Greek, the verb ἀποκαλύπτω (ápokalýpto) was constructed from the verb καλύπτω (kalýpto), to veil. Thus, in the Apocalypse itself, the word apocalypse means unveiling. The work is introduced as the ἀποκάλυψις (ápokálypsis) of Jesus Christ. Something was hidden as if behind a veil, but has now been revealed in, or through, or by, Jesus Christ.
Can apocalyptic literature inspire hope instead of despair? Surely, if we will find a model anywhere, we might find it here, in the Apocalypse itself? Could biblical scholarship help us to unveil the hope hidden here?
While the Apocalypse had been relatively neglected by biblical scholars until about the 1960s, since then, academics have taken a keen interest in it. There was a particular flurry of activity in the 1990s. Then, Elizabeth Schüssler Fiorenza helped to popularise the view which became widespread amongst biblical scholars that the Apocalypse was written in response to a crisis faced by the Christian communities of Asia Minor under the rule of the Roman Emperor Domitian.
However, at a similar time, Leonard Thompson argued that there is no evidence that those communities were facing a crisis, and you dont need to posit a crisis to explain the Apocalypse.
In his view, Johns audience likely lived relatively peaceful, ordinary lives, but Johns rhetoric induces an imaginary crisis in order to get his audience to act in a certain way. He does this by revealing hidden ultimate realities behind the deceptively ordinary world of appearances. Having gone on an imaginative, visionary cosmic journey through space and time, revealing these hidden, ultimate realities, his audience can now return to their messy visible reality with a new orientation towards what really matters, enabling them to do what is right even when their real-world decision-making does not literally have the certain, necessary, urgent character which it would in a crisis.
Perhaps this is one way that the Apocalypse grounded hope for its original audience, in the sense of hope I explored above. The ultimate reality revealed in Johns vision is not optimistic: it acknowledges the reality of extreme suffering. But the ultimate good in Johns vision is rock-solid. Gods final victory over the beast is assured, even when the whore of Babylon drinks the blood of the saints by the gallon. All is not lost. This conviction underlies Johns appeal to his audience to live rightly even in their complicated reality with no obvious moral absolutes.
So why does green apocalypse so often inspire despair instead of hope? I hope I will develop my ideas over the next few months, but I have at least one inkling.
St John unveils a hidden reality behind the ordinary world of appearances. If this is to orient his audience towards hidden moral absolutes in their ordinary, very un-absolute everyday moral decision-making, this hidden reality must have a glimmer of ultimate value, something that cannot be compromised. In order to do this, he cannot be limited to mere scientific fact-speak. He has to reach beyond the grasp of facts, into the realm of myth: the realm of visions, dragons, lakes of fire, celestial cities. The point of these visions is not to name for us some definite future as it really appears, but to point us towards something which cannot be simply named in our language. It is this mythic quality which enables John to really reach behind the veil of ordinary reality, into the realm of ultimate things.
Where green apocalypse fails, it is often failing by failing to provide a rock-solid, rock-bottom reality for us to hold on to. Often, it does the very opposite, pointing us towards ordinary, visible realities, like polar ice caps and rare species, while at the same time emphasising how fragile they are. No wonder such narratives are so alienating! As long as green apocalypses limit themselves to the plain kind of language favoured by science so-called fact-speak they will thus forever be condemned to inspire despair.
Where green apocalypse succeeds, it succeeds by delving into the riches of myth-speak. I think a promising example of this is The Lost Words, with words by Robert MacFarlane and illustrations by Jackie Morris.
=> https://www.thelostwords.org/ The Lost Words Website
In The Lost Words, apparently ordinary characters from the British environment as ordinary as dandelions, acorns, and ferns are depicted in beautiful illustrated portraits on gold leaf, in the manner of a religious icon. In the pages in-between, illustrations of fields, thickets, and moors are scattered with a jumble of golden letters, waiting to be assembled. Each icon is accompanied by an acrostic poem. Consider Bramble:
=> /images/longlog/2026-04-12_bramble.webp Bramble icon
> Bramble is on the march again,
> Rolling and arching along the hedges,
> into parks on the city edges.
> All streets are suddenly thick with briar:
> cars snarled fast, business over.
> Moths have come in their millions,
> drawn to the thorns. The air flutters.
> Bramble has reached each house now,
> looped it in wire. People lock doors,
> close shutters.
> Little shoots steal through keyholes,
> to leave in quiet halls,
> Empty stairwells bowls of bright
> blackberries where the light falls.
Picture it! The human world tied up, people pushed out. Bramble barging through, conquering cities, streets, houses. Bramble is on the march again. It is decisively not fact-speak. It is imaginative myth-speak, perhaps?
You could also study Weasel, who acts on land like spark on tinder / Scorches grass, turns fields to pyre, sand to glass, tree to cinder. Or there is willow, the wise one, who will never, can never, share willow-wisdom with us: you will never know a word of willow for we are willow and you are not.
My thoughts are not quite there yet, but I sense theres something here. Were not just being given a scientific account of bramble, weasel, willow. Were being given more than that a mythic account, peeling back ordinary reality to find something more precious behind. Can this refocus our eyes on what really matters? Can this transcend eco-anxiety? Can this ground hope instead of despair?
To recap, in the dissertation Im about to write, I intend to address the question: how can green apocalypse ground hope instead of despair?
This question is topical, since green apocalypses have already been repeatedly accused of grounding despair instead of hope.
This question is also novel, since most critics imply that the solution to the problem is to stop telling green apocalypses, whereas my question presumes that it is possible to inspire hope without abandoning the apocalyptic form.
Since I have fixed the concept apocalypse into the scope of my project, the Apocalypse of St John, very literally the defining work of the apocalyptic genre, is a necessary focus point. My subject matter is not just any old green stories, it is particularly those green stories which are apocalyptic, that is, those which are rather like the Apocalypse.
Therefore, my project amounts to an attempt to explain (at least) one way in which the Apocalypse might have once grounded hope instead of despair, and then to explore how green stories can do something similar today.
Ill be handing this in on the 5th of August. Wish me luck!
+3
View File
@@ -0,0 +1,3 @@
ChatGPT 3.5 gives bad answers half the time, and programmers miss the mistakes almost half the time. Be careful out there, folks.
=> https://dl.acm.org/doi/pdf/10.1145/3613904.3642596 Is Stack Overflow Obsolete? An Empirical Study of the Characteristics of ChatGPT Answers to Stack Overflow Questions
+3
View File
@@ -0,0 +1,3 @@
Cory Doctorow writes incessantly about the harms of monopolised markets. This essay is particularly good, because he collects many of monopolists greatest hits from recent years. Do keep reading to the end. It just gets better.
=> https://pluralistic.net/2024/05/24/record-scratch/#autoenshittification Cory Doctorow: autoenshittification
+3
View File
@@ -0,0 +1,3 @@
Once you find yourself in the position of being someones father youll quickly realize that youre not actually raising anyone here, you just happen to be the veteran in the trenches alongside them, showing them the ropes and hoping theyll survive and turn out okay.
=> https://johan.hal.se/wrote/2024/06/05/parenting Parenting
+3
View File
@@ -0,0 +1,3 @@
Catherine Carr did a fantastic job of unveiling how teenage boys are experiencing masculinity in Britain today. Plenty here to surprise, shock and inspire.
=> https://www.bbc.co.uk/programmes/m001yshl Boys
+3
View File
@@ -0,0 +1,3 @@
Colin McGinn makes the case for primary and secondary moral values, just as there are primary and secondary qualities, apparently thereby managing to assert both moral realism and anti-realism at the same time without contradiction.
=> https://www.colinmcginn.net/primary-and-secondary-values Primary and Secondary Values
+3
View File
@@ -0,0 +1,3 @@
Jay Hoffman spots some striking parallels between the current AI hype and the dot-com bubble.
=> https://thehistoryoftheweb.com/beware-the-cloud-of-hype Beware the cloud of hype
+3
View File
@@ -0,0 +1,3 @@
Cory Doctorow, writing for the Electronic Frontier Foundation, argues that to save news media, we need to dismantle ad-tech monopolies, ban surveillance advertising, open up app stores and have an end-to-end web.
=> https://eff.org/saving-the-news Saving the News from Big Tech
+3
View File
@@ -0,0 +1,3 @@
A superb tribute to the building and analysis of the failures of the planning system. This was published in my free local newsletter, and is worthy of any broadsheet newspaper.
=> https://broughtonspurtle.org.uk/news/gone-not-forgotten 154 McDonald Road: Gone but not Forgotten
+3
View File
@@ -0,0 +1,3 @@
Chris Ferdinandi has a hot take here. I would be keen to test this idea out one day: push the limits of how much complex state you can manage within the light DOM.
=> https://gomakethings.com/state-based-ui-is-an-anti-pattern State-based UI is an anti-pattern
+3
View File
@@ -0,0 +1,3 @@
Yuck, yuck, yuck. Makes me glad Im not on Instagram. For people already stuck there, though, this just sucks. Highly recommend either opting out of AI training or quitting Insta, if only to give the twits the middle finger they deserve.
=> https://www.fastcompany.com/91132854/instagram-training-ai-on-your-data-its-nearly-impossible-to-opt-out Instagram is training AI on your data. Its nearly impossible to opt out
+3
View File
@@ -0,0 +1,3 @@
Did you know that most organisations store less than 100GB, and almost all analytics is run on the last 24h of data? I didnt. Though take it all with a pinch of salt: the guys writing on his company blog which sells traditional data warehouses.
=> https://motherduck.com/blog/big-data-is-dead Big Data is Dead
+3
View File
@@ -0,0 +1,3 @@
ve got many inter-dependent flags. If you have independent flags, re-writing those as enums will just end up with you re-implementing the boolean type for every parameter, and not getting much profit, I reckon.
=> https://www.luu.io/posts/dont-use-booleans Dont use booleans
+3
View File
@@ -0,0 +1,3 @@
Who doesn't like a classic David-and-Goliath hacker story? Also, if you're American, please <a href="https://www.breakupticketmaster.com">break up TicketMaster</a>. If you're in the UK, it's not quite as bad, but <a href="https://assets.publishing.service.gov.uk/media/5519473540f0b61401000087/final_report.pdf">it's still really bad</a>. Use alternatives where you can.
=> https://conduition.io/coding/ticketmaster s Rotating Barcodes (SafeTix)
+3
View File
@@ -0,0 +1,3 @@
Pretty convincing to me. The biggest potential weakness in his argument is his claim that none of the most common reasons why devs disagree on story points exposes anything which ought to be resolved in an estimation meeting. If you can provide other common reasons besides the ones Dave considered, you could rebut his argument. I don't feel experienced enough to judge this myself.
=> https://blog.scottlogic.com/2024/07/05/story-points-are-wasting-time.html Story points are wasting time
+3
View File
@@ -0,0 +1,3 @@
Read the interviews. Economists give interesting, and diverse, opinions on the economic potential of LLMs.
=> https://www.goldmansachs.com/intelligence/pages/gs-research/gen-ai-too-much-spend-too-little-benefit/report.pdf Goldman Sachs Top of the Mind, Issue 129
+3
View File
@@ -0,0 +1,3 @@
I posted on the Scott Logic blog a while ago about how the word 'hallucination' doesn't accurately capture how LLMs work.
=> https://blog.scottlogic.com/2024/09/10/llms-dont-hallucinate.html t 'hallucinate'
+3
View File
@@ -0,0 +1,3 @@
In case you'd forgotten: content moderation is still carried out by appalling worker exploitation. This is not news, but nonetheless an excellent and suitably chilling essay on the topic. Be aware that the essay describes some deeply traumatic content.
=> https://www.noemamag.com/the-human-cost-of-our-ai-driven-future The Human Cost Of Our AI-Driven Future
+3
View File
@@ -0,0 +1,3 @@
A pretty good case for avoiding the word 'just' in software engineering. I admit I've been guilty, too.
=> https://sgringwe.com/2019/10/10/Please-just-stop-saying-just.html just'
+3
View File
@@ -0,0 +1,3 @@
Alexander Pruss has a bizarre, but at first blush convincing, argument that complementarians about gender dont have to appeal to morally significant intrinsic differences between men and women.
=> https://alexanderpruss.blogspot.com/2024/11/sexual-symmetry-and-asymmetry.html Sexual symmetry and asymmetry
+4
View File
@@ -0,0 +1,4 @@
Handy for the next time you develop a CLI or TUI. Also handy as a user: now I know about readline key bindings, which are everywhere apparently.
=> https://jvns.ca/blog/2024/11/26/terminal-rules "Rules" that terminal programs follow
=> https://readline.kablamo.org/emacs.html Readline key bindings
+1
View File
@@ -0,0 +1 @@
I should write a post about self-hosting a Website.
+3
View File
@@ -0,0 +1,3 @@
There was no long-term price inflation from 1200 (when these data begin) until 1550. WHAT?!
=> https://www.bankofengland.co.uk/statistics/research-datasets s 'Millenium of Macroeconomic Data'
+3
View File
@@ -0,0 +1,3 @@
I just donated $40. These guys are promising to do whatever it takes to make sure the AT Protocol is genuinely owned by everyone.
=> https://freeourfeeds.com Free Our Feeds
+1
View File
@@ -0,0 +1 @@
I should write a post about owning a homelab.
+1
View File
@@ -0,0 +1 @@
I should write a post about biblical inerrancy.
+1
View File
@@ -0,0 +1 @@
I should stop listening to radio and recorded music in my house. Music is played by people, not machines. So-called 'recorded music' is fake.
+1
View File
@@ -0,0 +1 @@
My current diary is hand-made using a blank notebook and a bunch of felt-tip pens. It was fun to do, but also really time-consuming, and error-prone. Maybe I could write a script to produce the design in PDF? It'd probably go via HTML just because I know how to do things in HTML.
+1
View File
@@ -0,0 +1 @@
I loved Brave New World by Aldous Huxley. If you ever intend on doing science, having sex or being human, you should read this book.
+1
View File
@@ -0,0 +1 @@
I loved the art exhibition today at my church, Bruntsfield Evangelical. I was blown away by the hidden talents in the congregation sorry for the cliché. I kept coming back to a few works in particular: Brooke's painting of the Samaritan woman at the well, Irena's multi-media interpretation of Ps 139 'you knit me together in my mother's womb,' Sam's prose-poem 'On Words,' and Maggie Shearer's landscapes. And this only scratches the surface. Today ignited my love for this congregation, made me passionately desire to have more art in my life, and inspired me to take up an interest in poetry again.
+1
View File
@@ -0,0 +1 @@
I loved 'Batter my heart' by John Donne. I was surprised that I loved it more than 'Death be not proud' when I bought a collection of his poems today and read through the Divine Meditations. 'Death be not proud' may yet grow on me. I'd love to memorise a few of his Divine Meditations.
+1
View File
@@ -0,0 +1 @@
I should write a post about self-hosting a Gemini capsule.
+1
View File
@@ -0,0 +1 @@
I wish I set aside time to read the Bible and read literature and sometimes write sonnets.
+1
View File
@@ -0,0 +1 @@
I wish there was a version of the Bible that was like the Authorised Version but with fewer errors.
+1
View File
@@ -0,0 +1 @@
I wish I was better at languages.
+1
View File
@@ -0,0 +1 @@
I should write a post based on the essay I'm writing for my course, Science and Religion in Literature. I could try to explain to a general audience what's going on in the academic science and religion discourse right now, and my argument as to how Philip Pullman's His Dark Materials trilogy could address this.
+1
View File
@@ -0,0 +1 @@
I wish I had a copy of Shakespeare's sonnets. I'd love to memorise Sonnet 18.
+1
View File
@@ -0,0 +1 @@
I had an unexpected craving to go back to The Elder Scrolls III: Morrowind, a computer game I was obsessed with between the ages of about 16 and 18. I actually got as far as looking at prices for GPUs. I don't currently have a GPU in my computer, since I haven't played computer games for years. Playing Morrowind with enough mods to make it fun would require a GPU of some kind, though I find it really hard to judge what card would be appropriate. In the end, I remembered that I actually quite like not being addicted to computer games, and the sudden craving gradually faded.
+1
View File
@@ -0,0 +1 @@
I loved the Easter homily at Sacred Heart of Jesus on Lauriston Street, Edinburgh. I loved it because I couldn't predict where it was going, which meant I had to listen and think. It got me thinking about scapegoating. I agree that there's something a bit morally gross about scapegoating, and I see the connection he made with the theory of penal substitution. I think the priest missed the Lev 16 connection, though, which I think is pretty important.
+1
View File
@@ -0,0 +1 @@
I'd love to get to know more myths and fairy tales. I'd love a good translation of the Odyssey, or a good telling of other Greek myths, or Neil Gaiman's Norse myths, or some sagas, or…
+1
View File
@@ -0,0 +1 @@
I should get a bunch of my pals together and go poetry busking. If we make any money we can go to the pub afterwards.
+1
View File
@@ -0,0 +1 @@
I should write a post based on my dissertation proposal. Someone else might find my reflections on green apocalypse interesting. And it would be cool for me to look back at the end of the project.
+3
View File
@@ -0,0 +1,3 @@
I loved this silly post by ew0k.
=> gemini://warmedal.se/~bjorn/posts/2025-09-02-married-was-i-scammed.gmi Married! Was I Scammed?
+1
View File
@@ -0,0 +1 @@
I went through my work diary from semester 1, and remembered that I came up with a few fun and productive ways of digesting what I'd learned! I wrote a very personal and temporary catechism, summarising important opinions that I had formed, I wrote down a list of quality questions I'd encountered, and I wrote a couple of stories/essays for my longlog. I should totally do all these things again: Semester 2 Edition.
+1
View File
@@ -0,0 +1 @@
I should make sure that folk on my Website know how to subscribe to my logs, and how to get to my Gemini capsule. That is, I should write a guide to RSS and a guide to Gemini, and make them accessible from my homepage.
+1
View File
@@ -0,0 +1 @@
I wish I had a few more fountain pens. Dreadfully useful things.
+9
View File
@@ -0,0 +1,9 @@
Losing Eden by Lucy Jones left me feeling hopeful, inspired. But I cant imagine what I shall do, and its driving me nuts. What I really want is to form a joy brigade at Bruntsfield Evangelical that goes outside regularly, to touch nature from the inside. But I tried that before, and no one signed up, and I have no idea how to persuade people to sign up to things, or what sort of thing I could run instead that people would sign up to. And now I feel depressed. I feel I want to do something, and I can do something, but no one will back me up, presumably because theres something wrong with me.
Thats how I felt about noon. To burn some energy, I went to walk to the shops and back, and long before I knew what I was doing, I found my toes dangling in the Braid Burn. It was a very particular spot. Last time I came here, I pretty much wrote a sonnet in my head, and came back and wrote it down. Today I did not have many words in my head, but I was astonished at how delicious the light looked through the leaves and the warm bed of wildflowers I couldnt name.
When I came back, I was still fizzing with frustrated energy. I didnt realise hope could be such a terrible emotion. On a whim, I got Edward Thomas off the shelf, and browsed through his poems, including Lob and my favourite, Adlestrop.
By that point, Id calmed down enough to get back to my work. I read Wilding by Isabella Tree, with illustrations by Angela Harding. It also made me feel hopeful. They have a story about a diamond in the rough, a shining city on a hill in a land still cloaked in darkness, a suggestion that homo sapiens could be a keystone species. I was close to tears three times while reading it.
After I finished, I went outside in the rain into my tenements shared garden. Ive been there exactly once before: in January last year, when I was viewing the flat. I looked once, and decided it was dark, lifeless and dull: not worth going back to. I was so wrong! Im plotting to try taking my morning pot of tea in the garden some day when its dry. I dont feel angry any more.
+3
View File
@@ -0,0 +1,3 @@
Why do I feel like I wrote this? Or like this person stole my opinions somehow?
=> gemini://eph.smol.pub/a-book-of-proverbs eph A Book Of Proverbs
+7
View File
@@ -0,0 +1,7 @@
Today I saw three birds nesting.
In the morning, I read a book in my shared tenement garden. While I was reading, I caught a blackbird in the corner of my eye. He caught me in the corner of his eye. A worm wriggled in his beak. He froze for a time. Eventually hop! He watched me suspiciously. Was he really that pea-brained to think I could catch him even if I tried? A long pause. Hop! He was now at the edge of the border, inches away from diving into the bushes. Here, he waited, and seemed ready to wait forever. The worm wriggled in his beak. I realised what was going on. I turned my back to him. When I looked back, he was gone.
Over lunch, I went for a walk on the Union Canal. Yards past Boroughmuir High School, a huge nest of heavy sticks sat implausibly erected on top of a bank of reeds, like a house on stilts, with a huge swan heaved on top of it. A second swan, presumably its mate, sailed up and down the canal some way further along. But this one was stock still, perhaps sleeping, its whole head nestled in the folds of its own body. Whether it brooded over eggs or chicks, I couldn't tell.
A little further down, after I passed the second swan, I came to a bridge. When I turned the corner round the abutment of the bridge, I found the towpath strewn with pigeons. As I passed, they whisked up into the iron spars under the bridge. Many of them ended up on a small protruding course along the brickwork on the far side, and I could see why: the iron spars was bristling with anti-bird spikes. Still, more than half the pigeons had seemingly made do with a prickly perch. There must have been at least a dozen nests. They were built of dried plant matter, though I've no idea how they got them to stick together. Spittle? Impressive constructions: large, tall, and deep. I could hear chicks mewling. I watched for a minute. The young ones were pretty much completely obscured in their deep nests. But sure enough, after a couple of minutes, I caught a glimpse of one sticking a head out above the parapet.
+3
View File
@@ -0,0 +1,3 @@
I wish I had an album or two from Getdown Services. Their recordings are so silly and also sound amazing!
=> https://getdownservices.bandcamp.com Getdown Services on Bandcamp
+24
View File
@@ -0,0 +1,24 @@
Not long ago, I started hosting on Gemini protocol. I'm fascinated by how the wonder that is the Internet seems to have gone so wrong with the rise of the Web, and Gemini protocol had an exciting proposal for what went wrong and how to fix it.
If you know a little of the technical details about the Web, you'll know that 'the Web' basically refers to five technologies lumped together: the Internet, HTML, TCP/IP, TLS, and DNS.
Gemini then placed the blame for the failure of the Web on HTML and HTTP. Gemini protocol is far simpler than HTTP and is deliberately non-extensible, and encourages authors to use the gemtext document format (in which I'm writing this post!) which is designed on the same principles. The result is something Web-like, but with plain documents that mostly don't do anything.
=> https://geminiprotocol.net About the Gemini protocol
Today, I've just heard about a fairly young network technology called Reticulum.
=> https://reticulum.network/manual/zen.html Foundational philosophy of Reticulum
=> https://reticulum.network/manual/whatis.html What is Reticulum?
Unlike Gemini, which ditches HTML and HTTP but keeps TCP/IP, TLS, and DNS, Reticulum reforms those latter three technologies. In less geeky speak, Gemini looks at the messages, Reticulum at the medium for transporting the messages.
Some folk might think this is just for the kind of geek that builds home radios. Maybe it is. But maybe it is also a very piercing analysis of why the Web went wrong and a serious, concrete proposal for what to do about it, in which, in principle, anyone with a bit of time, technical knowledge and some old hardware worth a tenner on eBay can participate.
Imagine a world where you can connect to the Internet, get all the gob-stopping advantages of an incomprehensibly cheap, fast, and accessible international communications network, without having to tolerate rent-sucking corporations sitting in the way of the information you want to access, without having to throw away your phone every 2-5 years, without having to fight against systems that seem designed to make your life more difficult instead of easier...
To summarise the headlines:
* No domain names, only cryptographic hashes
* You take your identity with you, so there is no concept of 'logging in'
* There is no trust in the system, in contrast to the Web, which depends on total trust in invisible corporations who hold domain name databases and sign TLS certificates
+3
View File
@@ -0,0 +1,3 @@
I picked up a random book in the New College Library, and it brought home how much tightly apocalyptic language had been tied to visions of nuclear armageddon, particularly in the 1980s.
Perhaps this is still shaping, and limiting, how we use apocalyptic language today, even as the subject matter has largely shifted away from nuclear weapons and towards green issues.
+7
View File
@@ -0,0 +1,7 @@
I've recently found the blog of Dieter Helm, a Professor of Economic Policy at Oxford University. He has revealed a few surprises about energy that have shifted my perspective. Among them:
* We have never had an energy transition. When we started massively exploiting coal, we also burned more wood. When we started massively exploiting oil and gas, we burned more coal.
* Nor are we experiencing an energy transition now: although renewables make up an increasing share of global energy consumption, total energy consumption is increasing more than this. Fossil fuel consumption is going up, not down, and shows no sign of slowing.
* In the 'bad old days' of an electricity system built on fossil fuels, we needed 60GW of capacity to reliably keep the lights on in the UK. In a grid built on renewables, we will need 120GW, because renewables are intermittent. Back-up power will need to come from some combination of fossil fuels, nuclear, and storage. That means power stations spending most of their time idling, and huge new infrastructure to support 120GW of transmission and any storage solutions.
* These 'system costs' of renewables explain why renewable energy is more expensive than fossil fuels, even though the marginal cost is cheaper, contrary to false promises that renewable energy is now 'ten times cheaper' than fossil fuels.
* Germany's push for renewables over the last few decades has been a disaster in just about every way, including increasing global CO2 emissions: with higher energy prices, German energy-intensive industries (including solar panel manufacture!) moved to China where energy, mostly fuelled by coal, is much cheaper.
+3
View File
@@ -0,0 +1,3 @@
I loved Climate Change As Class War by Matthew Huber. I realise I'd been hooked into the assumption that the only kinds of green action people outside the corridors of power can take is making green consumption choices, taking up gardening, or going on a protest. This assumption leads to the conclusion that you and I are, ultimately, powerless over the big global problems. I hadn't consider the kind of action Huber considers: industrial action leading to state socialism.
=> https://www.versobooks.com/en-gb/products/775-climate-change-as-class-war Climate Change As Class War by Matthew Huber
+1
View File
@@ -0,0 +1 @@
I've joined a political party. I didn't vote for them. See if you can guess which one.
+5
View File
@@ -0,0 +1,5 @@
I've just written a new abstract for my upcoming Masters dissertation. Hopefully it shows how my thinking is developing.
(I'm also just really pleased that I managed to write something today. I've been suffering from blank page syndrome.)
Since the 1960s, a political movement has emerged in the West, dominated by the middle classes, seeking to defend the non-human world against human abuse: the green movement. Greens have developed a palette of common rhetorical techniques, which we can call green rhetoric. Since the 1990s, climate change has become the master frame for green issues, and green rhetoric has been dominated by the narrative of an impending climate catastrophe. However, in that time, most of the movements most important demands for social-scale change have not happened: green rhetoric is not working. Some scholars, attempting to explain whats gone wrong, pinpoint how green rhetoric uses apocalyptic language, and implies that green rhetoric would be more effective were it to be less apocalyptic. In this dissertation, I argue against this conclusion, and aim to show that, in order to succeed, green rhetoric must become more apocalyptic, not less.
+7
View File
@@ -0,0 +1,7 @@
I looked through some concordances while I was bored in the New College Library the other day.
I really love Robert Young's Analytical Concordance. Young's is a concordance to the Authorised Version, so the entries are the English words used in the AV. But each English-language entry groups together all the words in the Greek New Testament and Hebrew Old Testament which correspond to that English word, and lists all the occurrences of each of those words in their respective source texts. That makes it a perfect tool for understanding the relationships between the biblical source texts. The only disadvantage is that it doesn't seem at all interested in the Septuagint, which is really important for understanding the way New Testament authors use the Old Testament.
It astonished me that there are concordances available of the NIV and ESV texts. Why would you want that? The texts don't correspond very well to the Greek or Hebrew source texts, and they don't have nearly as much clout as self-standing faith texts as the Authorised Version does. I really don't get it. If I had one, I would probably never open it.
I couldn't get ahold of a Strong's, but I did happen to drop in Armchair Books on the way back from the library, and they have a beautiful 19th-century Cruden's Concordance. Cruden's was the first English-language concordance when its eponymous author painstakingly constructed it in 1737, and has never been out of print since then. By the looks of it, it remains very relevant for English-speaking readers of the Bible. And going for a bargain as well... if you get there before me, I'll eat your head.
+7
View File
@@ -0,0 +1,7 @@
So I've now got half a dozen services running on my homelab across two machines. I need to install the services on each machine, keep them running after crashes and reboots, update and restart them when the source code changes, and co-ordinate them with each other (since I can only have one public IP on my home network, but I want to serve stuff over the Internet from both machines).
I am currently managing this with Podman, some Dockerfiles and Docker-Compose files, Makefiles, and a lot of manual interference. This just about works, and is probably reasonably sensible for the small, low-consequence situation.
Still, it is a faff. I'm wondering: is this kind of what Kubernetes is for? I've never understood. Looking at the documentation, I find it really hard to understand what Kubernetes is for. Maybe it's for situations kind of like this (only typically much bigger)?
Answers on a postcard please.
+11
View File
@@ -0,0 +1,11 @@
Writing is hard! I've just spent 2 days fixing 1 paragraph in my dissertation. The problem was to give the reader good reason to think that the fossil fuel industry exerts a strong influence on the majority epistemology. The end result is a single paragraph with four citations. You'd think that would take half a day, not 2 full days.
I think what made it hard was that I needed to gain understanding. If I just needed a fact or two, it would have been easier: skim a few abstracts, extract a few figures, call it a day. But I didn't know in advance what fossil-think looks like. I couldn't write a paragraph that was almost done but for a few missing statistics. I needed to know the whens, the hows, the whos.
What I ended up doing was collecting a score of browser tabs with relevant articles and ebooks (which was easy enough), then going through each one and reading it: properly reading it, for understanding, not just skimming abstracts.
This worked: after about half a dozen articles, I reviewed my notes, realised I had enough to be getting on with, and wrote up my paragraph. Along the way I gained a (very shallow) understanding of how the fossil fuel industry influences public discourse.
But: it took a heck of a long time for one paragraph.
I really wish I had an experienced researcher looking over my shoulder, popping by a couple of times a day, to offer advice. Maybe they would tell me: sorry, that's just how it is, you need to gain understanding and that takes time. Or maybe they would say: you should really be cutting the corner here, let me show you how. It's one of the many things you cannot get from a monthly check-in with a supervisor.
+3
View File
@@ -0,0 +1,3 @@
I've been following Ink and Switch's blog for a while. They're working creatively with computers. This is a great discussion about LLMs which covers what they are, how they are being abused to de-humanise the world, and how things could be different, concluding in a call for 'punk computing.' Let's have it!
=> https://www.inkandswitch.com/tangents/artificial/ Artificial | Ink and Switch
+81 -16
View File
@@ -1,30 +1,95 @@
services:
website:
build:
context: website
env_file:
- .env
environment:
LOCAL_SMTP_HOST: smtp
LOCAL_SMTP_PORT: 2500
LOCAL_SMTP_PASSWORD: smtp
actualbudget:
image: docker.io/actualbudget/actual-server:latest-alpine
container_name: joeac.net-actualbudget
restart: unless-stopped
volumes:
- ${ACTUALBUDGET_DATA_DIR}:/data/
ports:
- "8000:4321"
- "${ACTUALBUDGET_PORT}:5006"
gemini:
image: git.joeac.net/joeac/${IMAGE_PREFIX}joeac.net-gemini
container_name: joeac.net-gemini
build:
context: .
dockerfile: gemini.Dockerfile
ports:
- "${GEMINI_PORT}:1965"
volumes:
- ${GEMINI_CERTIFICATES_DIR}:/var/app/.certificates
- ${GEMINI_COMITIUM_DATA_DIR}:/var/app/comitium-data
http:
image: git.joeac.net/joeac/${IMAGE_PREFIX}joeac.net-http
container_name: joeac.net-http
build:
context: .
dockerfile: http.Dockerfile
environment:
MAX_DAILY_EMAILS: ${MAX_DAILY_EMAILS}
CONTACT_MAILBOX: ${CONTACT_MAILBOX}
CONTACT_MAILBOX_NAME: ${CONTACT_MAILBOX_NAME}
LOCAL_SMTP_FROM: ${LOCAL_SMTP_FROM}
LOCAL_SMTP_FROM_NAME: ${LOCAL_SMTP_FROM_NAME}
LOCAL_SMTP_HOST: ${LOCAL_SMTP_HOST}
LOCAL_SMTP_PORT: ${LOCAL_SMTP_PORT}
LOCAL_SMTP_USER: ${LOCAL_SMTP_USER}
LOCAL_SMTP_PASSWORD: ${LOCAL_SMTP_PASSWORD}
DB_SCHEME: ${DB_SCHEME}
DB_PATH: ${DB_PATH}
ports:
- "${HTTP_PORT}:80"
etherpad:
image: git.joeac.net/joeac/${IMAGE_PREFIX}joeac.net-etherpad
container_name: joeac.net-etherpad
build:
context: .
dockerfile: etherpad.Dockerfile
args:
ALPINE_VERSION: ${ALPINE_VERSION}
ETHERPAD_VERSION: ${ETHERPAD_VERSION}
volumes:
- ${ETHERPAD_DATA_DIR}:/var/app/var
environment:
NODE_ENV: ${ETHERPAD_NODE_ENV}
ADMIN_PASSWORD: ${ETHERPAD_ADMIN_PASSWORD}
restart: unless-stopped
ports:
- "${ETHERPAD_PORT}:9001"
smtp:
image: git.joeac.net/joeac/${IMAGE_PREFIX}joeac.net-smtp
container_name: joeac.net-smtp
build:
context: smtp
context: .
dockerfile: smtp.Dockerfile
args:
LOCAL_SMTP_PORT: 2500
env_file:
- .env
SMTP_PORT: ${LOCAL_SMTP_PORT}
environment:
LOCAL_SMTP_PORT: 2500
LOCAL_SMTP_PASSWORD: smtp
LOCAL_SMTP_ENVELOPE_FROM: ${LOCAL_SMTP_ENVELOPE_FROM}
REMOTE_SMTP_HOST: ${REMOTE_SMTP_HOST}
REMOTE_SMTP_PORT: ${REMOTE_SMTP_PORT}
REMOTE_SMTP_USER: ${REMOTE_SMTP_USER}
SMTP_PORT: ${LOCAL_SMTP_PORT}
SMTP_USER: ${LOCAL_SMTP_USER}
SMTP_PASSWORD: ${LOCAL_SMTP_PASSWORD}
REMOTE_SMTP_PASSWORD_FILE: /run/secrets/remote_smtp_password
secrets:
- remote_smtp_password
vaultwarden:
image: docker.io/vaultwarden/server:latest
container_name: joeac.net-vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://pwd.joeac.net"
volumes:
- ${VAULTWARDEN_DATA_DIR}:/data/
ports:
- "${VAULTWARDEN_PORT}:80"
secrets:
remote_smtp_password:
external: true
+11
View File
@@ -0,0 +1,11 @@
ARG ALPINE_VERSION=3.23
FROM docker.io/alpine:${ALPINE_VERSION}
RUN mkdir -p /var/app
WORKDIR /var/app
ARG ETHERPAD_VERSION
RUN apk --no-cache add pnpm \
&& ENV=~/.profile SHELL=sh pnpm setup \
&& source ~/.profile \
&& pnpm install --global tsx
COPY etherpad/etherpad-${ETHERPAD_VERSION} .
CMD pnpx tsx src/node/server.ts

Some files were not shown because too many files have changed in this diff Show More