Wed Mar 5 11:20:39 EST 2008
Whispering ghosts...
As a digital packrat, my archives are replete with echoing memories. Of places, of times, of people. Each reminding me of what was, what could have been, but most of all, what is, and how little it has changed.
How is it we run so hard from the past, yet get stuck in the present, unable to move towards a new and different future?
Perhaps this is that source of quiet desparation that Thoreau went on about. The knowledge that there is so much more out there; The knowledge that eludes your grasp; the knowledge that your grasping is ineffectual.
I still have that feeling that I was meant for something more than this current drifting medocrity, but hell if I know what it might be. Without a direction, the future is an accidental reaction rather than a willful action. It took me a long time to learn that even inaction is itself willful.
Still, despite my many mistakes, there are few regrets. But even those were necessary; who can say what I might (not) have learned? Then again, have I really learned anything?
I certainly hope so. I know less than ever before.
Tue Feb 19 22:00:46 EST 2008
Photo Organizer 2.35
Yeah, Photo Organizer 2.35 came out two weeks ago, but I'd figure I should toot my own horn a little bit.
A lot of work went into making client/event management more, well, manageable. Multi-day events and the ability to directly tie clients to events tie into date-based searching to make it easy to find out just what you took for any given point in time.
Also new is pluggable authentication, two-step registration, sortable folder/album listings, much (much) faster exporting, plus a large pile of under-the-hood changes to facilitate future features. Oh, and an Italian translation.
v2.35a will probably be released this week with a small pile of bugfixes. Most of these bugs were found while testing out changes made to the development trunk.
On that note, there are a lot of cool things in the pipeline for v2.36; the most visible of which is a new theme! Rickard Olsson got the ball rolling and contributed a dark theme, which I then mangled a bit and committed. When combined with pretty URLs and per-folder thumbnails, things look pretty slick. It's funny how sometimes just how effective superficial changes can be.
Tue Feb 19 21:40:38 EST 2008
Some eye candy for all my loyal readers
Well, it's been a while. So much to at least monthly updates. Let's make up for lost time, hmm?
Continuing the trend, the sun came up on New Year's day.
More kiteboarding.
It's now the Year of the Rat.
Beautiful and talented dancers at a street party:
Because I felt like it:
And life goes on. Not that you'd know it by looking at these lazy bums:
Wed Dec 12 19:05:00 EST 2007
Drink for the Cure!
Okay, this whole "Support breast cancer" thing has finally got out of hand. At first, this lunacy was limited to traditionally female markets; that is things like beauty products, cookware, and such things, occasionally punctuated with high profile events like "walk for the cure". Not too long ago, they broke out into the mainstream. We're seeing things like "breast cancer M&Ms" and "breast cancer deodorant", for example. Sheesh.
Not too long ago, it officially got of hand. I was picking up some stuff at our local Sam's Club, when I spied this little gem:
Yup, that's right, Give the Gift of Life, and Drink for the Cure!
While I think these efforts are well-intentioned (if a little self-serving on the part of the companies jumping on the bandwagon) there's a far, far better method of making guys care: If we cure breast cancer, there are more boobies to go around, and that's an undeniably good thing.
(Oh, it's "Support Breast Cancer Research", you twits. I've lost count of the number of times I've seen people sporting stickers proclaiming that they support breast cancer. Don't they proofread these things?)
Personally, I'm holding out for Smoke for the Cure. At this rate, it'll be another two months, one week, and three days.
Fri Nov 23 19:33:09 EST 2007
11th Paralounge Drum Gathering
Last weekend was the 11th Paralounge Drum gathering, held in the Spirit of the Suanee Music Park outside of Live Oak, Florida.
I was my usual trigger-happy self, and took lots of photos. The last few tims I was paying more attention to individual faces, but this time most of the interesting stuff was taken at night, around the fire pit.
My favorite pictures from the weekend, however, had neither people nor fire.
7:30am, looking out over Cypress Lake. Purty.
Fri Nov 23 19:15:28 EST 2007
More ES1 gutenprint goodness
Gutenprint has accepted my second patch, so it now has a working Selphy ES1 raster driver. Unfortunately, it still requires a custom print spooler, but I'm now one step closer.
es_print_assist.c is now updated to properly poll the printer status, so it can now take the raw dump from gutenprint and shove it out to the printer with minimal delay.
The third step will be to rework it so that it can deal with an arbitrary file on stdin, properly parsing the dumpfile to determine length and paper type.. and for step four, adapting it into a proper CUPS backend. Yay.
Thu Nov 15 13:25:43 EST 2007
One patch accepted, one more to go..
The fine folks behind Gutenprint accepted my patch to support the Canon Selphy ES series, but thanks to a boneheaded mistake on my part, what got committed didn't actually work. So there's a fixup patch pending.
The real fun, however, is the need to write a custom CUPS backend to properly spool data to the printer. I have a little helper app (es_print_assist.c) that batches the writes properly, but it dumbly waits instead of properly polling the printer for its status. CUPS is a lot more complicated to figure out than gutenprint, so further progress will be much slower.
Meanwhile, Photo Organizer 2.35 is coming along nicely; I'm at the point where I have to decide whether to go into -rc stabilization now, and save the next round of invasive changes for 2.36, or go ahead and make one or more of those changes now.
In particular, I want to be able to have PO auto-generate full-resolution JPEGs from the source RAW images. On the surface this is straightforward, but I want to implement this properly, by genericizing the "generate a down-scaled image and apply this set of transforms to it" code. This way additional sizes would be trivially easy to add, as would some of the changes I have in mind to make watermarking much more useful. Progress has been slow, but I'm almost done getting the low-level bits in place.
Anyway. Tons of stuff to do, never enough time..
Sun Nov 11 09:38:31 EST 2007
The joy of photo printers (and free software)
For some time now, I've wanted to pick up a compact photo printer to take with me on assignment, with the blessings of those I am taking photographs for. A little under two weeks ago, I finally did, purchasing a Canon SELPHY ES1.
It's a sweet little printer, using the old technique of dye-sublimation to create true continuious tone prints, rather than glorified halftoning that even the best inkjet printers use. Not only do the prints come out looking indistinguishable from what a photo lab would produce -- they're water- and smudge-proof.
I did my homework; apparently the majority of Canon's dyesub printers were supprted under Linux via the gutenprint drivers, but not the ES1 specifically. No big deal, it should just work. Even in the absence of direct Linux printing, I could print from the camera directly or shove a memory card into the printer. All in all, things should Just Work.
They didn't.
My first test involved taking a few converted-from-RAW JPEG images out of my archives, copying them to a CF card, and trying to print that. I got a rather crass Incompatible JPEG Format error message out of the printer. Interestingly my camera also errored out on those images, complaining that The image could not be displayed.. After some heavy digging it turns out the printer makes heavy use of the EXIF data, and if it's not present (or in many cases, simply modified!) the printer gives up. WTF? Why can't Canon document what it needs in a JPEG rather than just displaying a useless error message?
As I shoot RAW images, not being able to convert, crop, tweak, then print a random image via a CF card seriously sucked. So, I'll try Plan B: Print the images from the camera via the universal PictBridge interface.
No good.
Apparently my Nikon D200 camera can't print RAW images. WTF? Even if the camera could only print JPEGs, the NEFs have a full-res embedded JPEG image in the file that would print just fine. Sigh. Onto Plan C: Print directly from my laptop.
No good.
Apparently the SELPHY ES1 is incompatible with Canon's older dyesubs. To some extent I expected this, as it uses a different ribbon/dye pack, but that's mostly because the printer's physical engine is oriented differently -- and it's also why I bought this model over the others. Thanks to this incompatibility, I can't print from Linux either. Onto Plan D: Print from Windows. Surely that will work, right?
Sort of.
The printer worked just fine from Windows... but the prints were all quite dark. Too dark. After some digging, I found the driver's options panel and knocked the brightness up a few notches.. and while not perfect (yellow-ish color balance, mostly) the images were finally acceptable. But this would mean I'd need to boot into Windows to print, which really sucks as the rest of my RAW workflow is Linux-based.
Fortunately, the printer is USB-based, which means that thanks to a wonderful tool called Snoopy2, it's trivial to get a full dump of the entire communications chain between the printer and its driver. Armed with this dump, I could figure out the protocol and hack support into gutenprint.
After an initial learning curve, I succeeded. I was able to generate a binary dump indistinguishable from what Windows generated (except, of course, for the image data). So, cackling with glee, I proceeded to dump this out to the printer.
No good.
The device write() apparently blocked on the very first chunk of data. After much experimentation, I discovered that the logical chunks of data needed to be broken apart and written separately. The initialization sequence and the Yellow, Magenta, and Cyan image data all needed to have pauses between them (the printer sends a status message when it's ready) or the printer's USB interface locks up altogether. Sigh. So I split apart my dump file into its logical chunks, and dump them separately to the printer.
Success!
Not only did it print, but the brightness and color balance looked great. Yes, the images look much better than what their Windows driver manages to put out.
Ah, I love Free Software. When it doesn't JustWork(tm), you can fix it so it does.
All that remains is getting my patch integrated into upstream gutenprint, and figuring out a way to intellently spool the printer data in a CUPS-compatible manner.
Oh, this was the first image I printed:
I took it last weekend at Paradise Beach. I have no idea who this guy is, but he was out kite-surfing on a windy but otherwise beautiful day.
Oh, as a footnote -- about a month before I ordered my ES1, Canon announced its successor models, the ES2 and ES20. Same basic specs, but when untethered the printers had fancier (and faster) feature sets. I needed a printer for next weekend (November 16-18) and nobody had a useful ETA on when they'd show up, so I bought the ES1 at a discount. On the 9th, four days after I received my ES1, everyone suddently got them in stock. Sigh.