How I manage photos 10 October 2024 on Krystian's Keep

I’m not a photographer and this post is targeted to non-photographers.

I think sharing photos with family and friends is an unsolved problem. Hear me out. Let’s say you’re at a family gathering. You and others take a few pictures. How will you share them with each other? Well, maybe you’ll use Google Drive or Dropbox or other service. You’ll create a new folder for the new album and put your photos there. If you’re in luck, others will send you their photos, and you can pull them into your folder. You’ll then share this folder with them. You’ll add their accounts if they have one, or create a special link and send it to them. Alternatively, you already have a folder that you’ve shared with others. In this case, you’d create a new folder for the album in this shared folder and put the photos there.

I’ve witnessed variations of this story many times. And there are a couple of problems with it. Who owns and takes care of the storage account? Will they keep doing it for years? What happens when the free space runs out? Who pays for more? What if multiple people share photos from the same event from different accounts? How do you aggregate them? How do elderly people access digital family photos? Do they need an app? Do they know how to use it? What if Google, Dropbox, etc. decides to lock you out of your account?

I think that to solve these problems we need to reach into the past when we didn’t all have pocket cameras and bottomless albums. My solution is to take responsibility for the photos. I feel that we’ve become intoxicated by the fact that we can take thousands of pictures without any consequences. And I think we need a rehab. We need a habit of organizing our photos and not taking so many of them that organizing them is a dreaded task. Remember your grandma that had all your family photos nicely sorted in albums? I think we could learn a thing or two from her.

After almost three years of intermittent experimenting and tweaking I think I have a solid system of storing, organizing and sharing photos. Let’s start with sorting. I keep my photos segregated in directories by year, month and album name. Album names are determined by directory names. E.g. photos from vacation in Japan are in 2023/2023-08 Japan and random photos from August 2024 are in 2024/2024-08. The limit of two levels of nesting makes it easy to browse and search, while keeping the number of child directories relatively small and easy to scan. Having a directory per album is also convenient for sharing. You can share the whole directory with somebody to share the album without selecting individual photos. There’s one more rule. Inside some album directories there’s a child directory named other. This directory is ignored most of the time and is never shared. It’s basically a trash directory. Photos that I rejected because they were not good or interesting enough. I delete them after some time to reclaim disk space.

Now hardware. I have a NAS based on Odroid H3+ with two 4 TiB IronWolf hard drives. They make up a mirrored ZFS pool, with a special dataset that’s only for photos. It’s periodically backed up to a similar NAS at my parents house. This photo filesystem is accessible after authentication via SMB from local network or from the internet through a WireGuard VPN. For photo ingest I use Rapid Photo Downloader.

However, SMB is mostly good for album management and ingest. It’s not good for browsing because of small but annoying delays when loading large photos even through a 1 Gbps link. It’s also not well-suited for sharing albums. For that I created photobrowser. It’s a lightweight web app that lets me browse all albums from my PC or phone. It uses the filesystem as an album database. Furthermore, it generates preview images, thumbnails and proxy video clips so that I can view the albums even with a slow internet connection. But the main selling point of it is the album sharing system. I can create sharable secret links and attach any number of albums to them. So I have one for my parents, one for my father’s side of the family, one for my mother’s side and more for my friend groups.

Photobrowser is also designed to run as multiple instances on the same machine. On my NAS there are two: one for me and one for my fiancé. Cumulatively, we have three photo libraries: one is mine (for my personal photos), one is hers (for her personal photos) and the third one is common (for our and some family photos). You might wonder how there are three libraries but only two photobrowser instances. There is a symlink to the common directory in each of our personal datasets and photobrowser follows it. It’s quite convenient because the name of the symlink is common, so common albums’ paths start with common/ (e.g. common/2023/2023-12 Christmas).

The most challenging part of writing photobrowser was generating the photo and video previews. Photobrowser stores the proxies next to the photos in special directories: .sh_thumbnails for proxy images and .sh_proxies for proxy clips (inspired by XDG Thumbnail Managing Standard). I wanted to generate them on the fly as photos are added to the library, so I used inotify. The hard part was handling the various events properly. Photos can be copied or moved into or out of the library or moved around inside the library. They can be deleted or renamed. The same goes for directories where the photos reside. All of these events must be handled perfectly, or the previews become out of sync with the photos. Fortunately, it seems to be working quite well with a few bugs already fixed and probably a few still waiting to be discovered and fixed.

I’m aware that this system doesn’t solve all the problems that I named above. But it’s proven to be convenient and useful. I already got some compliments from family members about how fast photobrowser is compared to the solutions they’re used to. I also got some bug reports from friends, which is not as supporting but admittedly more useful. My fiancé and I use it often to show or share our photos to family and friends. All in all, people were thrilled that someone finally made the effort to organize photos from events and were glad to have access to my photo library. See you next time!

Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~krystianch/public-inbox@lists.sr.ht [mailing list etiquette]

Articles from blogs I read

Neurodivergence and accountability in free software

In November of last year, I wrote Richard Stallman’s political discourse on sex, which argues that Richard Stallman, the founder of and present-day voting member of the board of directors of the Free Software Foundation (FSF), endorses and advocates for a ha…

via Drew DeVault's blog September 25, 2024

Status update, September 2024

Hi! Once again, this status update will be rather short due to limited time bandwidth. I hope to be able to allocate a bit more time slots for my open-source projects next month. We’re getting closer to a new Sway release (fingers crossed), with lots of help f…

via emersion September 20, 2024

What's cooking on SourceHut? September 2024

Hello everyone! It has been some time since we last wrote a “What’s cooking” for you. We’d like to resume this tradition as of this September. We haven’t been totally radio silent – you can get caught up on what’s been happening over these past two years rea…

via Blogs on Sourcehut September 16, 2024

Generated by openring