diff options
Diffstat (limited to 'www/photo.causal.agency')
33 files changed, 408 insertions, 0 deletions
diff --git a/www/photo.causal.agency/.gitignore b/www/photo.causal.agency/.gitignore new file mode 100644 index 00000000..a5f66a9d --- /dev/null +++ b/www/photo.causal.agency/.gitignore @@ -0,0 +1,2 @@ +static/ +*.JPG diff --git a/www/photo.causal.agency/2024-04-10/IMG_0832.txt b/www/photo.causal.agency/2024-04-10/IMG_0832.txt new file mode 100644 index 00000000..65724024 --- /dev/null +++ b/www/photo.causal.agency/2024-04-10/IMG_0832.txt @@ -0,0 +1,6 @@ +a red brick wall with some faded black graffiti. +in the lower third, some bricks are missing +from the outer layer in an arc shape. +along the bottom is a ledge of conrete +lightly covered in brick dust and chunks +below the missing areas above. diff --git a/www/photo.causal.agency/2024-04-10/IMG_0850.txt b/www/photo.causal.agency/2024-04-10/IMG_0850.txt new file mode 100644 index 00000000..4cbb3def --- /dev/null +++ b/www/photo.causal.agency/2024-04-10/IMG_0850.txt @@ -0,0 +1,6 @@ +grey steel beams of a building in early construction +on a background of blue sky with some light clouds. +the beams are intersecting at odd points, +implying the final building will not be a simple box. +the sun casts dark shadows into the interiors +of the I-shaped metal. diff --git a/www/photo.causal.agency/2024-04-10/IMG_0852.txt b/www/photo.causal.agency/2024-04-10/IMG_0852.txt new file mode 100644 index 00000000..707d7cd6 --- /dev/null +++ b/www/photo.causal.agency/2024-04-10/IMG_0852.txt @@ -0,0 +1,4 @@ +in the foreground, a metal construction fence. +behind that, the bright red arm of a sort of small crane. +the arm is horizontal and crushing a perpendicular piece of fence, +which has deformed smoothly under it. diff --git a/www/photo.causal.agency/2024-04-10/IMG_0858.txt b/www/photo.causal.agency/2024-04-10/IMG_0858.txt new file mode 100644 index 00000000..42f243e4 --- /dev/null +++ b/www/photo.causal.agency/2024-04-10/IMG_0858.txt @@ -0,0 +1,6 @@ +an uneven grid of old wooden-framed windows in an alley. +the red paint on the frames is peeling badly, +completely stripped in some spots. +in the reflections of the lower windows +we see the roofs of the opposite buildings +and hints of clouds in the sky. diff --git a/www/photo.causal.agency/2024-04-10/IMG_0859.txt b/www/photo.causal.agency/2024-04-10/IMG_0859.txt new file mode 100644 index 00000000..ca33d7e0 --- /dev/null +++ b/www/photo.causal.agency/2024-04-10/IMG_0859.txt @@ -0,0 +1,6 @@ +an old backetball hoop mounted in an alley. +the backboard has been graffitied +and vines have invaded. +a few red strands of net are left hanging from the hoop. +the fence behind is painted with a design of yellow, purple, white and blue. +it's the kind of hoop airbud might be hanging around. diff --git a/www/photo.causal.agency/2024-04-10/IMG_0865.txt b/www/photo.causal.agency/2024-04-10/IMG_0865.txt new file mode 100644 index 00000000..7a955fc2 --- /dev/null +++ b/www/photo.causal.agency/2024-04-10/IMG_0865.txt @@ -0,0 +1,2 @@ +deep tire tread pressed into mud in the center of an alley. +a small branch of evergreen lies to one side. diff --git a/www/photo.causal.agency/2024-04-10/IMG_0890.txt b/www/photo.causal.agency/2024-04-10/IMG_0890.txt new file mode 100644 index 00000000..9d2cdc43 --- /dev/null +++ b/www/photo.causal.agency/2024-04-10/IMG_0890.txt @@ -0,0 +1,9 @@ +a pipe coming out of a light brown brick wall. +the pipe comes out of a metal square in the centre of the wall, +travels up and left for a bit, +before continuing straight up out of frame. +opposite, in the bottom right, +is the top of a red metal grate in front +of a ground-level window. +the brick below where the pipe enters the wall +is stained dark. diff --git a/www/photo.causal.agency/2024-04-14/IMG_1054.txt b/www/photo.causal.agency/2024-04-14/IMG_1054.txt new file mode 100644 index 00000000..f4803ee2 --- /dev/null +++ b/www/photo.causal.agency/2024-04-14/IMG_1054.txt @@ -0,0 +1,5 @@ +a short wall of natural rock, +all broken up somewhat neatly +along horizontal and vertical lines. +most of the rock is cool grey, +while some parts are warm brown. diff --git a/www/photo.causal.agency/2024-04-14/IMG_1058.txt b/www/photo.causal.agency/2024-04-14/IMG_1058.txt new file mode 100644 index 00000000..21aeb189 --- /dev/null +++ b/www/photo.causal.agency/2024-04-14/IMG_1058.txt @@ -0,0 +1,6 @@ +moss on a bit of exposed natural rock +surrounded by mostly brown grass. +there is shorter, darker green and brown moss, +as well as longer lighter green moss. +some small pieces of the rock are broken off +and lay in little piles. diff --git a/www/photo.causal.agency/2024-04-14/IMG_1066.txt b/www/photo.causal.agency/2024-04-14/IMG_1066.txt new file mode 100644 index 00000000..81747287 --- /dev/null +++ b/www/photo.causal.agency/2024-04-14/IMG_1066.txt @@ -0,0 +1,10 @@ +two green buds on the end of a thin branch +on a blurry brown backdrop. +the branch enters the frame +from the bottom left corner, +and there are three other pairs of buds +along it, +out of focus. +there is a hint of another bebudded branch +in the background, +but there is otherwise very little green. diff --git a/www/photo.causal.agency/2024-04-19/IMG_1158.txt b/www/photo.causal.agency/2024-04-19/IMG_1158.txt new file mode 100644 index 00000000..e18bd6c7 --- /dev/null +++ b/www/photo.causal.agency/2024-04-19/IMG_1158.txt @@ -0,0 +1,6 @@ +a glowing amber street lamp +affixed to a telephone pole. +across its round top +there is peeling grey-brown paint. +the lamp is surrounded +by out of focus bare tree branches. diff --git a/www/photo.causal.agency/2024-04-20/IMG_1225.txt b/www/photo.causal.agency/2024-04-20/IMG_1225.txt new file mode 100644 index 00000000..525a4bf3 --- /dev/null +++ b/www/photo.causal.agency/2024-04-20/IMG_1225.txt @@ -0,0 +1,8 @@ +close up of a squirrel atop a dark wood fence. +its tail is curled on its back +and it's facing left but looking at the camera. +there are crumbs of dirt +around its mouth and whiskers. +you can see the little claws +of its front paw in the foreground, +while the other paw is curled to its chest. diff --git a/www/photo.causal.agency/2024-04-20/IMG_1234.txt b/www/photo.causal.agency/2024-04-20/IMG_1234.txt new file mode 100644 index 00000000..faee1be9 --- /dev/null +++ b/www/photo.causal.agency/2024-04-20/IMG_1234.txt @@ -0,0 +1,8 @@ +a pigeon standing upright on some concrete. +it's a usual grey city pigeon, +with a mix of light and dark feathers +on its wings, +purple and green areas up its neck, +and red feet. +in the blurred background +another pigeon is strutting past. diff --git a/www/photo.causal.agency/2024-04-20/IMG_1245.txt b/www/photo.causal.agency/2024-04-20/IMG_1245.txt new file mode 100644 index 00000000..c971da91 --- /dev/null +++ b/www/photo.causal.agency/2024-04-20/IMG_1245.txt @@ -0,0 +1,17 @@ +a tall shot of the back of a beautifully coloured building. +the brick wall has been painted a sort of pink, +or at least it's faded to that colour. +there is a splotch in the middle +where the paint has worn off the brick, +along with some stray bricks +elsewhere that have been replaced. +the spiral stairs descending +from the back balconies of two floors +have also been painted red, +but have faded to pink +closer to the top. +everything is a little crooked. +the old wooden-framed windows +on the left, +the more recently replaced doors, +and the balconies. diff --git a/www/photo.causal.agency/2024-04-20/IMG_1253.txt b/www/photo.causal.agency/2024-04-20/IMG_1253.txt new file mode 100644 index 00000000..5158c533 --- /dev/null +++ b/www/photo.causal.agency/2024-04-20/IMG_1253.txt @@ -0,0 +1,7 @@ +a CCTV camera on the corner +of a black corrugated metal building. +it's mounted on a beige rusting bracket +coming off the wall at a right angle. +it's an old-style boxy camera +with a little hood. +who knows if it's still connected to anything? diff --git a/www/photo.causal.agency/2024-04-20/IMG_1254.txt b/www/photo.causal.agency/2024-04-20/IMG_1254.txt new file mode 100644 index 00000000..4780f8b5 --- /dev/null +++ b/www/photo.causal.agency/2024-04-20/IMG_1254.txt @@ -0,0 +1,8 @@ +a white pigeon walking in a paved alley. +its visible eye is a beautiful dark orange, +slightly lighter around its pupil. +its mostly white plumage +is dotted here and there by darker feathers, +and its tail feathers in particular are dark. +there's a hint of small green feathers +around its neck. diff --git a/www/photo.causal.agency/2024-04-30/IMG_1619.txt b/www/photo.causal.agency/2024-04-30/IMG_1619.txt new file mode 100644 index 00000000..27f87311 --- /dev/null +++ b/www/photo.causal.agency/2024-04-30/IMG_1619.txt @@ -0,0 +1,8 @@ +the seat of a rusted metal stool out in the way +with a shallow pool of water on it. +in the center is a handle-shaped hole, +which is raised slightly, +causing the water to pool further +around the edges. +there is a single fallen light green tree bud +just near the hole. diff --git a/www/photo.causal.agency/2024-05-03/IMG_1684.txt b/www/photo.causal.agency/2024-05-03/IMG_1684.txt new file mode 100644 index 00000000..08624d6e --- /dev/null +++ b/www/photo.causal.agency/2024-05-03/IMG_1684.txt @@ -0,0 +1,7 @@ +a yellow-and-red flower. +I don't know types of flowers. +the petals are yellow and red, +the colours flecked in each other +like you would see on an apple. +the tops of the petals have +toothy looking bits. diff --git a/www/photo.causal.agency/2024-05-03/IMG_1692.txt b/www/photo.causal.agency/2024-05-03/IMG_1692.txt new file mode 100644 index 00000000..182319f2 --- /dev/null +++ b/www/photo.causal.agency/2024-05-03/IMG_1692.txt @@ -0,0 +1,4 @@ +a pair of discarded shoes +on the ground next to a black trash bag. +the shoes are chunky running shoes, +white at the front and baby blue at the back. diff --git a/www/photo.causal.agency/2024-05-03/IMG_1706.txt b/www/photo.causal.agency/2024-05-03/IMG_1706.txt new file mode 100644 index 00000000..d325d518 --- /dev/null +++ b/www/photo.causal.agency/2024-05-03/IMG_1706.txt @@ -0,0 +1,4 @@ +a square window +in the centre of a concrete wall +covered in vines +that haven't started growing leaves again yet. diff --git a/www/photo.causal.agency/2024-05-03/IMG_1724.txt b/www/photo.causal.agency/2024-05-03/IMG_1724.txt new file mode 100644 index 00000000..2dd5bb3d --- /dev/null +++ b/www/photo.causal.agency/2024-05-03/IMG_1724.txt @@ -0,0 +1,3 @@ +a telephone pole +against a blue sky with some light clouds, +cables coming off it in each diagonal. diff --git a/www/photo.causal.agency/2024-05-03/IMG_1730.txt b/www/photo.causal.agency/2024-05-03/IMG_1730.txt new file mode 100644 index 00000000..ca51034b --- /dev/null +++ b/www/photo.causal.agency/2024-05-03/IMG_1730.txt @@ -0,0 +1,9 @@ +a selfie taken in +a particularly reflective window on the street, +giving everything a slightly offset doubled look +from the layers of glass. +I'm wearing a red and purple floral patterned dress +and a green jacket. +I have red hair +and I'm holding a canon DSLR +up to my face. diff --git a/www/photo.causal.agency/2024-05-03/IMG_1748.txt b/www/photo.causal.agency/2024-05-03/IMG_1748.txt new file mode 100644 index 00000000..29bc3a76 --- /dev/null +++ b/www/photo.causal.agency/2024-05-03/IMG_1748.txt @@ -0,0 +1,4 @@ +some kind of short tree +spilling over tthe top of an alley wooden fence. +its branches have thorns +and are just started to grow leaves. diff --git a/www/photo.causal.agency/2024-05-06/IMG_1951.txt b/www/photo.causal.agency/2024-05-06/IMG_1951.txt new file mode 100644 index 00000000..78fe46a7 --- /dev/null +++ b/www/photo.causal.agency/2024-05-06/IMG_1951.txt @@ -0,0 +1,12 @@ +the top cube of a brutalist house, +with one small window +in each the centre of each face. +the left face of the cube +has an overhang above +which continues down the side. +the concrete has large curved grooves +scattered over its surface. +the sun is hitting the left face, +shadowed by the overhang. +behind the cube is a blue sky +with scattered clouds. diff --git a/www/photo.causal.agency/2024-05-06/IMG_1969.txt b/www/photo.causal.agency/2024-05-06/IMG_1969.txt new file mode 100644 index 00000000..6276a710 --- /dev/null +++ b/www/photo.causal.agency/2024-05-06/IMG_1969.txt @@ -0,0 +1,7 @@ +some kind of black bird +in the grass +holding a grub of some kind +in its beak. +it has purple and green +in its feathers similar to a pigeon, +with some white streaks on its wings. diff --git a/www/photo.causal.agency/2024-05-06/IMG_1973.txt b/www/photo.causal.agency/2024-05-06/IMG_1973.txt new file mode 100644 index 00000000..b23e190b --- /dev/null +++ b/www/photo.causal.agency/2024-05-06/IMG_1973.txt @@ -0,0 +1,3 @@ +a black bird standing in the grass +with something small in its beak. +its black feathers are spotted with white. diff --git a/www/photo.causal.agency/2024-05-06/IMG_1996.txt b/www/photo.causal.agency/2024-05-06/IMG_1996.txt new file mode 100644 index 00000000..ddbc0a2b --- /dev/null +++ b/www/photo.causal.agency/2024-05-06/IMG_1996.txt @@ -0,0 +1,4 @@ +a standard issue city pigeon +viewed from the side, +standing atop a wooden fence +with a blurred brick wall behind it. diff --git a/www/photo.causal.agency/2024-05-06/IMG_1998.txt b/www/photo.causal.agency/2024-05-06/IMG_1998.txt new file mode 100644 index 00000000..42cf62cc --- /dev/null +++ b/www/photo.causal.agency/2024-05-06/IMG_1998.txt @@ -0,0 +1,3 @@ +a standard issue city pigeon +standing on the corner of a balcony +with the railing behind it. diff --git a/www/photo.causal.agency/2024-05-06/IMG_2009.txt b/www/photo.causal.agency/2024-05-06/IMG_2009.txt new file mode 100644 index 00000000..60518f52 --- /dev/null +++ b/www/photo.causal.agency/2024-05-06/IMG_2009.txt @@ -0,0 +1,4 @@ +a squirrel on the trunk of a tree, +its body facing down +and its head lifted towards the camera. +ones of its paws is stretched out to the side. diff --git a/www/photo.causal.agency/2024-05-06/IMG_2015.txt b/www/photo.causal.agency/2024-05-06/IMG_2015.txt new file mode 100644 index 00000000..48494b77 --- /dev/null +++ b/www/photo.causal.agency/2024-05-06/IMG_2015.txt @@ -0,0 +1,4 @@ +a standard issue city pigeon +on a telephone cable +in front of a brick wall, +looking directly at the camera. diff --git a/www/photo.causal.agency/generate.sh b/www/photo.causal.agency/generate.sh new file mode 100644 index 00000000..4b30db92 --- /dev/null +++ b/www/photo.causal.agency/generate.sh @@ -0,0 +1,211 @@ +#!/bin/sh +set -eu + +mkdir -p static/preview static/thumbnail + +resize() { + local photo=$1 size=$2 output=$3 + if ! test -f $output; then + # FIXME: convert complains about not understanding XML + echo $output >&2 + convert $photo -auto-orient -thumbnail $size $output 2>/dev/null ||: + fi +} + +preview() { + local photo=$1 + local preview=preview/${photo##*/} + resize $photo 25% static/$preview + echo $preview +} + +thumbnail() { + local photo=$1 + local thumbnail=thumbnail/${photo##*/} + resize $photo 5% static/$thumbnail + echo $thumbnail +} + +encode() { + sed ' + s/&/\&/g + s/</\</g + s/"/\"/g + ' "$@" +} + +page_title() { + date -j -f '%F' $1 '+%B %e, %Y' +} + +page_head() { + local date=$1 + local title=$(page_title $date) + cat <<-EOF + <!DOCTYPE html> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="alternate" type="application/atom+xml" href="../feed.atom"> + <title>${title}</title> + <style> + html { color: #bbb; background-color: black; font-family: sans-serif; } + figure { margin: 1em; padding-top: 0.5em; text-align: center; } + img { max-width: calc(100vw - 2.5em); max-height: calc(100vh - 2.5em); } + details { max-width: 78ch; margin: 0.5em auto; } + </style> + <h1>${title}</h1> + EOF +} + +photo_info() { + local photo=$1 + ExposureTime= + FNumber= + FocalLength= + PhotographicSensitivity= + eval $( + identify -format '%[EXIF:*]' $photo 2>/dev/null | + grep -E 'ExposureTime|FNumber|FocalLength|PhotographicSensitivity' | + sed 's/^exif://' + ) +} + +photo_id() { + local photo=$1 + photo=${photo##*/} + photo=${photo%%.*} + echo $photo +} + +page_photo() { + local photo=$1 preview=$2 description=$3 + if ! test -f $description; then + description=/dev/null + fi + photo_info $photo + cat <<-EOF + <figure id="$(photo_id $photo)"> + <a href="${photo##*/}"> + <img src="../${preview}" alt="$(encode $description)"> + </a> + <figcaption> + ${ExposureTime} · + ƒ/$(bc -S 1 -e ${FNumber}) · + $(bc -e ${FocalLength}) mm · + ${PhotographicSensitivity} ISO + <details> + <summary>description</summary> + $(encode $description) + </details> + </figcaption> + </figure> + EOF +} + +index_head() { + cat <<-EOF + <!DOCTYPE html> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="alternate" type="application/atom+xml" href="feed.atom"> + <title>Photos</title> + <style> + html { color: #bbb; background-color: black; font-family: sans-serif; } + a { text-decoration: none; color: inherit; } + </style> + EOF +} + +index_page() { + local date=$1 root=${2:-} + cat <<-EOF + <h1><a href="${root}${root:+/}${date}/">$(page_title $date)</a></h1> + EOF +} + +index_photo() { + local date=$1 photo=$2 thumbnail=$3 root=${4:-} + cat <<-EOF + <a href="${root}${root:+/}${date}/#$(photo_id $photo)"> + <img src="${root}${root:+/}${thumbnail}"> + </a> + EOF +} + +Root=https://photo.causal.agency + +atom_head() { + local updated=$(date -u '+%FT%TZ') + cat <<-EOF + <?xml version="1.0" encoding="utf-8"?> + <feed xmlns="http://www.w3.org/2005/Atom"> + <title>Photos</title> + <author><name>june</name><email>june@causal.agency</email></author> + <link href="${Root}"/> + <link rel="self" href="${Root}/feed.atom"/> + <id>${Root}/</id> + <updated>${updated}</updated> + EOF +} + +atom_entry_head() { + local date=$1 + local updated=$( + date -ju -f '%s' $(stat -f '%m' static/${date}/index.html) '+%FT%TZ' + ) + cat <<-EOF + <entry> + <title>$(page_title $date)</title> + <link href="${Root}/${date}/"/> + <id>${Root}/${date}/</id> + <updated>${updated}</updated> + <content type="html"> + EOF +} + +atom_entry_tail() { + cat <<-EOF + </content> + </entry> + EOF +} + +atom_tail() { + cat <<-EOF + </feed> + EOF +} + +set -- +for date in 20*; do + mkdir -p static/${date} + page=static/${date}/index.html + if ! test -f $page; then + echo $page >&2 + page_head $date >$page + for photo in ${date}/*.JPG; do + preview=$(preview $photo) + if ! test -f static/${photo}; then + ln $photo static/${photo} + fi + page_photo $photo $preview ${photo%.JPG}.txt >>$page + done + fi + set -- $date "$@" +done + +echo static/index.html >&2 +index_head >static/index.html +echo static/feed.atom >&2 +atom_head >static/feed.atom +for date; do + index_page $date >>static/index.html + atom_entry_head $date >>static/feed.atom + for photo in ${date}/*.JPG; do + thumbnail=$(thumbnail $photo) + index_photo $date $photo $thumbnail >>static/index.html + index_photo $date $photo $thumbnail $Root | encode >>static/feed.atom + done + atom_entry_tail >>static/feed.atom +done +atom_tail >>static/feed.atom diff --git a/www/photo.causal.agency/rsync.sh b/www/photo.causal.agency/rsync.sh new file mode 100644 index 00000000..957911d2 --- /dev/null +++ b/www/photo.causal.agency/rsync.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -eu + +sh generate.sh +rsync -av static/ scout:/var/www/photo.causal.agency |