Words that Do Matter

Some people seem to have enjoyed my response on a Whistle Stopper thread to Victor Davis Hanson’s Words that Don’t Matter so I figured it might be worth repeating here for a different audience.

the veteran Theban general Pagondas explained why his Boeotians should hit the Athenians at the border near Delium, even though they were already retreating

This is a poor example, since the Boeotians and Athenians were already at war. Preemption as a strategy of war is not the same as preemption to start one.

On a more immediate level, preemption was how many of us stayed alive in a rather tough grade school: Confront the bully first, openly, and in daylight â?? our Texan principal warned us â?? before he could jump you as planned in the dark on the way home.

Also a useless example. Besides being merely anecdotal, perhaps even hypothetical, what’s to stop the bully from claiming their actions were preemption?

The thing to keep in mind is that the real aggressor, by his past acts, has already invited war and will do so again â?? should he be allowed to choose his own time and place of assault.

VDH seems to have trouble with the difference between expecting war and being at war. He also excludes the prospect of overwhelming retaliation – including that from allies or a more nebulous international community – as an alternative to preemption. If someone knows that the consequences of starting something would be that they get stomped, that’s an effective deterrent.

In general, VDH treats the prospect of an invasion by Iraq as inevitable, even though the facts indicate otherwise. Iraq was not a great military power. Sure, they had numbers, but we had already shown what a paper tiger they were. There was no evidence at the time of deployable weapons of mass destruction – a fact that doesn’t change even if some people theorized about their existence and/or some show up subsequently. The best information available at the time was that Iraq had been thoroughly defanged and was not a significant threat to their neighbors. Even supporters of the war know this; that’s why most of them have tried to shift the emphasis to (also unproven) ties with al Qaeda or some vague and new-to-them idea of liberating the Iraqi people. Anything but admit they were wrong.

Serbia posed no “imminent” threat to the United States in 1998; but President Clinton â?? with no U.N. sanction, no U.S. Congress resolution â?? finally decided to act and end that cancer before it spread beyond the Balkans.

Another bad example of a belligerent nation already at war – perhaps not against us, but at war nonetheless.

Nor is preemption always even a sign of strength. Italy regretted its 1940 surprise invasion of Greece. Argentina tried it in the Falklands and a paid a high price; so did Syria in 1973, and al Qaeda and the Taliban on September 11.

Good reasons not to adopt such a policy, if looked at from a sane point of view.

Progress Report

I spent much of the weekend working on my automatic stack-ripping program. My eventual goal is to make it possible for people to write server code as plain old C functions, complete with local variables and loops and blocking behavior, but then produce code that’s suitable for a staged event-handling infrastructure instead of relying on a less efficient massively-multithreaded infrastructure. The tool’s job, therefore, is to take the source for a function with annotations to indicate where it blocks, and then generate source for several functions connected by a context structure to do the same job. I’ve figured out how to do this in the abstract, and now I’ve moved on to actual implementation.

The key to the implementation is the -fdump-translation-unit argument to gcc. With this argument, the compiler does all of the lexical and syntactic analysis and then dumps the resulting parse tree into a file with a .tu suffix. This frees me of the need to write a complete gcc-compatible parser and lexer just so I could get started. Yay! The format of the .tu file is not quite ideal for my purposes, but it’s usable. One thing I find slightly amusing and slightly disgusting is that the file’s grammar is ambiguous with respect to attribute names and values that contain spaces, which gcc will generate internally in several cases. So far the ambiguity hasn’t posed any insurmountable problems in extracting the information I want, but I had sort of thought that compiler guys might be able to come up with a clearer output format. I guess not. So far the tool can:

  1. Find a function in the .tu file, given its name.
  2. Generate an internal statement-level parse tree with most of the extraneous cruft removed (the gcc tree often uses several more layers of indirection than I need). It handles all statement types except goto.
  3. Recognize variable declarations, including types. It can understand anything with a typedef plus all kinds of integers, pointers/arrays, and structs/unions. It does not handle function types without a typedef.
  4. Generate something akin to the original function in a consistent format as output.

The next few steps are:

  1. “Flatten” the variable scope down to one level for the entire function. This is mostly a matter of detecting variables declared with the same name in nested scopes, and renaming as necessary to resolve the conflict when they’re all moved into one scope.
  2. Generate a context-structure declaration to hold all of the local variables in the original function.
  3. Convert the parse tree into a more general kind of control-flow graph, with separate nodes e.g. for the pieces of a for-loop and more explicit successor-node information.
  4. Find the points where the original function blocks. In the simplest case this will be indicated by calls to a block() pseudo-function, but I might provide other constructs as well. Whatever I do in this area will have to be implementable as pseudo-functions, though, because otherwise I wouldn’t be able to rely on gcc to do all of the parsing for me.
  5. Split the graph into multiple pieces around the blocking points.
  6. Generate a new function from each subgraph, replacing local-variable references with context-structure member references.

One optimization that I’d like to add in a future version would be to “promote” local variables into the context structure only if they’re used by more than one sub-function. Otherwise I could just leave them local, which would both reduce memory usage and enable better optimization of the output code. I have plenty to do before I start to worry about that, though. As I said, I’ve figured out how to do all of this in the abstract, but the graph-splitting code is still going to be complex and tedious. Let’s see how much energy I have left when I’m done with that.

Entertainment

On Friday I went snowboarding at Loon Mountain, on a trip organized by one of my coworkers. Thanks, Bruce! It was a little crowded, and I ran into a couple of jerks (once literally), but the trails were in decent shape and the weather was nice. I don’t think I did any double-diamond runs, but I did several singles without resorting to sideslipping all the way or stopping between turns. I was still the slowest person in our group, though. Half of them are there every week and I’ve only been out one other time in the past three years, so that’s to be expected. The important thing is that we all had fun and nobody got hurt.

On Saturday Cindy and I went down to Harvard Square for a fine dinner at Mr. Bartley’s Burger Cottage (you don’t get a line outside in February unless the burgers are really good) followed by a showing of Love’s Fowl – the story of Chicken Little, as Italian opera, with puppets. No, I didn’t make that up. Yes, it really is pretty good.

Almost Famous

I’ve been noticing a significant increase in traffic this month, compared to previous months, and I think I’ve finally figured out why. It appears that if you go to Google’s image search and type “poop” the fifth image that appears is my own picture of cubic wombat poop from last year. Not exactly what I would have chosen as my claim to fame.

Packing M&Ms

Turns out that an M&M shape packs more densely than spheres:

When poured in, they said, spheres occupy about 64 percent of the space in a container. M&M’s manage to pack in at a density of about 68 percent.

Apparently this applies to random packing; if the spheres/spheroids are deliberately arranged the results are identical. Apparently almond M&Ms, which are ellipsoidal, pack even better.

â??Junk Scienceâ? Debunked

Tim Lambert does a good job illustrating the moral bankruptcy of a typical anti-liberal – Steve Milloy of junkscience.com and (indirectly) the Cato Institute. My favorite quote from Milloy, attempting to refute a study on gun use, was this:

This was an ecologic epidemiology study, meaning the conclusion is based on very â??macroâ? comparisons of groups of people.

“Very macro” is another way of saying the gun study actually used a broad sample instead of carefully selected “choice cuts” of evidence barely better than anecdotes. It’s worth following some of the links in Lambert’s article, to find more interesting stuff about topics such as Tech Central Station (pro-Microsoft anti-open-source mouthpiece run by a PR firm) and astroturfing on Amazon).

Cheap Pen Reviews

Ever since I was young I’ve had an interest in pens. Maybe it comes from having a mother who was a typesetter and graphic artist. In any case, I have recently become frustrated with the pens I’ve been using, and so I set out on a quest to find better ones. I do these quests from time to time; it’s my outlet for my obsessive/compulsive tendencies. In any case, since my major use for pens is to mark up documents, I wanted to get pens in a variety of colors that would stand out relative to black text. I also have to deal with the fact that we use somewhat cheaper than average paper at work, so a pen that’s excellent on better paper can bleed badly where I actually use it most. I ended up getting four packs of rollerball-type pens, from four different manufacturers, and brought them back to work (which is on my way home anyway) to test on some old specs. Here are the results, from most expensive to cheapest:

Pilot P-700 ($1.40 per pen)
The smoothest writing feel of all the pens I tried, but with noticeably uneven ink flow and color.
Bic Z4 ($1.00 per pen)
Writing feel is on the rough side of my ideal range, which means it’s good. A nice fine line, with the most even ink flow and color of the group. The only real downside is that the colors are relatively muted; the red and the green are fine for editing, but the blue is questionable next to black type.
Pentel Sunburst ($0.92 per pen)
Very scratchy, very uneven flow/color. These pens were also afflicted with what I’ve come to think of as the “Pentel problem” – a line with more ink at the edges than in the center, resulting almost in two parallel lines. Ick. At this point I don’t think I’ll ever buy a Pentel again.
Uniball Signo ($0.60 per pen)
The different colors of this pen performed very differently. The green and purple had a writing feel on the smooth side of my ideal range (smoother than the Bic, less so than the Pilot) and the color was quite even (almost as good as the Bic). The purple was very dark, even worse than the Bic blue against black type. The blue had a nice vibrant but slightly less even color. The pink and orange were even more uneven, plus they had an almost Pentel-like scratchiness. Another thing that set these pens apart was the bright colors and candy-like plastic appearance, compared to the more subdued colors and appearance of the others.

The green and purple Uniballs, at 60 cents apiece, seem like an excellent value compared to the other pens I tried. Even they weren’t quite as good as the Bics, though, and the Bics performed more consistently. Therefore, I’m keeping the Bics at work and using the Uniballs at home (where they don’t get used for much beyond grocery lists and the “sillier” color/appearance are even less of a factor). The Pilots and the Pentels I’ll just give away.

Liberals in Academe

Two of the weblogs that I read seem to have touched on what might be the same topic without realizing it. First up was Asymmetrical Information with this:

There’s an assumption among the humanities types I run with that lacking the particular things that make you good at being a journalist, a professor, or an analyst, such as interest in academic research and discussions, good research skills, a good prose style and a quick tongue, are what make you good at any important job, and especially a president’s job. But Jimmy Carter had a PhD and he was a hopeless ditherer. Harry Truman was not particularly bright, and he desegregated the damn military. Leadership is not an academic excercise.

(I’ll point out, now, in a turnabout-is-fair-play way, that there’s an assumption among many of the MBA’s I hang out with that the things that made them good at business school — mathematical ability, organization and detail-orientation, competitive instinct and an unflagging willingness to jump through seemingly pointless hoops in order to get ahead — are what make you a good leader, and in some cases, a good person. This is also silly.)

Next up is Crooked Timber with this:

I’ve never found the argument that conservatives are discriminated against in academia terribly compelling. But it does seem like an interesting case, if only because in making it common or garden conservatives are forced to admit the existence of institutionalized inequality, something they are usually loath to acknowledge. Andrew Sullivan just bumped into this question. (Via Pandagon.) He raises and then dismisses the most parsimonious explanation for this inequality, namely that conservatives are just not as clever as liberals and so don’t get hired. He quotes a tongue-in-cheek line from a Duke Prof, who says “If, as John Stuart Mill said, stupid people are generally conservative, then there are lots of conservatives we will never hire. Mill’s analysis may go some way towards explaining the power of the Republican party in our society and the relative scarcity of Republicans in academia.” Andy is not persuaded, of course. But why not?

Does anyone else see the connection here? What if the arguments made about the differences between “academic intelligence” and “business intelligence” actually relate to why liberals are more attracted than anti-liberals (my term for both conservatives and libertarians) to academia? Academics in any field have to develop a certain facility with words and with various foms of persuasion (sometimes even crossing the line into sophistry). Academic pursuits are primarily investigative and deliberative. By contrast, business types rely on very different forms of persuasion and are more focused on choosing one possibility than on exploring all.

My point is that the same distinction largely applies to liberals and conservatives. Keeping an open mind and considering different viewpoints is an essential part of the liberal philosophy. Choosing one idea and sticking to it through thick and thin is a conservative hallmarks. Liberals delight in skewering sacred cows – even their own. Many conservatives believe that is not possible for the conventional wisdom – whether passed down from the traditional trinity or that of Rand, Friedman and Hayek – to be wrong. Anti-liberals on the net certainly engage in certain kinds of verbal persuasion, but it’s usually limited to obvious tricks such as redefinition, false dilemmas, and argument by repetition; theirs is the verbal bludgeon, not the rapier, and that’s a comment on style rather than intellect (this time). The predominance of liberals in academia might be simply a matter of style and perceptions of value, not ideology.

Winning the Race

It happened much sooner than I thought it would: Whistle Stopper now has more posts than America’s Debate. As of a few minutes ago the score was WS 85666, AD 85105. People voted with their feet, and they voted for freedom of speech.

Astroturf Again

Looks like astroturf is alive and well on Amazon. Check out the customer reviews for Charles Perkin’s Ad Hoc Networking. Notice the multiple slams, all 40-column formatted, all saying about the same thing, all written at about the same (low) level of literacy. Looks like someone has a real axe to grind, or maybe a competing book to hype, and doesn’t let little things like ethics stand in their way.