In Defense of Obnoxious Insensitive Pedantry

I recently just re-read Ray Bradbury's Farenheit 451, a book I read when I was a teenager, and again in college, but haven't read in at least a decade. I'm amazed at how prescient Bradbury was about so many things - the full-wall television parlors that seemed utterly fantastic aren't so far-fetched anymore. Just try to buy an entertainment center for a 27" TV. Try buying a 27" TV, for that matter. Deeper than that though, Bradbury talks about the dumbing down of content. He envisions a world of interactive, all-consuming, utterly vapid media. He talks about how information overload fits Fifty-odd years after writing that novel, it doesn't seem so futuristic anymore - it seems like now.

I saw that Ben Hyde, commenting on the use of the term "tar baby", said I think people who use the word niggardly just because it’s linguistic roots happen to be independent of the word nigger are obnoxious insensitive pedants. This reminds me of another of Bradbury's crusades which surrounded Farenheit 451, in the epilogue he wrote some years after the original story. The irony was in efforts to censor some of Bradbury's work, Farenheit 451 being among those works, a book which is itself about censorship. But the source of the censorship was not the government - it was individuals who were offended by Bradbury's stories, or were worried that others would be offended by them. This sort of censorship is not especially anti-First Amendment, but is probably even worse. An elected government at least has some checks on that sort of power, but when we the people do this to ourselves, where are the checks? In Farenheit 451, this is exactly how the society came to burn books. The government was simply reacting to popular sentiment.

What Ben was alluding to was an incident in the late 1990's where a US government official was censured for using the term "niggardly", because certain of his subordinates viewed this term as a racial slur. I cannot support Ben's conclusion that people who use the word, knowing the recent history of the word, are "obnoxious insensitive pedants". Obnoxious, possibly. But what is insensitive about using this word? What is one being insensitive to? To people who might confuse the term with a racial slur? What's pedantic - the fact that you understand the actual meaning, and that acceptable usage is contingent upon knowing, or better yet, being ignorant of, the etymology? In this view, knowing the etymology is bad, because you're then flaunting that knowlege, but being ignorant of it, you must be racist to use the word, because it's obviously a racial slur. This is the danger. Now, you can simply ban a word by objecting to it. Even if you're wrong, you're viewed as an "obnoxious insensitive pedant"; you can never use the word again without having your motives questioned. This is exactly what Bradbury said in his epilogue, and something I agree with. We can't allow discourse to become dictated by the lowest level of understanding. It's thinking like this that allowed the Cultural Revolution to occur, that allowed Pol Pot's purges of intellectuals to occur.

— Gordon Weakliem at permanent link

Burning Cache

I ran across the article Distributed Caching with Memcached, which describes how LiveJournal uses the memcached library to lessen the load on their databases. This is a really well written article that describes memcached's design. I found it very interesting that memcached doesn't attempt to maintain cache consistency across instances. I've been suspicious of this design, because it seemed anathema to one of my hard-learned lessons - sticky state (that is, state tied to a specific machine or process) does not scale. Given LJ's results, it sounds like this is probably not such a big issue. I found the rationale very compelling: since you treat cache like a hashtable, then you can view instances of memcached as hashtable buckets. I have no idea if this affects configuration. Typically you set the number of hashtable buckets by selecting a prime number that also provides an optimal hit ratio, so the number of buckets is a prime number that has some relation to the number of item’s you’re storing. But the article states that LJ is using 28 instances, so possibly that rule of thumb doesn't translate to a distributed environment. There do seem to be some drawbacks to memcached, in the comments on the article, one of the Wikipedia developers states

Memcached's big claim is that it's faster than a database, which may well be true. But with no local caching, it certainly can't compete with a true distributed memory system like those commonly used in supercomputers. With memcached, if you have a data item which is needed on every web request, then that data item will be sent across the network from the same server on every request.

In the .NET world, we have System.Web.Caching.Cache which is included with ASP.NET. It seems like you should be able to repurpose this to build a distributed cache. There is a Win32 port of memcached, as well. I've looked a bit at Alachisoft's NCache, which seems like a nice product. NCache does have distributed capabilities, and has a nice management interface, but seems to take a fundamentally different approach - if I recall correctly, you can partition your data a`la memcached, or use synchronized instances using a UDP or TCP wire protocol. NCache's capabilities seem more in line with the Java-only options such as Prevalayer and Coherence. NCache's licensing fees didn't seem too exorbitant, so it's definitely something to investigate if you're looking for caching in a .NET application, and have the cash to spend.

— Gordon Weakliem at permanent link