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.txt6
-rw-r--r--www/causal.agency/index.718
-rw-r--r--www/photo.causal.agency/.gitignore5
-rw-r--r--www/photo.causal.agency/0062/body1
-rw-r--r--www/photo.causal.agency/0062/date1
-rw-r--r--www/photo.causal.agency/0062/film1
-rw-r--r--www/photo.causal.agency/0062/lens1
-rw-r--r--www/photo.causal.agency/0063/body1
-rw-r--r--www/photo.causal.agency/0063/date1
-rw-r--r--www/photo.causal.agency/0063/film1
-rw-r--r--www/photo.causal.agency/0063/lens1
-rw-r--r--www/photo.causal.agency/0064/body1
-rw-r--r--www/photo.causal.agency/0064/date1
-rw-r--r--www/photo.causal.agency/0064/film1
-rw-r--r--www/photo.causal.agency/0064/lens1
-rw-r--r--www/photo.causal.agency/0065/body1
-rw-r--r--www/photo.causal.agency/0065/date1
-rw-r--r--www/photo.causal.agency/0065/film1
-rw-r--r--www/photo.causal.agency/0065/lens1
-rw-r--r--www/photo.causal.agency/0066/body1
-rw-r--r--www/photo.causal.agency/0066/date1
-rw-r--r--www/photo.causal.agency/0066/film1
-rw-r--r--www/photo.causal.agency/0066/lens1
-rw-r--r--www/photo.causal.agency/0067/body1
-rw-r--r--www/photo.causal.agency/0067/date1
-rw-r--r--www/photo.causal.agency/0067/film1
-rw-r--r--www/photo.causal.agency/0067/lens1
-rw-r--r--www/photo.causal.agency/0068/body1
-rw-r--r--www/photo.causal.agency/0068/date1
-rw-r--r--www/photo.causal.agency/0068/film1
-rw-r--r--www/photo.causal.agency/0068/lens1
-rw-r--r--www/photo.causal.agency/0069/body1
-rw-r--r--www/photo.causal.agency/0069/date1
-rw-r--r--www/photo.causal.agency/0069/film1
-rw-r--r--www/photo.causal.agency/0069/lens1
-rw-r--r--www/photo.causal.agency/0070/body1
-rw-r--r--www/photo.causal.agency/0070/date1
-rw-r--r--www/photo.causal.agency/0070/film1
-rw-r--r--www/photo.causal.agency/0070/lens1
-rw-r--r--www/photo.causal.agency/0071/body1
-rw-r--r--www/photo.causal.agency/0071/date1
-rw-r--r--www/photo.causal.agency/0071/film1
-rw-r--r--www/photo.causal.agency/0071/lens1
-rw-r--r--www/photo.causal.agency/0072/body1
-rw-r--r--www/photo.causal.agency/0072/date1
-rw-r--r--www/photo.causal.agency/0072/film1
-rw-r--r--www/photo.causal.agency/0072/lens1
-rw-r--r--www/photo.causal.agency/0073/body1
-rw-r--r--www/photo.causal.agency/0073/date1
-rw-r--r--www/photo.causal.agency/0073/film1
-rw-r--r--www/photo.causal.agency/0073/lens1
-rw-r--r--www/photo.causal.agency/0074/body1
-rw-r--r--www/photo.causal.agency/0074/date1
-rw-r--r--www/photo.causal.agency/0074/film1
-rw-r--r--www/photo.causal.agency/0074/lens1
-rw-r--r--www/photo.causal.agency/0075/body1
-rw-r--r--www/photo.causal.agency/0075/date1
-rw-r--r--www/photo.causal.agency/0075/film1
-rw-r--r--www/photo.causal.agency/0075/lens1
-rw-r--r--www/photo.causal.agency/0076/body1
-rw-r--r--www/photo.causal.agency/0076/date1
-rw-r--r--www/photo.causal.agency/0076/film1
-rw-r--r--www/photo.causal.agency/0076/lens1
-rw-r--r--www/photo.causal.agency/0077/body1
-rw-r--r--www/photo.causal.agency/0077/date1
-rw-r--r--www/photo.causal.agency/0077/film1
-rw-r--r--www/photo.causal.agency/0077/lens1
-rw-r--r--www/photo.causal.agency/0078/body1
-rw-r--r--www/photo.causal.agency/0078/date1
-rw-r--r--www/photo.causal.agency/0078/film1
-rw-r--r--www/photo.causal.agency/0078/lens1
-rw-r--r--www/photo.causal.agency/0079/body1
-rw-r--r--www/photo.causal.agency/0079/date1
-rw-r--r--www/photo.causal.agency/0079/film1
-rw-r--r--www/photo.causal.agency/0079/lens1
-rw-r--r--www/photo.causal.agency/0080/body1
-rw-r--r--www/photo.causal.agency/0080/date1
-rw-r--r--www/photo.causal.agency/0080/film1
-rw-r--r--www/photo.causal.agency/0080/lens1
-rw-r--r--www/photo.causal.agency/0080/note3
-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/c35/body1
-rw-r--r--www/photo.causal.agency/c35/lens1
-rw-r--r--www/photo.causal.agency/fx-3/body1
-rw-r--r--www/photo.causal.agency/fx-3/lens1
-rw-r--r--www/photo.causal.agency/gear.html65
-rw-r--r--www/photo.causal.agency/generate.sh27
-rw-r--r--www/photo.causal.agency/mastodon.sh54
-rw-r--r--www/photo.causal.agency/trips.html27
-rw-r--r--www/text.causal.agency/045-time-2025.7131
-rw-r--r--www/text.causal.agency/Makefile1
209 files changed, 583 insertions, 56 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 bd31cc0d..dd0ccf09 100644
--- a/txt/books.txt
+++ b/txt/books.txt
@@ -1,3 +1,9 @@
+[ 2025 ]
+
+  3. ★★☆ H. E., second draft of Last Train Home
+  2. ★★☆ Nicola Griffith, Spear
+  1. ★★☆ Ruthanna Emrys, A Half-Built Garden
+
 [ 2024 ]
 
   2. ★☆☆ R. A. MacAvoy, Tea with the Black Dragon
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/0062/body b/www/photo.causal.agency/0062/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0062/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0062/date b/www/photo.causal.agency/0062/date
new file mode 100644
index 00000000..26d2ee87
--- /dev/null
+++ b/www/photo.causal.agency/0062/date
@@ -0,0 +1 @@
+April 5-6, 2025
diff --git a/www/photo.causal.agency/0062/film b/www/photo.causal.agency/0062/film
new file mode 100644
index 00000000..24c56374
--- /dev/null
+++ b/www/photo.causal.agency/0062/film
@@ -0,0 +1 @@
+Kodak UltraMax 400
diff --git a/www/photo.causal.agency/0062/lens b/www/photo.causal.agency/0062/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0062/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0063/body b/www/photo.causal.agency/0063/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0063/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0063/date b/www/photo.causal.agency/0063/date
new file mode 100644
index 00000000..c85682d5
--- /dev/null
+++ b/www/photo.causal.agency/0063/date
@@ -0,0 +1 @@
+April 6, 2025
diff --git a/www/photo.causal.agency/0063/film b/www/photo.causal.agency/0063/film
new file mode 100644
index 00000000..24c56374
--- /dev/null
+++ b/www/photo.causal.agency/0063/film
@@ -0,0 +1 @@
+Kodak UltraMax 400
diff --git a/www/photo.causal.agency/0063/lens b/www/photo.causal.agency/0063/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0063/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0064/body b/www/photo.causal.agency/0064/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0064/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0064/date b/www/photo.causal.agency/0064/date
new file mode 100644
index 00000000..f1ec6872
--- /dev/null
+++ b/www/photo.causal.agency/0064/date
@@ -0,0 +1 @@
+April 4-6, 2025
diff --git a/www/photo.causal.agency/0064/film b/www/photo.causal.agency/0064/film
new file mode 100644
index 00000000..42423702
--- /dev/null
+++ b/www/photo.causal.agency/0064/film
@@ -0,0 +1 @@
+BT21 Star 400
diff --git a/www/photo.causal.agency/0064/lens b/www/photo.causal.agency/0064/lens
new file mode 100644
index 00000000..fcf3c232
--- /dev/null
+++ b/www/photo.causal.agency/0064/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7, Yashica ML 42-75 f/3.5-4.5
diff --git a/www/photo.causal.agency/0065/body b/www/photo.causal.agency/0065/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0065/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0065/date b/www/photo.causal.agency/0065/date
new file mode 100644
index 00000000..de490c39
--- /dev/null
+++ b/www/photo.causal.agency/0065/date
@@ -0,0 +1 @@
+April 6-12, 2025
diff --git a/www/photo.causal.agency/0065/film b/www/photo.causal.agency/0065/film
new file mode 100644
index 00000000..75a90c86
--- /dev/null
+++ b/www/photo.causal.agency/0065/film
@@ -0,0 +1 @@
+Ilford FP4 Plus 125
diff --git a/www/photo.causal.agency/0065/lens b/www/photo.causal.agency/0065/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0065/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0066/body b/www/photo.causal.agency/0066/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0066/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0066/date b/www/photo.causal.agency/0066/date
new file mode 100644
index 00000000..803a4b62
--- /dev/null
+++ b/www/photo.causal.agency/0066/date
@@ -0,0 +1 @@
+April 12, 2025
diff --git a/www/photo.causal.agency/0066/film b/www/photo.causal.agency/0066/film
new file mode 100644
index 00000000..f07cfc3e
--- /dev/null
+++ b/www/photo.causal.agency/0066/film
@@ -0,0 +1 @@
+Lomography CN 400
diff --git a/www/photo.causal.agency/0066/lens b/www/photo.causal.agency/0066/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0066/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0067/body b/www/photo.causal.agency/0067/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0067/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0067/date b/www/photo.causal.agency/0067/date
new file mode 100644
index 00000000..bbfc292a
--- /dev/null
+++ b/www/photo.causal.agency/0067/date
@@ -0,0 +1 @@
+April 12-13, 2025
diff --git a/www/photo.causal.agency/0067/film b/www/photo.causal.agency/0067/film
new file mode 100644
index 00000000..1a1b1714
--- /dev/null
+++ b/www/photo.causal.agency/0067/film
@@ -0,0 +1 @@
+Astrum Foto 200
diff --git a/www/photo.causal.agency/0067/lens b/www/photo.causal.agency/0067/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0067/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0068/body b/www/photo.causal.agency/0068/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0068/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0068/date b/www/photo.causal.agency/0068/date
new file mode 100644
index 00000000..c460408f
--- /dev/null
+++ b/www/photo.causal.agency/0068/date
@@ -0,0 +1 @@
+April 13-17, 2025
diff --git a/www/photo.causal.agency/0068/film b/www/photo.causal.agency/0068/film
new file mode 100644
index 00000000..6227f2a9
--- /dev/null
+++ b/www/photo.causal.agency/0068/film
@@ -0,0 +1 @@
+Wolfen UN 54
diff --git a/www/photo.causal.agency/0068/lens b/www/photo.causal.agency/0068/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0068/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0069/body b/www/photo.causal.agency/0069/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0069/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0069/date b/www/photo.causal.agency/0069/date
new file mode 100644
index 00000000..939dfe29
--- /dev/null
+++ b/www/photo.causal.agency/0069/date
@@ -0,0 +1 @@
+April 17, 2025
diff --git a/www/photo.causal.agency/0069/film b/www/photo.causal.agency/0069/film
new file mode 100644
index 00000000..cb06f7ff
--- /dev/null
+++ b/www/photo.causal.agency/0069/film
@@ -0,0 +1 @@
+Konica VX 400 Super (exp. 2008)
diff --git a/www/photo.causal.agency/0069/lens b/www/photo.causal.agency/0069/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0069/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0070/body b/www/photo.causal.agency/0070/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0070/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0070/date b/www/photo.causal.agency/0070/date
new file mode 100644
index 00000000..d0bfb87b
--- /dev/null
+++ b/www/photo.causal.agency/0070/date
@@ -0,0 +1 @@
+April 18, 2025
diff --git a/www/photo.causal.agency/0070/film b/www/photo.causal.agency/0070/film
new file mode 100644
index 00000000..24e393c6
--- /dev/null
+++ b/www/photo.causal.agency/0070/film
@@ -0,0 +1 @@
+JCH Streetpan 400
diff --git a/www/photo.causal.agency/0070/lens b/www/photo.causal.agency/0070/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0070/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0071/body b/www/photo.causal.agency/0071/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0071/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0071/date b/www/photo.causal.agency/0071/date
new file mode 100644
index 00000000..8eaecd35
--- /dev/null
+++ b/www/photo.causal.agency/0071/date
@@ -0,0 +1 @@
+April 18-20, 2025
diff --git a/www/photo.causal.agency/0071/film b/www/photo.causal.agency/0071/film
new file mode 100644
index 00000000..d41d547a
--- /dev/null
+++ b/www/photo.causal.agency/0071/film
@@ -0,0 +1 @@
+Rollei Reinhold 640
diff --git a/www/photo.causal.agency/0071/lens b/www/photo.causal.agency/0071/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0071/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0072/body b/www/photo.causal.agency/0072/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0072/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0072/date b/www/photo.causal.agency/0072/date
new file mode 100644
index 00000000..8eaecd35
--- /dev/null
+++ b/www/photo.causal.agency/0072/date
@@ -0,0 +1 @@
+April 18-20, 2025
diff --git a/www/photo.causal.agency/0072/film b/www/photo.causal.agency/0072/film
new file mode 100644
index 00000000..24c56374
--- /dev/null
+++ b/www/photo.causal.agency/0072/film
@@ -0,0 +1 @@
+Kodak UltraMax 400
diff --git a/www/photo.causal.agency/0072/lens b/www/photo.causal.agency/0072/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0072/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0073/body b/www/photo.causal.agency/0073/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0073/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0073/date b/www/photo.causal.agency/0073/date
new file mode 100644
index 00000000..668a1ac5
--- /dev/null
+++ b/www/photo.causal.agency/0073/date
@@ -0,0 +1 @@
+April 20, 2025
diff --git a/www/photo.causal.agency/0073/film b/www/photo.causal.agency/0073/film
new file mode 100644
index 00000000..6968664d
--- /dev/null
+++ b/www/photo.causal.agency/0073/film
@@ -0,0 +1 @@
+Ilford Ortho Plus 80
diff --git a/www/photo.causal.agency/0073/lens b/www/photo.causal.agency/0073/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0073/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0074/body b/www/photo.causal.agency/0074/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0074/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0074/date b/www/photo.causal.agency/0074/date
new file mode 100644
index 00000000..0aec6293
--- /dev/null
+++ b/www/photo.causal.agency/0074/date
@@ -0,0 +1 @@
+April 20-27, 2025
diff --git a/www/photo.causal.agency/0074/film b/www/photo.causal.agency/0074/film
new file mode 100644
index 00000000..326aaee3
--- /dev/null
+++ b/www/photo.causal.agency/0074/film
@@ -0,0 +1 @@
+Wolfen NP100
diff --git a/www/photo.causal.agency/0074/lens b/www/photo.causal.agency/0074/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/0074/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/0075/body b/www/photo.causal.agency/0075/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0075/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0075/date b/www/photo.causal.agency/0075/date
new file mode 100644
index 00000000..0aec6293
--- /dev/null
+++ b/www/photo.causal.agency/0075/date
@@ -0,0 +1 @@
+April 20-27, 2025
diff --git a/www/photo.causal.agency/0075/film b/www/photo.causal.agency/0075/film
new file mode 100644
index 00000000..dd589471
--- /dev/null
+++ b/www/photo.causal.agency/0075/film
@@ -0,0 +1 @@
+Harman Phoenix 200
diff --git a/www/photo.causal.agency/0075/lens b/www/photo.causal.agency/0075/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0075/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0076/body b/www/photo.causal.agency/0076/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0076/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0076/date b/www/photo.causal.agency/0076/date
new file mode 100644
index 00000000..3a8a41d3
--- /dev/null
+++ b/www/photo.causal.agency/0076/date
@@ -0,0 +1 @@
+April 27, 2025
diff --git a/www/photo.causal.agency/0076/film b/www/photo.causal.agency/0076/film
new file mode 100644
index 00000000..cb06f7ff
--- /dev/null
+++ b/www/photo.causal.agency/0076/film
@@ -0,0 +1 @@
+Konica VX 400 Super (exp. 2008)
diff --git a/www/photo.causal.agency/0076/lens b/www/photo.causal.agency/0076/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0076/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0077/body b/www/photo.causal.agency/0077/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0077/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0077/date b/www/photo.causal.agency/0077/date
new file mode 100644
index 00000000..a35d7362
--- /dev/null
+++ b/www/photo.causal.agency/0077/date
@@ -0,0 +1 @@
+April 27 – May 4, 2025
diff --git a/www/photo.causal.agency/0077/film b/www/photo.causal.agency/0077/film
new file mode 100644
index 00000000..ffcc1ab6
--- /dev/null
+++ b/www/photo.causal.agency/0077/film
@@ -0,0 +1 @@
+Flic Film Aurora 400
diff --git a/www/photo.causal.agency/0077/lens b/www/photo.causal.agency/0077/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0077/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0078/body b/www/photo.causal.agency/0078/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0078/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0078/date b/www/photo.causal.agency/0078/date
new file mode 100644
index 00000000..7e2a323a
--- /dev/null
+++ b/www/photo.causal.agency/0078/date
@@ -0,0 +1 @@
+April 27 – May 3, 2025
diff --git a/www/photo.causal.agency/0078/film b/www/photo.causal.agency/0078/film
new file mode 100644
index 00000000..6a2f64b6
--- /dev/null
+++ b/www/photo.causal.agency/0078/film
@@ -0,0 +1 @@
+AristaEDU Ultra 200
diff --git a/www/photo.causal.agency/0078/lens b/www/photo.causal.agency/0078/lens
new file mode 100644
index 00000000..ad833bed
--- /dev/null
+++ b/www/photo.causal.agency/0078/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7, Yashica ML Macro 55mm f/2.8
diff --git a/www/photo.causal.agency/0079/body b/www/photo.causal.agency/0079/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/0079/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/0079/date b/www/photo.causal.agency/0079/date
new file mode 100644
index 00000000..d44c408e
--- /dev/null
+++ b/www/photo.causal.agency/0079/date
@@ -0,0 +1 @@
+May 3, 2025
diff --git a/www/photo.causal.agency/0079/film b/www/photo.causal.agency/0079/film
new file mode 100644
index 00000000..7438f38e
--- /dev/null
+++ b/www/photo.causal.agency/0079/film
@@ -0,0 +1 @@
+Lucky SHD 400
diff --git a/www/photo.causal.agency/0079/lens b/www/photo.causal.agency/0079/lens
new file mode 100644
index 00000000..197595bc
--- /dev/null
+++ b/www/photo.causal.agency/0079/lens
@@ -0,0 +1 @@
+Yashica ML Macro 55mm f/2.8
diff --git a/www/photo.causal.agency/0080/body b/www/photo.causal.agency/0080/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/0080/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/0080/date b/www/photo.causal.agency/0080/date
new file mode 100644
index 00000000..17eb8868
--- /dev/null
+++ b/www/photo.causal.agency/0080/date
@@ -0,0 +1 @@
+May 4-14, 2025
diff --git a/www/photo.causal.agency/0080/film b/www/photo.causal.agency/0080/film
new file mode 100644
index 00000000..a87ca638
--- /dev/null
+++ b/www/photo.causal.agency/0080/film
@@ -0,0 +1 @@
+Konica 400 VX Super (exp. 2005)
diff --git a/www/photo.causal.agency/0080/lens b/www/photo.causal.agency/0080/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/0080/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/0080/note b/www/photo.causal.agency/0080/note
new file mode 100644
index 00000000..72945eda
--- /dev/null
+++ b/www/photo.causal.agency/0080/note
@@ -0,0 +1,3 @@
+first roll I didn't even have the lab scan as a backup!
+shot at EI 100 and clearly overexposed.
+is the one-stop-per-decade rule even real?
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/c35/body b/www/photo.causal.agency/c35/body
new file mode 100644
index 00000000..3676b877
--- /dev/null
+++ b/www/photo.causal.agency/c35/body
@@ -0,0 +1 @@
+Konica C35 Automatic
diff --git a/www/photo.causal.agency/c35/lens b/www/photo.causal.agency/c35/lens
new file mode 100644
index 00000000..3fef9a43
--- /dev/null
+++ b/www/photo.causal.agency/c35/lens
@@ -0,0 +1 @@
+Konica Hexanon 38mm f/2.8
diff --git a/www/photo.causal.agency/fx-3/body b/www/photo.causal.agency/fx-3/body
new file mode 100644
index 00000000..0962ee7d
--- /dev/null
+++ b/www/photo.causal.agency/fx-3/body
@@ -0,0 +1 @@
+Yashica FX-3
diff --git a/www/photo.causal.agency/fx-3/lens b/www/photo.causal.agency/fx-3/lens
new file mode 100644
index 00000000..eaab4375
--- /dev/null
+++ b/www/photo.causal.agency/fx-3/lens
@@ -0,0 +1 @@
+Carl Zeiss Planar T* 50mm f/1.7
diff --git a/www/photo.causal.agency/gear.html b/www/photo.causal.agency/gear.html
new file mode 100644
index 00000000..e058d341
--- /dev/null
+++ b/www/photo.causal.agency/gear.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Photography Equipment</title>
+<style>
+html { color: #bbb; background-color: black; font-family: monospace; }
+body { max-width: 76ch; margin: auto; }
+</style>
+
+<h1>Photography Equipment</h1>
+<p>
+this is a (probably incomplete) list of equipment I use to Do Photography.
+
+<h2>Cameras</h2>
+<ul>
+<li>Yashica FX-3 (every day)
+<li>Konica C35 Automatic (Hexanon 38mm f/2.8) (every day)
+<li>Praktica MTL3 (probably on loan to a friend)
+<li>Zenit-122
+<li>Yashica FX-2
+</ul>
+
+<h2>Lenses</h2>
+<ul>
+<li>Carl Zeis Planar T* 50mm f/1.7 (FX-3 default)
+<li>Yashica DSB 50mm f/1.9 (FX-2 kit lens)
+<li>Helios-44M-5 58mm f/2 (Zenit-122 kit lens)
+<li>Pentacon 50mm f/1.8 (MTL3 kit lens)
+<li>Osawa MC 70-210mm f/4-5 (C/Y)
+<li>Takumar SMC 35mm f/3.5
+<li>Super-Takumar 135mm f/3.5
+<li>Yashica ML 28-85mm f/3.5-4.5 (wonky focus at 28mm)
+<li>Yashica ML 42-75mm f/3.5-4.5
+<li>Yashica MC 35-70mm f/3.5-4.5 (bad aperture)
+<li>Yashica ML 50mm f/2 (sticky aperture)
+<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>
+<ul>
+<li>Reflx Lab Simple Flash
+<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 (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
+<li>Valoi 135 film holder
+<li>CineStill CS-Lite
+<li>the box the CS-Lite came in
+</ul>
diff --git a/www/photo.causal.agency/generate.sh b/www/photo.causal.agency/generate.sh
index e4293d8c..83a3128b 100644
--- a/www/photo.causal.agency/generate.sh
+++ b/www/photo.causal.agency/generate.sh
@@ -36,6 +36,7 @@ encode() {
 
 page_title() {
 	case $1 in
+		(leader) echo 'Film Leader';;
 		(20*) date -j -f '%F' $1 '+%B %e, %Y';;
 		(0*) echo Roll $(dc -e "${1}p");;
 	esac
@@ -44,10 +45,10 @@ page_title() {
 page_head() {
 	local page=$1
 	local title=$(page_title $page)
-	local date body lens film
+	local date body lens film note
 
 	if test -f $page/date; then
-		date=$(sed 's/\([0-9]\)-\([0-9]\)/\1-\2/g' $page/date | encode)
+		date=$(sed 's/\([0-9]\)-\([0-9]\)/\1–\2/g' $page/date | encode)
 	fi
 	if test -f $page/body; then
 		body=$(encode $page/body)
@@ -56,7 +57,7 @@ page_head() {
 		lens=$(
 			sed '
 				s,f/,ƒ/,g
-				s/\([0-9]\)-\([0-9]\)/\1-\2/g
+				s/\([0-9]\)-\([0-9]\)/\1–\2/g
 			' $page/lens |
 			encode
 		)
@@ -75,6 +76,9 @@ page_head() {
 	if test -f $page/film; then
 		film=$(encode $page/film)
 	fi
+	if test -f $page/note; then
+		note=$(encode $page/note)
+	fi
 
 	cat <<-EOF
 	<!DOCTYPE html>
@@ -90,7 +94,8 @@ page_head() {
 	details { max-width: 78ch; margin: 0.5em auto; }
 	</style>
 	<h1>${title}</h1>
-	<p>${date:+📆 }${date:-} 📷 ${body:-}${body:+ 🔘 }${lens}${film:+ 🎞️ }${film:-}</p>
+	<p>${date:+📆 }${date:-} 📷 ${body:-}${body:+ 🔘 }${lens:-}${film:+ 🎞️ }${film:-}</p>
+	${note:+<p>}${note:-}${note:+</p>}
 	EOF
 }
 
@@ -248,6 +253,20 @@ for entry in 20* 0*; do
 	set -- $entry "$@"
 done
 
+mkdir -p static/leader
+page=static/leader/index.html
+if [ leader -nt $page ]; then
+	echo $page >&2
+	page_head leader >$page
+	for photo in leader/*.[Jj][Pp][Gg]; do
+		preview=$(preview $photo)
+		if ! test -f static/${photo}; then
+			ln $photo static/${photo}
+		fi
+		page_photo $photo $preview xxx >>$page
+	done
+fi
+
 echo static/index.html >&2
 index_head >static/index.html
 echo static/feed.atom >&2
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/photo.causal.agency/trips.html b/www/photo.causal.agency/trips.html
index a5cacc5c..d65aeaef 100644
--- a/www/photo.causal.agency/trips.html
+++ b/www/photo.causal.agency/trips.html
@@ -32,6 +32,17 @@ input[type="number"] { width: 5ch; }
 </select>
 <label for="roll-film">Film:</label>
 <input id="roll-film" list="films" required>
+<span>Exposures:</span>
+<span>
+<input id="roll-36" type="radio" name="roll-exposures" value="36" checked>
+<label for="roll-36">36</label>
+<input id="roll-27" type="radio" name="roll-exposures" value="27">
+<label for="roll-27">27</label>
+<input id="roll-24" type="radio" name="roll-exposures" value="24">
+<label for="roll-24">24</label>
+<input id="roll-12" type="radio" name="roll-exposures" value="12">
+<label for="roll-12">12</label>
+</span>
 <button type="button" onclick="loadRoll()">Load</button>
 </form>
 
@@ -207,8 +218,9 @@ function setTrips() {
 		rollB.appendChild(document.createTextNode(rollTrips[0].film));
 		rollLi.appendChild(rollB);
 		rollLi.appendChild(document.createTextNode(` (${rollTrips[0].body})`));
+		let body = bodies.find(body => body.name == rollTrips[0].body);
 		let rollUl = document.createElement("ul");
-		for (let trip of rollTrips) {
+		for (let [index, trip] of rollTrips.entries()) {
 			let li = document.createElement("li");
 			let b = document.createElement("b");
 			b.appendChild(document.createTextNode(trip.date));
@@ -216,8 +228,13 @@ function setTrips() {
 			li.appendChild(document.createTextNode(
 				`: ${trip.firstExposure}–${trip.lastExposure}`
 			));
-			li.appendChild(document.createElement("br"));
-			li.appendChild(document.createTextNode(trip.lens));
+			if (
+				body.mount != body.name &&
+				(!index || trip.lens != rollTrips[index-1].lens)
+			) {
+				li.appendChild(document.createElement("br"));
+				li.appendChild(document.createTextNode(trip.lens));
+			}
 			if (trip.note) {
 				li.appendChild(document.createElement("br"));
 				li.appendChild(document.createTextNode(`“${trip.note}”`));
@@ -261,6 +278,7 @@ setTripBody();
 function clearForm(form) {
 	let inputs = form.querySelectorAll("input");
 	for (input of inputs) {
+		if (input.type == "radio") continue;
 		input.value = null;
 	}
 }
@@ -313,7 +331,8 @@ function loadRoll() {
 	if (!form.checkValidity()) return;
 	let body = document.getElementById("roll-body").value;
 	let film = document.getElementById("roll-film").value;
-	rolls[body] = { id: nextId++, film, used: 0, exposures: 36 };
+	let exposures = +new FormData(form).get("roll-exposures");
+	rolls[body] = { id: nextId++, film, exposures, used: 0 };
 	localStorage.setItem("nextId", nextId);
 	setRolls();
 	clearForm(form);
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}