Doubling Down

There are basically two ways to react to the news that something you vociferously advocated for turned out to be a really, really bad idea: you can either admit your mistake and learn from it, or you can double down. Here’s Tom Friedman doubling down:

It’s been a while since I’ve heard someone so intelligent say so many breathtakingly unintelligent things. Did one of our most high-profile pundits really say “Hey terrorists, suck on this?” Yes, yes he did. Did he just draw a painfully weak, attenuated analogy between economic bubbles and “terrorist bubbles”? Indeed. Can this possibly be the same guy who wrote From Beirut to Jerusalem? Somehow, it is.

(via Eschaton)

Springsteen Says …

Bruce Springsteen, in an interview with 60 minutes:

As an artist, your job is to make your audience care about your obsessions.

Twenty years later, and the dude’s still blowing my mind.

Banned

I just found out from my friend Z that his company’s content filters have started banning this blog. I wonder what I did to piss off the cyberprudes — to much cursing? Whining? Bush bashing? Goose slandering?

Whatever it is, it needs to stop. Pariahood is bad for my complexion. So, from now on, I’m going to keep the posts limited to a narrow set of acceptable topics:

  1. Kittens. Cute widdle big-eyed cuddly kittens, blanketing the world in a furry carpet of soft mewling adorableness.
  2. Sports. Not my area of expertise, admittedly, but I have a whole half year of mortifying, psychologically damaging high school soccer experience to draw from.1
  3. Celebrities. Pretty people. Fallen starlets. Incipient adulterers. Impossibly Attractive Actors Who Have Found Love Against All Odds.
  4. Clothing Advice. Again, not something I know anything about, but, seriously, how hard can it be? Don’t wear white socks with black shoes. Don’t wear rainbow suspenders. When your girlfriend tells you that the wardrobe you carefully selected for the evening makes you look like a fucking doofus, then you look like a fucking doofus. Accept it, and move on.
  5. Cooking. Another area of life for which I am wholly unprepared. But as my mother once said, there’s no cooking problem that can’t be solved with a microwave and mallet.2
  6. Home Repair. I’ve become quite adept at changing lightbulbs over the years, a home repair task I succeed at almost 80% of the time. I am also quite good at boarding up the parts of the house that stop working.
  7. Automobiles. Here’s what I know about cars: if you put your key in the slot and turn it, the car makes a big vroomy noise, at which point you can press one of the peddles to make it go. There’s another pedal to make it stop, and a big wheel that you can turn if you don’t want to go straight anymore. If any of these things stop working, you need to call someone.

And that’s about it. I’m expecting huge traffic increases as a result of this new policy, as well as sage nods of approval from all the content nannies. Let the capitulation begin!


  1. To this day, malign soccer balls with evil fanged faces trouble my nightmares, hurling past me into the goal, again and again, while throngs of spectators point and laugh. 

  2. My mother never said that. 

Teleblivion

Anybody who has a nostalgic interest in vintage technology (especially games) should head over to my friend C. Nimbus’s blog, Teleblivion. Some fantastic posts there recently.

The Care and Feeding of Dictators

Gruber nails it:

I posit that the usability and elegance of any product, software or hardware, tends to reach and seldom surpasses the level that satisfies the taste of whoever is in charge of the product. The people in charge of most free and open source software products tend to have poor taste in user interfaces; people with good taste in user interface design are seldom in charge of open source software projects.

Put another way, if you have to ask for better design, you will lose. You need to be in a position to demand it.

I never thought I’d ever hear myself saying this, but sometimes you need dictatorships. Never in government, of course. But often in software. There are some problems that demand a single, guiding hand — one preeminent ego that’s both the progenitor and the keeper of a vision. Because visions tend to become fractured and diffuse when they’re subjected to committee.

The trick is in choosing the right dictator; and in retaining the personnel, and the intelligence, and the power, to depose him when he goes off the rails. As he inevitably will.

Ich Bin Ein Obama Fan

Another beautiful speech from Obama, this one in Berlin:

One line in particular struck a real chord with me:

I come to Berlin as so many of my countrymen have come before. Tonight, I speak to you not as a candidate for President, but as a citizen – a proud citizen of the United States, and a fellow citizen of the world.

This is the exact opposite of everything that our government has stood for in the past eight years, and a complete rejection of the kind of American exceptionalism, insularity, and neo-imperialism that Bush has embraced since he decided he was the decider. It’s a promise to engage with the rest of humanity, rather than bully it into submission.

The right wing has produced its usual stream of daft bullshit in response — everything from complaints about the poster his campaign came up with for the event (OMG it’s got a picture of Obama in profile … just like Hitler!) to his unpatriotic inclusiveness (he said non-Americans also died on 9/11! why does he hate the troops?) to the fact that he gave the speech at all when he should be back home, eating at the Sausage Haus and lying about shit. But all of that is just the reflexive gnarling of a dumb, frightened animal. It’s ignorable, I think1.

What bugs me more is the assertion, from some quarters, that the speech was too light on substance. That’s also bullshit, but it’s a meme that might have legs. Look: it’s true that there aren’t any concrete policy proposals here, but specificity isn’t the point of a speech like this: you don’t go to a different country, as a presidential candidate, and get into details. That stuff comes later. It’s much more important — especially now — to set the tone. What he needs to do, first, is reassure the rest of the world that we can produce politicians who are both charismatic and sane; and, second, that he sees America not as a giant imperialist child swinging reflexively at everything that frightens it, but as a global citizen. As a part of the world’s community.

This doesn’t make him weak, ok? It makes him strong, in all the ways that matter. Him, and us.


  1. And hope. 

I Don’t Know Why This Makes Me Feel The Way It Makes Me Feel

From VALIS:

Save me, protect me, God, in this day of wrath.

Writing Characters

So it took me about twenty years to figure out something pretty fundamental about writing characters. I just finished a story about this kid, his father (who thinks he’s a god) and his mother (a depressed alcoholic). When I first started writing it, the story focused almost exclusively on the boy and his dad; the mother was just a sideshow, a sort of shrill mommy dearest who popped in every so often to inject some arbitrary malevolence.

But she evolved as the story did, so that, by the end, she became — in my mind, at least — a fully-formed, three dimensional person. Still an alcoholic, still criminally neglectful of her son, still shrill — but a real person who arrived at her plight for real reasons. A tragic figure.

Unfortunately, she didn’t quite make the transition on the page. The woman in the story that I turned in a couple of weeks ago is several steps above the cardboard harridan she started out as, but she’s still not much to look at. Still pointlessly vindictive, I think, and still prone to acts whose meanness is either odd or just outright inexplicable.

I didn’t give her a fair shake, and I feel terrible about it. Not because I’ve written something badly. Jobs knows, if I self-flagellated every time I committed that particular sin I’d be a mass of quivering scar tissue by now. I feel terrible because I didn’t give her the respect she deserves. Because I think you have a responsibility to the people you create: you don’t have to go easy on them, or make them sympathetic, or even like them, particularly. But you have to respect them. You have to give them their due, and let them grow into people, and invest the time and effort necessary to communicate who they are.

What’s worse is that I wasn’t just being lazy. There was a part of me that thought the plot would be better served if I left her just a tad undeveloped — if I made her do stuff that she plainly would not. I was wrong about that too. Because character is plot, of course, or at least its most atomic element. If you tinker with that — if you’re at all dishonest with your basic materials — then you warp the whole thing.

I mean, yes, the story may not fall out the way you want if you just let the characters be who they are. But then again, it wasn’t supposed to.

John Hearts George

Behold, again, the horror:

I remember being shocked and nauseated when I first saw this, but it’s taken on a whole new resonance in the past few months, as McCain has steadily jettisoned everything that made him worthwhile and honorable as a candidate, in order to embrace the Bush Way, in all its jingoistic, pitiless incoherence. I still believe he’s better, and smarter, than the things he’s saying — but that just makes his myriad capitulations worse.

I was a big McCain guy back in 2000, so I was crushed when this picture started making the rounds. But these days it looks about right.

In Defense of Quick and Dirty

Came across this post in the Opera developer blog, on why you should never use browser detection in your javascript to work around browser bugs:

The TinyMCE/Opera 9.5 compatibility problem is a textbook example of why browser sniffing should be avoided at all costs. While it may seem like a quick and simple shortcut to work around a bug in the short term, browser sniffing creates a maintenance nightmare further down the road …

Also, whether you develop your own site or write script libraries that will run on thousands of other websites, the chances are that mistakes you make today will stay on the web for years to come, preventing users from upgrading to newer and better browsers because sites they want to use break.

I have to admit, I’ve often been tempted to use browser detection — and, worse, occasionally succumbed to that temptation. Wrestling with the deficiencies of certain browsers (*cough* IE *cough*) is such a horrible, dispiriting experience that eventually you’ll do pretty much anything to make the pain stop. And if relief is just one if (navigator.userAgent.indexOf()) away, then by golly why not do it?

Well, the Opera dudes make a very good case for why not. It seems to me there are basically four things you need to worry about when you’re writing code:

  1. Does it work?
  2. Will it work tomorrow?
  3. Is it reasonably easy to understand, and maintain?
  4. Is it fast enough?

Everything else is a distraction. The TinyMCE fix that the article describes fails test (2), and the alternative solution they propose seems to satisfy all four. So worth doing.

In this case, quick and dirty was a bad idea. But I don’t think it’s always a bad idea. Case in point: CSS layouts. There’s a certain area of dogma in the design community that maintains that all layouts should be handled exclusively by CSS positioning, and never with tables. Tables are for displaying data. CSS is for layouts.

Which makes sense. Tables were certainly not intended to be used for formatting, and you’re sort of committing the cardinal sin of mixing model and presentation if you use them that way — so there’s theoretically very little to disagree with here. But the picture gets murkier when when you descend from the lofty realms of theory into the muck of actual implementation, at which point you run into the raging shitstorm that is CSS.

This isn’t intended to be an anti-CSS diatribe, but any non-gurus who’ve attempted to format their stuff with CSS know what I’m talking about. As soon as you try to do anything even mildly complicated — where by “complicated” I mean more ambitious than changing your background color — you’re suddenly in a scary realm of floats and bounding boxes and content edges and border edges and padding edges and margin edges. I’m not even talking about shitty browser support here — although Jobs know that stuff certainly doesn’t help — I’m just talking about the basic “language”, whose designers appear to have made a calculated decision to sacrifice usability for flexibility. It does seem possible to do pretty much anything in CSS, but the penalty you pay is that everything you do is hard. Which is to say: you have to understand everything if you want to do anything.

I’m certainly no CSS expert, and I’m sure there are several arguments floating around in the vast universe of my ignorance to refute most of the sputtering, incoherent calumny I hurl daily in CSS’s direction. But I honestly don’t think my central point is especially controversial: CSS is really hard to use, and — once there’s a lot of it — really hard to maintain, and it imposes a fund of complexity on your stuff that you shouldn’t have to pay for doing simple things.

Like, for example, laying stuff out in configurations that are more or less … tabular. If you have a layout that doesn’t need to be especially flexible, and really looks a lot like a table, then I’d say make it a table. Tables are easy to understand, easy to write, reasonably fast, and they will always work, in every browser you can think of. Quick and dirty is usually bad. But not always bad.