Entries Tagged 'Geekery' ↓

An Unsent Open Letter to Lord Jobs

I went to the Apple Store this morning to see if they could fix my damaged iPhone, and was rebuffed — but not for the reasons I expected.

So I got home, brooded a bit, then wrote a letter to Steve Jobs, bitching about the whole experience. Which is mildly ridiculous, of course. In the larger context of Bad Things That Can Happen, this is microscopically small potatoes. And the phone still works fine. And really I’m incredibly lucky to have one at all. So I have no reason to bitch.

But I’m bitching anyway. This really rankles, and it rankles at a level that transcends the experience itself. So I wrote the letter.

Now I just need to get up the nerve to send it. One does not anger Lord Jobs lightly.

Anyway. Here it is:



Dear Mr Jobs:

I have been a wild-eyed Apple enthusiast since around 2001, when I got my first Mac — a Titanium Powerbook — and fell instantly, ardently in love. And that love hasn’t waned in the past seven years. Really, it hasn’t had a chance to. Every time I think you guys can’t possibly do anything cooler, you do — tiny Nanos, perfect Macbooks, beautiful Airs, paradigm-changing iPhones — all rolling out of Cupertino in a steady stream of unadulterated awesomeness.

So I feel kind of bad that my first letter to you ever is a complaint, and such a minor complaint at that. But it is, I’m afraid.

A couple of months ago I came into possession of a beautiful iPhone. I’ve been slobbering over this lovely piece of machinery since you first announced it, early last year, and it was everything I’d hoped it would be. Beautiful, elegant, effortless. Everything a revelation, everything a delight. It still takes my breath away, every time I pull it out of my pocket.

And then, last week, I dropped it. My heart stopped. I took a moment to curse the gods for their cruelty, and then myself, and then the concrete floor for not getting the hell out of the way when it saw the phone coming. And then I picked it up — and, found it, miraculously, undamaged. Not a scratch. Everything working perfectly.

And so I breathed a sigh of relief, quickly apologized to all the gods I’d cursed — no hard feelings, ok deities? — and went about my business.

Three days later, a crack developed on the screen.

I wept, re-cursed the gods, then went into my local Apple Store, hangdog, and asked how much it would cost to repair the damage.

The Genius I spoke with — friendly, pleasant, competent — said that they would replace it, for free, since there wasn’t any apparent damage to the rest of the phone. I exulted, uncursed the gods, and went off to my corner to wait for him to process the transaction.

But then he called me back, and apologetically told me that he couldn’t replace it after all. I’m not using AT&T — I’m a T-Mobile customer — and so he couldn’t, as a matter of policy, do anything with the phone. I offered to pay for the repair, but he shook his head. Unless there’s an AT&T account attached, Apple can’t help me.

I walked out of the store as I’d walked in — hangdog, crack intact, with absolutely no recourse.

Apple’s insistence that everyone use AT&T with the iPhone has always bewildered me. There’s nothing about the device that should pin it to one carrier, and the notion of inextricably tying hardware to online services is a terrible, terrible policy that the carriers have used to their advantage — and the consumer’s detriment — for far too long. Think about the world that would have been if the same ruinous policy had been foisted on us early in the history of the computer industry — we’d all be buying computers that forced us to use Compuserve, or Prodigy, or MSN, or — god help us — AOL.

The iPhone is a paradigm-changer — the very first usable smartphone. And more than usable. It’s an absolute revolution. It’s what we’ve been waiting for for years. So why not extend the revolution to actual policy, as well? Why not break the shackles that have held us these corrupt carriers for so long?

But leaving all that aside for a moment — of all the carriers to tie the iPhone to, AT&T is the worst that Apple could have picked. It’s not just their substandard service — that I could live with. What I can’t live with is AT&T’s cavalier surrender of their customer’s privacy to to government and industry. From NSA bugs implanted directly into switching stations, to proposals to monitor every packet that passes through their lines at the behest of the entertainment industry, they have demonstrated an unparalleled eagerness to betray their customers’ trust, at every turn.

I understand that many people don’t care about this, or don’t care about it enough to deter them from going with AT&T. Fair enough. But many people do — I do. And I can’t stomach the thought of giving that company any of my money, much less committing my data to their compromised pipes. Not even for an iPhone.

So, after I got my phone, I unlocked it, and started using it with T-Mobile. This is my great sin — wanting to use this beautiful piece of hardware with a service that I can believe in, and trust. And for this sin, I’m relegated to second-class status. My phone is an untouchable now, stranded in this nether-world between what’s allowed and what’s reasonable.

The obvious answer here, then, is DON’T BUY AN IPHONE, DUDE! And that’s right, of course. I am under no obligation to purchase this miraculous piece of hardware, and Apple is under no obligation to support me if I choose to use it in ways it deems inappropriate.

Fine. But not the point, I’d argue.

I think the reason that I — and people like me — are so zealously attached to Apple isn’t because you guys make beautiful machines, or write lovely software, or have miraculously good customer service. It’s all that, of course. But, fundamentally, it’s the aesthetic that attracts me — this manic devotion to the user, to providing a satisfying experience on every conceivable dimension.

But that’s not quite it either. Apple is doing more than trying to please its customers — it’s working toward some inchoate ideal of perfection, a kind of shadowy Platonic form, and is unwilling to compromise anything to get there.

Ok, a little overboard, maybe — but that’s more or less how I feel. Apple appeals to the bits of my lizard brain that respond to that kind of passion and purity. But when Apple does something like this — turning its backs on legitimate customers who have done nothing worse than go the extra mile to use their products — it subverts the whole thing. It’s not just that it’s screwing us over. It’s worse than that. It’s poisoning the beautiful ideal, in a fundamental way.

So that’s my beef. Take it as you will. My addiction to all things Apple continues unabated. I’ve already begun to feel the unmistakable heartpangs of pure love whenever I see an Air, so I’m clearly just as smitten as ever. But there’s a fly in the ointment now. It doesn’t make me angry, or irate, or even annoyed. This is, after all, a very minor thing. But it does make me sad.

Anyway. I hope you guys are planning to drop this exclusivity thing, and soon. It just doesn’t belong.

Bowel Support

My work computer decided to freeze up and eat itself last night, and this morning it wouldn’t boot. I pawed ineffectually at it for a while, then broke down and called IT. I haven’t had to do that in a while, so it took me some time to track down their contact info. It turned out to be an 800 number. This was immediately troubling, but I dialed anyway, and sure enough … it was a call center.

We’d outsourced our own tech support.

I sighed, and resigned myself to the inevitable. Five hours and two calls later, my computer still isn’t working. But at least my ticket has moved down the chain to someone I actually share a goddam building with.

I was bitching about this to my brother, who wondered when corporations would start outsourcing their bathrooms facilities. It really isn’t all that far-fetched.

Call Center: Hello, thank you calling bowel support. How may I help you today?
Me: Yeah. I need to take a dump.
Call Center: I’ll be very happy to help you with that sir. What is your first name?
Me: What?
Call Center: Your first name?
Me: Why do you need my first name?
Call Center: In order to better serve you, sir.
Me: [sighing] Ok, fine. My name is A.
Call Center: Can you spell that please?
Me: Sure. A.
Call Center: Thank you. And your last name?
Me: B.
Call Center: Can you spell that please?
Me: B.
Call Center: Thank you Mr. B. May I call you A?
Me: Look, I’m about to crap my pants here.
Call Center: I will be more than happy to assist you with that, A. Can you tell me the nature of the bowel movement?
Me: [pause] I don’t think so.
Call Center: On a scale of 1 to 10, can you rate the urgency of your fecal event?
Me: Ten. No, wait. What’s one?
Call Center: One is distant intimations of a possible bowel movement, with accompanying though distant suggestions of impending micturition. Ten is an imminent and seismic defecatory event.
Me: Yeah, ten. Actually, make it eleven.
Call Center: There is no eleven.
Me: Well, I’m just saying, I really have to …
Call Center: There is no eleven.
Me: Ok, fine …
Call Center: Can I put you on hold, sir?
Me: What? No! Why!
Call Center: I need to research your eleven event.
Me: No, it’s ten! Ten!
Call Center: Thank you for your patience.
Me: Dude! Please!
Call Center: [muzak] In the naaaame of love … one man in the name of love …
Me: God damn it.
Call Center: The hills are alive … with the sound of muuuusic … with songs they have sung … for a thousand yeeeears!
Me: Oh please. Please. Please please please please …
Call Center: Hello sir. Thank you for your patience.
Me: Oh thank god.
Call Center: I have researched your situation and determined that you are experiencing an urge to defecate.
Me: Yeah, no shit.
Call Center: [pause] You do not need to defecate?
Me: No! It’s just an expression!
Call Center: Can I place you on hold sir?
Me: Dude! I’m begging you!
Call Center: Like a virgin … touched for the very first time … like vir-ir-ir-ir-gin … with your heartbeat next to mine …
Me: [sobs]
Call Center: Thank you for your patience, Mr B.
Me: God damn it!
Call Center: I have opened a low-priority ticket. Someone will contact you as soon as possible to assist you with your issue.
Me: I! Need! To! Crap! Now!
Call Center: Can I assist you with anything else today?
Me: [sighing] Go to hell.
Call Center: Thank you for calling bowel support. Have a nice day.


I’d Like to Grapple-Turn That Vampiric Ooze, Please

The 4th Edition of Dungeons and Dragons is coming out next year, and the geek community is all atwitter with anticipation, derision, or complete ambivalence. I’m with the breathless anticipation crowd, in no small measure because some of the rules in the current edition are really kind of broken — not mechanically broken, just monstrously unpleasant to play. Things like grappling and detecting magic and turning undead — stuff that’s so ridiculously complex that most rightminded players avoid them whenever possible.

But not all players, alas. There are some who insist on grappling everything, or knowing exactly what schools of magic are emanating from every faintly enchanted bauble they come across, or turning every zombie cockroach that skitters across their path. These players are the bane of DMs everywhere.

You kind of have to humor them, of course. But that doesn’t mean you can’t dream:

Player: I want to grapple the gelatinous cube.
DM: [sighs] Ok, roll a d17.
Player: A what?
DM: Hurry. You have 5 seconds.
Player: But what’s a d17?
DM: Too late. You die.
Player: But …
DM: Now get out of my house.


Or:

Player: I cast Detect Magic on the entire town. I’ll need school of magic details on everything, please.
DM: [sigh] Ok. You start glowing blue.
Player: Me? I don’t have any magic items.
DM: Oh … sorry. I thought you said Detect Asshole. My bad.


Or:

Player: I look at the purple rune. What does it say?
DM: You can’t read the purple rune.
Player: I think I get a Knowledge Arcana check? Hello?
DM: Fine. [perfunctory roll] You can’t read the purple rune.
Player: I take 20.
DM: [sigh] You can’t.
Player: Why not?
DM: Because you’re on fire.
Player: No I’m not!
DM: And you have syphilis.
Player: But I’m a Priest of Abstanium! I’ve never had sex with anything!
DM: It’s an airborne strain. Roll a Fortitude check.
Player: [rolls, grins smugly] 27.
DM: Good. Only one of your balls falls off.
Player: This is ridiculous.
DM: Now roll a Get the Hell Out Of My House check. Use a d17.


Be Repetitively Affirmative

If someone were to come up to me in the street and ask me what makes Unix so damn cool, I’d point them to the yes command. Here’s its man page (OS X version):

YES(1)

NAME
    yes -- be repetitively affirmative

SYNOPSIS
    yes [expletive]

DESCRIPTION
    yes outputs expletive, or, by default, 'y', forever.

That’s right: the only purpose of this thing is to spit out the letter y, over and over again. Try it. Find a Unix prompt somewhere and type yes. You’ll get this:

y  
y  
y  
y  
y  
y  
...

… ad infinitum, until you stop the process. If you type yes no, you’ll get this:

no  
no  
no
no  
no
...  

There’s something beautifully zen about the pointlessness of yes1, and something sublimely perverse in the documentation’s insistence that the optional argument be an expletive — not a word, or a phrase, or a thing-that-must-be-repeated-for-no-apparent-reason. No. Specifically, an expletive. The only thing that would make this command more awesome is if it actually enforced this restriction:

$ yes flowers  
yes: Invalid expletive

$ yes rainbows  
yes: Invalid expletive 

$ yes puppies  
yes: Stop wasting my time, asshole

$ yes poopy  
yes: Insufficient expletive

$ yes cacapoopydoodoo  
yes: Infantile expletive

$ yes crap  
yes: Closer, but no

$ yes fuck
yes: Yawn. How pedestrian.

$ yes George W Bush
George W Bush
George W Bush
George W Bush
George W Bush
George W Bush
George W Bush
...

If I were a computer science teacher, my first programming assignment would be to implement yes in Java, just to impress on my students how arbitrary and pointless life can be when left to its own devices. If I’m feeling particularly nasty, I wouldn’t let them use loops or recursion.

I feel an evil laugh coming on.


  1. Well, there is some point to it, I suppose. You can use it to stress your processor for performance tests. Also, as Matt points out in comments, you can use it to feed input to certain utilities that don’t implement ‘yes/no to all’ options. Still. 

Dance, Engineers, Dance!

It seems like everybody has a touchdown dance these days. I just watched Willis McGahee of the Baltimore Ravens barrel into the end zone, spin the ball away, crouch over his haunches and do this sort of rhythmic walk-like-an-egyptian two-handed dog-patting routine. Now, I don’t play football, but I am a programmer, which means I live kind of the same life: every morning, I don my mental pads and charge headlong into a wall of murderous design challenges, using wits and instinct to type my fleet-fingered way around a host of bugs intent on taking me down. It’s very, very similar.

And yet: I have no dance.

Nor do any of my colleagues. Just the other day, I personally witnessed my officemate, a brilliant and first-rate engineer, single handedly wrestle a pesky SQL Server deadlock to the ground. How did he respond? Did he jump out of his seat and execute a shimmy-shouldered moonwalk down the hall? No. Did he electric slide through the lobby? No. Did he jitterbug into the men’s room and drum a sousa march on the stall doors? No. He just sort of sat there, a slow grin on his face, then locked his screen and went to lunch.

It’s tragic. An engineer’s day is simply littered with triumphs like these, large and small, and the most we allow ourselves in the way of reward is a sardonic smile, maybe an extra twinkie, sometimes a bit of sarcasm-laden half-boasting in the fallow slacktimes between builds.

We need to dance, engineers. We need to clamber onto our twinkie-wrapper-littered desks, raise our arms to the fluorescent fixtures that bathe us daily in their deeply unnatural light, bend our knees and stick out our asses — and dance.

Behold: The Apple I

Check this out. An ancient ad for the Apple I:

apple1-ad.jpg

Highlights:

  • 8K on-board RAM! Expandable to 16K!
  • 40 character / 24 line display!
  • Monitor attachment option, to allow for viewing of stuff you’re typing!
  • 1 Kilobaud cassette drive interface, for saving of stuff you’re typing! Stuff occasionally retrievable!

I’d love to have been here when Apple and all those guys were just coming into the scene — the thought of being breathlessly excited about a bare board that you can plug an actual keyboard into sounds pretty damn cool.

Alas, Poor Clackity-Clack

Typewriters were already on their way out when I was a kid. My dad had a couple of sturdy Selectrics at work, and they still showed up on TV in the mid 80s, clacking along in newsrooms or police stations or office buildings. But by the time I got to college they were pretty much history.

Two artifacts from the typewriter era lived on, though: that crazy speed-crippling keyboard layout, designed in the era of manuals that couldn’t deal with people typing too fast; and the clackity-clack.

QWERTY is still with us.

The clackity-clack is not.

But it did hang around for a while. When IBM came out with their first PC, they shipped it with a keyboard that was — and is — a hulking thing of beauty: this curved slab of metal that looked like it had been torn out of the side of an amphitheater, with keys rising from its firmament like ancient slabs of stonehenge, solid and timeless. And here’s the thing: when you pressed those keys, you pressed those fucking keys. No feather-light pressure here, no gentle touch, no soft sibilant strokes: you had to jam those bastards down, and it was like punching a tombstone through a sheet of mylar. But it was worth the effort: the sensation you got when the key dropped home was incredibly satisfying, a reverberating validation of the entire typing experience.

But it was more than just tactile, it was the sound: a solid, authoritative thunk, both on the downstroke and the release. It was the keyboard speaking to you, saying Yes, you have pressed this key. You have pressed it as no man or woman has ever pressed a key before. Well done, my friend. Well done.

You just don’t get that anymore. Keyboards these days are mush, and typing on them is like plunging your fingers into a vat of tapioca: just the barest semblance of resistance until you bottom out. It works, sure, and it may even be more efficient: but it’s not in any way satisfying.

There’s no going back now, of course. Your coworkers would no more tolerate that chunky cacophonous clackity-clack than they would scudding clouds of cigarette smoke: loud keyboards are a relic of bygone era. They’re still making them, but they’re curiosities, boutique items, targeted at the kind of people who prefer gramophones over iPods.

There are even utilities that mimic the sound through your computer’s speakers — I’m using one right now, in fact. But I think I’ll stop soon. It’s just sad: like a buggy enthusiast mounting a team of fake horses on the hood of his car.

I miss you, clackity-clack.

WebAppetizer 1.0

Big news in the Web 2.0 world today. Google announced a new framework called Google Gears, which allows your web applications to save and retrieve stuff even when you’re not online. This online-only limitation has been a huge Achilles heel for the web app industry so far, and one of the major reasons that Google Apps — in its current form — has no chance of even denting Microsoft’s dominance in the office wars.

But it’s only a first step. It’ll probably be a year before the major vendors start pushing out viable disconnected web applications, and a couple of years more before they gain any traction in the market. There’s a better way. I call it WebAppetezier 1.0 (BETA).

WebAppetizer is a service that installs itself quietly on your machine, and then goes out and looks for all desktop applications that save and retrieve data locally. And then the magic happens — it modifies those apps so that they cannot save or load any data unless the machine is connected to the web. So your word processors, spreadsheets, photo editors, music players, etc won’t do anything useful unless you’re online. The data’s still there, just inaccessible. It’ll be exactly like using a web app, except much more annoying.

I’m a little surprised no one’s thought of this before, actually. It seems like an obvious solution — just a different way of looking at the problem, really. Mostly, people try to fix deficiencies in their products by making them as good as, or better than, the competition. Why not, instead, just make everyone else as bad as you? It saves time and effort.

Of course, this technique will only work for Windows computers outfitted with Microsoft Internet Explorer, which is an excellent delivery mechanisms for programs like this one — the kind that need to be installed automatically, without the user even knowing about it. Why bother all those busy people with details on how we’re making web applications a viable alternative in today’s industry. Just do it!

I see that Google just spent $3 billion to buy DoubleClick, another product that quietly does stuff to users that they don’t know about in order to make money for other people. I’d be willing to sell Google my product for a tenth of that price. Given the amount of money I’ll be saving them in R&D, development, and advertising, I think that’s a bargain.

The Committee for Technological Obfuscation

Anyone who spends any time at all working in software will quickly find themselves bewildered by the ridiculous number of technologies/standards/frameworks that clot our industry. It’s often hard to tell for sure what these things actually do — but a lot of them seem to be solving the same problem, in slightly different ways.

This is no accident. Every year, the Committee for Technological Obfuscation takes a look at the industry and rates the current state of obfuscation on its patented Confuse-O-Meter. The Confuse-O-Meter (CoM) has five levels:

  • Clear as a Bell (CaaB)
  • Mildly Confusing (MC)
  • Quite Confusing (QC)
  • Not in Any Way Understandable (NiaWU)
  • I Have No Fucking Idea What the Fuck Is Going On Here (IHNFIwtFiGOH)

Ideally, the industry is in a perpetual state of I Have No Fucking Idea What the Fuck Is Going On Here (IHNFIwtFiGOH). In this state, no mortal is able to truly apprehend anything more than a tiny, specialized sliver of his world. This perfect level of confusion is impossible to maintain all the time, however, so the Committee will accept a world that is merely Not in Any Way Understandable (NiaWU). Anything below NiaWU, though, is a crisis, and the committee will take immediate and severe obfuscatory measures when things spiral wildly into control.

The primary means of industry obfuscation, and by far the most effective, is the brute force approach: ie, the technology volume approach, otherwise known as When Technology Attacks!

Here’s how you go about it:

  1. Find a problem that’s already been solved, and then introduce a technology that does essentially the same thing, but in a way that’s much, much more complicated than it needs to be.
  2. Build a massive infrastructure around your useless and redundant technology. Start referring to it as an “ecosystem”.
  3. Give your technology an odd and inscrutable name. If possible, the name should contain the words “service”, “transactional”, and/or “infrastructure”. Better yet, some sort of monstrous neologism that combines all three: Optimization Middleware Transservicestructure, say, or Orthogonal Infraservactionality Ecosystem.
  4. Shorten your odd and inscrutable name to an odd and inscrutable acronym. The acronym should have no relationship to any sounds that human beings are able to produce, should be actively unpleasant to say, and should be identical to an acronym used for another (completely unrelated) technology.

Maybe the best example of this technique in the insane cloud of buzzing technologies surrounding the Web Services “space”:

  • Web Services Definition Language (WSDL)
  • Web Services Semantics (WSDL-S)
  • Web Services Reliable Messaging (WSDL-R)
  • Web Services Distributed Management (WSDM)
  • Web Services Resource Framework (WSRF)

And this is just a tiny portion of the Web Services ecosystem. Web Services are the Obfuscation Committee’s crowning achievement. They mention it in all their literature.

So that’s step one of the Obfuscation Technique. Step two is to document your new technology. But not “document” in the sense of writing things that make it clear to other people what your stuff does. No. “Document” in the sense of barfing up thick blocks of text that read like legal briefs written by insane surrealist monkey-sadists. Under no circumstances should your audience glean any useful or even intelligible information from your documents. Great care should be taken to choose words that are guaranteed to shut down all but the most intrepid users’ cognitive facilities.

Take the W3C’s description of WSDL, for example:

WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services). WSDL is extensible to allow description of endpoints and their messages regardless of what message formats or network protocols are used to communicate, however, the only bindings described in this document describe how to use WSDL in conjunction with SOAP 1.1, HTTP GET/POST, and MIME.

If you’re not trying to claw your eyes out by the time you get to the third sentence of this passage, then you’re probably not human. You should get yourself checked.

Step 3 is Evangilizationism. This is where you go out into the community and pimp your new technology as if it’s (1) something new (2) better than whatever solution it’s replacing and (3) the defacto standard. These are contradictory statements, of course, but — if you’ve done a good job with Steps 1 and 2 — your audience will be so busy trying to figure out what he hell your thing does that they won’t notice.

So, in a well-obfuscated ecosystem, this is what usually happens: programmers get assigned some architectural task, google around to figure out the best way to do it, discover an Alexandrian Library’s worth of competing, inscrutable, and overlapping technologies that sort-of-but-not-quite do what they need, then crawl under their desks and weep like infants. After a couple of hours, the smart ones crawl out and submit their resignations and go back to school. The rest of them set up a virtual dartboard in their minds, close their virtual eyes, hurl a virtual dart, and choose whichever technology it lands on. This is a game called Pin the Arbitrary Decision on the Inscrutable Technology. It’s a very popular game in the computer industry, but no one will admit to playing it.

The Committee tries to mount at least five or six major obfuscation assaults every year, and hundreds of minor ones, force-feeding an industry already swollen to bursting, and working tirelessly to make our world as confusing as it can possibly be.

Programming in English is a Bad Idea

Here’s a very cool insight from a reddit thread I was just just noodling through:

A programming language should never try be intuitive. Visual Basic tried to be intuitive. Applescript tried to be intuitive. Both wound up more confusing than they [should] have been. Programming just isn’t intuitive, there’s always a learning curve. Instead, good languages are consistent and make sense. Predictability is the best way to reduce (not eliminate) the learning curve.

I think there’s a notion out there that computer languages should be easy to learn, or easy to use, or whatever, and so you sometimes get languages with syntaxes that try to be as English-like as possible. The theory being that if you can program the way you talk, everyone will be able to program.

It doesn’t work, it never works, because programming is just intrinsically hard, and languages that try to paper over that difficulty with insipid abstractions or faux-familiar syntax just wind up muddying the water further. Programming languages should make it easy to express stuff the way you think about them, not the way you talk about them.

Because human language is intrinsically imprecise. It has to be: there’s no way to capture our cognitive landscape with words, which is why we often keep things vague, or use metaphor and symbol to get at fundamental but inexpressible truths.

That’s certainly no model for a computer language. When a program comes across something inexpressible, it doesn’t search for an extra-lingual abstraction to get around the difficulty. It dumps core.