Tuesday, December 18 2007

Apple Aperture: sluggish but useful

[Update: Grrr. Aperture won’t let you updateor create GPS EXIF tags, and the only tool that currently works around the problem only supports interactively tagging images one at a time in Google Earth. Worse, not only do you have to update the Sqlite database directly, you have to update the XML files that are used if the database ever has to be rebuilt.]

I’ve played with Aperture in the past, but been put off by the terrible performance and frequent crashes. Coming back from Japan, though, I decided to give the latest version a good workout, and loaded it up with more than a thousand image files (which represented about 850 distinct photos, thanks to the RAW+JPEG mode on my DSLR).

On a MacBook with a 2GHz Core Duo and 2GB of RAM, there’s a definite wait-just-a-moment quality to every action I take, but it’s not long enough to be annoying, except when it causes me to overshoot on the straighten command. The fans quickly crank up to full speed as it builds up a backlog of adjustments to finalize, but background tasks don’t have any noticeable impact on the GUI response.

My biggest annoyance is the lack of a proper Curves tool. I’m used to handling exposure adjustments the Photoshop way, and having to split my attention between Levels, Exposure, Brightness, Contrast, and Highlights & Shadows is a learning experience. I think I’ve managed so far, and my Pantone Huey calibrates the screen well enough to make things look good.

I have three significant wishes: finer-grain control over what metadata is included in an export, real boolean searches, and the ability to batch-import metadata from an external source. Specifically, I want to run my geotagger across the original JPEG images, then extract those tags and add them to the managed copies that are already in Aperture’s database. Aperture is scriptable, so I can do it, but I hate writing AppleScripts. I could have geotagged them first, but for some reason MacOS X 10.4.11 lost the ability to mount my Sony GPS-CS1 as a flash drive, and I didn’t have a Windows machine handy to grab the logs. [Sony didn’t quite meet the USB mass-storage spec with this device; when it was released, it wouldn’t work on PowerPC-based Macs at all, and even now it won’t mount on an Asus EEE]

For the simple case of negating a keyword in a search, there’s a technique that mostly works: the IPTC Keywords field is constantly updated to contain a comma-separated list of the keywords you’ve set, and it has a “does not contain” search option. This works as long as none of your keywords is a substring of any other.

I’ll probably just write a metadata-scrubber in Perl. That will let me do things that application support will never do, like optionally fuzz the timestamps and GPS coordinates if I think precise data is too personal. The default will simply be to sanitize the keyword list; I don’t mind revealing that a picture is tagged “Japan, Hakone, Pirate Ship”, but the “hot malaysian babes” tag is personal.