This article is available at Linux Journal.