Thoughts for a project displaying family photos

A little over 20 years ago I started a project to collate photographs of my family. I hand coded the HTML and used simple CSS to create web pages I could view locally in my browser (I never had any intention of making this anything more than local). For various reasons, the project faltered and I didn’t get near to completing it.

Fast forward to early 2020 and I realised TiddlyWiki might be a better tool and, again, I made some reasonable progress; however, a combination of the COVID epidemic and ‘stuff’ intervened to slow things down. But thinking back, the main issue was that it became difficult to keep track of the links between all the individuals and all the photos – doing it all manually was increasingly cumbersome.

I’m now thinking of rekindling the idea… in the last six years I’ve learnt more (although still a novice) and maybe using fields will greatly help manage some of the information. My thoughts are that I will have:

  • a tiddler for each photograph with fields holding information about who, when, where, what of the photograph and anything else relevant (physical dimensions of the original, etc.)
  • a tiddler for each person with fields holding basic genealogical information and some sort of transclusion that automaticlly displays all the photographs in which the individual occurs (sorted into date order, so far as possible)
  • any names that occur in the description of a photograph are also linked to the tiddler for that person

Difficulties I envisage include:

  • fuzzy dates for some images – such as ‘summer 1971’, ‘early 1960s’, ‘before/after 1930’, etc.
  • ensuring names are consistent so links to family members in a photograph’s description work

I’m sure that’s not exhaustive.

I have to admit that I’m still not entirely sure what I want to get out of this project, apart from an easier way to view the ‘who, when, where, what’ of my family photographs. This is not intended to be a genealogical project (I currently use The Master Genealogist for that), rather I’d like to focus on the timeline of photographs in which an individual is found and to be able to visualise the links between family members over the generations.

So, I’m wonderng whether anyone else has done something similar and how you achieved your goals – generalities are fine as I’m not looking for detail at present. Any other thoughts from the community bearing in mine that my skills are basic and I’m easily confused.

FWIW, I have a few photographs back to the 1860/70s (and I know who they are!) although they’re mostly C20th. I’ve already scanned quite a number.

Many thanks.

During the Covid lockdowns I wanted a new solution for my genealogy. My two primary goals were: 1. Private (ie offline) and 2. Data and how data entities are related was import to me. I didn’t want write a genealogy app, rather I went looking for a solution I could configure. I found that solution in Tiddlywiki.

For the longest time I started building a solution just for me----no plans of sharing. However, this community was so helpful that I elected to share it.

This link is to online help that is also an instance of the solution. In the sidebar menu you’ll find under Media a Photographs menu item to see how photos are presented/managed.

You don’t need to use it for genealogy—you could simply define people, places, and photographs.

I’m close to releasing v1.0.05 (lots of bug fixes and new features).

I’m up for any discussions about genealogy and genealogy software—especially how it applies to Tiddlywiki.

Craig

Fuzzydates

There are opportunities in tiddlywiki to handle fuzzy dates, although the tiddlywiki time stamp is deterministic. I suggest developing an ontology and standards as to how to date such images eg sometime in a given year 1/1/year then for such store the fuzzy description. The fuzzy description acts as a flag that the date is fuzzy, if nessasary use tags or alternative tags to organise further.

Name consistency

Perhaps use people tags, people tiddlers as tags but add the alias plugin.

In many ways this depends on your data and use case to limit tedium while building. There are many tips and tricks so do return here.

The null case

I must point out other photo organisation tools can identify faces and do a lot more towards automatic organisation.

Modern images already contain exif data you may wish to access, or even add to your scanned info.

@clsturgeon many thanks – I’ve seen you mention Memory Keeper before but never really investigated it until now. The options for photographs look interesting, after a brief look this evening, but I’ll spend a bit more time investigating in the next couple of days… lots to think about!

@TW_Tones thanks for your thoughts. I’d wondered if using a generic date for something fuzzy would work so I’ll think about that some more.

Nearly all the photos I’m considering are pre-digital (so now scanned) but if TW could read the exif data from an image file that would be interesting. Is that a thing? I don’t really want to get into automatic face recognition so I hadn’t thought about it but thanks for the suggestion.

I will consider these challenges a litte more and return :nerd_face:

I assume you are using external images?

Yes, external images – if by that you mean they’re separately saved. At the moment none of my scans have any exif data and I’d have to add it manually.

Within a tiddlywiki one uses the canonical field to externalise images, they then only load into memory when viewed otherwise the wiki could quickly demand too much memory.

Search here for exif to find prior work, a Quick check with an LLM Large Language Model suggests solutions can be written if not already available, including external images but there are some qualifications such as same origin requirements.

I suppose the question is do we need tiddlywiki to be the source of truth or the images or both.

For example import or extract exif data in images and place in tiddler fields, but what if you add additional data to the image tiddler would we risk or write such data back to the image?

[Noter] I am having some success extracting exif data in internal jpeg to the tiddler, but my LLM is not “too bright”

Sorry to go a little off-topic on this but I was in the same boat recently, wanting to host my own photo gallery.

I don’t believe TW is the best way to solve this problem, and there is mature, free and open source software that will do it better in my view without requiring a load of work. You can meet all but one of your scenarios, which I’ve written below.

I was able to meet nearly all your scenarios with digiKam and PiGallery2.

My workflow

I tag for faces using digiKam. It takes some getting used to but the key is to add EXIF tags and can create XMP ‘sidecar’ files (i.e. sitting next to the image file, with the same filename), and has lots of tools for working with them.
The program makes it easy to tag faces as it builds an internal machine learning model to automatically recognise faces based on the photos you put into it. So the more you do, the easier it gets. If you have faces already tagged then all the better.

EXIF has lots of metadata fields you can use to describe the situation, but I’ll grant that you can usually only do it for one photo. Personally I copy the exact same description across all associated photos. You can use labels to group them together, as well as a folder hierarchy, which represents your albums.

I sync my photos to my server. Because of the ML model, it’s important to keep the photos on your main computer as well that you’ll be using digiKam on. I hope there is enough storage space for that.

On my server, I have self-hosted PiGallery2.
Unlike most other such self-hostable software, PiGallery2 relies on the tags and folder hierarchy to lay out its photos. So you can simply point it at the folder and with a couple of tweaks, the whole thing “runs itself”. The interface is pleasant as well. Here is what mine looks like:

The result


This is an exact reflection of my folder hierarchy.

The “Albums” tab can be used for any custom queries you set up. If something is better organised through metadata than a folder hierarchy, this is where it can go. You can query to your heart’s content, e.g. face+location+X tag but not Y tag.

And “Faces” is a listing of people.
All names of “Faces” must be unique, so I will typically write them as <NAME> <LOCATION>.

(I’d post a screenshot, but realised I’d have to blur everything)

The only feature you cannot meet with my workflow is:

However, you may be able to create a PiGallery2 extension that links back to your TiddlyWiki if you have profiles for those people there, or maybe a static HTML page as before. The page just has to match that person’s name, so it could be ant.me/people/<NAME>. Or maybe be a simple router that redirects to TiddlyWiki and slightly alters the name if your data model is different there.
Or maybe even embed TiddlyWiki directly through a GET request for example. It would probably be more complex to do it the other way, to call the photos from TiddlyWiki’s side.

Conceptually, I think it makes more sense to store the data in the image itself. It will also make it more resilient over time as EXIF and XMP are where most programs look for metadata about images, and prevent another difficult tech migration in future, when it comes time to pass these photos on to family members. So if you can, I would recommend you keep maintaining the metadata in standard image formats in addition to what you write into TiddlyWiki.

Indeed… I’m only just beginning to realise the utility of exif records. I guess I’m thinking that everything should be with the image and if any additional information needs to be added to the tiddler then it should go to the exif. I have tons of physical photographs that are not annotated so I don’t know the whole story they tell, although I can usually identify the people but dates are more difficult (hence fuzzy dates!).

A plea to everyone – get your older generation to annotate those ‘snaps’… it really is a case of delayed gratification but future you will thank past you…

I’d not considered a canonical field but that’s something I’ll pursue.

Thanks for your continued input.

Yes, I fully agree as I’ve written to @TW_Tones already.

There are some different ideas here that I will investigate. I’m not sure I’m up to the PiGallery2 route but I’ll add it to my TiddlyWiki of interesting things to remember!

Thanks for your thoughts and input.

Lots of photos means the single file of your Tiddlywiki will become large and may take longer to save. Perhaps a wiki that stores pages individually might be more practical.

Image tiddlers can use the _canonical_uri field to refer to external images. This eliminates the need to store base64 encoded image data within the TiddlyWiki file.

Agreed, as you and @EricShulman suggest this would rapidly become…

not going down that road…