Hacking on Photohub...

I’m not entirely sure if it was a waking dream, a real genuine earthquake (I checked quake.usgs.org and didn’t see anything) or somebody clomping around and causing the floor to shake, but thought I felt an earthquake the other day while sitting in bed trying to sleep.

And I realized that I wasn’t dogfooding Photohub nor using it to manage my photos. Which means that I’m not making backup disks of my photos, which is bad given that I’ve always been a little suspicious about the chances of a desktop hard drive surviving a good earthquake.

So I switched gears from Rm and worked some more on Photohub so that I could get it in better order… as well as started to crank out more backup disks.

It’s nice to have a transactional data store (using sqlite3) for the various pieces of metadata so that I don’t need to worry nearly as much about what crashes when I’m working on stuff.

I got quite far quite fast by using GraphicsMagick to do the image management because I recognize that writing an image processing library is one of those pieces that is likely to trap programmers into spending too much time writing the library and not enough time getting useful things done. But GraphicsMagick (and also, to paint a wide brush, ImageMagick) kinda suck. I had to hack at the C++ interface to enable some stuff that’s there in the C version but not the C++ version and kind of wonder about how why some design decisions were made in many areas. I’m not impressed with how IPTC, EXIF, and ICC are implemented, either.

Plus, the performance is pretty bad. ExactImage is significantly faster… except that ExactImage is GPL and so far I haven’t “contaminated” my code with any GPL libraries and figure I’ll keep it that way until I’m sure what license I’ll release my code under. Right now, the speed of image loading is barely acceptable.

I may switch from GraphicsMagick to ImageMagick simply because it looks like ImageMagick is doing better at attracting mind share. I think the end answer may be that I just need to write my own library to do the hard image transforms and write dedicated native support for a few image formats (Probably TIFF, JPEG, RAW, and PNG) so that I can better extract the metadata.