Ingest · Develop · Print
400024
Insert a card.
Click nothing.
A few minutes later a folder appears on the desktop. Not the four thousand frames from the weekend — the twenty‑four best, chosen, developed, with a film rendering already applied.
It is what it was to pick up your envelope at the lab.
02 — The loop
You never saw your four thousand frames
You saw twenty‑four, in a paper sleeve you opened on the kitchen counter. The edit had already happened — in the camera, in the price of film, in only having thirty‑six chances.
Digital gave me unlimited latitude and took that away. Getting it back means the whole chain runs unasked: card detection, import, filing by capture date, culling, development, and a real folder in a real place.
- Detecta card is mounted
- FileYYYY/YY-MM-DD, original names
- Cullthe session narrows itself
- Developone consistent rendering
- Hand overa folder on the desktop
Most photo software is built to be opened. This one is built so you don't have to.
03 — The rule
The folder on disk is the source of truth
Not the application's database. That sentence was written in the README before the first line of code, and everything else follows from it.
- Originals
- Never modified. Not once, not on export.
- Metadata
- A standard
.xmpbeside each frame — readable by Lightroom, Capture One, darktable, immich, and by anything at all in fifteen years. - The index
- Disposable. Delete it; it rebuilds from the folders.
If Reveal disappears tomorrow, the archive stays navigable in the Finder. The software was built so you could stop using it.
04 — The darkroom
A darkroom, written in Rust
The development engine does not simulate a contrast slider. It simulates the chain — and it speaks the chain's vocabulary:
DEVFFP 0069.NEF
It sounds like nostalgia. It isn't. A physical model doesn't do what you ask — it does what it does, and you learn it. Fifteen years of the job taught me to want exactly that.
Film and digital get separate engines, because they don't share a vocabulary. Forcing both into one interface produces a tool that lies to both.
05 — The room
Details a photographer won't forgive
The interface follows light
Light, dark, or system. Not a preference: the surround changes how you judge an image. Grading a dark frame against a white panel lies to you about contrast and density. A print is viewed on a neutral wall, not a red tablecloth.
Focus removes the rest
Blur, full desaturation, an even wash across every screen. Not for effect. At the two‑hundredth frame of an edit, what's left in peripheral vision decides what you can still see.
Invisible in a feature list. Exactly what decides whether a tool survives a whole evening.
06 — Where it stands
A personal project, in development
There is nothing to buy and nothing to sign up for. The Rust and Tauri rewrite is now the one I use every day — the Swift version it replaced is retired.
What's downloadable below is an alpha build: unsigned, Apple Silicon only, rough edges included. I don't get to hide behind a version number nobody sees.
This page exists so the work is visible, not so it can be sold.
Download (macOS, alpha)SourceWhy a photographer writes his own softwareFrancis Fontaine
Built with Standard. Rendering byspektrafilm‑rs.