Looked at in a certain way, writing programs is mostly an epic battle against complexity. It doesn’t take long for any reasonably ambitious project to get too big to fit in any one person’s head, and, once it’s reached that stage, it never gets any better. Because complexity is a tide that never goes out. Once you’ve written an air traffic control system, it’s not like the next air traffic control system you write is going to be easier. Just the opposite. It’ll probably be orders of magnitude harder.
But things can be massaged into a state of obscured complexity — which is to say, perceived simplicity — by good abstractions. These days, if you want to establish a connection to a server somewhere, you don’t have to know anything about the details of TCP/IP, or packets, or networks. You just say connect and — poof! — magic happens.
Which brings me, oddly enough, to God. Or gods. There was a time when gods were stand-ins for the bewildering complexity of the world we live in. When the giant yellow ball in the sky disappeared for several terrifying seconds in the middle of the day, or mountains exploded and smothered entire countries in ash, or oceans rose up and drowned continents — it was a lot easier to abstract all of that stuff away behind a vaguely ubiquitous and all-powerful god than speculate on the actual mechanisms that caused it. Or even know that those mechanisms exist.
Before monotheism cornered the market on faith, the relationship between things we didn’t understand and the gods we worshiped were pleasantly direct. You had gods of oceans, gods of war, gods of beauty, storms, death, fertility, etc. So — if the river didn’t swell at the appointed time and your crops withered, you didn’t have to worry much about the mechanics of that cataclysm. You had a god to blame, or curse, or beseech.
And — far more importantly — you didn’t have to face the pitiless amorality of a world that lets things like that happen. When that ancient ruined farmer asked why the river decided to lie fallow a year, I’m pretty sure it would have been easier for him to believe that he’d displeased the river god Hapi. because the alternative is that it happened for no reason at all. The notion of existential meaninglessness is far more terrifying than the anger of invented gods. Gods have intelligence, and will. If they’re good, they can be appeased. If they’re bad, they can be opposed. Either way, you can do something about it. We’re just not equipped to deal with the notion of a giant void of intent at the core of the universe — this well of uncaring absence that we live in isn’t something we can fight, much less defeat. There’s nothing to fight. It’s like declaring war on rain. What good can it possibly do?
Anyway — eventually, the welter of targeted, domain-specific gods (shallow abstractions, all) collapsed into a series of one true gods. And then those monolithic gods began to experience their own, internal contractions, as the puny hu-mans they oversaw began to figure out the whats of their world. We don’t need a god to explain eclipses anymore. We know what makes the ground shake, and we understand that bolts of lightning are massive discharges of static electricity, not divine javelins. Religion is fighting desperately against this encroachment of rational thought into its domain, but it’s a losing battle.
Gods are still relevant, though, and probably always will be, because science and rational thought can’t really help with the why. Why does disease devour so many people every year? Why are there so many homeless children? Why do people starve? Why are there wars? Why do we die?
God answers those questions. Or rather, he doesn’t answer them, he abstracts them away. We aren’t meant to understand all of these horrors as individual, random, disconnected events, he tells us. It’s all part of a plan — a plan that isn’t disclosed to us, that will never be disclosed to us, and that we couldn’t possibly understand even it even if it was. We don’t have to understand it. When our fathers die, and we ask for a reason, god says because I wish it to be so. There’s no need to ask the next logical question, because we’ve left the realm of logic. We’ve entered the divine.
So I guess the analogy I started all this out with is kind of crappy. Divine abstractions aren’t like programming abstractions at all: they’re meant to conceal the things we don’t know, not simplify the thing we do. We needed Helios not because we didn’t want to think about the chemistry of the sun, but because we couldn’t. By the same token, we need a God to tell us that our lives have purpose and meaning not because we don’t want to go to the trouble of finding it ourselves, but because there’s nothing to find. No purpose. No point. No meaning.
Which is to say: the delicate scaffolding of meaning is something we have to invent, and erect, and maintain. And we often to do it through the medium of an omnipotent, all-seeing, inscrutable, irascible god. God may smite us every so often. He may give devils free reign, burden us with laws that contradict our deepest desires, inflict disease and sorrow and death. But he’s there, an oasis of intent in the center of a dark, uncaring void. And he has a plan.
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.
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:
Kittens. Cute widdle big-eyed cuddly kittens, blanketing the world in a furry carpet of soft mewling adorableness.
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
Celebrities. Pretty people. Fallen starlets. Incipient adulterers. Impossibly Attractive Actors Who Have Found Love Against All Odds.
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.
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
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.
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!
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. ↩
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.
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.
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.
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.