So I just tagged off the second sprint of my code (I'm using a vague adaptation of the scrum methodology here just to track progress).
I figured I'd play with the icons and stuff a little, so that it looks a little more "working" and a little less "being hacked upon". Most of the changes were under the hood
There's an email that I saw lately that said something along the lines of "Threaded programming is hard to get right. It's not that you are too dumb to get threads right, it's that we all are". I don't believe it. I just think that you need to think about how to make a program threaded at the beginning and then stop worrying about it. So I discovered that the main thing that happened when I decided to use both halves of my processor (I've got a Hyperthreaded P4) to process thumbnails was that I found a bug in the layer that bounces events from the thumbnailer threads down to a single main GUI thread. I also hooked it up so that when it is sitting idle, it'll quietly scan your drive for pictures without thumbnails and generate the thumbnails, which is really super-cool for increasing the perceived speed of the application.
Um, so I'm going to try and do more dogfooding of it instead of using ZoomBrowser. A fully loaded icon cache should help the situation somewhat because GraphicsMagick is about 10 times slower than it ought to be... so I'm probably going to have to write at least a fairly minimalist image handling library.