<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet href="/style/browser.xsl" type="text/xsl"?>
<essay xmlns="http://docbook.org/ns/docbook"
       xmlns:xlink="http://www.w3.org/1999/xlink"
       xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
       xmlns:dc='http://purl.org/dc/elements/1.1/'
       xmlns:dcterms="http://purl.org/dc/terms/"
       xmlns:gal='http://norman.walsh.name/rdf/gallery#'
       xmlns:foaf="http://xmlns.com/foaf/0.1/"
       xml:lang="en"
       version='5.0'>
<info>
<title>Photographic metadata</title>
<volumenum>9</volumenum>
<issuenum>85</issuenum>
<pubdate>2006-09-13T17:02:07-04:00</pubdate>
<date>$Date: 2006-09-14 05:58:41 -0400 (Thu, 14 Sep 2006) $</date>
<author><personname>
<firstname>Norman</firstname><surname>Walsh</surname>
</personname></author>
<copyright><year>2006</year><holder>Norman Walsh</holder></copyright>
<abstract>
<para>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.</para>
</abstract>
</info>

<epigraph>
<attribution><personname>
<firstname>F. Scott</firstname><surname>Fitzgerald</surname>
</personname></attribution>
<para xml:id='p2'>To write it took three months; to conceive it—three minutes;
to collect the data in it—all my life.</para>
</epigraph>

<para xml:id='p1'>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.</para>

<para xml:id='p3'>I need to catalog my images, or at least start cataloging new
images so that the problem doesn't get any worse. I wrote 
<link xlink:href="/2005/projects/jpegrdf">JpegRDF</link> to help, but
being able to access the metadata isn't enough (and I've started taking
<wikipedia page="RAW_format">raw images</wikipedia> 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.</para>

<para xml:id='p4'>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.</para>

<para xml:id='p5'>I've made a couple of abortive attempts at writing something in this
space. A long time ago, I tried something with
<wikipedia>Perl</wikipedia> and <wikipedia page="Tk_%28computing%29">Tk</wikipedia>.
More recently, I tried to use the “scripts” functionality in
<wikipedia page="Nautilus_%28file_manager%29">Nautilus</wikipedia>.
Nothing seemed quite right.</para>

<para xml:id='p6'>Inspired in part by <wikipedia page="Ruby_on_Rails">Rails</wikipedia>, I
set out a few weeks ago to write it as a web application. Actually, I intended
to write it <emphasis>with rails</emphasis>, but some version incompatibility
between the current rails framework and the examples I could quickly find online
stymied me. I did write it in
<wikipedia page="Ruby_%28programming_language%29">Ruby</wikipedia> though. Sweet
language.</para>

<para xml:id='p7'>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 <wikipedia page="Openid">OpenID</wikipedia> for user logins, has
a UI built in the browser with HTML, forms, and
<wikipedia>Javascript</wikipedia> , and even manages a little
<wikipedia page="Ajax_%28programming%29">AJAX</wikipedia> for
validation.</para>

<para xml:id='p8'>Here's what it looks like in use:</para>

<mediaobject role="flickr"><!--Image metadata-->
  <imageobject xlink:href="http://www.flickr.com/photos/ndw/242378261/">
    <imagedata fileref="http://static.flickr.com/80/242378261_d6e7d1cde3.jpg"/>
  </imageobject>
</mediaobject>

<para xml:id='p9'>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:</para>

<mediaobject role="flickr"><!--Metadata properties-->
  <imageobject xlink:href="http://www.flickr.com/photos/ndw/242378357/">
    <imagedata fileref="http://static.flickr.com/58/242378357_674e7becfd.jpg"/>
  </imageobject>
</mediaobject>

<para xml:id='p10'>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.</para>

</essay>
