Sunday, November 18, 2007

Pandora: awesome

I've been using the web since Netscape 1.0, and I've grown pretty jaded about new Internet technology. I got sick of beta testing the latest timewasting Internet fad sometime around 2001. As much as I write and think about technology (real and imagined), I've grown pretty reluctant even to try new technologies myself. And unless an application's reasonably polished and somehow delivers concrete value into my life, I won't give it a second glance.

I say all this as a preface to remarking that I tried the Pandora Internet music service today, and it delivers the goods. Its music recommendation technology is very impressive: type in a band name that you like, and it dynamically constructs a playlist of songs resembling the songs by that band. I was in the mood for some sunny pop music, so I typed in Saint Etienne, and instantly got a playlist of tracks I'd never heard (from artists both familiar and not), and that really sound like music that a Saint Etienne fan would like: Club 8, Stars, Magnetic Fields, Kanda, Brazilian Girls, etc.

I'm really curious about the guts of the so-called "music genome project" technology behind Pandora. Whatever it is, it works. If you're puttering around at home and just want to put on some background music for a particular mood, there's no need to construct playlists manually anymore.

Of course, as a hacker, I find the arbitrary restrictions --- you can only skip forward, and only skip a fixed number of times per hour --- mildly annoying. But if you view Pandora as a replacement for musical radio stations, then it's a huge, quantum leap forward.

My friend MS tried out Pandora some time ago. Being the music geek he is, he mentioned the potential for fiddling around with playlists to optimize your experience. But I didn't want another technology that I spend my time fiddling around with; I want technologies that give me maximum value for minimum time investment. Tragically, therefore, I didn't try it out until today. Rest assured that Pandora will repay the most minimal effort with a large payoff.

Saturday, November 17, 2007

Semi-synchronous telephony with call invitations

Consider the relative advantages of text messages and phone calls:

  • For activities requiring actual dialogue rather than notification, text messaging is incredibly inefficient: the interface is terrible and an exchange requiring N round trips requires 2N text messages, each of which requires that a human being fiddle with a phone and compose a new message. On the other hand, text messages do not require that the person on the other end be instantly available in order for the message to be received.
  • Conversely, phone calls are excellent for negotiation: an exchange requiring N round trips can be conducted within the space of 1 phone call. However, if the person on the other end isn't instantly available, then you are stuck either leaving voice mail (leading to the possibility of phone tag) or calling repeatedly, which is also incredibly annoying.

What's needed is a technology that merges the best of both worlds: the ability to do rapid synchronous dialogue, and the ability to initiate that dialogue without the human having to play phone tag or to call repeatedly.

As it happens, voice mail and calling repeatedly correspond exactly to the two usual mechanisms that computer communication protocols use when one process wants to receive a communication from another process but doesn't know when that communication will be ready. For the nerdy people who care, voice mail is registering a callback, and calling repeatedly is polling. But never mind the jargon: the important observation here is that computers already know how to do this sort of thing, and do it all the time, so it's stupid to make human beings do it.

Therefore I propose the semi-synchronous phone call, or "call invitation" for short. Here is how it works:

  1. Alice wants to talk to Bob. She sends him a call invitation.
  2. The invitation goes into both Alice and Bob's invitation inboxes. An invitation has two possible states for each user: "available" and "busy". By default, all invitations are initially available for the caller and busy for the callee.
  3. Bob now has three choices:
    • Bob can do nothing, which leaves it in his invitation inbox.
    • Bob can refuse the invitation, which deletes it from the system.
    • Bob can mark himself "available" for that invitation.
  4. Alice has the same three choices, except that she's initially available for the invitation. She will have to mark herself "busy" if she starts doing something that would stop her from talking on the phone.
  5. At any time, either Alice or Bob can toggle their status (available or busy) for the invitation. Talking on the phone implicitly toggles you busy for the duration of the call.
  6. If, at any time, both Alice and Bob have marked the invitation available, they receive a phone call connecting them.

Now, no doubt many similar proposals have been made in the past. I'm specifically aware of proposals in the ubiquitous computing community for communication devices that act differently when you're available than when you're busy. Some of the fancier proposals involve the device or the environment sensing (via sound, motion, or whatever) when you're doing an "interruptible" activity, and automatically marking you available or busy.

However, I am not familiar with any proposal that works exactly the way I propose, and I claim that even small deviations from exactly the above design would result in a system that people would hate.

To begin with, in my proposal, people explicitly mark their availability information. I believe that availability must be volitional. Imagine if your phone decided on its own whether to ring, and whether to vibrate or ring audibly. Or imagine if your front door decided when to open in response to a knock based on your past behavior towards that person. On a deep, primate level, humans do not feel emotionally secure when their social approachability is outside their control. Implicit signals like body language work for controlling approachability in face-to-face interaction only because humans can volitionally and unambiguously broadcast these signals, and because other humans react instinctively with extremely high fidelity.

Furthermore, in my proposal, availability is relative to each message. It is not a universal property of the user: there's no such thing as "your" availability, only your availability reacting to a given message. This is important for several reasons. First, you never have to think about your availability when no invitations are pending in your inbox, which means you're not constantly toggling your phone into "available" or "busy" mode. Second, you're never broadcasting any information about your availability, which preserves your privacy.

Some proposals make a user's availability relative to a priority: you can say you're available for "high priority" calls, but not "regular priority" or "low priority" calls. Other proposals make availability relative to a user and a caller: you can put someone on your whitelist, which means that you always accept calls from them.

Such priority schemes sound like a good idea, but they would fail to solve the problem for two reasons. First, no code-based priority scheme could deal with the complexities of actual human interaction. Second, such priority schemes actually force the recipient to expose more information, with the putative aim of increasing privacy; this gets the problem fundamentally backwards. Consider the problem of setting your availability for calls from your in-laws, or someone you just started dating.

Every successful interpersonal communication technology leaves room for ambiguity in social interactions. Why didn't you answer the phone the other day? Maybe you were busy, or maybe you didn't want to talk to that person, or maybe you wanted to take the call but you're playing hard to get. Why didn't you respond to my text message/email/Facebook note? Maybe you haven't logged on lately, or maybe you can't stand me. Like it or not, human beings prefer the ability to deceive each other socially. My proposal preserves social deception in a way that priority schemes do not.

In fact, if there's any flaw in my proposal, it's this: I seriously think that many people choose media like text messaging, instant messaging, email, and social networking sites precisely because they do not want to talk, even when it would be more efficient. Talking on the phone forces you to interact even more instantly than instant messaging. It also exposes the vast amount of sub-verbal information that carries through your human voice whether you want it to or not, including, first and foremost, your emotional state. In the end, voice communication may be growing rarer precisely because it's not good enough at helping us conceal our true selves from each other.

Thursday, November 01, 2007

What's your encore? Do you, like, anally rape my mother while pouring sugar in my gas tank?

...the illuminating aspect of the source of this expostulation being that Dante, after suffering nonstop abuse from Randal up to the point of the outburst, remains his steadfast buddy for the remainder of the film.

The relationship to the conversation related in this post of Ezra Klein's is left an exercise for the reader.