Monday, October 17

An Everyday Miracle

I'm brimming over with caffeine this morning, attempting to hold my eyelids open long enough to deliver something that does more than just look pretty for a demo I'm scheduled to give this afternoon. But I had to take a moment to decribe a moment of awe I just experienced.

I'm sitting at a desk in front of two monitors. They're connected to different computers, but I'm mousing back and forth between them using Synergy. One of them is Windows, another is a Unix variant. On the Unix box, I have 12 terminal windows open, variously monitoring log files, debugging output from windowed applications, and just hanging out somewhere on the filesystem. (at least two of them are redundant, but I can't be bothered to figure out which and close them.) On the Windows box, I have a couple of different IDEs, mail, two instant messenger clients, a requirements spreadsheet, and 2 terminal windows, connected to different machines. And a VNC session to a third computer across the room, on which I'm running another, different IDE.

Almost every application I'm running requires access to the network to be useful. Some of them require a lot of access to the network. All of them are currently working flawlessly -- until now, I hadn't thought about the bits on the wire for days.

I guess there is some hope for the impatient, lazy, and stupid among us.

Wednesday, October 12

Impatient, Lazy and Stupid

We all are.

Every single one of us. Perhaps not in every way, all the time, but certainly most of the time. It's not a bad thing, it's human nature. It's a result of the incredibly, stupendously complex world we live in, and we ignore those three defining characteristics of humanity at our peril.

One of the core tenets of macroeconomics is that specialization is one of the fundamental driving forces behind economic growth and progress. With the partial exception of children, humans can't really become more efficient in one sphere of effort without becoming less efficient in another. It's not zero-sum, though; you gain more than you lose (usually). Especially if you live in a community (or tribe, or chiefdom, or nation state) where other people are specializing in things you aren't. I'll learn to bake better bread with less waste, and you learn to grow better wheat with less effort, and then the two of us can feed a village rather than just ourselves.

An obvious consequence of this is that if you ask a baker to farm, he's going to be worse at it than someone who knows how to farm *and* how to bake. And so it is with most everything in Western society -- I can program computers well, but I have no idea how to weave cloth, or fix cars, or make shoes, or farm, or plan road routes, or cut hair, or take photographs, or make paper, or or or or or.....

So when I interact with an automobile, I'm stupid. I know that the right pedal is the gas, the middle one's the brake, and the left one's the clutch, and I went through a whole bunch of classes to learn how to operate cars. (I know the basics of internal combustion engines, but mostly cars are a mystery to me.) As a consequence of my stupidity, I'm also lazy. I want it to Just Work, I don't want to have to learn all sorts of weird rules about what pedals to press when. Witness the rise of the automatic transmission -- it simplified the operation of vehicles, because now Joe Sixpack doesn't have to care about RPM. He can just put the car in gear (tell it "I want to go soon") and then press the gas (tell it "I want to go NOW!"). I love it -- one fewer pedal to press, and to have to remember how and when to press. My laziness rejoices because I have less to do. As a consequence of my laziness, I'm also impatient. "god dammit, what's the problem! I want to GO NOW!" Any disruption to the functioning of my automobile is treated with frustration and petulance, since its internal workings are basically magic to me. And that's how I like it.

So why am I going off on this? Lately, I've been fighting with my tools at work. Programs that are supposed to be snappy aren't, and systems that are supposed to be stable are crashing. And it's a major, major disruption, even though if I think about it I can usually divine the cause. It takes me out of whatever zone I was in, and forces me to think about stuff that should be automatic. Because I'm stupid, it takes me a long time to switch gears and solve the problem; because I'm lazy, I don't want to do it; because I'm impatient, I resent the time it takes. Come to think about it, I'd much rather rant about this to you, gentle readers, than actually solve my problems.

There are general lessons here to be learned for us software- and game-developers, too. Think about your users as impatient, lazy and stupid and you'll build a better product. Whatever is Quickest, Impatient people will find. Whatever is Effortless, Lazy people will use. Whatever is Simplest, Stupid people will comprehend. So the point is to design your user interfaces, your user experiences, so that the Right thing is Quick, Effortless and Simple. Because the QES thing is what ILS people do -- even if it's not Right.

That's why people minimax in MMOGs -- The Quickest way to get experience (the abstract unit of progress that MMOGs use), on the aggregate, is to grind. The most Effortless way to get experience is to find the monsters that have the best risk/reward ratio. The Simplest way to get experience is to do the same thing over and over, for hours. It's also one of the roots of the success of some of the truly excellent software that's out there. Joel spends a bunch of time making sure that what I want to do is the easiest thing to do, when I'm in FogBugz. The path forward is clear, no matter what step I'm on. Blogger's BlogThis! popup, into which I'm typing now, is clearly laid-out. When I hit Publish, it's going to publish this to my blog. The iPod's interface is good -- it's like it learns from me, intuiting what I want rather than me having to learn what magic incantations I have to go through to force it to respond. All of these examples work with, rather than against, my natural tendency toward impatience, laziness and stupidity.

I wish everything was more like the cream of the crop.

Monday, October 10

Metapuns

Puns. Some people love 'em. Some people hate 'em.

Me? I love metapuns. That is, puns involving the word pun. Here are a few to try at parties. If the topic of puns comes up, I usually rattle these off one after another until even the most hardened pun-hater is won over.

  • Get thee to a PUNnery!
  • This is cruel and unusual PUNishment.
  • I should be locked in a PUNitentiary!
  • Hot cross PUNS!
  • I have a feeling I'm about to get PUNched!
  • Uh oh - PUN away! PUN away!
If people complain, simply inform them that these aren't puns - they're metapuns. Because that way, you can cap off with,
  • I never metapun I didn't like!
Yup.

That was a metametapun.

Saturday, October 1