I'm "cheating" a bit and reposting something I wrote in response to another question, but here goes (ignore the parts that were obviously directed at a specific query; I'd edit, but I have the flu...