summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--etc/pronouns/.gitignore2
-rw-r--r--etc/pronouns/bot.sh57
-rwxr-xr-xhome/.local/bin/masto12
-rw-r--r--txt/books.txt3
-rw-r--r--www/causal.agency/index.718
-rw-r--r--www/photo.causal.agency/.gitignore5
-rw-r--r--www/photo.causal.agency/0081/body1
-rw-r--r--www/photo.causal.agency/0081/date1
-rw-r--r--www/photo.causal.agency/0081/film1
-rw-r--r--www/photo.causal.agency/0081/lens1
-rw-r--r--www/photo.causal.agency/0082/body1
-rw-r--r--www/photo.causal.agency/0082/date1
-rw-r--r--www/photo.causal.agency/0082/film1
-rw-r--r--www/photo.causal.agency/0082/lens1
-rw-r--r--www/photo.causal.agency/0083/body1
-rw-r--r--www/photo.causal.agency/0083/date1
-rw-r--r--www/photo.causal.agency/0083/film1
-rw-r--r--www/photo.causal.agency/0083/lens1
-rw-r--r--www/photo.causal.agency/0083/note7
-rw-r--r--www/photo.causal.agency/0084/body1
-rw-r--r--www/photo.causal.agency/0084/date1
-rw-r--r--www/photo.causal.agency/0084/film1
-rw-r--r--www/photo.causal.agency/0084/lens1
-rw-r--r--www/photo.causal.agency/0085/body1
-rw-r--r--www/photo.causal.agency/0085/date1
-rw-r--r--www/photo.causal.agency/0085/film1
-rw-r--r--www/photo.causal.agency/0085/lens1
-rw-r--r--www/photo.causal.agency/0087/body1
-rw-r--r--www/photo.causal.agency/0087/date1
-rw-r--r--www/photo.causal.agency/0087/film1
-rw-r--r--www/photo.causal.agency/0087/lens1
-rw-r--r--www/photo.causal.agency/0088/body1
-rw-r--r--www/photo.causal.agency/0088/date1
-rw-r--r--www/photo.causal.agency/0088/film1
-rw-r--r--www/photo.causal.agency/0088/lens1
-rw-r--r--www/photo.causal.agency/0089/body1
-rw-r--r--www/photo.causal.agency/0089/date1
-rw-r--r--www/photo.causal.agency/0089/film1
-rw-r--r--www/photo.causal.agency/0089/lens1
-rw-r--r--www/photo.causal.agency/0090/body1
-rw-r--r--www/photo.causal.agency/0090/date1
-rw-r--r--www/photo.causal.agency/0090/film1
-rw-r--r--www/photo.causal.agency/0090/lens1
-rw-r--r--www/photo.causal.agency/0090/note1
-rw-r--r--www/photo.causal.agency/0091/body1
-rw-r--r--www/photo.causal.agency/0091/date1
-rw-r--r--www/photo.causal.agency/0091/film1
-rw-r--r--www/photo.causal.agency/0091/lens1
-rw-r--r--www/photo.causal.agency/0091/note1
-rw-r--r--www/photo.causal.agency/0092/body1
-rw-r--r--www/photo.causal.agency/0092/date1
-rw-r--r--www/photo.causal.agency/0092/film1
-rw-r--r--www/photo.causal.agency/0092/lens1
-rw-r--r--www/photo.causal.agency/0092/note1
-rw-r--r--www/photo.causal.agency/0093/body1
-rw-r--r--www/photo.causal.agency/0093/date1
-rw-r--r--www/photo.causal.agency/0093/film1
-rw-r--r--www/photo.causal.agency/0093/lens1
-rw-r--r--www/photo.causal.agency/0094/body1
-rw-r--r--www/photo.causal.agency/0094/date1
-rw-r--r--www/photo.causal.agency/0094/film1
-rw-r--r--www/photo.causal.agency/0094/lens1
-rw-r--r--www/photo.causal.agency/0094/note1
-rw-r--r--www/photo.causal.agency/0095/body1
-rw-r--r--www/photo.causal.agency/0095/date1
-rw-r--r--www/photo.causal.agency/0095/film1
-rw-r--r--www/photo.causal.agency/0095/lens1
-rw-r--r--www/photo.causal.agency/0095/note1
-rw-r--r--www/photo.causal.agency/0096/body1
-rw-r--r--www/photo.causal.agency/0096/date1
-rw-r--r--www/photo.causal.agency/0096/film1
-rw-r--r--www/photo.causal.agency/0096/lens1
-rw-r--r--www/photo.causal.agency/0097/body1
-rw-r--r--www/photo.causal.agency/0097/date1
-rw-r--r--www/photo.causal.agency/0097/film1
-rw-r--r--www/photo.causal.agency/0097/lens1
-rw-r--r--www/photo.causal.agency/0098/body1
-rw-r--r--www/photo.causal.agency/0098/date1
-rw-r--r--www/photo.causal.agency/0098/film1
-rw-r--r--www/photo.causal.agency/0098/lens1
-rw-r--r--www/photo.causal.agency/0099/body1
-rw-r--r--www/photo.causal.agency/0099/date1
-rw-r--r--www/photo.causal.agency/0099/film1
-rw-r--r--www/photo.causal.agency/0099/lens1
-rw-r--r--www/photo.causal.agency/0099/note1
-rw-r--r--www/photo.causal.agency/0100/body1
-rw-r--r--www/photo.causal.agency/0100/date1
-rw-r--r--www/photo.causal.agency/0100/film1
-rw-r--r--www/photo.causal.agency/0100/lens1
-rw-r--r--www/photo.causal.agency/0100/note1
-rw-r--r--www/photo.causal.agency/0101/body1
-rw-r--r--www/photo.causal.agency/0101/date1
-rw-r--r--www/photo.causal.agency/0101/film1
-rw-r--r--www/photo.causal.agency/0101/lens1
-rw-r--r--www/photo.causal.agency/0101/note1
-rw-r--r--www/photo.causal.agency/0102/body1
-rw-r--r--www/photo.causal.agency/0102/date1
-rw-r--r--www/photo.causal.agency/0102/film1
-rw-r--r--www/photo.causal.agency/0102/lens1
-rw-r--r--www/photo.causal.agency/0104/body1
-rw-r--r--www/photo.causal.agency/0104/date1
-rw-r--r--www/photo.causal.agency/0104/film1
-rw-r--r--www/photo.causal.agency/0104/lens1
-rw-r--r--www/photo.causal.agency/0105/body1
-rw-r--r--www/photo.causal.agency/0105/date1
-rw-r--r--www/photo.causal.agency/0105/film1
-rw-r--r--www/photo.causal.agency/0105/lens1
-rw-r--r--www/photo.causal.agency/0106/body1
-rw-r--r--www/photo.causal.agency/0106/date1
-rw-r--r--www/photo.causal.agency/0106/film1
-rw-r--r--www/photo.causal.agency/0106/lens1
-rw-r--r--www/photo.causal.agency/0107/body1
-rw-r--r--www/photo.causal.agency/0107/date1
-rw-r--r--www/photo.causal.agency/0107/film1
-rw-r--r--www/photo.causal.agency/0107/lens1
-rw-r--r--www/photo.causal.agency/2024-06-08/R1-07534-002A.txt10
-rw-r--r--www/photo.causal.agency/2024-06-12/R1-07671-017A.txt3
-rw-r--r--www/photo.causal.agency/2024-06-12/R1-07671-019A.txt4
-rw-r--r--www/photo.causal.agency/2024-06-12/R1-07671-022A.txt8
-rw-r--r--www/photo.causal.agency/2024-07-03/000099810023.txt6
-rw-r--r--www/photo.causal.agency/2024-08-29/000054970005.txt3
-rw-r--r--www/photo.causal.agency/2024-08-29/000054970006.txt2
-rw-r--r--www/photo.causal.agency/gear.html9
-rw-r--r--www/photo.causal.agency/mastodon.sh54
-rw-r--r--www/text.causal.agency/045-time-2025.7131
-rw-r--r--www/text.causal.agency/Makefile1
126 files changed, 394 insertions, 49 deletions
diff --git a/etc/pronouns/.gitignore b/etc/pronouns/.gitignore
new file mode 100644
index 00000000..facfb3f3
--- /dev/null
+++ b/etc/pronouns/.gitignore
@@ -0,0 +1,2 @@
+access_token
+[1-9]*
diff --git a/etc/pronouns/bot.sh b/etc/pronouns/bot.sh
new file mode 100644
index 00000000..aa613bd9
--- /dev/null
+++ b/etc/pronouns/bot.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+set -eu
+
+Instance=https://mstdn.isometry.group
+
+if ! test -f access_token; then
+	echo 'No access_token!' >&2
+	exit 1
+fi
+
+access_token=$(cat access_token)
+
+account_id=$(
+	curl -Ss \
+		-H "Authorization: Bearer ${access_token}" \
+		${Instance}/api/v1/accounts/verify_credentials |
+	jq -r .id
+)
+
+# XXX: no pagination because I don't expect this to ever have over 80 followers
+followers=$(
+	curl -Ss \
+		-H "Authorization: Bearer ${access_token}" \
+		"${Instance}/api/v1/accounts/${account_id}/followers?limit=80" |
+	jq -r 'map(select(.acct | contains("@") | not)) | .[].id'
+)
+
+for follower_id in $followers 112284333737697665; do
+	account=$(
+		curl -Ss \
+			-H "Authorization: Bearer ${access_token}" \
+			${Instance}/api/v1/accounts/${follower_id}
+	)
+	username=$(printf '%s' "${account}" | jq -r .username)
+	pronouns=$(
+		printf '%s' "${account}" |
+		jq -r '
+			.fields |
+			map(select(.name | test("^prono(un|m)s?[?]?$"; "i"))) |
+			.[].value
+		'
+	)
+	if ! test -f $follower_id; then
+		printf '%s' "${pronouns}" >$follower_id
+		continue
+	fi
+	old_pronouns=$(cat $follower_id)
+	if [ "${pronouns}" != "${old_pronouns}" ]; then
+		curl -Ss -X POST \
+			-H "Authorization: Bearer ${access_token}" \
+			-F visibility=unlisted \
+			--form-string \
+			"status=@${username} has changed pronouns to: ${pronouns}" \
+			${Instance}/api/v1/statuses >/dev/null
+		printf '%s' "${pronouns}" >$follower_id
+	fi
+done
diff --git a/home/.local/bin/masto b/home/.local/bin/masto
new file mode 100755
index 00000000..9fdbfdf1
--- /dev/null
+++ b/home/.local/bin/masto
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -eu
+
+outbox=$1
+pattern=$2
+
+jq -r "
+	.orderedItems[] |
+	select(.object | type == \"object\") | .object |
+	select(.content | test(\"${pattern}\")) |
+	\"\\(.content)\\n\\(.url)\\n\"
+" "$outbox" | dehtml
diff --git a/txt/books.txt b/txt/books.txt
index d7a504d0..a096a2f4 100644
--- a/txt/books.txt
+++ b/txt/books.txt
@@ -1,5 +1,8 @@
 [ 2025 ]
 
+  4. ★★☆ Arkady Martine, Rose/House
+  3. ★★☆ H. E., second draft of Last Train Home
+  2. ★★☆ Nicola Griffith, Spear
   1. ★★☆ Ruthanna Emrys, A Half-Built Garden
 
 [ 2024 ]
diff --git a/www/causal.agency/index.7 b/www/causal.agency/index.7
index 75c37d87..bc212a5e 100644
--- a/www/causal.agency/index.7
+++ b/www/causal.agency/index.7
@@ -1,4 +1,4 @@
-.Dd June 16, 2024
+.Dd August 27, 2025
 .Dt CAUSAL.AGENCY 7
 .Os "Causal Agency"
 .
@@ -15,25 +15,21 @@ in
 on tilde.chat
 .
 .Sh DESCRIPTION
-I like photography,
-Magic: The Gathering
-and making mostly IRC software in C.
-I like
-.Ox
-but also the GPL.
-I'm learning how to be a person.
+primarily a photographer these days.
+I used to write IRC software in C.
+I still use it every day.
 .
 .Pp
-.Lk https://git.causal.agency code
+.Lk https://photo.causal.agency photos
 \(em
 .Lk https://text.causal.agency words
 \(em
-.Lk https://photo.causal.agency photos
+.Lk https://git.causal.agency code
 \(em
 .Lk /list/ mailist
 .
 .Pp
-These are some things I've done:
+these are some computer things I've done:
 .Bl -tag -width Ds
 .It Lk https://git.causal.agency/pounce/about pounce
 a multi-client-first IRC bouncer
diff --git a/www/photo.causal.agency/.gitignore b/www/photo.causal.agency/.gitignore
index 4e55d718..e6e1a830 100644
--- a/www/photo.causal.agency/.gitignore
+++ b/www/photo.causal.agency/.gitignore
@@ -1,3 +1,6 @@
-*.JPG
 *.jpg
+*.JPG
+app.json
+posted.txt
 static/
+token.json
diff --git a/www/photo.causal.agency/0081/body b/www/photo.causal.agency/0081/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0081/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0081/date b/www/photo.causal.agency/0081/date
new file mode 100644
index 00000000..59b97da1
--- /dev/null
+++ b/www/photo.causal.agency/0081/date
@@ -0,0 +1 @@
+May 4-18, 2025
diff --git a/www/photo.causal.agency/0081/film b/www/photo.causal.agency/0081/film
new file mode 100644
index 00000000..4a9c44e8
--- /dev/null
+++ b/www/photo.causal.agency/0081/film
@@ -0,0 +1 @@
+Flic Film Elektra 100
diff --git a/www/photo.causal.agency/0081/lens b/www/photo.causal.agency/0081/lens
new file mode 100644
index 00000000..dd0226cb
--- /dev/null
+++ b/www/photo.causal.agency/0081/lens
@@ -0,0 +1 @@
+Yashica ML Macro 55mm f/2.8, Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0082/body b/www/photo.causal.agency/0082/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0082/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0082/date b/www/photo.causal.agency/0082/date
new file mode 100644
index 00000000..0c905fee
--- /dev/null
+++ b/www/photo.causal.agency/0082/date
@@ -0,0 +1 @@
+May 18, 2025
diff --git a/www/photo.causal.agency/0082/film b/www/photo.causal.agency/0082/film
new file mode 100644
index 00000000..628804f7
--- /dev/null
+++ b/www/photo.causal.agency/0082/film
@@ -0,0 +1 @@
+Konica VX 400 Super (exp. 2005)
diff --git a/www/photo.causal.agency/0082/lens b/www/photo.causal.agency/0082/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0082/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0083/body b/www/photo.causal.agency/0083/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0083/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0083/date b/www/photo.causal.agency/0083/date
new file mode 100644
index 00000000..3fbfada9
--- /dev/null
+++ b/www/photo.causal.agency/0083/date
@@ -0,0 +1 @@
+May 25, 2025
diff --git a/www/photo.causal.agency/0083/film b/www/photo.causal.agency/0083/film
new file mode 100644
index 00000000..4b59f98c
--- /dev/null
+++ b/www/photo.causal.agency/0083/film
@@ -0,0 +1 @@
+Sears Film 100 (exp. 1985) EI 50
diff --git a/www/photo.causal.agency/0083/lens b/www/photo.causal.agency/0083/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0083/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0083/note b/www/photo.causal.agency/0083/note
new file mode 100644
index 00000000..9a6d582d
--- /dev/null
+++ b/www/photo.causal.agency/0083/note
@@ -0,0 +1,7 @@
+this is from a test roll of 40-year-old
+very generic looking film
+that I shot with a flash
+bracketed from EI 100 down to EI 6.
+for the sake of comparison
+I didn't try to adjust the colours.
+EI 50 seems to me to be the sweet spot, surprisingly.
diff --git a/www/photo.causal.agency/0084/body b/www/photo.causal.agency/0084/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0084/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0084/date b/www/photo.causal.agency/0084/date
new file mode 100644
index 00000000..55eb42fc
--- /dev/null
+++ b/www/photo.causal.agency/0084/date
@@ -0,0 +1 @@
+May 27-30, 2025
diff --git a/www/photo.causal.agency/0084/film b/www/photo.causal.agency/0084/film
new file mode 100644
index 00000000..dd589471
--- /dev/null
+++ b/www/photo.causal.agency/0084/film
@@ -0,0 +1 @@
+Harman Phoenix 200
diff --git a/www/photo.causal.agency/0084/lens b/www/photo.causal.agency/0084/lens
new file mode 100644
index 00000000..3a5f5bdf
--- /dev/null
+++ b/www/photo.causal.agency/0084/lens
@@ -0,0 +1 @@
+Yashica DSB 135mm f/2.8, Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0085/body b/www/photo.causal.agency/0085/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0085/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0085/date b/www/photo.causal.agency/0085/date
new file mode 100644
index 00000000..4f70447f
--- /dev/null
+++ b/www/photo.causal.agency/0085/date
@@ -0,0 +1 @@
+May 30, 2025
diff --git a/www/photo.causal.agency/0085/film b/www/photo.causal.agency/0085/film
new file mode 100644
index 00000000..4b59f98c
--- /dev/null
+++ b/www/photo.causal.agency/0085/film
@@ -0,0 +1 @@
+Sears Film 100 (exp. 1985) EI 50
diff --git a/www/photo.causal.agency/0085/lens b/www/photo.causal.agency/0085/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0085/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0087/body b/www/photo.causal.agency/0087/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0087/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0087/date b/www/photo.causal.agency/0087/date
new file mode 100644
index 00000000..ee7cf05d
--- /dev/null
+++ b/www/photo.causal.agency/0087/date
@@ -0,0 +1 @@
+June 4, 2025
diff --git a/www/photo.causal.agency/0087/film b/www/photo.causal.agency/0087/film
new file mode 100644
index 00000000..cb06f7ff
--- /dev/null
+++ b/www/photo.causal.agency/0087/film
@@ -0,0 +1 @@
+Konica VX 400 Super (exp. 2008)
diff --git a/www/photo.causal.agency/0087/lens b/www/photo.causal.agency/0087/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0087/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0088/body b/www/photo.causal.agency/0088/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0088/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0088/date b/www/photo.causal.agency/0088/date
new file mode 100644
index 00000000..20d8a233
--- /dev/null
+++ b/www/photo.causal.agency/0088/date
@@ -0,0 +1 @@
+June 7, 2025
diff --git a/www/photo.causal.agency/0088/film b/www/photo.causal.agency/0088/film
new file mode 100644
index 00000000..118c8bf1
--- /dev/null
+++ b/www/photo.causal.agency/0088/film
@@ -0,0 +1 @@
+Konica VX 100 Super (exp. 2005)
diff --git a/www/photo.causal.agency/0088/lens b/www/photo.causal.agency/0088/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0088/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0089/body b/www/photo.causal.agency/0089/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0089/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0089/date b/www/photo.causal.agency/0089/date
new file mode 100644
index 00000000..0a62a84e
--- /dev/null
+++ b/www/photo.causal.agency/0089/date
@@ -0,0 +1 @@
+June 7-8, 2025
diff --git a/www/photo.causal.agency/0089/film b/www/photo.causal.agency/0089/film
new file mode 100644
index 00000000..ab63ce1d
--- /dev/null
+++ b/www/photo.causal.agency/0089/film
@@ -0,0 +1 @@
+Kentmere Pan 200
diff --git a/www/photo.causal.agency/0089/lens b/www/photo.causal.agency/0089/lens
new file mode 100644
index 00000000..b58f2bd4
--- /dev/null
+++ b/www/photo.causal.agency/0089/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8, Yashica ML 75-150mm f/4
diff --git a/www/photo.causal.agency/0090/body b/www/photo.causal.agency/0090/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0090/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0090/date b/www/photo.causal.agency/0090/date
new file mode 100644
index 00000000..5ca58bea
--- /dev/null
+++ b/www/photo.causal.agency/0090/date
@@ -0,0 +1 @@
+June 8-10, 2025
diff --git a/www/photo.causal.agency/0090/film b/www/photo.causal.agency/0090/film
new file mode 100644
index 00000000..4b59f98c
--- /dev/null
+++ b/www/photo.causal.agency/0090/film
@@ -0,0 +1 @@
+Sears Film 100 (exp. 1985) EI 50
diff --git a/www/photo.causal.agency/0090/lens b/www/photo.causal.agency/0090/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0090/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0090/note b/www/photo.causal.agency/0090/note
new file mode 100644
index 00000000..4cdc408e
--- /dev/null
+++ b/www/photo.causal.agency/0090/note
@@ -0,0 +1 @@
+except the first one that's with the 75-150mm
diff --git a/www/photo.causal.agency/0091/body b/www/photo.causal.agency/0091/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0091/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0091/date b/www/photo.causal.agency/0091/date
new file mode 100644
index 00000000..1e771361
--- /dev/null
+++ b/www/photo.causal.agency/0091/date
@@ -0,0 +1 @@
+May 14 - June 10, 2025
diff --git a/www/photo.causal.agency/0091/film b/www/photo.causal.agency/0091/film
new file mode 100644
index 00000000..59230251
--- /dev/null
+++ b/www/photo.causal.agency/0091/film
@@ -0,0 +1 @@
+Kodak ColorPlus 200
diff --git a/www/photo.causal.agency/0091/lens b/www/photo.causal.agency/0091/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0091/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0091/note b/www/photo.causal.agency/0091/note
new file mode 100644
index 00000000..303e2357
--- /dev/null
+++ b/www/photo.causal.agency/0091/note
@@ -0,0 +1 @@
+I don't think I'm going to load a 36-exposure roll into the C35 again...
diff --git a/www/photo.causal.agency/0092/body b/www/photo.causal.agency/0092/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0092/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0092/date b/www/photo.causal.agency/0092/date
new file mode 100644
index 00000000..59707f4f
--- /dev/null
+++ b/www/photo.causal.agency/0092/date
@@ -0,0 +1 @@
+June 14, 2025
diff --git a/www/photo.causal.agency/0092/film b/www/photo.causal.agency/0092/film
new file mode 100644
index 00000000..22d0a248
--- /dev/null
+++ b/www/photo.causal.agency/0092/film
@@ -0,0 +1 @@
+Rollei RPX 25
diff --git a/www/photo.causal.agency/0092/lens b/www/photo.causal.agency/0092/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0092/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0092/note b/www/photo.causal.agency/0092/note
new file mode 100644
index 00000000..4e06a5ff
--- /dev/null
+++ b/www/photo.causal.agency/0092/note
@@ -0,0 +1 @@
+I bought a tripod :)
diff --git a/www/photo.causal.agency/0093/body b/www/photo.causal.agency/0093/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0093/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0093/date b/www/photo.causal.agency/0093/date
new file mode 100644
index 00000000..0b179ffb
--- /dev/null
+++ b/www/photo.causal.agency/0093/date
@@ -0,0 +1 @@
+June 15, 2025
diff --git a/www/photo.causal.agency/0093/film b/www/photo.causal.agency/0093/film
new file mode 100644
index 00000000..c821d6d2
--- /dev/null
+++ b/www/photo.causal.agency/0093/film
@@ -0,0 +1 @@
+Ilford Pan F Plus 50
diff --git a/www/photo.causal.agency/0093/lens b/www/photo.causal.agency/0093/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0093/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0094/body b/www/photo.causal.agency/0094/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0094/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0094/date b/www/photo.causal.agency/0094/date
new file mode 100644
index 00000000..a8950cf9
--- /dev/null
+++ b/www/photo.causal.agency/0094/date
@@ -0,0 +1 @@
+June 21, 2025
diff --git a/www/photo.causal.agency/0094/film b/www/photo.causal.agency/0094/film
new file mode 100644
index 00000000..ada88ac3
--- /dev/null
+++ b/www/photo.causal.agency/0094/film
@@ -0,0 +1 @@
+Ferrania P30
diff --git a/www/photo.causal.agency/0094/lens b/www/photo.causal.agency/0094/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0094/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0094/note b/www/photo.causal.agency/0094/note
new file mode 100644
index 00000000..1407a239
--- /dev/null
+++ b/www/photo.causal.agency/0094/note
@@ -0,0 +1 @@
+pretty dissatisfied with my scans of this roll because I know there should be more sky detail. I need to dial in my DSLR's exposure settings better in the future.
diff --git a/www/photo.causal.agency/0095/body b/www/photo.causal.agency/0095/body
new file mode 100644
index 00000000..6980da29
--- /dev/null
+++ b/www/photo.causal.agency/0095/body
@@ -0,0 +1 @@
+Minolta SR-T 200
diff --git a/www/photo.causal.agency/0095/date b/www/photo.causal.agency/0095/date
new file mode 100644
index 00000000..71bbfaa7
--- /dev/null
+++ b/www/photo.causal.agency/0095/date
@@ -0,0 +1 @@
+June 19, 2025
diff --git a/www/photo.causal.agency/0095/film b/www/photo.causal.agency/0095/film
new file mode 100644
index 00000000..cb06f7ff
--- /dev/null
+++ b/www/photo.causal.agency/0095/film
@@ -0,0 +1 @@
+Konica VX 400 Super (exp. 2008)
diff --git a/www/photo.causal.agency/0095/lens b/www/photo.causal.agency/0095/lens
new file mode 100644
index 00000000..fc69776d
--- /dev/null
+++ b/www/photo.causal.agency/0095/lens
@@ -0,0 +1 @@
+Minolta MD Rokkor-X 45mm f/2
diff --git a/www/photo.causal.agency/0095/note b/www/photo.causal.agency/0095/note
new file mode 100644
index 00000000..0693dff4
--- /dev/null
+++ b/www/photo.causal.agency/0095/note
@@ -0,0 +1 @@
+test roll through another SLR I picked up for cheap.
diff --git a/www/photo.causal.agency/0096/body b/www/photo.causal.agency/0096/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0096/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0096/date b/www/photo.causal.agency/0096/date
new file mode 100644
index 00000000..6d4c62da
--- /dev/null
+++ b/www/photo.causal.agency/0096/date
@@ -0,0 +1 @@
+June 21-28, 2025
diff --git a/www/photo.causal.agency/0096/film b/www/photo.causal.agency/0096/film
new file mode 100644
index 00000000..c2a01d6e
--- /dev/null
+++ b/www/photo.causal.agency/0096/film
@@ -0,0 +1 @@
+Ilford FP4+
diff --git a/www/photo.causal.agency/0096/lens b/www/photo.causal.agency/0096/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0096/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0097/body b/www/photo.causal.agency/0097/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0097/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0097/date b/www/photo.causal.agency/0097/date
new file mode 100644
index 00000000..ee786680
--- /dev/null
+++ b/www/photo.causal.agency/0097/date
@@ -0,0 +1 @@
+June 29-30, 2025
diff --git a/www/photo.causal.agency/0097/film b/www/photo.causal.agency/0097/film
new file mode 100644
index 00000000..fb690ad8
--- /dev/null
+++ b/www/photo.causal.agency/0097/film
@@ -0,0 +1 @@
+Fomapan Creative 200
diff --git a/www/photo.causal.agency/0097/lens b/www/photo.causal.agency/0097/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0097/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0098/body b/www/photo.causal.agency/0098/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0098/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0098/date b/www/photo.causal.agency/0098/date
new file mode 100644
index 00000000..3224525e
--- /dev/null
+++ b/www/photo.causal.agency/0098/date
@@ -0,0 +1 @@
+July 1-4, 2025
diff --git a/www/photo.causal.agency/0098/film b/www/photo.causal.agency/0098/film
new file mode 100644
index 00000000..3cc798f6
--- /dev/null
+++ b/www/photo.causal.agency/0098/film
@@ -0,0 +1 @@
+Astrum NK-2SH
diff --git a/www/photo.causal.agency/0098/lens b/www/photo.causal.agency/0098/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0098/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0099/body b/www/photo.causal.agency/0099/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0099/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0099/date b/www/photo.causal.agency/0099/date
new file mode 100644
index 00000000..bfa4d1fa
--- /dev/null
+++ b/www/photo.causal.agency/0099/date
@@ -0,0 +1 @@
+July 12-19, 2025
diff --git a/www/photo.causal.agency/0099/film b/www/photo.causal.agency/0099/film
new file mode 100644
index 00000000..24c56374
--- /dev/null
+++ b/www/photo.causal.agency/0099/film
@@ -0,0 +1 @@
+Kodak UltraMax 400
diff --git a/www/photo.causal.agency/0099/lens b/www/photo.causal.agency/0099/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0099/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0099/note b/www/photo.causal.agency/0099/note
new file mode 100644
index 00000000..78ab82bf
--- /dev/null
+++ b/www/photo.causal.agency/0099/note
@@ -0,0 +1 @@
+in which I'm a tourist in my own city while my friends are in town
diff --git a/www/photo.causal.agency/0100/body b/www/photo.causal.agency/0100/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0100/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0100/date b/www/photo.causal.agency/0100/date
new file mode 100644
index 00000000..bfa4d1fa
--- /dev/null
+++ b/www/photo.causal.agency/0100/date
@@ -0,0 +1 @@
+July 12-19, 2025
diff --git a/www/photo.causal.agency/0100/film b/www/photo.causal.agency/0100/film
new file mode 100644
index 00000000..24c56374
--- /dev/null
+++ b/www/photo.causal.agency/0100/film
@@ -0,0 +1 @@
+Kodak UltraMax 400
diff --git a/www/photo.causal.agency/0100/lens b/www/photo.causal.agency/0100/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0100/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0100/note b/www/photo.causal.agency/0100/note
new file mode 100644
index 00000000..78ab82bf
--- /dev/null
+++ b/www/photo.causal.agency/0100/note
@@ -0,0 +1 @@
+in which I'm a tourist in my own city while my friends are in town
diff --git a/www/photo.causal.agency/0101/body b/www/photo.causal.agency/0101/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0101/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0101/date b/www/photo.causal.agency/0101/date
new file mode 100644
index 00000000..bfa4d1fa
--- /dev/null
+++ b/www/photo.causal.agency/0101/date
@@ -0,0 +1 @@
+July 12-19, 2025
diff --git a/www/photo.causal.agency/0101/film b/www/photo.causal.agency/0101/film
new file mode 100644
index 00000000..24c56374
--- /dev/null
+++ b/www/photo.causal.agency/0101/film
@@ -0,0 +1 @@
+Kodak UltraMax 400
diff --git a/www/photo.causal.agency/0101/lens b/www/photo.causal.agency/0101/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0101/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0101/note b/www/photo.causal.agency/0101/note
new file mode 100644
index 00000000..78ab82bf
--- /dev/null
+++ b/www/photo.causal.agency/0101/note
@@ -0,0 +1 @@
+in which I'm a tourist in my own city while my friends are in town
diff --git a/www/photo.causal.agency/0102/body b/www/photo.causal.agency/0102/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0102/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0102/date b/www/photo.causal.agency/0102/date
new file mode 100644
index 00000000..989e392c
--- /dev/null
+++ b/www/photo.causal.agency/0102/date
@@ -0,0 +1 @@
+July 20, 2025
diff --git a/www/photo.causal.agency/0102/film b/www/photo.causal.agency/0102/film
new file mode 100644
index 00000000..24a264e2
--- /dev/null
+++ b/www/photo.causal.agency/0102/film
@@ -0,0 +1 @@
+Harman Phoenix II 200
diff --git a/www/photo.causal.agency/0102/lens b/www/photo.causal.agency/0102/lens
new file mode 100644
index 00000000..0ba86694
--- /dev/null
+++ b/www/photo.causal.agency/0102/lens
@@ -0,0 +1 @@
+Yashica ML 28mm f/2.8
diff --git a/www/photo.causal.agency/0104/body b/www/photo.causal.agency/0104/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0104/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0104/date b/www/photo.causal.agency/0104/date
new file mode 100644
index 00000000..18d62435
--- /dev/null
+++ b/www/photo.causal.agency/0104/date
@@ -0,0 +1 @@
+July 28-29, 2025
diff --git a/www/photo.causal.agency/0104/film b/www/photo.causal.agency/0104/film
new file mode 100644
index 00000000..24a264e2
--- /dev/null
+++ b/www/photo.causal.agency/0104/film
@@ -0,0 +1 @@
+Harman Phoenix II 200
diff --git a/www/photo.causal.agency/0104/lens b/www/photo.causal.agency/0104/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0104/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0105/body b/www/photo.causal.agency/0105/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0105/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0105/date b/www/photo.causal.agency/0105/date
new file mode 100644
index 00000000..aca12838
--- /dev/null
+++ b/www/photo.causal.agency/0105/date
@@ -0,0 +1 @@
+July 30, August 1-3, 2025
diff --git a/www/photo.causal.agency/0105/film b/www/photo.causal.agency/0105/film
new file mode 100644
index 00000000..24a264e2
--- /dev/null
+++ b/www/photo.causal.agency/0105/film
@@ -0,0 +1 @@
+Harman Phoenix II 200
diff --git a/www/photo.causal.agency/0105/lens b/www/photo.causal.agency/0105/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0105/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0106/body b/www/photo.causal.agency/0106/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0106/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0106/date b/www/photo.causal.agency/0106/date
new file mode 100644
index 00000000..f6850974
--- /dev/null
+++ b/www/photo.causal.agency/0106/date
@@ -0,0 +1 @@
+August 3, 2025
diff --git a/www/photo.causal.agency/0106/film b/www/photo.causal.agency/0106/film
new file mode 100644
index 00000000..24a264e2
--- /dev/null
+++ b/www/photo.causal.agency/0106/film
@@ -0,0 +1 @@
+Harman Phoenix II 200
diff --git a/www/photo.causal.agency/0106/lens b/www/photo.causal.agency/0106/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0106/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0107/body b/www/photo.causal.agency/0107/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0107/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0107/date b/www/photo.causal.agency/0107/date
new file mode 100644
index 00000000..dd23b647
--- /dev/null
+++ b/www/photo.causal.agency/0107/date
@@ -0,0 +1 @@
+August 10-11, 2025
diff --git a/www/photo.causal.agency/0107/film b/www/photo.causal.agency/0107/film
new file mode 100644
index 00000000..118c8bf1
--- /dev/null
+++ b/www/photo.causal.agency/0107/film
@@ -0,0 +1 @@
+Konica VX 100 Super (exp. 2005)
diff --git a/www/photo.causal.agency/0107/lens b/www/photo.causal.agency/0107/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0107/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/2024-06-08/R1-07534-002A.txt b/www/photo.causal.agency/2024-06-08/R1-07534-002A.txt
deleted file mode 100644
index 6a70030e..00000000
--- a/www/photo.causal.agency/2024-06-08/R1-07534-002A.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-profile of Ayla on the couch in our apartment.
-behind her on the left of the frame is a warm brick wall.
-there's a band from what might be a light leak
-just to the right of her head.
-I've DIY replaced the light seals
-on this camera so we'll see how it looks
-on the next roll.
-there's also a narrow dark band
-at the right edge of the frame.
-I don't know what's up with that.
diff --git a/www/photo.causal.agency/2024-06-12/R1-07671-017A.txt b/www/photo.causal.agency/2024-06-12/R1-07671-017A.txt
deleted file mode 100644
index a42ac1da..00000000
--- a/www/photo.causal.agency/2024-06-12/R1-07671-017A.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Ayla lying on the couch,
-head propped up on her arm,
-smiling at her phone.
diff --git a/www/photo.causal.agency/2024-06-12/R1-07671-019A.txt b/www/photo.causal.agency/2024-06-12/R1-07671-019A.txt
deleted file mode 100644
index 110edad8..00000000
--- a/www/photo.causal.agency/2024-06-12/R1-07671-019A.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Ayla outside in stark lighting
-as the sun was just starting to set,
-looking at some yellow long flowers
-growing on a large bush.
diff --git a/www/photo.causal.agency/2024-06-12/R1-07671-022A.txt b/www/photo.causal.agency/2024-06-12/R1-07671-022A.txt
deleted file mode 100644
index 89dc567e..00000000
--- a/www/photo.causal.agency/2024-06-12/R1-07671-022A.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Ayla looking back
-from halfway down a staircase
-leading towards an old stone building.
-there's a black band
-of underexposed film
-on the right edge of the frame.
-a problem with the shutter
-at slower speeds or something?
diff --git a/www/photo.causal.agency/2024-07-03/000099810023.txt b/www/photo.causal.agency/2024-07-03/000099810023.txt
deleted file mode 100644
index 0b3d18b8..00000000
--- a/www/photo.causal.agency/2024-07-03/000099810023.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Ayla on a peak of the mountain
-facing away from me
-but turning back towards the camera.
-she's wearing a pink tshirt
-and carrying a red backpack.
-her hair is messy blowing in the wind.
diff --git a/www/photo.causal.agency/2024-08-29/000054970005.txt b/www/photo.causal.agency/2024-08-29/000054970005.txt
deleted file mode 100644
index 89cfbe7f..00000000
--- a/www/photo.causal.agency/2024-08-29/000054970005.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Ayla in an orange sweater
-pulling her fingers through her hair
-and making a squinting face.
diff --git a/www/photo.causal.agency/2024-08-29/000054970006.txt b/www/photo.causal.agency/2024-08-29/000054970006.txt
deleted file mode 100644
index dcf4b50e..00000000
--- a/www/photo.causal.agency/2024-08-29/000054970006.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Ayla in an orange sweater
-looking to the side and smiling.
diff --git a/www/photo.causal.agency/gear.html b/www/photo.causal.agency/gear.html
index 78d98df2..e058d341 100644
--- a/www/photo.causal.agency/gear.html
+++ b/www/photo.causal.agency/gear.html
@@ -36,6 +36,8 @@ this is a (probably incomplete) list of equipment I use to Do Photography.
 <li>Yashica DSB 28mm f/2.8
 <li>Yashica DSB 135mm f/2.8
 <li>Yashica ML Macro 55mm f/2.8
+<li>Yashica ML 28mm f/2.8
+<li>Yashica ML 75-150mm f/4
 </ul>
 
 <h2>Flash</h2>
@@ -44,11 +46,16 @@ this is a (probably incomplete) list of equipment I use to Do Photography.
 <li>Starblitz 318M
 </ul>
 
+<h2>Tripod</h2>
+<ul>
+<li>Sirui Traveler 5C
+</ul>
+
 <h2>Scanning</h2>
 <ul>
 <li>Filmomat SmartConvert
 <li>Canon EOS Rebel SL3
-<li>Yashica ML Macro 55mm f/2.8 (usually at f/8)
+<li>Yashica ML Macro 55mm f/2.8 (at f/11)
 <li>Yashica 13mm extension tube (also have 20mm and 27mm)
 <li>Urth C/Y-EF adapter
 <li>Skier CS-700 copy stand
diff --git a/www/photo.causal.agency/mastodon.sh b/www/photo.causal.agency/mastodon.sh
new file mode 100644
index 00000000..1eaa1114
--- /dev/null
+++ b/www/photo.causal.agency/mastodon.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -eu
+
+Instance=https://tilde.zone
+Root=${1:-static}
+
+if ! test -f app.json; then
+	echo 'No app.json!' >&2
+	exit 1
+fi
+chmod 600 app.json
+
+if ! test -f token.json; then
+	client_id=$(jq -r .client_id app.json)
+	client_secret=$(jq -r .client_secret app.json)
+	echo "Please open ${Instance}/oauth/authorize?client_id=${client_id}&scope=write&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code"
+	printf 'Enter code: '
+	read -r code
+	curl -Ss -X POST \
+		-F 'grant_type=authorization_code' \
+		-F "client_id=${client_id}" \
+		-F "client_secret=${client_secret}" \
+		-F 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' \
+		-F "code=${code}" \
+		${Instance}/oauth/token >token.json
+fi
+chmod 600 token.json
+
+access_token=$(jq -r .access_token token.json)
+
+if ! test -f posted.txt; then
+	touch posted.txt
+fi
+
+photo=$(
+	find ${Root} -type f -path '*/0*/*.jpg' |
+	sort | comm -13 posted.txt - | head -n 1
+)
+preview=${Root}/preview/${photo##*/}
+
+media_id=$(
+	curl -Ss -X POST \
+		-H "Authorization: Bearer ${access_token}" \
+		-F "file=@${preview}" \
+		${Instance}/api/v2/media |
+	jq -r .id
+)
+
+curl -Ss -X POST \
+	-H "Authorization: Bearer ${access_token}" \
+	-F "media_ids[]=${media_id}" \
+	${Instance}/api/v1/statuses >/dev/null
+
+echo ${photo} >>posted.txt
diff --git a/www/text.causal.agency/045-time-2025.7 b/www/text.causal.agency/045-time-2025.7
new file mode 100644
index 00000000..80fa428b
--- /dev/null
+++ b/www/text.causal.agency/045-time-2025.7
@@ -0,0 +1,131 @@
+.Dd August 18, 2025
+.Dt TIME-2025 7
+.Os "Causal Agency"
+.
+.Sh NAME
+.Nm time
+.Nd 2025
+.
+.Sh DESCRIPTION
+time has passed.
+this blog still exists.
+I don't feel bad about not writing.
+I haven't had anything I want to say in this form.
+.
+.Pp
+I go back and read my own posts here fairly often.
+most recently I looked up how I calculated
+.Dq unique lines of code
+all the way back in 2018.
+I read my own post on apologies a lot.
+I'm glad I wrote that down.
+.
+.Pp
+other people, too,
+still refer to my old posts.
+.Dq operating systems
+has been repeatedly referenced
+by a friend for years.
+I still occasionally get emails in reply to
+.Dq inability .
+I try to wish those people well.
+recently I got asked about
+.Dq names .
+it was interesting trying to explain
+an idea I was playing with four years ago.
+.
+.Pp
+some time in the last year
+I had started writing
+a semi-ficticious history of my life.
+I never finished it
+and I don't think I'm interested in the idea anymore.
+.
+.Pp
+I used to write posts about
+books I'd read
+or albums I'd listened to
+in the year.
+since 2022 I haven't really listened to new music.
+I put a lot of songs I really like
+in a big playlist called
+.Dq more tunes
+and I put that on shuffle
+whenever I want music.
+I don't know why
+music doesn't play the same role
+in my life anymore.
+.
+.Pp
+I've read books since 2021,
+though not at a very high rate.
+I still love Becky Chambers
+and Alix E. Harrow.
+I still need to finish
+the Andrea Stewart trilogy I started.
+I read an old collection
+of short erotic fiction
+by trans authors.
+that was really good.
+I just finished a novel draft by a friend.
+.
+.Pp
+I've shot a lot more film
+since my last post.
+I was wrong about a lot.
+I don't feel like writing more about it.
+.
+.Pp
+in october of 2022
+I started a relationship
+that lasted two years.
+we moved in together in 2023.
+by early 2024 things were going badly.
+in february I posted
+.Dq comfort music .
+I think someone emailed me
+because they didn't think I was doing well.
+I wasn't.
+from summer 2024
+to summer 2025
+was the worst year I've had.
+in october someone I barely knew at the time
+messaged me to ask if I was ok.
+I think I was sitting in a tim hortons
+after getting a blood test.
+I felt bad all the time
+and I didn't know what to do.
+.
+.Pp
+we broke up 2 weeks after 2 years together.
+everything got worse.
+it wasn't a clean breakup.
+I was still clinging onto
+the familiar pieces of the relationship
+that had used to make me happy.
+they didn't anymore.
+it was torture.
+I lived in agony for months.
+I think I lost my mind a little,
+trying to handle things I couldn't.
+.
+.Pp
+in march I went no-contact.
+I started going to therapy.
+I went on a weekend trip to ottawa by myself.
+I looked at art in the national gallery.
+I started trying to become myself again.
+.
+.Pp
+in june I invited people out
+for my 30th birthday.
+I was terrified,
+convinced up until the last second
+that no one was going to come.
+but they did.
+and since then I've been doing better.
+I think I've picked up where I left off,
+at some point in the last few years.
+.
+.Sh AUTHORS
+.Nm june Aq Mt june@causal.agency
diff --git a/www/text.causal.agency/Makefile b/www/text.causal.agency/Makefile
index 6b1bd02f..c9e86ab2 100644
--- a/www/text.causal.agency/Makefile
+++ b/www/text.causal.agency/Makefile
@@ -44,6 +44,7 @@ TXTS += 041-albums-2022.txt
 TXTS += 042-comfort-music.txt
 TXTS += 043-little-blessings.txt
 TXTS += 044-film-review.txt
+TXTS += 045-time-2025.txt
 
 all: colb ${TXTS}