Mar 24

Scenes from the Life of a System Architect

I’ve been doing some heavy work on the core code of gpsd recently, and realized it would be a good idea to explain the whys and wherefores to my co-developers on the project. After I wrote my explanation and reread it, I realized I had managed to generate something that might be relatively accessible, and perhaps even interesting, to people who aren’t intimate with the GPSD codebase.

I guess I’m aiming this at junior programmers and particularly curious non-programmers. It’s a slice of what software systems design — the thing that project leads and architects do — is like in the real world, where the weight of history is often as pressing as today’s requirements list. I think this note shows an example of doing it right, or at least not getting it too badly wrong.

If you find the technicalese in here difficult, it may be useful to refer back to some of my previous posts about this project:

GPSD and Code Excellence

GPSD-NG: A Case Study in Application Protocol Evolution

Why GPSes suck, and what to do about it

Continue reading

Mar 23

Victimology bites

Dr. Richard Friedman’s Sabotaging Success, but to What End?, published 2010-03-22 in the New York Times, is about an instantly recognizable pattern — people who sabotage themselves so they can feel like martyred victims of an uncaring world.

The piece is insightful and even funny in a bleak sort of way, but as I read through it I felt an increasing sense that there was something missing from this story. I was nearly at the end before I realized what had been lurking unspoken in Dr. Friedman’s account. But the crucial clue had been there from the beginning, when he writes of one patient “In fact, her status as an injured party afforded her a psychological advantage: she felt morally superior to everyone she felt had mistreated her. This was a role she had no intention of giving up.” Where…now, where had I heard that song before?

Continue reading

Mar 17

In search of: FTL taxonomy

I’ve been troping again. This time I found and repaired the TV Tropes page on Faster Than Light Travel. It had previously made a distinction between three subtypes of FTL drive: “jump”, “warp”, and “shortcut”. The “shortcut” category was confused and confusing, and I’ve renamed it to “portal” and fixed the definitions of both “portal” and “warp” subtropes.

I’m now looking for earliest occurrences and trope codifiers on these subtypes. I think I have one nailed down, but I can’t push the other two back very far. Instances and cites are solicited.

Continue reading

Mar 13

Subversion to GIT Migration: A Tale of Two Gotchas

I’ve been wanting to migrate the GPSD codebase off Subversion to a distributed version control system for many months now. GPSD has a particular reason for DVCS; our developers often have to test GPSD sensors outdoors and aren’t necessarily in range of WiFi when they do it.

GPSD also needs to change hosting sites, for reliability reasons I’ve written about before. Though I’m a fan of Mercurial, I determined that moving to git would give us a wider range of hosting options. Also, git and hg are similar enough to make intermigration really easy – from SVN to either is 90% of the way to the other.

This blog entry records two problems I ran into, and solutions for them. One is that the standard way of converting repos does unfortunate things with tags directories. The second is that the CIA hook scripts for git are stale and rather broken.

Continue reading

Mar 10

On Learning Haskell

I’ve had learning the computer language Haskell on my to-do list for some time. I’m actually stepping up to learn it now, thanks to a temporary lull in my other activities and a vicious cold that has left me disinclined to strenuous work. I may associate Haskell with the taste of zinc gluconate for the rest of my days; both have an astringent and medicinal quality and produce fervent claims of effectiveness about which I am moderately optimistic but which I have not yet personally verified.

Haskell is very obviously a language built by mathematical logicians for mathematical logicians. Category theory lurks behind it in the same way that the lambda calculus lurks behind LISP. The following is an effort to make Haskell’s way of carving up the world intelligible, written partly to clarify my own thoughts.

Continue reading

Mar 07

Sink, the Bismarckian state!

Hmm: On 24th February I wrote, in a comment on this blog:

We’re about to reach the end of the historical era that began when Bismarck first implemented state socialism in the 1880s. The changes will be huge and wrenching; I wouldn’t even put the dissolution of the USA outside the realm of possibility.

Two days later, Mark Steyn writes this in Our own Greek tragedy:

The 20th century Bismarckian welfare state has run out of people to stick it to.

Coincidence or conspiracy? You be the judge.

Mar 04

Greed kills: Why smartphone lock-in will fail and open source win

In a previous post, How smartphones will disrupt PCs, I explained how and why I think small, ultra-portable, general-purpose computers that we’ll think of and use as “smartphones” are going to displace the PC. I promised then to explain why the software of these devices will be open source.

Go read Androids Will Challenge the iPad. It isn’t about smartphones, but the logic that will break the iPhone business model is clearly set out in it for anyone who’s paying attention. What we’re about to see in the smartphone and tablet markets is a repeat of the way the IBM PC shouldered aside the Apple II after 1980. Google’s deliberately slow-balled launch of Android via the G1 was just prelude; it’s with the Motorola Droid, the unlocked Nexus One and the generic Android tablets that the game begins in earnest.

Continue reading

Mar 04

Lies and consequences

In the horrible-inevitability department: Darwin Foes Add Warming to Targets.

My first thought when I read this was: “Creationists opposing AGW hysteria? Wow. So those stupid fucks are good for something after all.”

My second thought was: “It’d be a damn shame if AGW ends up discrediting good science with the public, but if it happens the scientific establishment has only itself to blame for not busting the AGW fraud first.”

In fact, I don’t think that bad outcome is likely to happen, for reasons I explained in Will the AGW fraud discredit science?. But this news story is a warning to all scientists: if you don’t want creationists to get traction, you can’t just treat this as someone else’s problem. You have to clean house. You have tolerated liars and rascals like Phil Jones and Rajendra Pachauri in your midst too long; you need to throw them out.

A diplomatic way for any random professional society to do this would be to demand that all climate science must be held to the strictest standards of methodological scrutiny. All data, including primary un-“corrected” datasets, must be available for auditing by third parties. All modeling code must be published. The assumptions made in data reduction and smoothing must be an explicitly documented part of the work product.

These requirements would kill off AGW alarmism as surely as a bullet through the head. But its credibility is already collapsing; the rising issue, now, is to prevent collateral damage from the scientific community’s failure to insist on them sooner. Every day you delay will strengthen the creationists and the flat-earthers and all the other monsters begotten from the sleep of reason.

UPDATE: and, in a nice bookend, ABC follows the money, suggesting strongly that the scientific establishment has failed to clean house because alarmism is just too damn lucrative.

Mar 02

Cocoa party! Yeah!

First there was the Tea Party movement. Which I’ve been keeping my distance from because while some of the small-government talk appealed to my libertarian instincts, it seemed to have a whiff of grouchy-old-fart social conservatism about it. While I’ve nearly achieved the calendar age required for grouchy-old-fart status, I don’t want anything to do with that mindset thank you very much.

Then there was the Coffee Party movement, which smelled of astroturf and humbug even before the founder was outed as a Democratic political operative and former New York Times staffer (but I repeat myself).

Now, there’s…the Cocoa Party movement! Yeah. Sign me up!

This satire is especially personally funny to me because in sober fact I am a cocoa-drinker by choice. I don’t like coffee, and while I enjoy tea well enough, I’d rather have a big mug of Godiva Dark Chocolate any day – extra strong, piping hot, no sugar or cream but a few shakes of cinnamon for sure.

Continue reading

Mar 02

The Nose of Peace

My regular readers will know that I’m sometimes fascinated by the extent to which mammalian body language crosses species lines — and, indeed, is so well conserved that families as far apart as felids and primates can communicate in ways that are emotionally satisfying to both parties. We take this for granted, but it’s really quite remarkable when you think about it; there’s a repertoire of mammalian gestures that must have maintained consistent social meanings since the earliest mammals in the late Triassic, 200 million years ago, all the way through dizzying changes in size, encephalization and ecological niche.

My wife Cathy reminded me of another one today: the Nose of Peace. “I thought you’d enjoy this photo of a kitten and a young deer exchanging the Nose of Peace” she wrote; our label for it comes from my attempt to describe to a friend over the phone the behavior of two cats who, after quarrelling for days, decided to get along. My friend understood what was intended by “the Nose of Peace” immediately, and that term for it has since spread to several other mutual friends.

Continue reading

Feb 28

Plug for a worthy project: Softbound

When I do my ESR-the-famous-geek road show, I get two kinds of questions: the public ones from my auduence, and the private ones from people who buttonhole me afterwards because they politely don’t want to burden the audience with their particular concerns. Of these, the single most common one is probably “How do I attract developers to my project?”

Last Wednesday I was giving a talk at University of Pennsylvania, which I do once in most years because it’s near me and one of the professors there, Dr. David Matuszek, is an old friend who likes to have me in once a year as a treat for his students.

One of his colleagues approached me with the familiar question. There isn’t a good general answer to this one, because how you attract developers depends in subtle and complicated ways on which developers you actually want. But this particular pitch interested me because it could be part of a significant change in the open-source tools infrastructure that I see coming down the pike.

Continue reading

Feb 25

How smartphones will disrupt PCs

I never bought the hype that laptops were going to obsolesce the conventional desktop PC, nor do I buy today’s version of the hype about netbooks. The reason I didn’t is simple: display and keyboard ergonomics. I use and like a Lenovo X61 Thinkpad happily when traveling, but for steady day-to-day work nothing beats having a big ol’ keyboard and a display with lots of pixels. I have a Samsung 1100DF, 2048×1536, and it may be a huge end-of-lifed boat anchor but I won’t give it up for a flatscreen with lower resolution and less screen real estate.

But now I’m going to reverse myself and predict that smartphones — not today’s smartphones, but their descendants three to five years out, will displace the PC. Here’s what I think my computing experience is going to look like, oh, about 2014:

Continue reading

Feb 24

Marginal Devolution

The recession got personal for me today, when I learned the reason a man I’ve been gaming with at my regular Friday night group hasn’t been showing up lately is because he’s broke and in a homeless shelter. I’m going to ask the Friday night gang for help for the guy — not money, but the job lead he needs much more. And it got me to thinking, about the two people I know who’ve actually been dragged under by the crappy economy.

You might wonder what took me so long. I knew it was getting bad out there, with the nominal unemployment rate at 10% and the actual hitting 17% and 6 applicants for every job. But my friends are mostly university-educated professionals in high-skilled tech jobs — last fired, first hired, and bright enough that if they had to change careers or found their own business they could probably hack it. Except…except for these two, who I’ll call A and B. What’s happening to them is bad. Very bad. And it illustrates a problem that’s going to get worse barring some drastic changes in the system.

Continue reading

Feb 19

On being against torture

I’m against the horror of therdiglob. All right-thinking people should be against therdiglob; civilized societies have long abandoned the practice. Therdiglob makes us look bad in the eyes of the world. If you’re not against therdiglob, someone may do it to you someday.


The above statement is meaningless, because “therdiglob” is undefined. It has the form of moral indignation, but it is not morally serious. Actually, it’s vacuous except as a way of conveying the speaker’s desire to sound high-minded and morally superior. As read, it is actually faintly ridiculous — indignation without substance, tone without content, pure posturing.

Everything depends on the extensional meaning of “therdiglob”. If “therdiglob” were defined as “flaying the subject alive”, it would be difficult to object to the above. On the other hand, if “therdiglob” were defined as “giving the subject cotton candy”, it would become utterly rather than faintly ridiculous.

Now consider this:

I’m against the horror of torture. All right-thinking people should be against torture; civilized societies have long abandoned the practice. Torture makes us look bad in the eyes of the world. If you’re not against torture, someone may do it to you someday.

Continue reading

Feb 18

How you know you’ve made a difference

I received this a few seconds ago in my mailbox. It’s not especially unusual for me to get wow-you-changed-my-life email, I see two or three in a typical month, but this one is…well, I’ll say a bit more intense than usual. Also, 34 is an unusual age; they tend to be teenagers. Sender’s name masked and one bit turned into a live link. Otherwise unedited, typos and all.

I just finished reading your [Hacker HOWTO] for the second time in as many
days. All of my life I have wanted to be a programmer. I have never
done it. I dealt with the failure of that by downloading cracked
software and telling myself that I was a “hacker.”

When I clicked on the link to your guide, my intention was to get
started on the road towards what I envisioned a hacker to be.

By the end of your guide, I was wallowing in humiliation. I felt…
well basically I felt like a jack ass. I never even knew what a
hacker was. I wasn’t even a cracker, just some poser with no

Your guide showed me that any of my few contributions to the cracker
community were meaningless, juvenile ploys for attention with no
progressive merit. They won’t matter in 6 months because I haven’t
‘built’ anything.

After reading your guide, I began to research and really appreciate
the open source community. I saw that the degree of separation
between us wasn’t to huge of a gap and I realized that I could,
through dedication and hard(but fun) work, be part of something that
is growing and giving. A place where individual contributions aren’t
lost in the grand scheme of things, but help shape that scheme.

I am 34 years old and I have no problem admitting to you that your
guide made me feel like a complete ass. It also directed me to an
ideal I will be proud to contribute to.

For that, I thank you Sir.


I replied by quoting “I saw that the degree of separation between us wasn’t to huge of a gap” and said “I’m glad you got that far. Good luck on your journey.”

And that, ladies and gentlemen, is how you know your life has made a difference.

Feb 18

Being an oracle is weird

In some areas of computer science, “oracle” is used as a term for a magic box that delivers solutions to undecidable problems. Or, sometimes more generally for any machine that generates answers by a process you don’t understand. One of the roles I play with respect to the Battle For Wesnoth fantasy game is as an oracle that generates plausible fantasy names on demand.

Here’s a (very lightly edited) transaction of this kind that I took part in a short while ago. There’s something going on behind it that is odder than will be immediately apparent.

Continue reading

Feb 16

Who bears the costs of moral vanity?

A high-ranking Taliban commander is captured in Pakistan, and the (now entirely predictable) dance begins. Says the Guardian:

Mullah Barader has been in Pakistani custody for several days, with US and Pakistani intelligence officials both taking part in interrogations, according to the officials. Though Barack Obama has banned US agencies from using forms of torture such as waterboarding, Pakistani questioning techniques are frequently brutal.

That’s right. Because the American chattering classes have their panties in a bunch about acts of “torture” that don’t do any permanent damage to the victim, Barader is in the hands of Pakistanis who are likely to fuck his shit up the old-school way, with knives and cattle-prods and blowtorches. And yet, this is supposed to count as a moral victory.

Continue reading