summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--www/photo.causal.agency/2024-06-22/film2
-rw-r--r--www/photo.causal.agency/2024-07-04/000099810029.txt6
-rw-r--r--www/photo.causal.agency/2024-07-04/000099810033.txt6
-rw-r--r--www/photo.causal.agency/2024-07-04/000099810036.txt2
-rw-r--r--www/photo.causal.agency/2024-07-04/film1
-rw-r--r--www/photo.causal.agency/2024-07-04/lens1
-rw-r--r--www/photo.causal.agency/2024-07-06/000005110004.txt8
-rw-r--r--www/photo.causal.agency/2024-07-06/000005110005.txt5
-rw-r--r--www/photo.causal.agency/2024-07-06/000005110012.txt3
-rw-r--r--www/photo.causal.agency/2024-07-06/000005110013.txt7
-rw-r--r--www/photo.causal.agency/2024-07-06/000005110014.txt3
-rw-r--r--www/photo.causal.agency/2024-07-06/000005110017.txt2
-rw-r--r--www/photo.causal.agency/2024-07-06/film1
-rw-r--r--www/photo.causal.agency/2024-07-06/lens1
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110025.txt5
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110026.txt8
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110028.txt3
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110029.txt9
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110030.txt5
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110033.txt6
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110035.txt6
-rw-r--r--www/photo.causal.agency/2024-07-09/000005110036.txt8
-rw-r--r--www/photo.causal.agency/2024-07-09/film1
-rw-r--r--www/photo.causal.agency/2024-07-09/lens1
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180002.txt3
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180006.txt10
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180010.txt8
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180014.txt3
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180020.txt11
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180023.txt5
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180025.txt6
-rw-r--r--www/photo.causal.agency/2024-07-14/000009180028.txt3
-rw-r--r--www/photo.causal.agency/2024-07-14/film1
-rw-r--r--www/photo.causal.agency/2024-07-14/lens1
-rw-r--r--www/photo.causal.agency/2024-07-27/000025480003.txt5
-rw-r--r--www/photo.causal.agency/2024-07-27/000025480009.txt2
-rw-r--r--www/photo.causal.agency/2024-07-27/000025480010.txt5
-rw-r--r--www/photo.causal.agency/2024-07-27/000025480012.txt7
-rw-r--r--www/photo.causal.agency/2024-07-27/film1
-rw-r--r--www/photo.causal.agency/2024-07-27/lens1
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480014.txt3
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480017.txt5
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480018.txt5
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480028.txt11
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480030.txt21
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480033.txt7
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480034.txt8
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480035.txt7
-rw-r--r--www/photo.causal.agency/2024-07-29/000025480036.txt15
-rw-r--r--www/photo.causal.agency/2024-07-29/film1
-rw-r--r--www/photo.causal.agency/2024-07-29/lens1
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490001.txt2
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490002.txt4
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490003.txt2
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490004.txt6
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490009.txt4
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490010.txt3
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490012.txt5
-rw-r--r--www/photo.causal.agency/2024-07-30/000025490014.txt5
-rw-r--r--www/photo.causal.agency/2024-07-30/film1
-rw-r--r--www/photo.causal.agency/2024-07-30/lens1
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490019.txt5
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490026.txt5
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490027.txt6
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490029.txt6
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490030.txt5
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490031.txt4
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490035.txt7
-rw-r--r--www/photo.causal.agency/2024-08-02/000025490036.txt11
-rw-r--r--www/photo.causal.agency/2024-08-02/film1
-rw-r--r--www/photo.causal.agency/2024-08-02/lens1
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420002.txt5
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420005.txt4
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420007.txt3
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420011.txt2
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420012.txt4
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420015.txt4
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420016.txt8
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420020.txt2
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420024.txt3
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420026.txt3
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420027.txt8
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420028.txt2
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420029.txt3
-rw-r--r--www/photo.causal.agency/2024-08-10/000031420034.txt4
-rw-r--r--www/photo.causal.agency/2024-08-10/body1
-rw-r--r--www/photo.causal.agency/2024-08-10/film1
-rw-r--r--www/photo.causal.agency/2024-08-10/lens1
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750004.txt2
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750007.txt7
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750008.txt3
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750009.txt2
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750010.txt3
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750013.txt5
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750014.txt8
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750016.txt7
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750024.txt6
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750027.txt5
-rw-r--r--www/photo.causal.agency/2024-08-22/000044750028.txt3
-rw-r--r--www/photo.causal.agency/2024-08-22/body1
-rw-r--r--www/photo.causal.agency/2024-08-22/film1
-rw-r--r--www/photo.causal.agency/2024-08-22/lens1
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740001.txt8
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740002.txt5
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740010.txt5
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740014.txt4
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740017.txt2
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740021.txt5
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740024.txt8
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740030.txt8
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740031.txt4
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740033.txt6
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740034.txt6
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740035.txt4
-rw-r--r--www/photo.causal.agency/2024-08-23/000044740036.txt14
-rw-r--r--www/photo.causal.agency/2024-08-23/body1
-rw-r--r--www/photo.causal.agency/2024-08-23/film1
-rw-r--r--www/photo.causal.agency/2024-08-23/lens1
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730001.txt6
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730002.txt4
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730004.txt5
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730008.txt6
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730012.txt3
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730014.txt3
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730018.txt4
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730026.txt8
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730028.txt2
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730029.txt2
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730030.txt1
-rw-r--r--www/photo.causal.agency/2024-08-24/000044730035.txt4
-rw-r--r--www/photo.causal.agency/2024-08-24/body1
-rw-r--r--www/photo.causal.agency/2024-08-24/film1
-rw-r--r--www/photo.causal.agency/2024-08-24/lens1
-rw-r--r--www/photo.causal.agency/2024-08-29/000054970002.txt3
-rw-r--r--www/photo.causal.agency/2024-08-29/000054970004.txt5
-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/2024-08-29/body1
-rw-r--r--www/photo.causal.agency/2024-08-29/film1
-rw-r--r--www/photo.causal.agency/2024-08-29/lens1
-rw-r--r--www/photo.causal.agency/generate.sh7
-rw-r--r--www/photo.causal.agency/trips.html339
142 files changed, 944 insertions, 3 deletions
diff --git a/www/photo.causal.agency/2024-06-22/film b/www/photo.causal.agency/2024-06-22/film
index e4c750fe..97a445ae 100644
--- a/www/photo.causal.agency/2024-06-22/film
+++ b/www/photo.causal.agency/2024-06-22/film
@@ -1 +1 @@
-Shanghai 400
+Shanghai Color Film 400
diff --git a/www/photo.causal.agency/2024-07-04/000099810029.txt b/www/photo.causal.agency/2024-07-04/000099810029.txt
new file mode 100644
index 00000000..d3201be9
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-04/000099810029.txt
@@ -0,0 +1,6 @@
+a cluster of small pink flowers
+on a bush.
+there are other clusters in the background.
+one is nearer to the camera
+but only some of its buds
+have started blooming.
diff --git a/www/photo.causal.agency/2024-07-04/000099810033.txt b/www/photo.causal.agency/2024-07-04/000099810033.txt
new file mode 100644
index 00000000..da44c8ce
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-04/000099810033.txt
@@ -0,0 +1,6 @@
+a brick house crowded by trees.
+the front face is painted a light blue.
+there's a tall narrow window
+above a garage door,
+and a balcony
+with some cloth draped over its railing.
diff --git a/www/photo.causal.agency/2024-07-04/000099810036.txt b/www/photo.causal.agency/2024-07-04/000099810036.txt
new file mode 100644
index 00000000..fa3bba11
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-04/000099810036.txt
@@ -0,0 +1,2 @@
+a standard issue red fire hydrant
+crowded by green leaves.
diff --git a/www/photo.causal.agency/2024-07-04/film b/www/photo.causal.agency/2024-07-04/film
new file mode 100644
index 00000000..dd589471
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-04/film
@@ -0,0 +1 @@
+Harman Phoenix 200
diff --git a/www/photo.causal.agency/2024-07-04/lens b/www/photo.causal.agency/2024-07-04/lens
new file mode 100644
index 00000000..13f1fc49
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-04/lens
@@ -0,0 +1 @@
+Yashica DSB 50mm ƒ/1.9
diff --git a/www/photo.causal.agency/2024-07-06/000005110004.txt b/www/photo.causal.agency/2024-07-06/000005110004.txt
new file mode 100644
index 00000000..67518ba3
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/000005110004.txt
@@ -0,0 +1,8 @@
+view looking up
+at the corner of a weird bit
+of a house's balcony type thing.
+the top edge of the roof
+extends over the edge of the inset balcony.
+I have no idea how to explain it.
+there are trees around it
+and sky behind it.
diff --git a/www/photo.causal.agency/2024-07-06/000005110005.txt b/www/photo.causal.agency/2024-07-06/000005110005.txt
new file mode 100644
index 00000000..5ce7cd82
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/000005110005.txt
@@ -0,0 +1,5 @@
+two small shattered lightbulbs
+on a sidewalk.
+they appear to be actual bulbs
+surrounded by plastic,
+and it's the plastic that's shattered.
diff --git a/www/photo.causal.agency/2024-07-06/000005110012.txt b/www/photo.causal.agency/2024-07-06/000005110012.txt
new file mode 100644
index 00000000..89e6e8df
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/000005110012.txt
@@ -0,0 +1,3 @@
+the reflection of
+a big concrete block factory-turned-office building
+in a large puddle.
diff --git a/www/photo.causal.agency/2024-07-06/000005110013.txt b/www/photo.causal.agency/2024-07-06/000005110013.txt
new file mode 100644
index 00000000..75fc3284
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/000005110013.txt
@@ -0,0 +1,7 @@
+an unnecessarily large concrete block
+of a building
+that I'm pretty sure was once factories
+but is now office space.
+there are two sections about 11 storeys tall
+separated by a narrow section
+that is only 3.
diff --git a/www/photo.causal.agency/2024-07-06/000005110014.txt b/www/photo.causal.agency/2024-07-06/000005110014.txt
new file mode 100644
index 00000000..bf423e19
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/000005110014.txt
@@ -0,0 +1,3 @@
+a view close to the ground
+on some railroad tracks
+right before they go around a bend.
diff --git a/www/photo.causal.agency/2024-07-06/000005110017.txt b/www/photo.causal.agency/2024-07-06/000005110017.txt
new file mode 100644
index 00000000..ea58b0bb
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/000005110017.txt
@@ -0,0 +1,2 @@
+a broken wooden picture frame
+on a wet sidewalk
diff --git a/www/photo.causal.agency/2024-07-06/film b/www/photo.causal.agency/2024-07-06/film
new file mode 100644
index 00000000..919ded67
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/film
@@ -0,0 +1 @@
+Ilford HP5 Plus 400
diff --git a/www/photo.causal.agency/2024-07-06/lens b/www/photo.causal.agency/2024-07-06/lens
new file mode 100644
index 00000000..13f1fc49
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-06/lens
@@ -0,0 +1 @@
+Yashica DSB 50mm ƒ/1.9
diff --git a/www/photo.causal.agency/2024-07-09/000005110025.txt b/www/photo.causal.agency/2024-07-09/000005110025.txt
new file mode 100644
index 00000000..ecc57512
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110025.txt
@@ -0,0 +1,5 @@
+close up of a a flower
+with a bee on it.
+the bee is reaching down
+between the petals
+and you can see its fuzzy butt.
diff --git a/www/photo.causal.agency/2024-07-09/000005110026.txt b/www/photo.causal.agency/2024-07-09/000005110026.txt
new file mode 100644
index 00000000..fe3296d2
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110026.txt
@@ -0,0 +1,8 @@
+the top edge of
+the corner of a stone building
+covered in vines.
+there are two pillars
+going up towards the top.
+the left one is covered in vines
+and the right one is bare.
+between the pillars is the top of a window.
diff --git a/www/photo.causal.agency/2024-07-09/000005110028.txt b/www/photo.causal.agency/2024-07-09/000005110028.txt
new file mode 100644
index 00000000..1e808379
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110028.txt
@@ -0,0 +1,3 @@
+a small bird perched atop a roof peak,
+looking towards me.
+I believe this was a cardinal.
diff --git a/www/photo.causal.agency/2024-07-09/000005110029.txt b/www/photo.causal.agency/2024-07-09/000005110029.txt
new file mode 100644
index 00000000..f5d38a6b
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110029.txt
@@ -0,0 +1,9 @@
+the side of a brick building
+centred around the brick
+bearing the erection year.
+the raised portions of the 19
+have fallen off,
+and only the 08 is left.
+above this is the edge of the roof
+and below it are two ornamental bricks
+at the tops of windows.
diff --git a/www/photo.causal.agency/2024-07-09/000005110030.txt b/www/photo.causal.agency/2024-07-09/000005110030.txt
new file mode 100644
index 00000000..cff02d83
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110030.txt
@@ -0,0 +1,5 @@
+close up of a spiky ball flower.
+on the left a butterfly is perched on it,
+on the bottom right a bee.
+there is another spiky ball flower
+below the butterfly.
diff --git a/www/photo.causal.agency/2024-07-09/000005110033.txt b/www/photo.causal.agency/2024-07-09/000005110033.txt
new file mode 100644
index 00000000..688546f6
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110033.txt
@@ -0,0 +1,6 @@
+three vertically stacked power lines
+at a junction where two sets
+of three smaller cables
+go off in opposite directions.
+the dark lines contrast nicely
+against the lighter background.
diff --git a/www/photo.causal.agency/2024-07-09/000005110035.txt b/www/photo.causal.agency/2024-07-09/000005110035.txt
new file mode 100644
index 00000000..fb7226c6
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110035.txt
@@ -0,0 +1,6 @@
+a ladder leading to the top of a roof
+against the sky.
+the ladder is quite a bit taller
+than it needs to be
+so it ascends into the sky
+a little bit.
diff --git a/www/photo.causal.agency/2024-07-09/000005110036.txt b/www/photo.causal.agency/2024-07-09/000005110036.txt
new file mode 100644
index 00000000..d0628000
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/000005110036.txt
@@ -0,0 +1,8 @@
+the column of bricks
+that was once a chimney
+on the side of a triangular roofed house.
+the bricks are painted a light colour
+but it is peeling in many places.
+there is one of those wireframe
+rectangular sort of satellite dish things
+on the side of the column.
diff --git a/www/photo.causal.agency/2024-07-09/film b/www/photo.causal.agency/2024-07-09/film
new file mode 100644
index 00000000..919ded67
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/film
@@ -0,0 +1 @@
+Ilford HP5 Plus 400
diff --git a/www/photo.causal.agency/2024-07-09/lens b/www/photo.causal.agency/2024-07-09/lens
new file mode 100644
index 00000000..96b4d0a0
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-09/lens
@@ -0,0 +1 @@
+Osawa MC 70–210mm ƒ/4–5
diff --git a/www/photo.causal.agency/2024-07-14/000009180002.txt b/www/photo.causal.agency/2024-07-14/000009180002.txt
new file mode 100644
index 00000000..57ce6c98
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180002.txt
@@ -0,0 +1,3 @@
+a big red flower
+in the centre of the frame
+with a dark green blurred background.
diff --git a/www/photo.causal.agency/2024-07-14/000009180006.txt b/www/photo.causal.agency/2024-07-14/000009180006.txt
new file mode 100644
index 00000000..938ec690
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180006.txt
@@ -0,0 +1,10 @@
+a weird plant with
+like long stalks of I guess seeds
+with little crowns of white flowers on the ends.
+the depth of field is really shallow
+so they come in and out of focus
+from the blurred green background.
+in the centre there's a bee
+on one of the flowered ends
+but it's too close to the camera
+it's not in focus.
diff --git a/www/photo.causal.agency/2024-07-14/000009180010.txt b/www/photo.causal.agency/2024-07-14/000009180010.txt
new file mode 100644
index 00000000..f1e891de
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180010.txt
@@ -0,0 +1,8 @@
+two windows at the top of a plateau building.
+the base of the building is green brick
+and the top roof part is orange shingles
+that appear very shiny in this photo.
+the windows set into the shingled part
+have big flattened triangle
+thingies on top.
+made of wood, you know.
diff --git a/www/photo.causal.agency/2024-07-14/000009180014.txt b/www/photo.causal.agency/2024-07-14/000009180014.txt
new file mode 100644
index 00000000..bf98a26b
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180014.txt
@@ -0,0 +1,3 @@
+close up of an orange and white cat's head
+looking away from the camera
+on a blurred green background.
diff --git a/www/photo.causal.agency/2024-07-14/000009180020.txt b/www/photo.causal.agency/2024-07-14/000009180020.txt
new file mode 100644
index 00000000..1f3763ae
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180020.txt
@@ -0,0 +1,11 @@
+a flower cluster
+in the shape of a ball
+where all the tiny flowers
+come out of a centre point
+on long stems.
+the flowers themselves
+are either green or closed.
+the depth of field is shallow
+so there's a nice effect
+as the stems pop out
+at different angles to the lens.
diff --git a/www/photo.causal.agency/2024-07-14/000009180023.txt b/www/photo.causal.agency/2024-07-14/000009180023.txt
new file mode 100644
index 00000000..3cc28e4d
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180023.txt
@@ -0,0 +1,5 @@
+an array of small whitish flowers
+some of which are too close to the camera
+to be in focus
+and some of which are too far from the camera
+to be in focus.
diff --git a/www/photo.causal.agency/2024-07-14/000009180025.txt b/www/photo.causal.agency/2024-07-14/000009180025.txt
new file mode 100644
index 00000000..6f0e7e9c
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180025.txt
@@ -0,0 +1,6 @@
+a building extension
+whose exterior walls
+are made of severely rusting metal.
+the building is viewed from its corner,
+looking at its top
+against a blue sky.
diff --git a/www/photo.causal.agency/2024-07-14/000009180028.txt b/www/photo.causal.agency/2024-07-14/000009180028.txt
new file mode 100644
index 00000000..5dcc0fa4
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/000009180028.txt
@@ -0,0 +1,3 @@
+a painted spiral staircase
+enclosed on three sides
+by exterior walls.
diff --git a/www/photo.causal.agency/2024-07-14/film b/www/photo.causal.agency/2024-07-14/film
new file mode 100644
index 00000000..dd589471
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/film
@@ -0,0 +1 @@
+Harman Phoenix 200
diff --git a/www/photo.causal.agency/2024-07-14/lens b/www/photo.causal.agency/2024-07-14/lens
new file mode 100644
index 00000000..96b4d0a0
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-14/lens
@@ -0,0 +1 @@
+Osawa MC 70–210mm ƒ/4–5
diff --git a/www/photo.causal.agency/2024-07-27/000025480003.txt b/www/photo.causal.agency/2024-07-27/000025480003.txt
new file mode 100644
index 00000000..159a8688
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-27/000025480003.txt
@@ -0,0 +1,5 @@
+geese on the water.
+there's a group of three in the foreground.
+two on the left have their heads underwater
+and the one on the right looks like it's about to stick its head under.
+there are a handful more in the background.
diff --git a/www/photo.causal.agency/2024-07-27/000025480009.txt b/www/photo.causal.agency/2024-07-27/000025480009.txt
new file mode 100644
index 00000000..53856b80
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-27/000025480009.txt
@@ -0,0 +1,2 @@
+a green buoy in the middle of the river.
+the far shore is rocky with some trees.
diff --git a/www/photo.causal.agency/2024-07-27/000025480010.txt b/www/photo.causal.agency/2024-07-27/000025480010.txt
new file mode 100644
index 00000000..8d46b7f5
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-27/000025480010.txt
@@ -0,0 +1,5 @@
+the jacques-cartier bridge
+viewed from a perpendicular angle,
+right at the middle of it.
+a roller coaster can be seen behind it on the right
+and a cargo boat on the left.
diff --git a/www/photo.causal.agency/2024-07-27/000025480012.txt b/www/photo.causal.agency/2024-07-27/000025480012.txt
new file mode 100644
index 00000000..34555365
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-27/000025480012.txt
@@ -0,0 +1,7 @@
+an outdoor electrical outlet
+mounted on a big piece of stone,
+nestled in a corner
+made by other big pieces of stone.
+there are pine needles and white fluff
+on the ground in front of it.
+its door has come off.
diff --git a/www/photo.causal.agency/2024-07-27/film b/www/photo.causal.agency/2024-07-27/film
new file mode 100644
index 00000000..97a445ae
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-27/film
@@ -0,0 +1 @@
+Shanghai Color Film 400
diff --git a/www/photo.causal.agency/2024-07-27/lens b/www/photo.causal.agency/2024-07-27/lens
new file mode 100644
index 00000000..96b4d0a0
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-27/lens
@@ -0,0 +1 @@
+Osawa MC 70–210mm ƒ/4–5
diff --git a/www/photo.causal.agency/2024-07-29/000025480014.txt b/www/photo.causal.agency/2024-07-29/000025480014.txt
new file mode 100644
index 00000000..7d3094e0
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480014.txt
@@ -0,0 +1,3 @@
+a green spiral metal staircase
+going up a brick wall
+absolutely covered in leafy vines.
diff --git a/www/photo.causal.agency/2024-07-29/000025480017.txt b/www/photo.causal.agency/2024-07-29/000025480017.txt
new file mode 100644
index 00000000..19137d80
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480017.txt
@@ -0,0 +1,5 @@
+the back or side of a building,
+probably a short office building,
+with columns of windows
+separated by uh,
+protruding bits of the building.
diff --git a/www/photo.causal.agency/2024-07-29/000025480018.txt b/www/photo.causal.agency/2024-07-29/000025480018.txt
new file mode 100644
index 00000000..2712fe2f
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480018.txt
@@ -0,0 +1,5 @@
+the top edge of a building,
+including power line pole
+on the roof,
+metal beam sticking out the side,
+and a little stone chimney.
diff --git a/www/photo.causal.agency/2024-07-29/000025480028.txt b/www/photo.causal.agency/2024-07-29/000025480028.txt
new file mode 100644
index 00000000..0a56a06c
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480028.txt
@@ -0,0 +1,11 @@
+a view all the way up the side
+of an old brick factory building,
+7 storeys tall.
+all of the windows on the far right
+have been filled in with cement.
+some of the other windows
+have been filled in with
+what looks like corrugated metal.
+some of the remaining windows
+are the original 6x3 pane
+and some are single pane.
diff --git a/www/photo.causal.agency/2024-07-29/000025480030.txt b/www/photo.causal.agency/2024-07-29/000025480030.txt
new file mode 100644
index 00000000..3ac51b0d
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480030.txt
@@ -0,0 +1,21 @@
+the intersection or interior corner
+of old brick factory buildings.
+we're sort of looking at a vertical W shape,
+with two buildings on either side
+at a right angle,
+and one corner peice of building
+jutting out between the other two.
+the old factory windows
+of these buildings
+are in various states of boarded up
+or filled in with concrete
+or left as-is.
+there are pipes and ducts and conduits
+crawling all over the buildings.
+the right side wall
+of the middle building piece
+is covered in leafy vines.
+the middle section
+is shorter than the others
+and light is coming over top of it
+hitting the leftmost building.
diff --git a/www/photo.causal.agency/2024-07-29/000025480033.txt b/www/photo.causal.agency/2024-07-29/000025480033.txt
new file mode 100644
index 00000000..41594319
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480033.txt
@@ -0,0 +1,7 @@
+detail of the centre corner piece of building
+from the previous photo,
+with pipes going up along
+the left building where it intersects
+with the middle building,
+and a conduit going across
+the top of where the vines reach.
diff --git a/www/photo.causal.agency/2024-07-29/000025480034.txt b/www/photo.causal.agency/2024-07-29/000025480034.txt
new file mode 100644
index 00000000..8a2c3227
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480034.txt
@@ -0,0 +1,8 @@
+part of an old factory building,
+a storey or two up.
+what used to be a window
+has been filled in with big grey stone bricks,
+but the metal cage over the outside
+has been left in place.
+a whole array of pipes climbs
+the building to the left.
diff --git a/www/photo.causal.agency/2024-07-29/000025480035.txt b/www/photo.causal.agency/2024-07-29/000025480035.txt
new file mode 100644
index 00000000..4ec13a5e
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480035.txt
@@ -0,0 +1,7 @@
+the intersection of some old brick factory buildings.
+windows are variously boarded up or filled in.
+one of the walls has leafy vines climbing up it,
+stopping at a conduit that's going across.
+a large duct goes up the building
+next to the vines.
+light is pouring over the top edge of the building.
diff --git a/www/photo.causal.agency/2024-07-29/000025480036.txt b/www/photo.causal.agency/2024-07-29/000025480036.txt
new file mode 100644
index 00000000..0554a5de
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/000025480036.txt
@@ -0,0 +1,15 @@
+the brick wall of an old factory building
+with sets of 6x4 pane windows,
+where it looks like the middle 4x2
+panes swivel open.
+a round duct or chimney
+has been installed
+in one of the lower windows
+and goes up the outside of the building.
+two of the other windows
+have been filled in,
+one with brick
+and one with metal.
+they both have vents embedded in them.
+an array of pipes climbs halfway up
+the far right edge of this wall.
diff --git a/www/photo.causal.agency/2024-07-29/film b/www/photo.causal.agency/2024-07-29/film
new file mode 100644
index 00000000..97a445ae
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/film
@@ -0,0 +1 @@
+Shanghai Color Film 400
diff --git a/www/photo.causal.agency/2024-07-29/lens b/www/photo.causal.agency/2024-07-29/lens
new file mode 100644
index 00000000..705b4e57
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-29/lens
@@ -0,0 +1 @@
+Yashica ML Zoom 28–85mm ƒ/3.5–4.5
diff --git a/www/photo.causal.agency/2024-07-30/000025490001.txt b/www/photo.causal.agency/2024-07-30/000025490001.txt
new file mode 100644
index 00000000..290ac209
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490001.txt
@@ -0,0 +1,2 @@
+two empty swings in a park.
+beyond there is a bench and a trash can.
diff --git a/www/photo.causal.agency/2024-07-30/000025490002.txt b/www/photo.causal.agency/2024-07-30/000025490002.txt
new file mode 100644
index 00000000..5554d178
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490002.txt
@@ -0,0 +1,4 @@
+some sort of small power station type building.
+its address is 4131,
+and there's a lamp above that number.
+to the right there's a fenced off area.
diff --git a/www/photo.causal.agency/2024-07-30/000025490003.txt b/www/photo.causal.agency/2024-07-30/000025490003.txt
new file mode 100644
index 00000000..4b2573af
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490003.txt
@@ -0,0 +1,2 @@
+some round white paper lantern type things
+hanging under an elevated deck.
diff --git a/www/photo.causal.agency/2024-07-30/000025490004.txt b/www/photo.causal.agency/2024-07-30/000025490004.txt
new file mode 100644
index 00000000..81409be3
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490004.txt
@@ -0,0 +1,6 @@
+two wooden construction barriers at angles to each other
+at the edge of a park.
+neither are supported on both sides.
+one is coming towards the camera,
+the other is going across.
+it says ABF on it.
diff --git a/www/photo.causal.agency/2024-07-30/000025490009.txt b/www/photo.causal.agency/2024-07-30/000025490009.txt
new file mode 100644
index 00000000..6e38b667
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490009.txt
@@ -0,0 +1,4 @@
+a series of 4 power line poles
+in close proximity
+against a grey sky
+in front of a completely shadowed building.
diff --git a/www/photo.causal.agency/2024-07-30/000025490010.txt b/www/photo.causal.agency/2024-07-30/000025490010.txt
new file mode 100644
index 00000000..75853ca8
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490010.txt
@@ -0,0 +1,3 @@
+an empty field with some sort of small tripod structure
+in the middle.
+beyond it are condo buildings.
diff --git a/www/photo.causal.agency/2024-07-30/000025490012.txt b/www/photo.causal.agency/2024-07-30/000025490012.txt
new file mode 100644
index 00000000..6d3bc3c4
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490012.txt
@@ -0,0 +1,5 @@
+a public pool in a park
+at night illuminated by flood light above.
+in the centre of the frame
+are two diving boards side by side
+with metal railings.
diff --git a/www/photo.causal.agency/2024-07-30/000025490014.txt b/www/photo.causal.agency/2024-07-30/000025490014.txt
new file mode 100644
index 00000000..a85000f9
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/000025490014.txt
@@ -0,0 +1,5 @@
+a blinking red traffic light suspended above an intersection.
+it's completely dark
+except for the traffic light
+and some other source in the bottom left.
+the shape of a building and tree can be made out.
diff --git a/www/photo.causal.agency/2024-07-30/film b/www/photo.causal.agency/2024-07-30/film
new file mode 100644
index 00000000..919ded67
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/film
@@ -0,0 +1 @@
+Ilford HP5 Plus 400
diff --git a/www/photo.causal.agency/2024-07-30/lens b/www/photo.causal.agency/2024-07-30/lens
new file mode 100644
index 00000000..13f1fc49
--- /dev/null
+++ b/www/photo.causal.agency/2024-07-30/lens
@@ -0,0 +1 @@
+Yashica DSB 50mm ƒ/1.9
diff --git a/www/photo.causal.agency/2024-08-02/000025490019.txt b/www/photo.causal.agency/2024-08-02/000025490019.txt
new file mode 100644
index 00000000..b8e3a89f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490019.txt
@@ -0,0 +1,5 @@
+close up of a bundle of small pipes
+that come up out of the ground
+around person height
+and curve downwards at the top,
+with the ends covered by a rough metal mesh.
diff --git a/www/photo.causal.agency/2024-08-02/000025490026.txt b/www/photo.causal.agency/2024-08-02/000025490026.txt
new file mode 100644
index 00000000..dd5049e7
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490026.txt
@@ -0,0 +1,5 @@
+the side of a concrete building
+with an intricate pattern
+of concrete and narrow windows.
+the windows are reflecting a light sky.
+good contrast and shadows here.
diff --git a/www/photo.causal.agency/2024-08-02/000025490027.txt b/www/photo.causal.agency/2024-08-02/000025490027.txt
new file mode 100644
index 00000000..15d6847a
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490027.txt
@@ -0,0 +1,6 @@
+a wider view of
+the side of a concrete building
+with an intricate pattern
+of concrete and narrow windows.
+the windows are reflecting a light sky.
+good contrast and shadows here.
diff --git a/www/photo.causal.agency/2024-08-02/000025490029.txt b/www/photo.causal.agency/2024-08-02/000025490029.txt
new file mode 100644
index 00000000..f9f86887
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490029.txt
@@ -0,0 +1,6 @@
+the back of a haphazard
+building extension
+with walls of corrugated metal,
+vines growing lazily all over it.
+the right side appears to
+be covered only by a canvas roof.
diff --git a/www/photo.causal.agency/2024-08-02/000025490030.txt b/www/photo.causal.agency/2024-08-02/000025490030.txt
new file mode 100644
index 00000000..eb7a4b13
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490030.txt
@@ -0,0 +1,5 @@
+a metal cylinder
+with a thick cable going through it
+suspended against a brick wall
+by a smaller steel cable
+bolted into the wall.
diff --git a/www/photo.causal.agency/2024-08-02/000025490031.txt b/www/photo.causal.agency/2024-08-02/000025490031.txt
new file mode 100644
index 00000000..3a6e576e
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490031.txt
@@ -0,0 +1,4 @@
+the shallow sloped roof
+of a house with a single window
+protruding from it on the right.
+trees beyond the roof.
diff --git a/www/photo.causal.agency/2024-08-02/000025490035.txt b/www/photo.causal.agency/2024-08-02/000025490035.txt
new file mode 100644
index 00000000..60ac4e32
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490035.txt
@@ -0,0 +1,7 @@
+the side of a brick building
+that is featureless until a couple storeys up
+where there are squares of glass cube grids
+with small actuall windows
+embedded in them off-centre.
+the windows are separated by columns of bricks
+that go down the outside of the building.
diff --git a/www/photo.causal.agency/2024-08-02/000025490036.txt b/www/photo.causal.agency/2024-08-02/000025490036.txt
new file mode 100644
index 00000000..4de137fb
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/000025490036.txt
@@ -0,0 +1,11 @@
+the cube.
+the rectangle.
+it's a modern part of a building
+that's been added onto over time.
+and it's just a big rectangle
+with like a dev texture on it
+and some weirdly placed windows.
+we're looking up at it
+from an angle
+and the sun is hitting the top corner of it.
+it looks imposing.
diff --git a/www/photo.causal.agency/2024-08-02/film b/www/photo.causal.agency/2024-08-02/film
new file mode 100644
index 00000000..919ded67
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/film
@@ -0,0 +1 @@
+Ilford HP5 Plus 400
diff --git a/www/photo.causal.agency/2024-08-02/lens b/www/photo.causal.agency/2024-08-02/lens
new file mode 100644
index 00000000..13f1fc49
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-02/lens
@@ -0,0 +1 @@
+Yashica DSB 50mm ƒ/1.9
diff --git a/www/photo.causal.agency/2024-08-10/000031420002.txt b/www/photo.causal.agency/2024-08-10/000031420002.txt
new file mode 100644
index 00000000..e9eac877
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420002.txt
@@ -0,0 +1,5 @@
+close up of a bundle of small pipes
+that come up out of the ground around person height
+and curve downwards at the top,
+with the ends covered by a rough metal mesh.
+they're sort of pale greenish coloured.
diff --git a/www/photo.causal.agency/2024-08-10/000031420005.txt b/www/photo.causal.agency/2024-08-10/000031420005.txt
new file mode 100644
index 00000000..dbc7c12a
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420005.txt
@@ -0,0 +1,4 @@
+a big bush of yellow flowers
+with flat petals that don't touch
+and big brown balls in the centre.
+they're glowing in the sunlight.
diff --git a/www/photo.causal.agency/2024-08-10/000031420007.txt b/www/photo.causal.agency/2024-08-10/000031420007.txt
new file mode 100644
index 00000000..6138ee21
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420007.txt
@@ -0,0 +1,3 @@
+one big flower with white petals
+that are deep red only right near the centre
+and a long plant reproductive bit.
diff --git a/www/photo.causal.agency/2024-08-10/000031420011.txt b/www/photo.causal.agency/2024-08-10/000031420011.txt
new file mode 100644
index 00000000..4dcc7c39
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420011.txt
@@ -0,0 +1,2 @@
+a cat lying down in an alley next to a little ball,
+looking at the camera.
diff --git a/www/photo.causal.agency/2024-08-10/000031420012.txt b/www/photo.causal.agency/2024-08-10/000031420012.txt
new file mode 100644
index 00000000..3d0b928c
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420012.txt
@@ -0,0 +1,4 @@
+close up of a cat in an alley
+with its eyes closed.
+it's lying next to a small ball.
+it has thumbs!
diff --git a/www/photo.causal.agency/2024-08-10/000031420015.txt b/www/photo.causal.agency/2024-08-10/000031420015.txt
new file mode 100644
index 00000000..7c116097
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420015.txt
@@ -0,0 +1,4 @@
+the top of a discarded hot water tank
+with two severed pipes coming out.
+the top appears green,
+though it may have been blue.
diff --git a/www/photo.causal.agency/2024-08-10/000031420016.txt b/www/photo.causal.agency/2024-08-10/000031420016.txt
new file mode 100644
index 00000000..ea0af1e7
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420016.txt
@@ -0,0 +1,8 @@
+what is perhaps a planter
+among overgrowing plants,
+with two little wagon wheels
+seemingly broken off.
+one is leaning against the near side
+of the planter
+and the other is flat on the ground
+half under it.
diff --git a/www/photo.causal.agency/2024-08-10/000031420020.txt b/www/photo.causal.agency/2024-08-10/000031420020.txt
new file mode 100644
index 00000000..8ce4c5c1
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420020.txt
@@ -0,0 +1,2 @@
+power lines atop a wooden pole with 3 drums
+against a blue sky with white clouds.
diff --git a/www/photo.causal.agency/2024-08-10/000031420024.txt b/www/photo.causal.agency/2024-08-10/000031420024.txt
new file mode 100644
index 00000000..6d4ec555
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420024.txt
@@ -0,0 +1,3 @@
+a street lamp in an alley
+under the shade of a tree
+with two large spherical lamps.
diff --git a/www/photo.causal.agency/2024-08-10/000031420026.txt b/www/photo.causal.agency/2024-08-10/000031420026.txt
new file mode 100644
index 00000000..77297a74
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420026.txt
@@ -0,0 +1,3 @@
+a big ball of clustered tiny white flowers
+glowing in the sun
+on a bright blue sky.
diff --git a/www/photo.causal.agency/2024-08-10/000031420027.txt b/www/photo.causal.agency/2024-08-10/000031420027.txt
new file mode 100644
index 00000000..d31920e8
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420027.txt
@@ -0,0 +1,8 @@
+the side of a weird old presumably european tiny car
+that's been rotting in an alley for who knows how long.
+the car is painted black
+and there's a bunch of graffiti in white
+on the door and back side as well as the window.
+on the door next to the handle there's a stenciled "GREMA".
+the car is in worse shape
+than the last time I photographed it.
diff --git a/www/photo.causal.agency/2024-08-10/000031420028.txt b/www/photo.causal.agency/2024-08-10/000031420028.txt
new file mode 100644
index 00000000..e4cbd11f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420028.txt
@@ -0,0 +1,2 @@
+the steering wheel of an old presumably european car
+that has been left to rot in an alley.
diff --git a/www/photo.causal.agency/2024-08-10/000031420029.txt b/www/photo.causal.agency/2024-08-10/000031420029.txt
new file mode 100644
index 00000000..ea3361fb
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420029.txt
@@ -0,0 +1,3 @@
+a discarded bicycle tire
+in front of a mound of dirt and dead leaves
+in an alley.
diff --git a/www/photo.causal.agency/2024-08-10/000031420034.txt b/www/photo.causal.agency/2024-08-10/000031420034.txt
new file mode 100644
index 00000000..542924f3
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/000031420034.txt
@@ -0,0 +1,4 @@
+the top halves of some classic plateau rowhouses
+against a light blue sky with some clouds.
+the top windows are painted in a sequence of
+dark purple, orange, dark green, some kind of red.
diff --git a/www/photo.causal.agency/2024-08-10/body b/www/photo.causal.agency/2024-08-10/body
new file mode 100644
index 00000000..1828b2a2
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/body
@@ -0,0 +1 @@
+Zenit-122
diff --git a/www/photo.causal.agency/2024-08-10/film b/www/photo.causal.agency/2024-08-10/film
new file mode 100644
index 00000000..dd589471
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/film
@@ -0,0 +1 @@
+Harman Phoenix 200
diff --git a/www/photo.causal.agency/2024-08-10/lens b/www/photo.causal.agency/2024-08-10/lens
new file mode 100644
index 00000000..dcd0812c
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-10/lens
@@ -0,0 +1 @@
+Helios-44M-5 58mm ƒ/2
diff --git a/www/photo.causal.agency/2024-08-22/000044750004.txt b/www/photo.causal.agency/2024-08-22/000044750004.txt
new file mode 100644
index 00000000..a6d758bd
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750004.txt
@@ -0,0 +1,2 @@
+a broken and fallen limb of a tree
+laying in a puddle in an alley.
diff --git a/www/photo.causal.agency/2024-08-22/000044750007.txt b/www/photo.causal.agency/2024-08-22/000044750007.txt
new file mode 100644
index 00000000..faf48f72
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750007.txt
@@ -0,0 +1,7 @@
+some kind of motor
+attached to some kind of machinery.
+it looks like a cable runs
+from a box on its sidee
+to another box not far
+with what looks like
+an ordinary light switch on it.
diff --git a/www/photo.causal.agency/2024-08-22/000044750008.txt b/www/photo.causal.agency/2024-08-22/000044750008.txt
new file mode 100644
index 00000000..1475b9e1
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750008.txt
@@ -0,0 +1,3 @@
+wrought iron fence detail.
+it's got swirly bits
+and squiggly pointy bits.
diff --git a/www/photo.causal.agency/2024-08-22/000044750009.txt b/www/photo.causal.agency/2024-08-22/000044750009.txt
new file mode 100644
index 00000000..a8c887cc
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750009.txt
@@ -0,0 +1,2 @@
+wider view of wrought iron fence
+showing two instances of its repeated pattern.
diff --git a/www/photo.causal.agency/2024-08-22/000044750010.txt b/www/photo.causal.agency/2024-08-22/000044750010.txt
new file mode 100644
index 00000000..8e275e06
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750010.txt
@@ -0,0 +1,3 @@
+a bike locked to a fence
+being overgrown by bushes
+and weeds and other plants.
diff --git a/www/photo.causal.agency/2024-08-22/000044750013.txt b/www/photo.causal.agency/2024-08-22/000044750013.txt
new file mode 100644
index 00000000..d89c3ac1
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750013.txt
@@ -0,0 +1,5 @@
+a bee sitting on a flower
+that has thin sort of curled up petals
+spaced far apart.
+sort of looks like the bee
+is humping the middle of the flower.
diff --git a/www/photo.causal.agency/2024-08-22/000044750014.txt b/www/photo.causal.agency/2024-08-22/000044750014.txt
new file mode 100644
index 00000000..0e591c1f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750014.txt
@@ -0,0 +1,8 @@
+a metal frame structure
+in the shape of half a cyllinder
+suspended,
+presumably over a walkway,
+on square concrete pillars.
+the pillars have three notches
+in them near the top.
+this is just outside a large stone building.
diff --git a/www/photo.causal.agency/2024-08-22/000044750016.txt b/www/photo.causal.agency/2024-08-22/000044750016.txt
new file mode 100644
index 00000000..ef9a68a3
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750016.txt
@@ -0,0 +1,7 @@
+the top of a large building
+with a pointed roof.
+some of the windows are intact
+while some have beams of wood
+across them on the outside
+seemingly holding boards of wood
+against the insides?
diff --git a/www/photo.causal.agency/2024-08-22/000044750024.txt b/www/photo.causal.agency/2024-08-22/000044750024.txt
new file mode 100644
index 00000000..b3c14768
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750024.txt
@@ -0,0 +1,6 @@
+a single cable,
+probably telephone,
+suspended by a pole
+in an upside-down L shape
+with a truss between
+the two pieces.
diff --git a/www/photo.causal.agency/2024-08-22/000044750027.txt b/www/photo.causal.agency/2024-08-22/000044750027.txt
new file mode 100644
index 00000000..3c614db2
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750027.txt
@@ -0,0 +1,5 @@
+a weird cube of building
+covered in a metal diamond tiling pattern
+with one wide window in the side
+and some cables under tension
+going down it.
diff --git a/www/photo.causal.agency/2024-08-22/000044750028.txt b/www/photo.causal.agency/2024-08-22/000044750028.txt
new file mode 100644
index 00000000..f6998321
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/000044750028.txt
@@ -0,0 +1,3 @@
+a row of back to back park benches
+among trees continuing
+into the distance away to the right.
diff --git a/www/photo.causal.agency/2024-08-22/body b/www/photo.causal.agency/2024-08-22/body
new file mode 100644
index 00000000..1828b2a2
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/body
@@ -0,0 +1 @@
+Zenit-122
diff --git a/www/photo.causal.agency/2024-08-22/film b/www/photo.causal.agency/2024-08-22/film
new file mode 100644
index 00000000..919ded67
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/film
@@ -0,0 +1 @@
+Ilford HP5 Plus 400
diff --git a/www/photo.causal.agency/2024-08-22/lens b/www/photo.causal.agency/2024-08-22/lens
new file mode 100644
index 00000000..dcd0812c
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-22/lens
@@ -0,0 +1 @@
+Helios-44M-5 58mm ƒ/2
diff --git a/www/photo.causal.agency/2024-08-23/000044740001.txt b/www/photo.causal.agency/2024-08-23/000044740001.txt
new file mode 100644
index 00000000..dcc7e42f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740001.txt
@@ -0,0 +1,8 @@
+an old-style metal lamp post
+on a solid wooden fence
+with vines growing over it.
+the left side of the frame
+and the bottom and top edges
+have red light bleeding into them
+from the film being exposed
+during loading.
diff --git a/www/photo.causal.agency/2024-08-23/000044740002.txt b/www/photo.causal.agency/2024-08-23/000044740002.txt
new file mode 100644
index 00000000..821c0b5b
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740002.txt
@@ -0,0 +1,5 @@
+a view down an alley
+past a tree with hanging leaves.
+bright sunlight is
+coming through a branch
+off the alley to the left.
diff --git a/www/photo.causal.agency/2024-08-23/000044740010.txt b/www/photo.causal.agency/2024-08-23/000044740010.txt
new file mode 100644
index 00000000..428ffe8f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740010.txt
@@ -0,0 +1,5 @@
+close up of a cluster
+of some kind of berries
+on a plant with nice green leaves.
+the stems appear red
+and the berries a dark blue.
diff --git a/www/photo.causal.agency/2024-08-23/000044740014.txt b/www/photo.causal.agency/2024-08-23/000044740014.txt
new file mode 100644
index 00000000..f04e5615
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740014.txt
@@ -0,0 +1,4 @@
+a big tall tree
+with branches that
+all point very upwards
+rather than outwards.
diff --git a/www/photo.causal.agency/2024-08-23/000044740017.txt b/www/photo.causal.agency/2024-08-23/000044740017.txt
new file mode 100644
index 00000000..ac8e4ba9
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740017.txt
@@ -0,0 +1,2 @@
+the top half of a big tree
+with many branching thick limbs.
diff --git a/www/photo.causal.agency/2024-08-23/000044740021.txt b/www/photo.causal.agency/2024-08-23/000044740021.txt
new file mode 100644
index 00000000..6ee78b65
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740021.txt
@@ -0,0 +1,5 @@
+view up at a huge old stone building
+with lots of 3D shape going on
+and lots of windows.
+past it is a blue sky
+with a big white fluffy cloud.
diff --git a/www/photo.causal.agency/2024-08-23/000044740024.txt b/www/photo.causal.agency/2024-08-23/000044740024.txt
new file mode 100644
index 00000000..f344f290
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740024.txt
@@ -0,0 +1,8 @@
+a completely empty bit of
+road or parking lot
+surrounded by trees,
+curving away and downward in the distance.
+on one side,
+behind construction fences,
+there's a tall street light
+with a blue P-5 sign attached.
diff --git a/www/photo.causal.agency/2024-08-23/000044740030.txt b/www/photo.causal.agency/2024-08-23/000044740030.txt
new file mode 100644
index 00000000..42d3ef1a
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740030.txt
@@ -0,0 +1,8 @@
+a wide set of concrete stairs
+divided by 4 sets of white metal railings
+ascending out into the sun
+from under a low concrete ceiling
+with a large square grid pattern.
+the ceiling is being lit
+by a sort of bluish-green light
+from behind.
diff --git a/www/photo.causal.agency/2024-08-23/000044740031.txt b/www/photo.causal.agency/2024-08-23/000044740031.txt
new file mode 100644
index 00000000..e566e86f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740031.txt
@@ -0,0 +1,4 @@
+a tall brutalist-ish apartment building
+on a mostly clear blue sky,
+with one white cloud in the bottom left.
+the building appears orange.
diff --git a/www/photo.causal.agency/2024-08-23/000044740033.txt b/www/photo.causal.agency/2024-08-23/000044740033.txt
new file mode 100644
index 00000000..44d1d1f5
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740033.txt
@@ -0,0 +1,6 @@
+the back of an old brick building
+that is probably being renovated.
+the ground is descending
+behind the building as if to underground parking,
+and there is a space for a door
+that is blocked with plywood.
diff --git a/www/photo.causal.agency/2024-08-23/000044740034.txt b/www/photo.causal.agency/2024-08-23/000044740034.txt
new file mode 100644
index 00000000..5492db03
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740034.txt
@@ -0,0 +1,6 @@
+looking up at an old red brick building
+from the ground.
+there are three rows of windows.
+there are also two doors
+with no handles and little square windows
+that would open onto nothing.
diff --git a/www/photo.causal.agency/2024-08-23/000044740035.txt b/www/photo.causal.agency/2024-08-23/000044740035.txt
new file mode 100644
index 00000000..3cf7a14f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740035.txt
@@ -0,0 +1,4 @@
+a pile of palettes stacked with slabs of stone
+sitting at the side of a brick building.
+based on how plants are growing around them,
+they haven't been touched in a while.
diff --git a/www/photo.causal.agency/2024-08-23/000044740036.txt b/www/photo.causal.agency/2024-08-23/000044740036.txt
new file mode 100644
index 00000000..c87ba240
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/000044740036.txt
@@ -0,0 +1,14 @@
+the back of a very strange
+residential building
+that's clearly been built onto.
+on the right is a regular red wooden door.
+on the left is a painted brown metal door
+with a circular window in it
+like a porthole.
+this is at the bottom of a metal column,
+presumably containing stairs,
+with one more porthole
+not far above the door.
+slid right between this weird extension
+and the side of the adjacent building
+is a very tall ladder.
diff --git a/www/photo.causal.agency/2024-08-23/body b/www/photo.causal.agency/2024-08-23/body
new file mode 100644
index 00000000..6a2a5ad8
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/body
@@ -0,0 +1 @@
+Yashica FX-2
diff --git a/www/photo.causal.agency/2024-08-23/film b/www/photo.causal.agency/2024-08-23/film
new file mode 100644
index 00000000..2340483a
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/film
@@ -0,0 +1 @@
+Film Washi “X” 100
diff --git a/www/photo.causal.agency/2024-08-23/lens b/www/photo.causal.agency/2024-08-23/lens
new file mode 100644
index 00000000..465336d3
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-23/lens
@@ -0,0 +1 @@
+Makinon 28mm ƒ/2.8
diff --git a/www/photo.causal.agency/2024-08-24/000044730001.txt b/www/photo.causal.agency/2024-08-24/000044730001.txt
new file mode 100644
index 00000000..9481f22a
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730001.txt
@@ -0,0 +1,6 @@
+overhead lines for electric trains
+silhouetted against a blue sky.
+there's a train partially visible
+behind a concrete barrier.
+there's a pentagonal lens flare
+in the sky.
diff --git a/www/photo.causal.agency/2024-08-24/000044730002.txt b/www/photo.causal.agency/2024-08-24/000044730002.txt
new file mode 100644
index 00000000..c2290e3c
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730002.txt
@@ -0,0 +1,4 @@
+overhead lines for electric trains
+silhouetted against a blue sky
+with sparse clouds
+as a train goes past.
diff --git a/www/photo.causal.agency/2024-08-24/000044730004.txt b/www/photo.causal.agency/2024-08-24/000044730004.txt
new file mode 100644
index 00000000..5874fc87
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730004.txt
@@ -0,0 +1,5 @@
+a vast and empty parking lot
+under a blue sky with clouds in the distance.
+the parking lot extends at an angle
+away from a crosswalk in the foreground.
+behind the lot is a large shed.
diff --git a/www/photo.causal.agency/2024-08-24/000044730008.txt b/www/photo.causal.agency/2024-08-24/000044730008.txt
new file mode 100644
index 00000000..86ac6f65
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730008.txt
@@ -0,0 +1,6 @@
+a vast and empty parking lot
+under a blue sky fading into clouds.
+we are looking down a line of crosswalks
+that cross the lot.
+there are rows of young trees
+and lots of signs on metal poles.
diff --git a/www/photo.causal.agency/2024-08-24/000044730012.txt b/www/photo.causal.agency/2024-08-24/000044730012.txt
new file mode 100644
index 00000000..6311d731
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730012.txt
@@ -0,0 +1,3 @@
+some sort of device atop
+overhead lines for electric trains
+against a grey-blue sky.
diff --git a/www/photo.causal.agency/2024-08-24/000044730014.txt b/www/photo.causal.agency/2024-08-24/000044730014.txt
new file mode 100644
index 00000000..96e5e4dd
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730014.txt
@@ -0,0 +1,3 @@
+train tracks with overhead lines
+inside a fenced area.
+there are three parallel tracks.
diff --git a/www/photo.causal.agency/2024-08-24/000044730018.txt b/www/photo.causal.agency/2024-08-24/000044730018.txt
new file mode 100644
index 00000000..ae0ea59d
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730018.txt
@@ -0,0 +1,4 @@
+the wall of the base under a track,
+close at the left side of the frame
+and quickly stretching into the distance
+to the right.
diff --git a/www/photo.causal.agency/2024-08-24/000044730026.txt b/www/photo.causal.agency/2024-08-24/000044730026.txt
new file mode 100644
index 00000000..d646f8e5
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730026.txt
@@ -0,0 +1,8 @@
+the inside of a train station,
+with walls of orange-brown tile.
+there is a stairway leading up to the left,
+and one in shadow at the end of a short tunnel
+to the right.
+in the centre is a green sign
+pointing up the left stairs towards
+quai 1 and quai 3.
diff --git a/www/photo.causal.agency/2024-08-24/000044730028.txt b/www/photo.causal.agency/2024-08-24/000044730028.txt
new file mode 100644
index 00000000..3978d978
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730028.txt
@@ -0,0 +1,2 @@
+the tops of grass that has grown untended
+and has produced seeds and gone yellow/brown.
diff --git a/www/photo.causal.agency/2024-08-24/000044730029.txt b/www/photo.causal.agency/2024-08-24/000044730029.txt
new file mode 100644
index 00000000..52d3c975
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730029.txt
@@ -0,0 +1,2 @@
+a short set of curved wooden steps
+surrounded by leaves.
diff --git a/www/photo.causal.agency/2024-08-24/000044730030.txt b/www/photo.causal.agency/2024-08-24/000044730030.txt
new file mode 100644
index 00000000..de6ef2ff
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730030.txt
@@ -0,0 +1 @@
+close up of a cluster of little pink flowers.
diff --git a/www/photo.causal.agency/2024-08-24/000044730035.txt b/www/photo.causal.agency/2024-08-24/000044730035.txt
new file mode 100644
index 00000000..70b7e7ef
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/000044730035.txt
@@ -0,0 +1,4 @@
+an orange and white cat sitting in an alley
+looking off to the left.
+it's got a collar on
+with a little heard shaped tag on it.
diff --git a/www/photo.causal.agency/2024-08-24/body b/www/photo.causal.agency/2024-08-24/body
new file mode 100644
index 00000000..1828b2a2
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/body
@@ -0,0 +1 @@
+Zenit-122
diff --git a/www/photo.causal.agency/2024-08-24/film b/www/photo.causal.agency/2024-08-24/film
new file mode 100644
index 00000000..dd589471
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/film
@@ -0,0 +1 @@
+Harman Phoenix 200
diff --git a/www/photo.causal.agency/2024-08-24/lens b/www/photo.causal.agency/2024-08-24/lens
new file mode 100644
index 00000000..19fafffb
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-24/lens
@@ -0,0 +1 @@
+Takumar 35mm ƒ/3.5, Helios-44M-5 58mm ƒ/2
diff --git a/www/photo.causal.agency/2024-08-29/000054970002.txt b/www/photo.causal.agency/2024-08-29/000054970002.txt
new file mode 100644
index 00000000..e58bb3c3
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-29/000054970002.txt
@@ -0,0 +1,3 @@
+reflection of trees and sky
+in water with ripples
+at early evening.
diff --git a/www/photo.causal.agency/2024-08-29/000054970004.txt b/www/photo.causal.agency/2024-08-29/000054970004.txt
new file mode 100644
index 00000000..b8ca6fc6
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-29/000054970004.txt
@@ -0,0 +1,5 @@
+rough concrete blocks
+stacked 3 by 3 except
+the top right one is missing.
+they're heavily weathered
+and have trees overhanging them.
diff --git a/www/photo.causal.agency/2024-08-29/000054970005.txt b/www/photo.causal.agency/2024-08-29/000054970005.txt
new file mode 100644
index 00000000..89cfbe7f
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-29/000054970005.txt
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 00000000..dcf4b50e
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-29/000054970006.txt
@@ -0,0 +1,2 @@
+Ayla in an orange sweater
+looking to the side and smiling.
diff --git a/www/photo.causal.agency/2024-08-29/body b/www/photo.causal.agency/2024-08-29/body
new file mode 100644
index 00000000..6a2a5ad8
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-29/body
@@ -0,0 +1 @@
+Yashica FX-2
diff --git a/www/photo.causal.agency/2024-08-29/film b/www/photo.causal.agency/2024-08-29/film
new file mode 100644
index 00000000..dd589471
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-29/film
@@ -0,0 +1 @@
+Harman Phoenix 200
diff --git a/www/photo.causal.agency/2024-08-29/lens b/www/photo.causal.agency/2024-08-29/lens
new file mode 100644
index 00000000..13f1fc49
--- /dev/null
+++ b/www/photo.causal.agency/2024-08-29/lens
@@ -0,0 +1 @@
+Yashica DSB 50mm ƒ/1.9
diff --git a/www/photo.causal.agency/generate.sh b/www/photo.causal.agency/generate.sh
index fbc3efd6..26279229 100644
--- a/www/photo.causal.agency/generate.sh
+++ b/www/photo.causal.agency/generate.sh
@@ -41,8 +41,11 @@ page_title() {
 page_head() {
 	local date=$1
 	local title=$(page_title $date)
-	local lens film
+	local body lens film
 
+	if test -f $date/body; then
+		body=$(encode $date/body)
+	fi
 	if test -f $date/lens; then
 		lens=$(encode $date/lens)
 	else
@@ -75,7 +78,7 @@ page_head() {
 	details { max-width: 78ch; margin: 0.5em auto; }
 	</style>
 	<h1>${title}</h1>
-	<p>📷 ${lens}${film:+ 🎞️ }${film:-}</p>
+	<p>📷 ${body:-}${body:+ · }${lens}${film:+ 🎞️ }${film:-}</p>
 	EOF
 }
 
diff --git a/www/photo.causal.agency/trips.html b/www/photo.causal.agency/trips.html
new file mode 100644
index 00000000..6179408c
--- /dev/null
+++ b/www/photo.causal.agency/trips.html
@@ -0,0 +1,339 @@
+<!DOCTYPE html>
+<title>Photo Trips</title>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<style>
+body {
+	font-family: sans-serif;
+	line-height: 1.5em;
+	max-width: 52ch;
+}
+input, button, select { font-size: 100%; }
+form {
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 0.5em 1ch;
+}
+input[type="number"] { width: 5ch; }
+#trip-lens { width: 100%; }
+#lens-length { width: 7ch; }
+#lens-aperture { width: 8ch; }
+</style>
+
+<section id="rolls">
+<h1>Rolls</h1>
+<ul>
+</ul>
+
+<form>
+<label for="roll-body">Camera:</label>
+<select id="roll-body" class="body" required>
+</select>
+<label for="roll-film">Film:</label>
+<input id="roll-film" list="films" required>
+<button type="button" onclick="loadRoll()">Load</button>
+</form>
+
+<datalist id="films">
+	<option>Harman Phoenix 200</option>
+	<option>Ilford HP5 Plus 400</option>
+	<option>Shanghai Color 400</option>
+	<option>Fomapan Action 400</option>
+</datalist>
+</section>
+
+<section id="trips">
+<h1>Trips</h1>
+
+<form>
+<label for="trip-date">Date:</label>
+<input id="trip-date" type="date" required>
+<label for="trip-body">Camera:</label>
+<select id="trip-body" class="body" onchange="setTripBody()" required>
+</select>
+<label for="trip-lens">Lens:</label>
+<select id="trip-lens" required>
+</select>
+<label for="trip-film">Film:</label>
+<input id="trip-film" readonly required>
+<label for="trip-first">Exposures:</label>
+<span>
+<input id="trip-first" type="number" required min="0" max="36">
+–
+<input id="trip-last" type="number" required min="0" max="36">
+</span>
+<label for="trip-note">Note:</label>
+<input id="trip-note">
+<button type="button" onclick="addTrip()">Record</button>
+</form>
+
+<ul>
+</ul>
+</section>
+
+<section id="bodies">
+<h1>Cameras</h1>
+<ul>
+</ul>
+
+<form>
+	<label for="body-name">Name:</label>
+	<input id="body-name" required>
+	<label for="body-mount">Mount:</label>
+	<input id="body-mount" list="mounts" required>
+	<button type="button" onclick="addBody()">Add</button>
+</form>
+
+<datalist id="mounts">
+	<option>Contax/Yashica</option>
+	<option>M42</option>
+</datalist>
+</section>
+
+<section id="lenses">
+<h1>Lenses</h1>
+<ul>
+</ul>
+
+<form>
+	<label for="lens-name">Name:</label>
+	<input id="lens-name" required>
+	<label for="lens-length">Focal length:</label>
+	<span><input id="lens-length" required pattern="[0-9-]+">mm</span>
+	<label for="lens-aperture">Aperture:</label>
+	<span>ƒ/<input id="lens-aperture" required pattern="[0-9.-]+"></span>
+	<label for="lens-mount">Mount:</label>
+	<input id="lens-mount" list="mounts" required>
+	<button type="button" onclick="addLens()">Add</button>
+</form>
+</section>
+
+<script>
+let bodies = JSON.parse(localStorage.getItem("bodies")) || [];
+let lenses = JSON.parse(localStorage.getItem("lenses")) || [];
+let rolls = JSON.parse(localStorage.getItem("rolls")) || {};
+let trips = JSON.parse(localStorage.getItem("trips")) || [];
+let nextId = +localStorage.getItem("nextId") || 1;
+
+document.getElementById("trip-date").valueAsDate = new Date();
+
+function removeButton(onclick) {
+	let remove = document.createElement("a");
+	remove.appendChild(document.createTextNode("⛔"));
+	remove.onclick = onclick;
+	return remove;
+}
+
+function setBodies() {
+	localStorage.setItem("bodies", JSON.stringify(bodies));
+	let ul = document.querySelector("#bodies > ul");
+	let selects = document.querySelectorAll("select.body");
+	ul.innerHTML = "";
+	selects.forEach(select => select.innerHTML = "");
+	for (let [index, body] of bodies.entries()) {
+		let li = document.createElement("li");
+		li.appendChild(document.createTextNode(`
+			${body.name} (${body.mount})
+		`));
+		li.appendChild(removeButton(removeBody.bind(null, index)));
+		ul.appendChild(li);
+		for (let select of selects) {
+			let option = document.createElement("option");
+			option.appendChild(document.createTextNode(body.name));
+			select.appendChild(option);
+		}
+	}
+}
+setBodies();
+
+function endashify(str) {
+	return str.replaceAll("-", "–");
+}
+function lensString(lens) {
+	return `
+		${lens.name}
+		${endashify(lens.focalLength)}mm
+		ƒ/${endashify(lens.aperture)}
+	`.replace(/\s+/g, " ").trim();
+}
+
+function setLenses() {
+	localStorage.setItem("lenses", JSON.stringify(lenses));
+	let ul = document.querySelector("#lenses > ul");
+	ul.innerHTML = "";
+	for (let [index, lens] of lenses.entries()) {
+		let li = document.createElement("li");
+		li.appendChild(document.createTextNode(`
+			${lensString(lens)} (${lens.mount})
+		`));
+		li.appendChild(removeButton(removeLens.bind(null, index)));
+		ul.appendChild(li);
+	}
+}
+setLenses();
+
+function setRolls() {
+	localStorage.setItem("rolls", JSON.stringify(rolls));
+	let ul = document.querySelector("#rolls > ul");
+	ul.innerHTML = "";
+	for (body in rolls) {
+		let roll = rolls[body];
+		let li = document.createElement("li");
+		li.appendChild(document.createTextNode(`
+			${body}: ${roll.film} (${roll.used}/${roll.exposures})
+		`));
+		if (roll.used == roll.exposures) {
+			li.style.textDecoration = "line-through";
+		}
+		ul.appendChild(li);
+	}
+}
+setRolls();
+
+function setTrips() {
+	localStorage.setItem("trips", JSON.stringify(trips));
+	let ul = document.querySelector("#trips > ul");
+	ul.innerHTML = "";
+	let tripsByRoll = Object.groupBy(trips, trip => trip.rollId);
+	for (let rollId = nextId - 1; rollId > 0; --rollId) {
+		let rollTrips = tripsByRoll[rollId];
+		if (!rollTrips) continue;
+		let rollLi = document.createElement("li");
+		let rollB = document.createElement("b");
+		rollB.appendChild(document.createTextNode(rollTrips[0].film));
+		rollLi.appendChild(rollB);
+		rollLi.appendChild(document.createTextNode(` (${rollTrips[0].body})`));
+		let rollUl = document.createElement("ul");
+		for (let trip of rollTrips) {
+			let li = document.createElement("li");
+			let b = document.createElement("b");
+			b.appendChild(document.createTextNode(trip.date));
+			li.appendChild(b);
+			li.appendChild(document.createTextNode(
+				`: ${trip.firstExposure}–${trip.lastExposure}`
+			));
+			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}”`));
+			}
+			rollUl.appendChild(li);
+		}
+		rollLi.appendChild(rollUl);
+		ul.appendChild(rollLi);
+	}
+}
+setTrips();
+
+function setTripBody() {
+	let bodyName = document.getElementById("trip-body").value;
+	let body = bodies.find(body => body.name == bodyName);
+	let select = document.getElementById("trip-lens");
+	select.innerHTML = "";
+	for (lens of lenses.filter(lens => lens.mount == body.mount)) {
+		let option = document.createElement("option");
+		option.appendChild(document.createTextNode(lensString(lens)));
+		select.appendChild(option);
+	}
+	let roll = rolls[body.name];
+	if (roll) {
+		document.getElementById("trip-film").value = roll.film;
+		let next = (roll.used > 0 ? roll.used + 1 : roll.used);
+		document.getElementById("trip-first").value = next;
+		document.getElementById("trip-last").value = next;
+	} else {
+		document.getElementById("trip-film").value = "";
+		document.getElementById("trip-first").value = "";
+		document.getElementById("trip-last").value = "";
+	}
+}
+setTripBody();
+
+function clearForm(form) {
+	let inputs = form.querySelectorAll("input");
+	for (input of inputs) {
+		input.value = null;
+	}
+}
+
+function addBody() {
+	let form = document.querySelector("#bodies > form");
+	if (!form.checkValidity()) return;
+	let name = document.getElementById("body-name").value;
+	let mount = document.getElementById("body-mount").value;
+	bodies.push({ name, mount });
+	setBodies();
+	clearForm(form);
+}
+
+function removeBody(index) {
+	let body = bodies[index];
+	if (!confirm(`Are you sure you want to remove ${body.name}?`)) {
+		return;
+	}
+	bodies.splice(index, 1);
+	delete rolls[body.name];
+	setBodies();
+	setRolls();
+}
+
+function addLens() {
+	let form = document.querySelector("#lenses > form");
+	if (!form.checkValidity()) return;
+	let name = document.getElementById("lens-name").value;
+	let focalLength = document.getElementById("lens-length").value;
+	let aperture = document.getElementById("lens-aperture").value;
+	let mount = document.getElementById("lens-mount").value;
+	lenses.push({ name, focalLength, aperture, mount });
+	setLenses();
+	clearForm(form);
+}
+
+function removeLens(index) {
+	let lens = lenses[index];
+	if (!confirm(`Are you sure you want to remove ${lensString(lens)}?`)) {
+		return;
+	}
+	lenses.splice(index, 1);
+	setLenses();
+	setTripBody();
+}
+
+function loadRoll() {
+	let form = document.querySelector("#rolls > form");
+	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 };
+	localStorage.setItem("nextId", nextId);
+	setRolls();
+	clearForm(form);
+	setTripBody();
+}
+
+function addTrip() {
+	let form = document.querySelector("#trips > form");
+	if (!form.checkValidity()) return;
+	let date = document.getElementById("trip-date").value;
+	let body = document.getElementById("trip-body").value;
+	let lens = document.getElementById("trip-lens").value;
+	let film = document.getElementById("trip-film").value;
+	let firstExposure = +document.getElementById("trip-first").value;
+	let lastExposure = +document.getElementById("trip-last").value;
+	let note = document.getElementById("trip-note").value;
+	let trip = {
+		date, body, lens, film, rollId: rolls[body].id,
+		firstExposure, lastExposure, note
+	};
+	trips.push(trip);
+	rolls[body].used = lastExposure;
+	setTrips();
+	setRolls();
+	document.getElementById("trip-date").valueAsDate = new Date();
+	document.getElementById("trip-note").value = "";
+	setTripBody();
+}
+
+</script>