All posts by John Goerzen

The Best Photo Printing Services

When I first got a digital SLR camera a few years ago, I spent some time evaluating photo printing options. I sent a set of test prints to several different companies, and wound up deciding to use Shutterfly for my photo printing.

It’s been some time since then, so I figured it was about time to re-evaluate options.

There are three main things to consider when obtaining prints of photos: cost of prints, quality of prints at delivery, and longevity of prints. Many people look only at cost, and those that look past cost rarely look past quality at longevity. Longevity (or permanence) is, in my opinion, the most important factor to consider. But let’s look at all of them.

Longevity

All color photo print technologies fade or otherwise degrade over time. There are several main things that can cause this: exposure to light, exposure to gases (especially ozone), and exposure to humidity. The impact of these different items varies by print technology, paper, and process.

Longevity: Traditional Photo Paper

Most services such as Shutterfly, Snapfish, Ofoto, as well as retailers such as Walmart, Target, and Walgreens print on traditional photo paper.

Historically, traditional photo paper has had terrible fading characteristics. Typically, old photos exposed to light — for instance, hanging on a wall underneath a light bulb or in the sun — will exhibit severe fade towards yellow or magenta. Modern papers are much better, but you will still not want to leave them directly in the sun or under lights.

Over at TPR, you can find several papers analyzing this. Perhaps the most interesting are test of digital prints and image permanence: comparing the technologies.

To attempt to summarize, what you see is that of the two common consumer-grade photo papers, Kodak Royal and Fuji Crystal Archive, the Fuji paper has better permanence. However, the pro-quality Kodak Professional Supra Endura is better than either of them by a significant margin. The photo papers didn’t really have a problem with humidity, and not much of a problem with ozone.

Longevity: Inkjet

So what about inkjets and laser processes? The main thing I learned from my research is that there is a tremendous amount of variance here. When looking solely at top-quality inkjet papers and inks, they ranged everywhere from having little bits of them flake off after a few months to doing better than any of the photo papers. This variance occurred even with similar papers from the same manufacturer.

As far as light exposure is concerned, every inkjet paper tested by TPR did better than Kodak Royal. Some fared about the same as Fuji Crystal Archive. And some even beat out Kodak Supra Endura.

But look at the ozone exposure test and you see a far different picture. All of the photo papers did really well, though suprisingly Supra Endura was the worst of them (though the scale is so small here that the difference is pretty minimal).

Not one of the inkjet papers came even close to that, and some faded so fast that they couldn’t even make it halfway through the test.

As far as humidity is concerned, it barely impacted the photo paper prints at all. Inkjet impacts were still mostly small, but also were mostly more impacted than the photo paper.

Longevity: Laser

And finally, how about laser prints. There was huge variety here. An HP printer they tested faded so fast it couldn’t complete the light exposure test, while a Konica-Minolta fared better than Kodak Supra Endura in one test. In another light exposure test, they performed about the same as the photo papers. Ozone had little effect on the laser papers, except for the Dell test, which faded so fast they had to abort the test early. Humidity also had little effect on the laser prints.

Longevity: Other Examples

Brett Wilson did some interesting experiments with photos hung in front of a window as well. Wilhelm Imaging also has done some research in this area, though they are done using fluorescent lights only, which is prejudicial in favor of inkjet papers and against photo papers.

For the ultimate in longevity, true black and white photo paper is well-regarded.

TPR also has a report covering different lacquer and other finishes often applied to prints to improve their longevity.

Longevity: Conclusions

With the exact right combination of inkjet paper and ink, you can get a print that will last exceptionally long. Some inkjet paper and ink combinations have really poor longevity characteristics, however, as do the laser papers.

Photo papers, especially Kodak Supra Endura, but even Fuji Crystal Archive, will last quite awhile as well, and are probably the best storage if kept in dark conditions such as an album.

Print Quality

When looking at print quality, I’m concerned with correct color balance, saturation, cropping, consistency, sharpness, contract, and detail in both dark and light areas — the typical things you’d look for.

Printing inkjet prints at home leaves all this up to your printer, inks, papers, and you, so we can’t really compare meaningfully.

Back when I looked at it, Shutterfly and Ofoto did the best. Walmart, Walgreens, dotPhoto, and many of the other online sites were really too poor to even bother with. Ofoto had a bit of a yellow tint to it, while Shutterfly did pretty well.

Most of the reviews of the major sites I’ve seen lately rank Shutterfly or Snapfish at the top in terms of quality. Many also rank Ofoto/Kodak near the top.

Walmart and Walgreens produce consistently bad results, and I only use them if all that matters is speed. If you ever read a review where somebody says that they get good results from one of those places, find a review where somebody has a better idea what they’re talking about.

Besides your mass-market sites like Shutterfly and Ofoto, there are also some slightly more expensive sites. The two best-known are mpix.com and adorama.com. Mpix is a division of Miller’s Professional Imaging, a pro lab. Mpix is basically a website where you can submit photos in the way you would to one of these other sites, and they can do their thing. Their standard rate includes human color correction on every print, but they offer a cheaper rate if you don’t need that. Their standard paper is Kodak Pro Supra Endura (the one that ranked highest in longevity tests), and the options go up from there. They also offer printing on true black and white paper, as well as wrap-around canvas and other such options.

I’ve sent some work their way and have been exceptionally happy with the result. Everything from the color of the prints down to the packaging shows extreme care and attention to detail. Among the reviews that cover mpix — many don’t — it almost always comes out at the top of the pack, easily beating out Shutterfly and Snapfish. It can be more pricy (though sometimes actually cheaper, since shipping is flat-rate with them), though not significantly.

Adorama is also sometimes mentioned. Most people seem to prefer mpix over adorama, but some prefer adorama. It’s a bit cheaper when you don’t need color correction for some prints, but sometimes — right now, for instance — closes for weeks at a time to observe Jewish holidays. It didn’t seem to be enough for me to bother.

Cost

Perhaps the easiest to figure out is cost, since websites typically list it right there for you.

High-quality inkjet prints are by far the most expensive option. I looked at 4×6 prints. Using the high-quality paper/ink combinations that did well in the TPR tests, and when buying supplies in bulk to get the best possible discount, it’s still 25 cents or more for a single 4×6 print. That’s with doing all the color work yourself, and not even figuring in the cost of the inevitable experimenting with getting the software set up right and the wasted prints when ink gets low. It also doesn’t figure in the cost of the printer.

At mpix, if you do your own color correction, it’s 19 cents per print, plus shipping. Prints are on Kodak Professional Supra Endura Shipping is a flat rate of $3 for 50 or fewer 4×6 or smaller prints, or a flat rate of $5.95 for USPS Priority Mail for anything else. They offer FedEx at an additional cost, which maxes out at a flat rate of $12.75 for overnight shipping. Some items such as framed canvas prints are more expensive.

Other options at an additional cost include color correction by a human, metallic paper, Ilford B&W paper, etc. There are also some more typical pro-lab options: red-eye removal by a human, custom retouching, etc.

At Shutterfly, a 4×6 print goes for 15 cents. You can get them as low as 10 cents if you buy a pre-paid plan of 600 prints for $60. Shipping varies based on the number of prints, starting at $1.79 for up to 10 prints, ranging up to $21 for 500 prints, with 3 cents per print after that. Priority and express mail is available at an additional charge. Shutterfly’s standard paper is Fuji Crystal Archive.

At Snapfish, a 4×6 print goes for 9 cents. You can get them as low as 8 cents if you buy a pre-paid plan of 250 prints. Shipping at Snapfish follows a complicated formula, but is generally approximately the same as Shutterfly. Though if you print more than 595 prints, watch out for the 10 cents per print overage fee. They don’t state what paper they use. Recent reports seem to suggest that it’s Fuji Crystal Archive, but some reports claim it’s Kodak Royal.

My Conclusions

I’m planning to switch most of my prints to mpix — their higher quality and cheaper shipping offset their higher per-print cost for me. Also, I plan to try out Snapfish and see what sort of quality I get from them for things where quality isn’t really that critical.

One Hundred

Today, as I was riding my bicycle home from work, I noticed that the road maintainer had been by on the dirt and sand roads near our house. Unfortunately for me, he left a few sections of road with deep sand, and I almost wiped out several times. I ride a bike with narrow road tires that doesn’t deal well with that.

But I’m not the first one to have a problem with roads.

A hundred years ago, the “brethren to the south” were having trouble getting to the community’s main church, Alexanderwohl. Back in the days before paved roads, or heavy road-maintaining machinery, it took time and endurance to travel the distance even on good roads. A group of them started holding weekly Sunday Schools in local schoolhouses. Eventually, after much discussion, they decided to build a church, and it was completed in 1908 — Tabor Mennonite, more than 4 miles from Alexanderwohl!

Tabor thrived over the years, though not without difficulty. Everything from how to shelter members’ horses during services to what do to about the weighty social and political issues of the day were discussed and documented in church minutes. The church sent people out as missionaries, planted new churches, and supported several young pastors just starting out. In 1938, they expanded their building, and in 1965, replaced it entirely.

Tonight our weekend of centennial festivities began. It started with a prelude played on the church’s first organ — now about 90 years old if memory serves. Its current owner was tracked down, it was brought to the church, and still sounds wonderful. Tomorrow we will have music and activities outdoors under a tent, and all our living former pastors will be around, with a drama and meal in the evening. Then on Sunday, the big day with singing choirs (and a work commissioned for this occasion), each former pastor giving a short (we hope) message, a potluck (of course!), and the opening of the cornerstone.

It’s been 6 years in the planning. I’ve spent the last couple of years collecting photos and other material for the archives and for the coffee table-style book we published for the centennial, and others have put in lots of hours too.

Sunday’s worship service will conclude with singing the “Mennonite Anthem“, also known as “606” from its number in an old hymnal. It will be a capella as is tradition for this piece. (Click for MP3 of a small choir singing it) It will be loud and beautiful, hundreds of voices joining in, a fitting way to mark this occasion.

What a wonderful thing we have been left by those that came before. And still, a responsibility for us as we look to the future. Rural churches are disappearing, and while Tabor is the rare rural church that is growing, still we hope that its location at the corner of two mostly dirt roads 4 miles from the nearest town (population 600) will not get in the way in years to come.

At the end of the events tonight, we were reminded of the favorite Bible verse of Rev. P. H. Richert, first pastor of Tabor, who served as pastor for almost 40 years:

the mountain of the LORD’s temple will be established as chief among the mountains; it will be raised above the hills, and all nations will stream to it.

(Isaiah 2:2)

Somehow it seems improbable that dirt roads led to all this.

What Traditional Values Mean to Me

A comment on Facebook yesterday got me thinking what American “traditional values” are all about. We hear it a lot, and I suspect it means something different to different people.

Here’s what it means to me.

It starts with an ethic fundamentally informed by the central tenets of Christianity — which are also excellent standards of decency by secular standards. We are called to have a relentless drive to care for the repressed, poor, downtrodden. As Jesus said, “whatever you do to the least of these, so you do to me.” It means extending the hand of friendship and compassion to all, in our own neighborhood and around the world. It means taking good care of the resources we have, acting responsibly, and affirming and supporting others so they can do the same. It means that, as our founding fathers emphasized, remembering that all people are created equal, are equally deserving of a good life, and deserve liberty and freedom. Finally, it means a constant realization that we are creating a human institution, and will always have an imperfect answer to these ideals, but that we can — and must — recognize our faults and strive to make things better.

How do these apply to our time?

We must start with the poor, the repressed, and habitually think of their situation in everything we do. That means remembering that when we drop a bomb in Afghanistan to kill a terrorist, we also usually kill 50 innocent bystanders, and devastate their families. It means remembering that illegal immigrants from Mexico come here because all they want is refuge from drug wars, food on the table, and a roof over their head. It means showing compassion in deportation proceedings: when illegal immigrant parents have a child born in the United States, the child is an American citizen and can’t be deported, but deporting the parents will create an orphan. It means actively helping the repressed people of the world, whether they be in Sudan, Georgia, or AIDS victims in Africa, Muslims in New York. It means reducing taxes on the poor, giving them the skills and tools they need to make their way in life. It means caring for those with alcohol drug addictions, helping them to summon the strength to get past those problems, rather than locking them up or throwing them out on the street. In days past, this might have meant sharing firewood with the family down the road that was at risk of freezing in winter. Today it might mean assistance with winter heating bills.

Remembering that all people are created equal means that we must provide good education for everyone, whether they live in suburban California, inner city Detroit, or rural Appalachia. We owe quality health care to everyone; those without means to pay for health care, or to pay for a car to get to a clinic, should be treated with dignity and respect, and have equal access to medicine.

Remembering that all people are created equal also means that we must provide equal justice under law, and give everyone a fair trail. We must abandon the death penalty, because we have a shocking number of people on death row — hugely disproportionately black and poor — that have been shown innocent of their crimes thanks to advances in DNA testing. We must maintain the integrity of checks and balances in government, and support judicial oversight over search and seizure. We must avoid warrantless wiretapping because it subverts judicial oversight and corrupts our justice system by making the exercise of power secret. We must denounce torture, and refuse to employ it, because no human, being created equal, deserves to be treated in such a way — and we have been applying it to innocent humans.

We owe the opportunity to grow up in a loving family, in a safe community, to every child. We must make sure that gangs no longer have the run of our streets, that drugs aren’t displacing hard work as the currency of the community, and that adoption is inexpensive and practical for more families, rather than costing thousands of dollars. Doing so will help every child grow up knowing that they are valued, are important, rather than being unwanted and therefore abused or neglected.

Extending the hand of friendship and compassion to all starts with being a good example — that shining city on a hill that Reagan talked about. We have to run an open, just, and fair society ourselves. We must not fear those that are different than us, just because they’re different. We have to recognize that citizens of Iran, Russia, North Korea, Palestine, and the United States fundamentally are humans, created equal, seeking the same thing: a safe and secure future for themselves and their families. Being able to coexist peacefully means starting from that point, and being willing to talk to them, and yes, even their leaders, regardless of how distasteful they may be.

Acting responsibly with our resources starts at home — things like not driving up credit card debt, not living outside our means. The same applies to government: massive deficits each year are exceptionally irresponsible and place us at great risk both at the present and in the future. We also have a duty to care for the planet and the environment in which we live, which means actively working to curb the things we do to harm the planet and cause global warming.

What about recognizing our faults? Perhaps the most patriotic duty asked of Americans is dissent. It is never easy, but is essential to keeping our democracy functioning. This country has a long history of successes, and also a long history of failures. We failed so many by keeping slavery legal for so long, and discrimination and lynching legal for even longer. We failed that Native Americans by forcing them from their lands and treating them with brutality. We have, to some extent, risen above these failures thanks to the ability to recognize them and try, to the best of our ability, to fix them. This is what the civil rights movement was about, and why we have a holiday for Martin Luther King, Jr. He spoke out against a society that said some couldn’t eat in a restaurant because of the color of their skin, or who were repressed because of their economic status. He recognized that problem in America, and by speaking out against it, helped to change this country for the better.

Today we have to recognize the things we are doing wrong, and try to change them. We are torturing potentially innocent people. We are discriminating against Muslims and homosexuals in our midst. We are giving extraordinary power to big media companies through changes in copyright law, to big communications companies through failure to enact network neutrality laws. And we are labeling people that disagree with war as unpatriotic.

Notice some things I didn’t mention, such as abortion. It’s not really relevant, and the lines we are fed by both sides present us with this false pro choice vs. pro life debate. In reality, it seems to me that both sides want the best for the children: for every child to grow up in a loving family, where he or she is wanted. We all know from research that laws banning abortion do not actually reduce it. So we ought all to come together and try to make it more rare by providing more support to single parents, by making it easier to adopt children, by trying to make the perceived need for an abortion to go away.

So, in this election, I look at the candidates and it seems pretty clear which one is promoting traditional values and which one isn’t. Obama is actively trying to reach across the aisle and find common ground. Even in his convention speech, he suggested ways to work together on abortion like I just mentioned. In the debate, he listened carefully to his opponent and acknowledged when he thought McCain was right. This is a necessary first step in working together to move forward. McCain subsequently released an ad mocking Obama for this.

What about caring for the poor? Again, Obama’s tax policies, education policies, and health care policies take care of them far better than McCain’s. About responsibility? McCain supported these deficit-busting budgets of the last 6 years, supported the oil-centric energy policies, and has been only lukewarm towards dealing with global warming. McCain and Palin mock Obama for trying to help poor Chicago neighborhoods 20 years ago, for being willing to just talk to our supposed enemies, for actually reaching across the aisle.

So yes, I am a values voter, and that’s why I can’t possibly do anything but vote for Obama.

New version of datapacker

I wrote before about datapacker, but I didn’t really describe what it is or how it’s different from other similar programs.

So, here’s the basic problem the other day. I have a bunch of photos spanning nearly 20 years stored on my disk. I wanted to burn almost all of them to DVDs. I can craft rules with find(1) to select the photos I want, and then I need to split them up into individual DVDs. There are a number of tools that did that, but not quite powerful enough for what I want.

When you think about splitting things up like this, there are a lot of ways you can split things. Do you want to absolutely minimize the number of DVDs? Or do you keep things in a sorted order, and just start a new DVD when the first one fills up? Maybe you are adding an index to the first DVD, and need a different size for it.

Well, datapacker 1.0.1 can solve all of these problems. As its manpage states, “datapacker is a tool in the traditional Unix style; it can be used in pipes and call other tools.” datapacker accepts lists of files to work on as command-line parameters, piped in from find, piped in from find -print0. It can also output its results in various parser-friendly formats, call other programs directly in a manner similar to find -exec, or create hardlink or symlink forests for ease of burning to DVD (or whatever you’ll be doing with it).

So, what I did was this:


find Pictures -type f -and -not -iwholename "Pictures/2001/*.tif" -and \
-not -wholename "Pictures/Tabor/*" -print0 | \
datapacker -0Dp -s 4g --sort -a hardlink -b ~/bins/%03d -

So I generate a list of photos to process with find. Then datapacker is told to read the list of files to process in a null-separated way (-0), generate bins that mimic the source directory structure (-D), organize into bins preserving order (-p), use a 4GB size per bin (-s 4g), sort the input prior to processing (–sort), create hardlinks for the files (-a hardlink), and then name the bins with a 3-digit number under ~/bins, and finally, read the list of files from stdin (-). By using –sort and -p, the output will be sorted by year (Pictures/2000, Pictures/2001, etc), so that photos from all years aren’t all mixed in on the discs.

This generates 13 DVD-sized bins in a couple of seconds. A simple for loop then can use mkisofs or growisofs to burn them.

The datapacker manpage also contains an example for calling mkisofs directly for each bin, generating ISOs without even an intermediate hardlink forest.

So, when I wrote about datapacker last time, people asked how it differed from other tools. Many of them had different purposes in mind. So I’m not trying to say one tool or the other is better, just highlighting differences. Most of these appear to not have anything like datapacker –deep-links.

gaffiter: No xargs-convenient output, no option to pass results directly to shell commands. Far more complex source (1671 lines vs. 228 lines)

dirsplit: Park of mkisofs package. Uses a random iterative approach, few options.

packcd: Similar packing algorithm options, but few input/input options. No ability to read a large file list from stdin. Could have issues with command line length.

Jacob’s Words

Here are some words and phrases we’re hearing a lot lately. Along with a helpful translation guide.

shop baa: Shop Vac
shop baa hoesh: Shop Vac hose. We also get “see shop baa”, “shop baa on”, etc.
chain: train
chain veeoh: train video
tune vewwow: turn yellow (referring to a traffic light)
Hi Daddy!
Hi Mommy!
uhoh [item]: something bad happened to the item
wahdoh: water
spidoh: spider
spidoh buh: spider bug
cat Nash: the cat named Nash
teesh: taste (when he wants a bite of cake or something)
BIH teesh: BIG taste
tah corn: tall corn
baby
puppy
pa: grandpa
mama: grandma
mamapa: grandma and grandpa
ah housh: our house
fop: flop (onto a pillow)
ahh done: all done
fan
bubba: butterfly (he has a soft one he sleeps with). Or strawberry.
hoe: hold

Interesting take on the markets

Yesterday on NPR’s Diane Rehm show, one of the commentators made this point: (paraphrased)

The “bad debt” that all the banks are carrying, and that everyone talks about as the cause for this problem, is mortgage-backed securities. It’s bad because there are so many foreclosures, meaning that people aren’t paying back their loans. And that’s a problem because the banks turn out to have a much less solid investment than they thought.

Instead of spending $100 billion or more bailing out bank after bank, the government ought to spend that money to stabilize the real estate sector. Invest it in programs to help people stay in their homes and avoid foreclosure. This will help both the individuals, and simultaneously fix the problems with the banks, because the mortgage-backed securities will regain their value.

Sounds way too sensible to do, doesn’t it?

After all, we wouldn’t want to encourage risky behavior on the part of the common folk that don’t know better. No, we only want to encourage that with our large multi-national financial institutions that can wreck the entire economy.

Switched from KDE to xmonad

Within the last couple of days, I’ve started using xmonad, a tiling window manager, instead of KDE. Tiling window managers automatically position most windows on your screen, freeing you from having to move, rearrange, and resize them all the time. It sounds scary at first, but it turns out to be incredibly nice and efficient. There are some nice videos and testimonials at the xmonad homepage.

I’ve switched all the devices I use frequently to xmonad. That includes everything from my 9.1″ Eee (1024×600) to my 24″ workstation at work (1920×1200). I’ve only been using it for 2 days, but already I feel more productive. Also my wrist feels happier because I have almost completely eliminated the need to use a mouse.

xmonad simultaneously feels shiny and modern, and old school. It is perfectly usable as your main interface. Mod-p brings up a dmenu-based quick program launcher, keyboard-oriented of course. No more opening up terminals to launch programs, or worse, having to use the mouse to navigate a menu for them.

There’s a lot of documentation available for xmonad, including an “about xmonad” document, a guided tour, and a step-by-step guide to configuring xmonad that I wrote up.

I’ve been using KDE for at least 8 years now, if not more. WindowMaker, fvwm2, fvwm, etc. before that. This is my first step with tiling window managers, and I like it. You can, of course, use xmonad with KDE. Or you can go “old school” and set up a status bar and tray yourself, as I’ve done. KDE seems quite superfluous when xmonad is in use. I think I’ve replaced a gig of KDE software with a 2MB window manager. Whee!

Take a look at xmonad. If you like the keyboard or the shell, you’ll be hooked.

Command-Line RSS Reader

So, does anybody know of a command-line RSS reader? I want something that will save state and output recent entries in a nicely parsable manner. Maybe URL\tTitle\tDecscription\n or somesuch.

So here’s why I’m asking.

I got to thinking that it might be nice to automatically post to Twitter when I’ve got a new blog post up, rather than manually have to say “just wrote a blog post.”

Then I also got to thinking that when I see an interesting URL that I’m going to Twitter about, I’m also almost always adding it as a bookmark to Delicious. Why not make a fortwitter tag on Delicious, and automatically post my comments about them to Twitter, saving me having to do it twice?

So I’ve got Twidge that can be nicely used in a shell script to do this stuff. I’m hoping to avoid having to write a shell script-friendly RSS aggregator. But I’m just prone to do it if nobody else has already, though I’d really like to avoid reinventing the wheel.