A little off-kilter: gedankenfotografie.ch is live

The brief for this site was a single sentence. What came of it: a wall of more than 300 photographs that reshuffles on every visit, in three languages, with no cookie banner – and an editing surface Sabine Zgraggen runs herself.

ConsultingHarald Mühlhoff 6 min read

Home page of gedankenfotografie.ch: the wordmark in white and magenta on a black ground, below it “Zürich · Sabine Zgraggen” in green and a dense wall of photographs in tiles of varying size.

Sabine Zgraggen heads Catholic hospital and clinic chaplaincy in Zurich — a theologian and a manager. gedankenfotografie.ch is her private site: she has been photographing for years — street, church interiors, portraits, current events — and writes a short thought to go with each picture. More than 300 images and a few dozen small texts had been sitting on a website-builder page that did them no justice. Ours is a friendship that began an age ago on fotocommunity; so it feels fitting that I used my current stay in Switzerland to give gedankenfotografie.ch a fresh start, with Claude’s help. Here is a look behind the scenes.

A single sentence as the brief

Most projects start with a list. This one started with a sentence:

“It should feel urban — not sweet, not ornate. Classical on one hand, street art on the other … universal, open … a little off-kilter. No pastels.”

A sentence like that is not vague talk. It is remarkably precise, provided you take it seriously. “Not sweet” means no soft shadows, no rounded corners, no gradients. “Street art” means the ground is asphalt rather than paper: the pictures hang on a black wall. “Classical” means her texts sit on pale sheets that look pasted on, set in a quiet serif. And “no pastels” is a hard technical instruction: the site’s two signal colours — a spray-can magenta and a construction-fence green — are taken from her own photographs and never lightened.

Even the “off-kilter” is there literally: the wordmark and the small labels sit a good degree off axis. Visitors who have asked their system for reduced motion get them straightened out.

A wall that reshuffles on every visit

Sabine had one concrete wish for the home page: every visit should produce a fresh arrangement drawn from all the pictures. That is exactly what it does — 60 tiles, shuffled anew each time, with tile size following the shape of the photograph. The line underneath, “Reload — a new mosaic”, is the button: simply a link back to the same address. No JavaScript, no counter in the URL.

Nothing else is on that page. No preamble, no closing words, no teasers — the wall is the page. That was Sabine’s call, and in hindsight the best decision of the project.

What went wrong on phones — and how we found it

The work overview on gedankenfotografie.ch: series titles in capitals with the number of pictures, and on “KI Träume” a green “AI-generated” badge, each followed by a row of thumbnails on a black ground.

Shortly after launch a report came in: on a phone, a column on the right kept staying black. At a desk there was nothing to see — the bad case sat precisely in between.

Rather than guess, we counted. The cause was in the collection itself: 74 per cent of the pictures are landscape. A landscape shot was given a double-width tile; across the three columns of a typical phone width it takes two of them and leaves a gap beside it that only an upright picture can close. Those ran out — and from there the third column stayed empty. At two columns it never happened; at ten it barely did.

The fix was one line: only every second landscape picture now gets the wide tile. Between 375 and 430 pixels of width, the share of empty cells fell from 15 per cent to 2, and the wall became a third shorter along the way — 36 rows instead of 54 for the same 60 pictures. I describe this at length because it is the heart of how we work: you cannot see a layout problem, you measure it. Without counting I would have adjusted an aspect-ratio threshold and merely moved the fault elsewhere.

Every picture gets an address of its own

The old site had six addresses for everything. Today every single picture has its own — more than 300 of them, plus 46 series with a page each. That is the biggest gain: a picture can be sent, linked or shown in a service without anyone having to scroll and hunt for it. In the large view you page through the series — with arrows in the image, with the arrow keys or by swiping; the arrows never point into the void, and at the end the sequence wraps.

The curation also supplies an alt text for every picture — the description read aloud to someone who cannot see the image. I do not want to oversell this: usually it is the series title, and only where a picture carries a title of its own in the curation does it get something of its own. Better than “IMG_2831” by a long way — but the form cannot yet maintain these per picture, and that is where the work goes next.

Three languages from day one

German, English, Italian — not retrofitted but there from the start, each with its own addresses and properly marked up so search engines can match the versions to one another. A button in the editing surface drafts English and Italian from the German text; Sabine reads the drafts and decides. I have written about how that works in more detail elsewhere.

Publicly there is one sentence about it, in the imprint, in all three languages: that the writing happens in German and that the other versions are at times produced with machine assistance. Discreet, but stated.

Sabine maintains the site herself

A detail of the editing form: at the top the “suggest a translation” button, below it the “Title · DE” field holding “KI Träume” across the full width, and indented beneath it the “Translations” block with “AI dreams” in English and “Sogni di AI” in Italian. The same staggering then begins again for the image description.

This was a requirement, not a bonus: she creates her “picture of the week” and her series herself, uploads the images and writes the texts. The form is built accordingly — German first, across the full width, and only below it, more quietly set, the translations. Language tabs would have been the obvious route and were deliberately not chosen: when translating you want to see the original, all the more so when checking a draft.

A post can also carry a date in the future. It then waits — together with its pictures, which stay out of the mosaic until then. It remains reachable at its own address, so a preview can be passed around before it goes public.

The originals stay with her

One clear instruction from Sabine: her original files are not to be downloadable from the web. The upload therefore scales every picture down to web sizes — 1600 pixels at most — and discards the original afterwards. What sits on the server is the derived version, nothing more. Re-encoding also strips all metadata along the way, including location and time of capture.

What it adds up to

The home page now loads about a third of what the old one needed, across fewer than a third of the requests. Every photograph is pre-computed into lean modern formats and into exactly the sizes a device needs — that is the whole trick.

And what is not there belongs to the result just as much: no tracking, no analytics, no cookie banner. The site counts nobody, so it has no need to ask permission. For a diary of pictures and thoughts that is the fitting answer — and the most pleasant one for visitors.

gedankenfotografie.ch runs encrypted in CARECOM’s Azure hosting, on the same technical foundation as the other sites in the family: a shared library for things like sign-in, sitemap, fonts and the “back to top” button. An improvement to the foundation benefits all of them.

An unhandled error has occurred. Reload 🗙

Rejoining the server…

Rejoin failed… trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.