Arnt Gulbrandsen
About meAbout this blog

The cost of large-scale surveillance

Fittingly, Germany has a federal office for protecting the democratic state against nazis and other threats to democracy. Each of the sixteen states also runs a smaller effort of its own. Some have dedicated organizations, some locate the work within a ministry, but all do something.

Because of the variety it's nontrivial to add up the cost of all this. I added up six of the biggest organizations and that came to €220 million, so I blithely estimate a total of €250-300 million.

Conveniently, there are 25-30,000 nazis in Germany (says the LfV Hessen), which means that the state spends €10,000 per nazi — or would if all the work were directed against nazis, which it isn't.

Browsing the annual reports gives me the impression that the resource are divided mainly between nazis, leftists and islamists, with a little for other purposes. Since the nazis do the bulk of the killing (more than 90% since reuinification, exact numbers are subject to discussion), but the leftists and islamists get the bulk of the political attention, I simply split the resources evenly: 30% for nazis, 30% for leftists, 30% for islamists and 10% for randoms.

In other words, nazi surveillance costs something in the vicinity of €3,000 per active nazi per year.

Something odd happened recently: Two nazis called Uwe Mundlos and Uwe Böhnhard committed suicide for unknown reasons; a third called Beate Zschäpe then blew up the flat in which all three lived.

The police afterwards found evidence there that the three had killed about one Turkish immigrant per year for the past decade, scattered all over Germany. The newspapers write they may have had local assistance in many/all of the locations, and they made a DVD bragging about the killings. I have no idea how widely it has circulated. (A search for dvd paulchen mundlos may locate a copy.)

Anyone who's helped the killer trio, anyone whom they have approached for help, anyone to whom they've given or sold that DVD: The state has spent an average of €3,000 per year watching each of those people. And it has not discovered either the DVD or any of the requests for help.

From this I infer that if a capable, well-run state such as Germany is to carry out widespread surveillance of its citizens, and do it well enough to catch someone like the trio Mundlos/Böhnhard/Zschäpe, then it has to spend more than €3,000 per year and potential recruit.

Comparing javadoc with qdoc and doxygen

Qdoc misses many features Javadoc has. This is intentional — javadoc has many naïve or harmful features. Here's a braindump of the features I dropped or decided against adding.

@author is one thing Qt had, but I dropped it due to two problems. First, it misled users who used it to answer the question who should I ask about this problem?. The problem was typically about some recent change to the file, and the original author of the file was the wrong person to ask. Second, there was some reluctance within the team about editing someone else's code, which delayed bugfixes. […More…]

The brazen lie is the best kind

The key to persuasion is to surround the brazen lie with truth and then smother it in visual noise:

8.6 > 8.9 and 8.8 ≈ 8.5, and the graph pulls it off. Chapeau. I think the key here is that much of the graph is correct (all the instances of 9.1 match up, etc) and there's lots of visual noise.

Half a quotation is no quotation at all

Information wants to be free has turned into one of those soundbites that are believed by virtue of being so often repeated, like a cross breeding of of Drink Coca-Cola and blah considered harmful.

At least Drink Coca-Cola is an accurate summary of what the Coca-Cola Corporation said. Information wants to be free is a misleading, disgraceful misquote.

Here is Stewart Brand's entire clueful paragraph, quoted from page 202 of my copy of The Media Lab: Information wants to be free. Information also wants to be expensive. Information wants to be free, because it has become so cheap to distribute, copy and recombine — too cheap to meter. It wants to be expensive because it can be immeasurably valuable to the recipient. That tension will not go away. It leads to endless wrenching debate about price, copyright, intellectual property and the moral rightness of casual distribution, because each round of new devices makes the tension worse, not better.

ADSL from Deutsche Telekom

So just now, as I was writing up the advent calendar a door-to-door salesman came asking whether I might want to purchase lovely phone and internet connectivity from Telekom.

Now I need to vent.

I was a Telekom customer for years. Not very happy, but also not unhappy and changes seemed risky. So when I needed more bandwidth, early in July 2009, I ordered an upgrade. […More…]


The text we've all learned to read is arranged in lines: Horizontal baseline, regularly sized letters, regular line height, lines neither too narrow nor too wide.

Anyone who breaks those rules disturbs the mind's reading and distracts from the content. Minor violations cause minor disturbance.

Which is fine, I suppose. Ask any advertising agency. If you violate the right norm you can make the brain sit up and take notice of a message it would otherwise skip. Drink Coca-Cola. But it's not something a GUI program should do. GUI programs should form the thinnest possible barrier between user and data. […More…]

Sharing keyboard across Mac and Linux

Computers are good. More computers are better. But more keyboards are not. Swapping keyboards all the time was how I first ruined my wrists, almost twenty years ago.

That's why now, with a Mac Mini under and a linux box near my working desk, I definitely don't want to use two keyboards. One is the right number, and Synergy is the way to share keyboard and mouse. […More…]

Silverlight video streaming on the Mac

The Silverlight streaming has a tendency to pick a very low frame rate on some hosts, particularly on the Macintosh. Microsoft has promised a fix in Silverlight 5, but that doesn't help now.

The workaround is to disable WindowSizeHeuristicsEnabled in the player configuration file. Of course that may have negative consequences.

A new gadget: Nuforce Icon μDAC-2 amplifier

My neighbour is putting up another concrete building and I don't like noise.

For the past few days I've used a Nuforce μDAC-2 together with Bose QC15 headphones. I tried the QC15s alone, but they don't suppress the construction noise very well on their own. They do better when fed music.

The μDAC-2 does well. It's not exactly highend (for context: I think Musical Fidelity makes highend gear, and I consider most Bose devices to be overpriced beep-beep gadgets). But it also doesn't offend me like most computer audio gadgets. It's pleasant, and allows me to work in complete disregard of the $#$@# concrete mixers. Well worth the price.

Zero bits of information

I quote at length from chapter four of Jef Raskin's book The humane interface:

We have looked at two interfaces, one of which will take about 5 seconds to operate and the other of which will take more than 15 seconds. [...] It is clear which of the two better satisfies the requirement. The next question that we ask is how fast an interface [...] can be. […More…]

tcpdump on Mikrotik

Mikrotik RouterOS doesn't have a tcpdump command. It has solutions for most/all of the problems I like to solve with tcpdump, though. […More…]

Patere necesse est

This week, another thousand bloggers explain that patents are bad because they're used to harass, etc.

Noone seems to understand that for software patents to be meet their stated aims, it must be possible for programmers to learn something by searching for, finding and reading the relevant patent.

Wikipedia defines patents as a set of exclusive rights granted [...] to an inventor [...] in exchange for the public disclosure of an invention. That public disclosure isn't happening now: software patents aren't understandable to software developers, so the rights are granted in exchange for effectively nothing.

Wikipedia goes on to say the same thing again in different words: The word patent originates from the Latin patere, which means to lay open (i.e., to make available for public inspection).

Avoiding harassment is a start, but it's not enough. Patere necesse est.

Update: Two corollaries, obvious IMO, but... There must be something in each patent that's worth learning. Restating textbooks isn't enough. And each patent must be such that it's practically possible to work without infringing/licensing it.

Lawnmowers, a taxonomy

Lawnmowers may be classified according to noise, speed, price, reliability, durability and so on. I don't have a lawn, so all I really care about is how loud the superintendents near me are, and for how long. […More…]

Truth is beauty, beauty is truth

I'm throwing away old books. The room with all the old bookshelves is getting a new life, and in the process of moving the books to the new shelves in a different room, some books… don't come along.

One such is Beautiful code, an anthology to support Amnesty International. I bought it for one chapter, Code in motion, in which Christopher Seiwald and Laura Wingerd elaborate on Christopher's earlier Seven pillars of pretty code (go read it, it's good).

I want to throw the book away. The other chapters are just so much filler. But I can't bring myself to throw away the figures on pages 534 and 535, those are too valuable. Must have those.

Some of the code I've written since 1992 (when my first significant contribution was accepted into an open source project) is still there, bits of it heavily used. The parts of my code that goes on working without much change shares one characteristic: It reads clearly and easily. It's well-documented, well-commented and there's hardly any nesting.

I spy a causal relationship: Truth is beauty, beauty is truth.

catch( Exception e ) { throw new Exception( e ); }

Some Java book I read long ago, I think it was Thinking in Java, explains that one of the benefits of Java exceptions is that you can shift error handling away from the normal path, leaving the implementation of the common case clearer and better.

Fine. There's just one catch: You have to catch the exceptions and handle the error somewhere. […More…]

Amazon Prime: The game

The Amazon Prime game is an odd kind of game: The players are Amazon and myself, but the winner is usually either DHL or UPS.

The rules are as follows: […More…]

No suing Magura

I have a new bicycle. A marvellous new bicycle. It has front and back lights that work well enough to not annoy me, a gear shift that's just as good (as well it should be) and brakes that stop me when I want to stop, even when I'm pedalling 160kg.

Why is this marvellous?

But the true wonder is the manuals. […More…]

TV-b-gone SHP

Leaving the offices of today, I pressed the button half a dozen times. (For some reason,'s planners thought it best to litter the offices with giant TVs, most turned on, all muted. There's a corporate espresso bar with seventeen corporate television sets. Really makes one wonder.) Walking to the hotel, I pressed the button a few more times.

Just as I was entering, I saw one last TV, reached for my tv-b-gone and... nothing. An employee had turned the TV off as part of closing for the day.

I'm not sure how I feel. Puzzled to have seen someone turn a television set off. Happy to have seen it happen. And somehow cheated.

Update: What a pity the TV-b-gone is too slow for drive-by actionism.

I learned something today: Why IDEs suck

Wrote colleague A to colleague B: With all due respect, suggesting anything other than an IDE today for coding is not reasonable. IntelliJ IDEA, Eclipse, NetBeans, whatever. Still running circles around your stone-tablet-tech editors ;) So, I don't understand why you would want anything less.

But B could suggest anything other, and wanted less, and he's one of the two best programmers on the team, too.

A, hm, a lively discussion ensued. What I learned: […More…]

Clueless in the cloud

What Amazon wrote:

We have noticed that one or more of your instances are running on a host degraded due to hardware failure. [...]

The host needs to undergo maintenance and will be taken down [...]

What Amazon might have written:

Thought you were clever, eh? Running that fancy Cassandra cluster? I bet you didn't expect your redundant copies on several Cassandra nodes to really be stored on the same crummy drive. […More…]

Android WLAN roaming breakage

We have two access points at home, and wireless clients can roam freely, keeping their IP address.

Most clients can. Android phones and tables could not. For example, if a Motorola Xoom (Android 3.0) was in range of both APs, then it would switch to the other AP every 3-4 seconds.

The problem was that one AP was set to support only 802.11g, while the other was set to support b/g. Setting both to G-only solved the problem. The Xoom now connects quickly and keeps its connection (so long as it remains still at least).

On Jira

Jira is what I'm supposed to look at in the morning. It tells me what's urgent. What I should fix. It's almost never anything I really want to do. I want to write code. Something that's challenging, with a useful result.

Telling me to open a web browser is not a good way to make me perform chores. Sorry.

A sort of bug tracker

All bug trackers suck. That's why Abhijit and I really don't want to use one for aox.

Here's what we do instead. It's subtle.

There's a notes file in the version-controlled source tree. The only way to add to a note (ie. file a bug) is to make us do it. There are some scripts that look at the file. […More…]


Snippets is a jabber/xmpp bot that periodically asks each team member what are you doing? and collects the answers on a web page. […More…]