← Work (Case 01 · Delivered)

Gambar Lama

Bringing a family's 4,029 old photographs back to life

Role
Solo — the software, the colour work, the checking tools, the delivery
Stack
Python · OpenCV · OpenCL · stdlib HTTP
Year
2026
(01)

Two generations of family photographs — 4,029 prints across 54 albums — scanned, repaired and handed back as an archive the family can browse on any screen. The machine did two and a half hours of work. A person made every judgment call. Nothing in a single photograph was invented.

The problem

Restoring a family's whole photo collection costs either a lot of money or a year of evenings. Most people quietly give up.

Two generations of one family’s photographs sat in 54 albums. Prints from the seventies through the nineties, losing a little more colour every year. Nobody was going to fix them, because fixing them is the kind of job that never has a good week to start.

Scanning turned out to be the easy part. It produced 4,029 files with discoloured tints, washed-out colour, grain and patches of mould. A restoration shop charges per photo, so an archive this size becomes a four-figure bill. By hand, at ten minutes each, it’s about eight months of evenings.

So the job was to make restoring an entire family archive a one-day task instead of a one-year one — without letting a computer invent anybody’s face.

1992, restored 2026. Drag the line to compare the original scan with the delivered photograph.

What I assumed — and what the photographs taught me

Three assumptions. The first two were wrong, and being wrong is where the design actually came from.

I assumed that removing the discolouration would restore the photo. It doesn’t. Taking a colour cast off also takes real colour with it, because no amount of arithmetic can tell a magenta stain from a magenta baju. The first version I delivered came back technically clean and strangely flat — correct photographs that no longer looked like memories. Measured across 200 of them, nine in ten had left my pipeline with less colour than they arrived with. I had built something that made the family’s photographs worse, very accurately.

I then assumed the most faded photos needed the most colour put back. It is a tidy theory. I measured the albums to confirm it and found the barely-faded ones were exactly as flat as the badly-faded ones, which meant there was nothing to be proportional to and my tidy theory was scrap. The honest answer was duller and it worked: give colour back gently to everything, and let each photograph’s own measurements decide whether it should be left alone.

The one assumption I kept: a computer must not be trusted alone with a family’s memories. That single rule shaped everything downstream. Nothing is ever invented automatically, and anything that fills in damage is proposed by the machine and approved by a person, one repair at a time.

Nine in ten came out flatter than they went in. Accurately.

How I solved it

The machine does the mechanical work. A person keeps the judgment calls — and the software is built to waste as little of their attention as possible.

A photograph goes in and comes out the other side measured, grouped with its album, colour-corrected, repaired and checked. The original scans are physically impossible for the software to overwrite. Every photograph keeps a written record of exactly what was done to it, so the whole archive can be rebuilt, identically, years from now.

gambarLama control screen showing albums, corrections and colour measurements

Machine time is cheap. A person’s attention is not, so the checking screens are built around spending as little of it as possible. Photographs arrive grouped, the obviously-fine ones settle in bulk, and each round of answers shrinks the next. In the end, 4,029 photographs came down to 759 human decisions — 612 of them mould repairs, each one approved by eye.

One rule came out of watching people use it: silence is never a yes. Every approval is a real click. An earlier version treated “didn’t say anything” as “looks fine”, which is how six hundred approvals went unrecorded and the system kept politely asking the same questions forever.

Review screen showing strips of photographs with simple correction controls

The colour fix that came out of those two wrong assumptions works per photograph. Every one gets measured on its own. Faded ones get colour back. Vivid ones get left alone. Black-and-white prints get skipped entirely — and it found all 38 of them by itself, which was lucky, because I had not thought to make a list.

A night procession, half a century of fading. Colour restored to what the print had — not what a computer imagines it should be.

Speed made it a service rather than a stunt. The full archive took two and a half hours on one PC, after moving the heaviest cleanup step onto the graphics card roughly halved it. Start it in the morning, review it after lunch.

4,029photographs
54albums
2h 28mof machine time
759decisions a person made
612repairs checked by eye
38black‑and‑white prints found on its own

What the family got

A folder that opens on any computer, in Malay first, that nothing can switch off.

The archive arrives as a folder of pages that opens in any web browser — albums, years, search, Malay first with an English toggle. Nothing to install, nothing to subscribe to, nothing that stops working when a company shuts down a server. It was built for a television and a grandmother as much as for a laptop.

Delivered archive viewer showing family albums in Malay

Every file was checked before it left the house — because “it looked fine in the folder” is not a standard you apply to somebody’s family.