Behind the scenes
Surveillance ad absurdum
Cameras in public spaces have become a common occurrence. Companies and governments film everything and everyone. Where enough cameras are, movements can be tracked, people can be analyzed, behaviour gets sorted.
Meanwhile continues the story where no story can be, because the data comes from different places around the world. The tool is still tasked to discover a pattern where no pattern exists. It is looking into the dark and seeing faces, writing stories about them.
Once a day, at 14:00 Europe/Zurich
The tool pulls still images from every camera regularly and tries to find people and things. Everything the cameras noticed since the last entry is summarised and handed to a large language model, together with the previous entry itself, so that the diary carries on rather than starting from nothing each day. If the last entry looked forward to something, this one is asked to say what came of it.
The twelve cameras
| Diary | Where | Frame | Published by |
|---|---|---|---|
| The Old Harbourcalm · harbour | Reykjavík harbourEurope | 400×224 | Windy Webcams |
| The Circusbusy · crossing | Piccadilly Circus, LondonEurope | 352×288 | Transport for London found via Windy Webcams |
| The Squarebusy · square | Sechseläutenplatz, ZürichEurope | 960×256 | NZZ / Roundshot found via Windy Webcams |
| The Jettycalm · harbour | Manadhoo, MaldivesAsia | 400×224 | Windy Webcams |
| The Riverbusy · river | Krung Thon Bridge, BangkokAsia | 400×224 | Windy Webcams |
| The Airport Roadbusy · road | Haneda, TokyoAsia | 400×224 | Windy Webcams |
| The Western Roadbusy · road | Lincoln Road, AucklandOceania | 400×224 | Windy Webcams |
| The Kona Roadcalm · shore | Kailua-Kona, Hawai'iOceania | 400×224 | Windy Webcams |
| The Causewaybusy · road | Stanley Park Causeway, VancouverNorth America | 480×288 | DriveBC |
| The West Gatecalm · gate | Yellowstone National Park, West EntranceNorth America | 960×540 | US National Park Service |
| The Harbourcalm · harbour | Baie-D'Urfé Yacht Club, MontréalNorth America | 960×540 | Baie-D'Urfé Yacht Club found via Windy Webcams |
| The Portbusy · road | Port of MontevideoSouth America | 400×224 | Windy Webcams |
All of them are cameras their operators put on the open web on purpose. Nothing private is used, and nothing is reached that its owner did not publish.
Two kinds of sound, both optional
Each entry comes as a track in three parts. Two presenters open it, say which day and which of the three entries this is, and hold one thing back. Then the entry itself is read. Then the same two talk it over and settle whatever the opening withheld. The opening is built from one of six shapes, rotated so that no two entries in a row start the same way, and each episode closes with a thank-you from one of the two — alternating, so whoever signs off this time does not sign off the next.
The talk afterwards is commentary rather than a recap, and it is measured against the entry: a draft that runs longer than the entry it discusses is thrown away. It gets three subjects at most, four or five lines each, and it is pointed at whatever the sightings mark as new — something never seen before, a regular that failed to turn up, a near miss, an object that keeps reappearing. A quiet ordinary day gives it nothing to say, which is the intended behaviour.
All three voices are gpt-4o-mini-tts, chosen over better-sounding voices because it can be directed: the reading is told to be dry, patient and unhurried, and the two presenters are given separate temperaments. The script comes from the same model that wrote the entry, working from the entry and the sightings under it. The presenters can only discuss what is in those notes, they are held to the same rules as the writing, and a draft that calls a figure "he" or "she" is thrown away and asked for again: nobody here knows anything about these figures beyond what they were wearing.
The twelve places can also be heard rather than read. Every camera gets a voice, pitched by its place in the eastward order, audible only while the sun is up there and chiming when something is found. It is made in the browser, opt-in, and silent until asked.
None of these cameras carries sound. Nothing you hear is a recording of anywhere: it is either the entry being spoken, the two synthetic voices discussing it, or the site's own numbers turned into tones. Inventing the noise of a harbour we cannot hear would undo the point of the rest of it.
The one thing that is not from a camera
Every entry looks for something good that really happened in one of the twelve places, on the day those hours belong to. Not the bright side of a bad event — no rescues, no recoveries, no fires brought under control — but a plainly good thing: something opened, finished, came back, was given, was celebrated. The entry then has to find what it genuinely has in common with what the cameras saw and say so in one sentence, without announcing that it is doing it.
It is found by search rather than written from memory, and it is kept only if it comes with a link. Without a paid key it reads the places' own local news feeds instead, and may only choose from what those feeds really published. Each entry looks at four of the twelve places, rotating, so different episodes end up somewhere different. If nothing can be sourced, the entry goes out without one. The diary is allowed to have nothing to report; it is not allowed to invent something.
What is found is kept, with the mission behind it — what the ship is for, what the building is for. Later entries are given the earlier good things and may reach back to one when today's rhymes with it, and if a story has actually moved, the search follows it up rather than starting again. Nothing about what became of them is guessed: an entry may remember a ship, but it may not decide that the ship has sailed.
Publication dates are the weak point. Some outlets sit behind a check that answers this server with a refusal rather than a page, so a date is sometimes inferred rather than confirmed. Where that is the case the entry says so next to the link.
Where it falls over
- London is 352×288. That is everything Transport for London publishes. Cropping to the action rescues a surprising amount, but a face is never more than a smudge, and the descriptions stop at clothing colour and vehicle type. No model can recover detail the camera never collected.
- Zürich is a rooftop panorama, 15696 pixels wide. Handed over whole, every person in it becomes a speck, so a fixed slice of the square is cut out and the detector is run at double its usual size. It finds the café parasols reliably and the people under them less so.
- The harbour lens dews over at night. Between roughly midnight and sunrise the Montréal camera can fog completely. Nothing is found, so the diary records nothing, and the entry is told to treat an empty harbour as part of the day rather than a hole to fill.
- The detector is ordinary. yolo11s.pt at 0.3 confidence misses small and distant figures and occasionally finds a bus in a billboard. The change-detection rule hides most of the flicker. It does not hide all of it.
- Small models embellish. The guardrails catch invented objects, stock phrases and the surveillance register. They do not catch a model deciding that a bus horn sounded softly. These entries are descriptive writing built on real observations. They are not a record of fact.
- Montréal city centre is not available. The city's own camera endpoint has been frozen since March 2024, its open-data camera set is no longer public, and the provincial service declines to talk to this server at all. The yacht club at the west end of the island was the one that answered.
So far
- frames looked at
- 35897
- diary lines
- 9309
- of those, described
- 2705
- entries written
- 16
Python 3.12 · Ultralytics · Ollama · FastAPI · SQLite · APScheduler. One process, doing very little, very patiently. Back to the diaries →