Photographic metadata

Volume 9, Issue 85; 13 Sep 2006; last modified 08 Oct 2010

After two weeks of pretty solid hacking in the evenings and the wee hours of the morning, I have an application for editing photographic metadata. I'm down to the details now, I think. With a little creativity, I'll even be able to make it run as a demo on the web. Maybe.

To write it took three months; to conceive it—three minutes; to collect the data in it—all my life.

F. Scott Fitzgerald

I've been thinking about photographic metadata for a while now. My archive of digital photographs is easily in excess of 10,000 images. Ten thousand essentially uncatagorized images. Because they are easily sorted by date, I can usually find images associated with events: vacations, anniversaries, birthdays, working group meetings (if I know the date of the meeting), etc. But finding that picture of Ralphie that I took on the deck last summer (or was it the summer before?), or a particular image of the Eiffel Tower is much more difficult.

I need to catalog my images, or at least start cataloging new images so that the problem doesn't get any worse. I wrote JpegRDF to help, but being able to access the metadata isn't enough (and I've started taking raw images so it doesn't even help as much as it used to). I need to be able to easily add metadata, and eventually search it.

I've looked at a few applications that claim to do this, but none of them seemed satisfactory. Some stored the data in some database I couldn't (easily see how to) access. Some only allowed keywords or similar limited metadata. Most seemed unable to deal with “offline images”. I can store all the metadata for 10,000 images on my laptop, but I can't practically store all the images there.

I've made a couple of abortive attempts at writing something in this space. A long time ago, I tried something with Perl and Tk. More recently, I tried to use the “scripts” functionality in Nautilus. Nothing seemed quite right.

Inspired in part by Rails, I set out a few weeks ago to write it as a web application. Actually, I intended to write it with rails, but some version incompatibility between the current rails framework and the examples I could quickly find online stymied me. I did write it in Ruby though. Sweet language.

It's really been great fun. This is the first serious (to the extent that it qualifies) web application I've written in the twenty-first century. It has a reasonably sophisticated Ruby back end, uses OpenID for user logins, has a UI built in the browser with HTML, forms, and Javascript , and even manages a little AJAX for validation.

Here's what it looks like in use:

The selection of metadata (where, who, what, subject, title, and event in this case) is fully configurable. My choices, and some aspects of them, can be seen on the “properties” page:

Coming up, I'll write a few more essays about this project maybe make it possible for you to test drive it on the web. And catalog a whole lot of pictures, of course.


This morning I updated the "Images" and "Thumbnails" classes and a few other details so that I can view and edit the metadata not only for local images but also for Flickr sets. That's 90% of the work required to make a public demo. Of course, I expect the remaining 10% to take 90% of the effort too.

—Posted by Norman Walsh on 14 Sep 2006 @ 01:13 UTC #

So how are you going to identify the photos Norm?


BTW, looking very cool!

I wonder if you could make the configuration UI more user-friendly; not so much the layout, but the actual natural language labels and such? E.g. would it be possible to make it so that any generic user would understand how to configure new properties without having to understand RDF per se? Language like "predicate" and "cardinality" is rather abstract after all.

—Posted by Bruce on 14 Sep 2006 @ 01:29 UTC #

Thanks, Bruce. I agree, the properties page needs work. I'll try to do that when I get around to implementing a planned generalization of property types.

—Posted by Norman Walsh on 14 Sep 2006 @ 02:45 UTC #

A bit late to tell you now you've 'rolled your own', but the greenstone digital library system seems to do much of what you ask; data is in easily accessed XML, and 'offline images' are easy to do. As I said, a bit late, but it might be worth a look.



—Posted by stephen on 14 Sep 2006 @ 10:30 UTC #

That's awesome! Can't wait to get my hands on it...

—Posted by Rich on 14 Sep 2006 @ 10:33 UTC #

Norm - This looks like your usual fine work. I wish half the stuff I supported at work was as well thought out and put together as your projects.

Will you be releasing the code? I've learned alot from taking apart and following what you've done with other stuff that you've released and made available. I don't always understand it, but I always learn a number of things.

Thanks for sharing what you're up to.

—Posted by Derek Dees on 19 Sep 2006 @ 03:56 UTC #