How to Decode the True Meaning of What NSA Officials Say

Jameel Jaffer and Brett Max Kaufman in Slate.

James Clapper, the director of national intelligence, has been harshly criticized for having misled Congress earlier this year about the scope of the National Security Agency’s surveillance activities. The criticism is entirely justified. An equally insidious threat to the integrity of our national debate, however, comes not from officials’ outright lies but from the language they use to tell the truth. When it comes to discussing government surveillance, U.S. intelligence officials have been using a vocabulary of misdirection—a language that allows them to say one thing while meaning quite another. The assignment of unconventional meanings to conventional words allows officials to imply that the NSA’s activities are narrow and closely supervised, though neither of those things is true. What follows is a lexicon for decoding the true meaning of what NSA officials say.

A lexicon for understanding the words U.S. intelligence officials use to mislead the public.

Aaron Swartz’s Suicide

If you have been following the news you must be aware that Aaron Swartz, a social-networking pioneer, academic researcher and clumsy hacktivist, has killed himself. Though he left no suicide note many people attribute his death to the fact that he was facing federal charges that could have sent him to prison for many decades.

I feel obliged to comment since I responded to the original news of his arrest with a somewhat sardonic post called “When Ethicists Steal.” (Swartz was a Fellow at the Harvard University Ethics Center and the title referred to my long-held suspicion that self-styled academic “ethicists” just come up with rationalizations for their gut feelings and present them as scientific results, far superior to the ethical opinions of mere mortals.)

Swartz downloaded a vast number of academic articles from the JSTOR database. He apparently believed that they should be freely available to the public. Who knows? Maybe he was right, given that the public probably paid for the research with their tax dollars.

However anyone with any involvement with computers should understand that it is not OK to enter a network wiring closet without permission in order to make an unauthorized connection to the network. Surely this would justify some sort of criminal penalty.

On the other hand what he did was in no way comparable to murder. It was more on the level of entering an empty house though an unlocked door and taking a sandwich from the refrigerator. Except that nobody was deprived of a sandwich. (JSTOR, the aggrieved party, didn’t lose any money and didn’t want to press charges.)

So the loud outcry that the federal prosecutor was abusing his power by threatening to send Swartz to prison until he was an old man is not without merit. We have lost a bright and promising young man whose actions were surely misguided but not evil.

On the other hand we are not dealing with a rogue prosecutor here. This is what prosecutors do every day, though usually not to people with so many friends in the media. They routinely threaten to send people to prison for the rest of their lives in order to pressure them to plead guilty to reduced charges–even if they are innocent. That’s the kind of justice system we have and presumably that’s the kind of justice system the voters want, otherwise they would change it.

BC31094 Error with MSBuild but not Visual Studio

Here’s one of those things that “can’t possibly happen” but does. The project builds fine under the Visual Studio 2008 IDE, but if I run it directly under MSBuild.exe it fails with the error

error BC31094: Implementing class 'MMCLTSVCS.FooClass' for interface 'MMCLTSVCS.Foo' cannot be found.

The key is that the error involves calling a COM object. The project contains a reference to the interop for that COM object: Interop.MMCLTSVCS.dll. However it does not contain a reference to the interop for one of the other COM objects that Interop.MMCLTSVCS.dll uses. Apparently this works fine under the IDE but fails with an obscure error message under MSBuild.

Visual Studio’s “Unused References” function provides an easy way to get this error. It will helpfully remove any references that are not used by your .NET code, without considering whether they are used by any of the referenced interops.