!
This blog post is more than two years old.
It is preserved here in the hope that it is useful to someone, but please be
aware that links may be broken and that opinions expressed here may not reflect
my current views. If this is a technical article, it may no longer reflect
current best practice.