John Robb is Talking Stuff

Just when I found myself thinking that John Robb can speak no wrong, he posts some silly rant tryingabout the intelligence of U.S. military officers. He says “The only exception to this rule in modern times is Schwarzkopf, with his 170 IQ, and his ability to deal in strategy at its deepest level. In contrast, we are left with Franks and Rumsfeld. Franks is a classic line officer. Not too bright but grounded.”

With all due respect, this is signifyin’ in the literary sense of the word, and fortunately completely wrong.

I worked for Department of Armyfor a few years early in my career, and had day-to-day dealings with officers ranking from Captain to General. As a young person approaching DoD, I had the standard expectations of bureaucratic gridlock, hawkish “drill sergeant” officers, and the like. DoD certainly has its share of grifters and bureaucrats, but unless you have been there, it is hard to believe how absent such people are from the ranks of officers.

Now, MSFT is a place that is justifiably famous for hiring smart people, and I feel very lucky to work withthe people here. If you have ever been in a meeting with someone who so incisively extracts the meaning from a mess of details and distills an issue to its core, that you find youself thinking “how is it humanly possible for him/her to make it so simple when the rest of us failed?”, you know what I am talking about. Especially for people who consider themselves smart to begin with, this is the sort of gift from life that you don’t forget.

It is true that MSFT has smart people, but I can tell all sorts of stories about the “wow” factor from meetings with DoD officers as well. Iam convinced that it is impossible to rise to the rank of Colonel without being a complete genius; the ability of these guys to analyze and juggle was uncanny. Many had photographic memories. One memorable guy would regularly take three briefings simultaneously and pick out the flawed arguments and data in all of them at the same time. Of course, anyone can tell stories about the guy they met who plays blindfolded chess or whatever, but these kind of people were the rule in high-level army ranks. Franks certainly gives off the down-to-earth “grounded” vibe, but everything I have ever seen argues strongly against Robb’s “not too bright” indictment.

Smart people are attracted to MSFT by promise of money, potential industry impact, and the chance to test themselves against the best in the industry. People are attracted to the military officer’s career by power, potential global impact, the chance to test themselves against the greatest leaders of today and compare themselves to the greatest leaders in history. Franks is commander of CENTCOM, overseeing land that was previously in the hands of Alexander the Great and Genghis Khan. You don’t get there and stay there without the sort of mental horsepower that makes me and John Robb look like mental midgets. Note that I am not saying that Franks is a modern-day Alexander the Great or a future presidential candidate.But it’s completely crazy to question the guy’s mental power.

Thought Crimes

Only in America could a comment like “stupidity should be cured” or “ugly should be prevented” be met with such indignationand embarassment. It’s as if James Watson let out a loud belch during a dramatic pause in the preacher’s sermon, and the congregation has quickly muffled their snickers to act as if nothing has happened.

Even noticing a correlation between genotype and phenotype has become a thought crime; proof of an individual’s secret support forNazi eugenics. Of course, the word “stupidity” itself is criminal in America, since the word causes emotional distress to those with “reduced mental capacity”. And furthermore, we have learned that nobody is stupid; people are all equally smart but just in different ways. There is no objective scale by which intelligence can be measured; just a rich diversity of multiple intelligences. Just as we risk losingcures for cancer by losing endangeredfrogs of the rain forest, we never know when society’s survival will depend on some secrets locked inside the IQ 15 head.

Granted, both smart and beautiful are subjective and culturally biased. But in a very general sense, there is little subjective about basic mental and physical health, and genotypes which sabotage either are reflected in phenotypes that are considered “stupid” or “ugly”. And cases where genotype leads to a universally obvious “stupid” or “ugly” phenotype are evenly distributed across all race and class divisions. Would Watson’s comments have attracted less controversy if he had pledged to use genetics to “stamp out congenital mental and physical health inhibitors?” Is it less of a crime if done on behalf of protecting victims from disease? Is it more of a crime if done on behalf of an old scientist who wants to be surrounded by beauty?

Microsoft Prevalence Products

Richard Caetano is reading about Site Server’s “prevalence” layer, and wondering if anyone still uses it. Since I haveworked with systems using Site Server’s “prevalence” and most other competing technologies, I feel qualified to say some things about the topic.

Now, the first thing to realize is that such layersare nothing new, and there are many examples that predate Site Server. The next thing to realize is that DBAs are not going out of business anytime soon. State management always ends up being owned by the DBAs. But despite that reality, prevalence layers are an interesting and essential part of any large architecture.

To start, the coder guys always end up building a “prevalence” layer. Every large architecture I have seen has involved at least one abstraction layer to hide storage cruft from the programmer’s need to perform state management. Imperative programmers think of databases like the drive-train of a car; greasy and mechanical. Programmers don’t like to deal with DBAs typically, because such interactions are normally not under pleasant circumstances. And there are always those programmers who think “who needs a database when I have objects? Why not just make those objects be persistent and forever banish those cranky DBAs?” The underlying assumption is that databases are low-tech, and code (especially code written in the language du jour) is a far better hammer. Even developers who do not succumb to this delusion will find it difficult to argue with the teammate who explains that a prevalence layer will reduce the learning curve. After all, why force your developers to understand all that relational mumbo-jumbo when they already know how to create Java objects? The idea is far too seductive (and not completely stupid), so promising prevalence to programmers will be a successful way to “hook” them for the forseeable future. Everybody wants it.

“Site Server, Commerce Edition” did contain a sort of object persistence layer exactly as Chad Osgood describes. This product was followed by “Commerce Server 3.0”, which had a similar capability. Both were fairly naive at storing objects, basically just storing blobs in the database. Then came “Commerce Server 2000”, which was far more sophisticated. CS2K provided a GUI mapping tool that allowed admins to define mappings between business objects and underlying stores (LDAP, relational, and more) including objects aggregated from heterogeneous stores. “Commerce Server 2002” added support for ASP.NET, customizable mapping editors, and removed many otherlimitations of CS2K persistence system. Of the sites that use Microsoft’s commerce software, I doubt that many still use Site Server, although there may be a couple that still use Commerce Server 3.0.

Somewhere between the release ofCS 3.0 and release of CS2K, EJB started to take form, and eventually the Java folks came up with “Entity Beans”. Around the same time, ASP.NET was taking form, and Microsoft decided to make object persistence more widely available. ASP.NET has object persistence built-in, although not so sophisticated as to be a threat to Commerce Server revenues. Theremoting architecture in version 1.0 of the .NET frameworks, including Xml Serialization was also designed to be a suitable foundation for developers obsessed about prevalence.

And that takes us to today. EJB “entity beans” and ASP.NET state management have brought object persistence to the masses. You can predict that more sophisticated layers will continue to be commodotized.


Now let us talk about the specific marketing buzzword “prevalence“. The referenced wiki says “Prevalence layers are typically three orders of magnitude faster than traditional databases for queries and about as fast for transaction processing.” For the inexperienced, this seems reasonable; for the experienced this is retarded. But it isa lie that has persisted since beforewe called them”prevalence layers”. Another quote:

The basic difference is that a prevalence layer keeps all objects’ states in the client’s memory space, whereas a database (by which I assume you mean a conventional RDBMS or OODBMS) keeps all objects’ states on disk and often requires an IPC mechanism to provide access to that state information.

For a prevalence layer, usage of the disk is really just a reliable recovery mechanism. The “real stuff” is in memory, which is why prevalence is so much faster than a database, where all the “real stuff” is on disk.

flaunts a shocking ignorance of database fundamentals. Any SQL Server that is not running near 99% cache hit ratio is poorly-tuned. It is particularly bad considering that this guy is talking about “prevalence” which he defines as the most naive sort of blob-oriented persistence. A proper O-R mapping layer (any of which have been around 15 years) will absolutely blow away the prevalayer type storage for all but the most trivial of queries. And in reality, all of these layers boil down to the same thing — you are either writing your own poorly-debugged database engine, or else you are writing an abstraction layer over someone else’s database engine. Of course, one can use the filesystem as a database, or a database as a filesystem, so the terminology can be stretched. But in terms of functionality, Query Processing, Storage and Indexing are rarely things that a programmer canimplement better than the professionals. Most of the innovation in terms of “persistence” layers revolves around the Data Access layer, and the fundamentals of the rest of the storage stack remain relevant.

Communicating Meaning

[American Philisophical Association] viaSeb’s Open Research: “Should (can?) philosophers, as a discipline, build a formal ontology of philosophical concepts to enhance searching, linking, and cross-referencing of philosophical content on the World Wide Web?”

Seems like a rather contrived question for such a symposium. Did anyone actually answer “no”?


[Sjoerd Visscher] RDF is the only standard format that conveys meaning. That’s what is great about it, and the only thing that’s great about it. And your RDF is useless if it does not convey your meaning.

I like Sjoerd’s reasoning; and it’s interesting how he draws the distinction between “information management” and “knowledge management”. Information management (including relational modeling) is difficult for most people, which explains why DBAs are so entrenched in IT organizations’ power structures. I doubt that “knowledge engineers” will overthrow DBAs,but it’s easy to see that the role of DBA is evolving to place more emphasis on knowledge/meaning and not just information.


Using the right words is important. When an Iraqi (or Al Qaeda) fighter dresses as a civilian and blows himself up to kill uniformed American soldiers, does that constitute “terrorism”? Only by the most liberal stretch of the language. When a former soldier starts shooting civilians with a sniper rifle, do we call that “military action”? Blech!

By the same token, is it acceptable to use “grasp enough” when “enough grasp” will do? In this case, the answer is yes. Especially when, as in my previous blog post, using “he doesn’t have grasp enough” with the same connotation as “he doesn’t have sense enough”. As one reader pointed out, my usage occurs only one time in all of the documents indexed by Google. Considering the innovative way that it subconsciously ties the connotations of “sense enough” with “enough grasp”, I’m surprised that nobody else uses such language. I really ought to file for a patent.

A Budding John Markoff?

Steve Lohr writes for NYT that an expert is wary about IAO’s all-seeing TIA database. Borrowing a page from John Markoff’s playbook, he starts with an exciting and heroic thesis, and then shops around for facts that might support the basic theme.Unfortunately, he doesn’t have grasp enoughof the basic facts to realize that his facts are working opposite his thesis.

Thesis: “the chief executive of a venture capital firm founded by the CIA warns of the danger of amassing a large, unified database that would be available to government investigators”.

The thesisis classic Markoff technique — Lohr’s CIA-CEO-VC is almost as inspiring as Markoff’s Poet-Ninja-Hacker character in “Takedown”.

Quote: data mining alone is not enough”, and “it’s very dangerous to give the government total access”.

This seems to support the thesis, but seems like vanilla common-sense and is not very specific. Let’s read further:

Quote: “the real lesson learned from the Sept. 11, 2001, terrorist attacks, Louie said, wasthat …the information held by different government agencies was not linked, shared and analyzed.”

Huh? In other words, this guy is advocating on behalf of data warehousing and analysis.

Quote: The alternative, which Louie supports, starts with some kind of investigative lead and then uses software tools to scan for links between a person under investigation and known terrorists, in terms of where they live, recent travel and other behavior.

Great. Now we see that Louie is just evangelizing his own technique of data mining which he doesn’t want to call data mining. It still requires data warehousing.

Quote: Information, noted Louie, a former computer game designer and software executive, was kept in separate database silos … the agency realized that this stove-piping of information was a security model that was really vulnerable.

Finally, Louie explains why he is a fan of data warehouses. Could Lohr have done a worse job of selecting quotes to support his thesis? Obviously, Louie is a great believer in the utility of large unified governmentdatabases (which is smart, by the way). As for Lohr, he’s still not ready for his spielmaster’s license — at least not until he learns to get his stories straight.

News Bits

[Scoble] “One of my friends asked me on IM: “why?” He thought that IM was a bad investment. I disagree. I think it will actually get more important.” Jabber has awesome potential.


[Fred Grott] “JBoss does not sell JBoss server software! Will some real thinking SUN employees please wake the freaking ass up!”

You have to admit, though, McNealy’s recent excuse concerning anti-Microsoft FUD was interesting. A Pascal’s wager of sorts; if everyone thinks you’re crazy, but they turn out to be wrong, mmm good! That excuse doesn’t really explain anti-JBoss FUD, though.

Responsibility and War

Summary: Wars are the result of collective laziness and irresponsibility. To stop war, stop being irresponsible.


Life is aboutmaking choices. The choices we make every daycan build up to have tremendous long-termimpact on others. Suppose that before embarking on his research, Alexander Fleming had decided that a career in research was too difficult. Or suppose that he had decided early on to retire when faced with a personal tragedy. If Fleming had not discovered Penicillin, how many millions of people would have suffered and died before someone else eventually made the discovery?

Fleming is a great example, because his contribution to mankind was “accidental” in many respects. Most of life’s choices are made in the context of conditions over which the individual has no control. There are countless factors which can’t be changed or chosen, but that does not diminish the importance of making good choices in those areas which the individual does have a choice. If Fleming had ever decided to quit, he wouldn’t have known the tremendous potential that he was throwing away – his discovery was “accidental”, after all, so there is no way he could have predicted that his work would lead to such fantastic results. Yet the fact that his decisions were made without knowledge of their consequence does not in any way diminish the awesome societal consequence that those decisions ultimately had.

For every Alexander Fleming who resists the urge to give up, there are many potential contributors who take the easy way, and never unlock fate’s rewards. Look at it another way: Fleming’s work saved millions of lives, but he undoubtedly suffered the occasional discouragement and poor decions that we all do. Perhaps he might have discovered a cure for heart disease if he had been able to overcome his occasional discouragements and give just 1% more. Perhaps an extra 1% of effort on his part could have saved millions more lives. Unlikely of course, but so was penicillin, and since it didn’t happen we will never know.

Now, any intelligent reader will be able toretort “if he had put in an extra 1%, he might just as likely have caused an accidental epidemic that killed millions of people, so his laziness was very ethical” or “if he had taken up kites, maybe he would have discovered something that saved more lives than penicillin, so his venture into research may have been a net loss for humanity” This is all true: since my entire argument rests on hypotheticals, we can never really know whether it is correct or not. But to say that this absolves individuals of all responsibility for their choices is to say that all choices are fundamentally equal. This might make an interesting position for sophomoric argument, but humans know that some choices are better than others. We don’t always know which choice is better, and sometimes one is no better than another, but we undeniably have the capacity to judge. Ever since we ate from the tree, we have known that some decisions are better than others.


War is senseless. War labels people, puts borders between people,andturns brother against brother. But wars happen. And when people go to war, they don’t do so outof laziness or “shirking duty”, but quite deliberately. Individuals fight because they believe it is the “right thing to do”, perhaps with deeper conviction than any other decision that occurs in human endeavor. This is important, because it demonstrates how hopeless it is to try reasoning with parties who have come to the point of war. When the situation has reached the brink of war, it is evidence that many people have already decided that fighting is the moral thing to do from their individual perspectives.

On the other hand, every war is precipitated by a long sequence of missed opportunites andindividual failures for which all humans share responsibility. War is the terminal result ofa long, steady slide towardan increasinglyzero-sum situation where individual survival can only be guaranteed by ensuring someone else’s destruction. By the time societies begin to consider conflict openly, the situation has already deteriorated and the slide is gaining momentum.

Changing people’s attitudes at the brink of war involves challenging and redirecting their deepest values, while prompting people to behave like Fleming involves only combating their inaction and spurring them to pursue values that they already hold. Which do you think is a more responsible use of your energy? The more that we all behave like Fleming, the better we avoid ending up in the place where wars happen. In my opinion, that’s the best we can hope to accomplish, and is therefore the only practical anti-war strategy.

T4 Hormone and Protesters

John Robb is reporting skyrocketing levels of energy after discovering and correcting a thyroxine deficiency. Now if only we could figure out how to safely do these sorts of treatments in people without deficiencies. T4 Hormone, Provigil, etc. Just a little closer…


Today I saw my first anti-war protests. There were about 10 people along the street in Kirkland holding up “No Iraq War” signs, andabout 10people at the corner of 8th and Bellevue way in Bellvue holding up anti-war signs. There werea few hundred “support our troops” demonstrators near 4th and Bellevue way, who were attracting quite a bit of attention and making lots of noise. From my vantage at Borders Books, I saw passing motorists making various hostile gestures towards the handful of anti-war protesters, and some of the motorists looked quite angry. It was a beautiful day, though, so I doubt that the ragtag band of anti-war people were concerned about their obvious lack of support from passers-by.

We shopped in the mall for more than two hours, and the group of “support our troops” demonstrators was still growing whenwe left. We then stopped at the waterfront park in Kirkland and engaged in a bit of civil disobedience by feeding the ducks.


This is sad, but I believe it. I’ve seen from more than one person posts like “I’ve lost all respect for so-and-so after he posted his wrongheaded comments supporting/protesting the war.” How can this happen? How is it that differences of opinion about Java vs. C# are healthily debated, but people are so quick to sever bonds between them over differences of opinion regarding war? What is going on here?

Sealed Classes

[Scott Watermasysk] Why is anyting in the .NET Framework marked as sealed?

Good question. I agree that, in general, marking classes as sealed is rude. But sometimes it makes sense.

One reason is support cost. If you mark a class sealed, you don’t have to test for inheritance scenarios. But more important is security. There are cases where subclassing an object can be used to get around security and elevate access. So, if your class keeps state that is security sensitive, and you can’t imagine any realistic scenarios where subclassing is the only way for a user to achieve a desirable result, then it makes sense to keep it sealed.

There may be other reasons; these are just the two that I recall coming up most often when we debate whether to mark a class as sealed.