About

A personal gallery of film photographs -- scans kept at full quality and served from my own corner of the internet, rather than re-compressed by someone else's (kind of).

Althought I've shot so many picture on my never-ending stream of iPhones I keep buying, none of them affect me the way a single analog photo my dad took in 1988 does.

Some of my best memories from growing up involve sitting on the floor and looking at my father's old photo albums.

Part of it is nostalgia, sure. But part of is inherent to the scarcity the medium and how it makes you stop -- no endless chances, no instant feedback.

I'm a software engineer (and medical doctor) and naturally I wanted to have fun architecting this software. Silvergrain relies completely on Cloudflare infrastructure by design. Assets are hosted on R2 and served over an dedicated domain, data is saved on a D1 database (glorified SQLite, basically). We rely on Clouflare image transform features for resizing images on-demand.

The final bit of nerdiness is the use of OKLAB. A computer can use so many different ways to represent colors, with sRGB being the more common one. Due to different tradeoffs, OKLAB is much better in tasks like selecting which colors are dominant in an image. I use a OKLAB-based clustering algorithm to find these colors, which results in very nice non-muddy dominant colors.