Screencap of my photo database
How many pictures?

I like taking pictures. How many pictures?

Well, you know, some.

$ find ~/pix/cam -type f | wc -l
10167
$ du -sh ~/pix/cam
47G     ~/pix/cam

That does not include pictures taken on my various mobile phones. And how many have I printed? Well, I think I have less than twenty framed. And I made two photobooks, and I’m not sure when I looked in them last. 😬

I try to finesse them down, weed out the crap (there’s a lot of bad pictures), crop, enhance, etc. And that’s hard and is a never-ending job and I’m just looking at them on my computer then, and my wife doesn’t see them at all.

So, let’s show ’em off. This is a solved problem right? Right?

The problem

My requirements:

  • Get photos from my network - no cloud thanks. I’m not uploading them to download them again, my data is my own, and my broadband is metered1
  • Show them big
  • Show them in hi-res
  • Show them with a nice viewing angle
  • Show some EXIF data - location or date/time2
  • Ideally, read my digikam database which already has a lot of metadata extracted already

Wrong. There’s one or two getting better now but there’s quite a few there below 10 inches and/or 1080p. And everything appears to offer the cloud or pissing about with a USB drive.

The solution

I’ve tried to solve this once or twice before. Not, perhaps, nicely.

SELECT ar.specificPath || a.relativePath || "/" || i.name AS path, i.id
FROM Images AS i
    JOIN Albums AS a ON i.album=a.id
    JOIN AlbumRoots AS ar ON a.albumRoot=ar.id
WHERE i.id NOT IN (SELECT imageid FROM ImageTags WHERE tagid='ignore' OR tagid='delete' OR tagid='exist')
    AND (lower(i.name) LIKE '%.jpg'
    OR lower(i.name) LIKE '%.nef')
ORDER BY RANDOM() LIMIT 2;

Here’s the query from a Django app I wrote that would select pairs of images and then ask the viewer to select a preference. My attempt was to (oh so very slowly3) bubble-sort out my favourite images.

This was never particularly serious but did allow me to work out the what-even-is-art of my pictures. Some I keep because I took a picture of something important, to remember it. Some because they are pretty. And some for both reasons.

And I still wasn’t looking at the pictures! I visited this again a few years back with a RPi Zero and made a solution that I basically forgot, and then made the same mistakes on the one I’m about to describe here. It showed pictures but sloooowly rastered them to a screen and I found it irritating.

Then over Christmas, after “some” months in lockdown, I decided to take an old laptop with a nice-enough screen, and do better…


  1. I love AAISP as they’re very competent but they’re not cheap. ↩︎

  2. My wife can normally geo-locate an image from the timestamp on it within about 60s. I don’t know how. ↩︎

  3. That’s On^2 performance, a good few million pairings! ↩︎