diff options
Diffstat (limited to '')
-rw-r--r-- | www/causal.agency/index.7 | 4 | ||||
-rw-r--r-- | www/causal.agency/style.css | 4 | ||||
-rw-r--r-- | www/photo.causal.agency/.gitignore | 2 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-10/IMG_0832.txt | 6 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-10/IMG_0850.txt | 6 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-10/IMG_0852.txt | 4 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-10/IMG_0858.txt | 6 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-10/IMG_0859.txt | 6 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-10/IMG_0865.txt | 2 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-10/IMG_0890.txt | 9 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-14/IMG_1054.txt | 5 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-14/IMG_1058.txt | 6 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-14/IMG_1066.txt | 10 | ||||
-rw-r--r-- | www/photo.causal.agency/2024-04-19/IMG_1158.txt | 6 | ||||
-rw-r--r-- | www/photo.causal.agency/generate.sh | 211 | ||||
-rw-r--r-- | www/photo.causal.agency/rsync.sh | 5 | ||||
-rw-r--r-- | www/text.causal.agency/043-little-blessings.7 | 78 | ||||
-rw-r--r-- | www/text.causal.agency/Makefile | 1 |
18 files changed, 368 insertions, 3 deletions
diff --git a/www/causal.agency/index.7 b/www/causal.agency/index.7 index d29c1a6b..1e019574 100644 --- a/www/causal.agency/index.7 +++ b/www/causal.agency/index.7 @@ -1,4 +1,4 @@ -.Dd November 28, 2023 +.Dd April 18, 2024 .Dt CAUSAL.AGENCY 7 .Os "Causal Agency" . @@ -29,6 +29,8 @@ and experience more magic. \(em .Lk https://text.causal.agency words \(em +.Lk https://photo.causal.agency photos +\(em .Lk /list/ mailist . .Pp diff --git a/www/causal.agency/style.css b/www/causal.agency/style.css index ee218533..265c62c2 100644 --- a/www/causal.agency/style.css +++ b/www/causal.agency/style.css @@ -12,8 +12,8 @@ code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn, code.Cd { font-weight: bold; font-family: inherit; } div.head, div.foot { display: flex; justify-content: space-between; } -.head-ltitle, .foot-left { flex: 1; } -.head-vol, .foot-date { flex: 0 1 auto; text-align: center; } +.head-ltitle, .foot-date { flex: 1; } +.head-vol { flex: 0 1 auto; text-align: center; } .head-rtitle, .foot-os { flex: 1; text-align: right; } html { font-family: monospace; line-height: 1.25em; } 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/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 diff --git a/www/text.causal.agency/043-little-blessings.7 b/www/text.causal.agency/043-little-blessings.7 new file mode 100644 index 00000000..957c6289 --- /dev/null +++ b/www/text.causal.agency/043-little-blessings.7 @@ -0,0 +1,78 @@ +.Dd March 24, 2024 +.Dt LITTLE-BLESSINGS 7 +.Os "Causal Agency" +. +.Sh NAME +.Nm little blessings +.Nd life's +. +.Sh DESCRIPTION +today I went out to go around. +run some errands and do some shopping. +along the way I was given +several of life's little blessings. +. +.Pp +while walking on ste-cath +between berri and complexe desjardins, +there was a somewhat disheveled man +walking in the same direction and singing. +he had a beautiful voice. +he was singing a sad song in french, +and he sung it well and enunciated every word. +. +.Pp +in the mcdonald's at complexe desjardins, +while waiting for my order, +there were what appeared to be +a teenager and her younger brother, +who must have been +looking at the display of +current happy meal toys. +the teenager was playing smash or pass, +to the amusement of the younger one. +they got ice cream +and ate it across the room from me downstairs. +. +.Pp +later, +taking the 24 home from atwater +carrying my new vacuum cleaner, +the bus got lost. +I think the driver missed the stop +and tried to compensate +by turning north onto peel +and stopping there. +but then he had to keep going up peel. +he turned right onto docteur-penfield, +which just brings you further up the mountain. +when it met des pins, +he turned left and pulled over, +asking for guidance over the radio. +we got moving again, +back towards peel. +that's how I ended up +on a 24 +.Dq sherbrooke +east, +facing west on des pins. +it was actually quite scenic. +and amusing. +I was in no rush. +. +.Pp +after getting back onto sherbrooke, +the bus had to take another detour, +this one planned. +so my ride on the 24, +which normally only drives on sherbrooke, +ended up going on peel, +docteur-penfield, +des pins, +de bleury, +ren\('e-l\('evesque +and saint-laurent. +it was a very exciting bus trip. +. +.Sh AUTHORS +.An june Aq Mt june@causal.agency diff --git a/www/text.causal.agency/Makefile b/www/text.causal.agency/Makefile index 44ce676c..a8683a20 100644 --- a/www/text.causal.agency/Makefile +++ b/www/text.causal.agency/Makefile @@ -42,6 +42,7 @@ TXTS += 039-apologies.txt TXTS += 040-sound-memory.txt TXTS += 041-albums-2022.txt TXTS += 042-comfort-music.txt +TXTS += 043-little-blessings.txt all: colb ${TXTS} |