No description
Find a file
randogoth 4efe975599 fix: recover one hotlinked image, retire the other eleven
Twelve images across seven articles were hotlinked from servers that no longer
exist, so they were broken on the live sites. Checked every one against the
Wayback Machine, patiently enough to trust the answer: an earlier pass appeared
to find seven, but that was a test treating an empty response as a hit.

One survives. visualberlin.org's p1010789, a 2011 capture of the projector set
up against Mannheim city hall during the Flimmerkiste wildscreening, is now a
local asset in flux.vision/content/library/ and the reference points at it.

The other eleven were never captured. Both dead domains are archived, so this is
not a gap in coverage: of 8,438 visualberlin.org URLs and 204 for mutanten.org,
only that one image is there. mutanten.org's archive does not reach back to its
fp-content era at all, which is where the Logan's Run stills lived.

So lostimages.py learns about dead hosts, which it matches rather than fetching,
because a build must not depend on the network and a dead host is a fact about
the world rather than about the document. The references stay in the Markdown,
as the existing ones do: the reference records what was there.

It matters more on the capsule than on the web. A browser shows a broken image
as a silent gap, but gemtext has no inline images, so every one becomes a
visible => link line and the page would advertise a dead host as somewhere worth
going. smolnet.py therefore strips them too, reading the same host list, since
it works on the Markdown source and never sees Pelican's output.

lostimages.py moves to the repo-level plugins/ directory beside smolnet. It was
shared already, with flux.vision reaching into tobias.raayoni-last.com for it,
and randogoth.com now needs it too; a shared plugin living inside one site was
the wrong shape for three consumers.

Left alone deliberately: the two mutanten.org links in mutantenkino-website.md.
That entry is about having built the site, so the link is its subject rather
than decoration, and a dead link does not make the record wrong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-06 11:04:28 +03:00
flux.vision fix: recover one hotlinked image, retire the other eleven 2026-10-06 11:04:28 +03:00
plugins fix: recover one hotlinked image, retire the other eleven 2026-10-06 11:04:28 +03:00
randogoth.com fix: recover one hotlinked image, retire the other eleven 2026-10-06 11:04:28 +03:00
tobias.raayoni-last.com fix: recover one hotlinked image, retire the other eleven 2026-10-06 11:04:28 +03:00
.gitignore Three sites, one directory each 2026-10-05 20:54:45 +03:00
justfile feat: add justfile recipe to kill backgrounded preview servers 2026-10-06 08:45:13 +03:00
README.md Three sites, one directory each 2026-10-05 20:54:45 +03:00

sites

Three domains, one directory each, one audience each.

Directory Domain Subject Audience
flux.vision/ flux.vision Kiritan Flux: media arts, VJ, performance, installations, 2003-2021 festival and art world
tobias.raayoni-last.com/ tobias.raayoni-last.com client work, portfolio, CV clients, employers, galleries
randogoth.com/ randogoth.com the technical work, six areas devs, retro and small-net readers

They were one site until October 2026. The split is the fix: four audiences were being handed one page, and a page that serves four audiences collapses into the only format that can hold unrelated things, which is a dated list.

sublunar.space is deliberately not here. It is a working blog with nine years and 440 commits of its own voice, and it keeps its own repo.

Building

All three are Pelican, with no shared build. Each stands alone:

cd flux.vision        # or tobias.raayoni-last.com, or randogoth.com
uv run --quiet --with pelican --with markdown -- pelican content -o output -s pelicanconf.py

Each directory has its own README covering its theme, its taxonomy and the traps specific to it.

articles theme notes
flux.vision/ 90 flux recovered from the Wayback Machine; closed, maintained not updated
tobias.raayoni-last.com/ 97 raayoni grid of tiles, light and dark
randogoth.com/ 41 bbs an ANSI bulletin board, 80 columns; mc-pelican is the fallback

Deployment

Built and served on bucur. A push triggers a webhook that builds the changed site and rsyncs it into place. Content does not trigger a system activation: the site derivations are flake packages, so a typo costs a Pelican run rather than a nixos-rebuild switch.

Shared conventions

  • No em dashes. Commas, colons, full stops or ·.
  • Flat slugs. {slug}.html on all three. Categories get reworked; slugs should not move.
  • No nl2br. The recovered bodies are hard wrapped at about 70 characters, so it turns every source line into a forced break. This has been fixed twice; do not add it back.
  • Lost images are handled at build time, not in the browser. The references stay in the Markdown because the reference records what was there; plugins/lostimages.py strips them from the output.
  • Check the built output, not the source. Several bugs here were invisible at a glance and obvious to a counter: forced line breaks that fell near the natural wrap, box drawing a column short, a config change that silently emptied every hotkey.

The working material

The inventory, the recovery pipelines, the pruned articles, the source archives and REFACTOR.md live outside this repo, at /mnt/data/Backup/sites-restructure-2026-10-05/. A clone is the three sites, not the argument that produced them.

That backup is worth keeping: the sort is not reproducible from the sites alone. inventory.tsv records why each of 266 articles went where it did, and _pruned/ is the only record of what was taken out.