I Want A Button

I want a button in Mail that automatically adds contacts to Address Book. Right now Mail has an “Add Sender to Address Book” function, but all it does is add the email address. I want the street, the city, the zip code, the phone numbers… everything.

Some emails include an “electronic business card” as an attachment, usually in a format such as .vcf. Many email applications allow you to drag-and-drop these .vcf files directly into your local address book, which is kind of nifty. However, any enthusiasm we might feel for .vcf attachments must be tempered by the fact that:

  • Many people find them to be annoying.
  • They present a security risk.
  • Most people don’t use them. (I certainly don’t).

Now, what many people do use is a plain text signature:

James Q. Workerbee
ABC Industries, Inc.
12345 Lakeside Dr.
Pleasantville, CA 90021
Tel: 888-555-1234 x567
Fax: 888-555-1021

This certainly isn’t beautifully structured data. It would be a lot easier to retrieve the information if we had standard for, say, passing this information in the email headers or tagging this as XML.1. That solution would be a lot easier and more fun for the programmers. But this solution depends on:

  1. Deciding on a standard.
  2. Waiting for email applications to implement the standard.
  3. Hoping that users A) notice that this option is available and B) change their behavior in order to make use of the standard.

Rather than all that, let’s take advantage of the thing that users do already. This won’t be easy, because plain text signatures are poorly structured. Still, a phone number looks different from a street number, which looks different from a firstname and lastname, which looks different from arbitrary text, and so on. A cell phone number often starts with c:, cell:, m:, or mobile:. We don’t have million-dollar markup to go on, but there is some structure here.

Anyway, back to The Button. When you select the button, the parser makes its best guess at person’s contact information. An Address Book window appears with the information filled in. You can then save the information, edit it, or dismiss it unsaved (if the parser’s results are total garbage). As long as the failure rate is low enough, this would be a pretty sweet little feature. Admittedly, it’s not the easiest application feature to build. But ladies and gentlemen, we can build it. We have the technology. Mail.app will be that application. Better than it was before. Better… stronger… faster…

Whoops, got carried away there.

1. For all I know there are standards for doing this, in which case Step #1 is obviated.

I Think We Can All Be Proud

One of the problems with the XHTML 100 Laziness Test was that it was… well, lazy. Rather than simply validating three random secondary pages, a real Laziness Test would spider through all pages. I didn’t bother with this approach for two reasons. First, my version of the Laziness Test was reasonably effective at weeding people out (although not perfect). Second, writing a well-behaved spider is well beyond my rather limited programming skills.

Fortunately, all is not lost. We can build such a spider. We have the technology. Or rather, the Norwegians do. (And isn’t that scary? What else are those Norwegians hiding from us in those fjords? Does the Defense Department know about this?) Anywaay. Via Zeldman, via Ben Meadowcroft, via… no, wait, that’s all the vias. Err… via all those people, researcher Dagfinn Parnas reports that 99.29% of the 2.4 million web pages in his sample fail validation.

In truth, Parnas did a much better job measuring general standards compliance than the XHTML 100, which was just a quick-and-dirty survey. Moreover, you can’t compare Parnas’s data directly with the XHTML 100 results. First of all, I was looking at the Alpha Geeks And Their Friends, while Parnas is looking at a much larger and much less geeky population. Second, Parnas is looking at HTML, while I was looking at XHTML only. Finally, Parnas’s analysis is fundamentally different in that he aggregates his data into one pool. For example, consider a site in the XHTML 100 where the first page validates, the first two secondary pages validate, but the last secondary page fails. Parnas would count that as three successes and one failure. I would count that as total success for Test #1 and total failure for Test #2.

But hey — let’s ignore all those distinctions. If you can’t compare apples and oranges on the Internet, where can you compare them? Parnas reports a 99% failure rate. In contrast, I report an Markup Geek failure rate (as measured by Test #2) of a staggeringly low 90%. I think we can all be proud.

If you do bother to read Parnas’s nearly 6MB pdf paper, and I certainly recommend that you do, be sure to look at the breakdown of the various types of errors. The bulk of the errors (after “no DTD declared”) consist of “non-valid attribute specified” or “required attribute not specified”. Not surprising at all. From my own experience, very few people seem to know that the alt tag is required or that <img border="0"> is illegal in XHTML 1.0 Strict. The only real puzzler in Parnas’s data was the relatively low fraction of pages with invalid entities. In the XHTML 100, invalid entities were a major killer. I don’t have a good explanation for this discrepancy, but hey.

Parnas concludes:

As we have seen there is little correlation between the official HTML standard and the de-facto standard of the WWW.

The validation done here raises the question if the HTML standard is of any use on the WWW. It seems very odd to have a standard that only 0.7% of the HTML documents adhere to…

A good question. For me, the reason to validate is not ideological. Simply put, validation saves me time. For any page design, there are a huge number of possible glitches across the various browsers. Validation doesn’t reduce the set to zero, but it does make the set a lot smaller. Hey, I don’t know about you, but I need all the help I can get.

Fools Rush In

Vincent Gallo: “If a fat pig like Roger Ebert doesn’t like my movie, then I’m sorry for him.”

Roger Ebert: “It is true that I am fat, but one day I will be thin, and he will still be the director of ‘The Brown Bunny.'”

That Roger Ebert, he’s growing positively Churchillian in his old age.

So last Tuesday Lawrence Lessig sent me an email asking me and most everyone else in his address book to sign the “Reclaim the Public Domain” petition.1 Now, ordinarily I’m dubious about online petitions. Take the recent media deregulation debacle: the FCC received on the order of twenty comments for and 200,000 comments against, and Michael Powell went ahead and did it anyway. Hey, who knows — maybe each pro-deregulation comment was on average 10,000 times more persuasive than its anti-deregulation counterpart. If the bulk of the anti-deregulation comments came from where I think they came from, that ratio wouldn’t be surprising.

Nevertheless, the “Reclaim the Public Domain” campaign is a good idea, and it does come from one of my personal heroes, and it was, as Lessig pointed out, his birthday. So how could I say no? More to the point, how could anyone say no? Unless you think the proposed statute doesn’t go far enough. Otherwise, if you want perpetual copyright protection over your work, is paying one dollar after the first fifty years too much to ask? (It appears that hordes of well-heeled2 lobbyists are already answering, “Yes.”)

This is the kind of thing that just makes me want to rush off to law school, damnit. The problem is that maybe I could get involved in some activism as a student, but by the time I graduate it will be the year 2008. At the rate things are going, by then the battle will be over and I’ll just be another debt-ridden young IP lawyer trying to get a job. I imagine it’s rather hard to convince a company that you’ll fight tooth-and-nail to protect their intellectual property when deep down you don’t think fighting tooth-and-nail is always the ethical thing to do. Now is intellectual property a good thing? Absolutely. My mother is an author; my dad’s company makes innovative cancer treatment machines. Their livelihood depends on protection for their intellectual property. But do I believe in intellectual property über alles? Hell, no.

I suppose all lawyers struggle with this issue: how to best serve your client while adhering to your own personal ethics.3 Obviously there’s no magic formula, but it seems that most lawyers can find a niche if they look hard enough. Some lawyers want to be public defenders. Others want to be prosecutors for the state of Texas. There’s something for everybody.

I’m just wondering if the choices are a little more limited for IP lawyers. How many openings does the EFF have, anyway?

1. I should point out that “Lawrence Lessig sent me an email…” might give you the false impression that we, like, hang out and drink beer and stuff. No, no. The reason I meandered my way into his address book is because I recently asked him a couple of questions over email about law school, to which he graciously responded.

2. Is there any other kind of lobbyist?

3. Presuming you have some.

Toughening Up

My home town is having a special election on Tuesday. Tonight at precisely 6:11pm, my phone rang:

Me: Hello?

Telemarketer Lady: Hi, I’m with the Republican party, and I’m calling about Measure E.

Me: (politely) Oh, I’m sorry, I’m not a Republican —

Telemarketer Lady: (click)

In retrospect, maybe I should have said, “Oh, how interesting,” and pretended to be a Republican for as long as I could, thus tying up valuable Republican party resources just before a critical school bond referendum. Unfortunately my Mama and Papa didn’t school me in the brutal Darwinian tactics of street-level political combat. Instead, they schooled me in answering the phone politely.

Perhaps this is the essence of our problem.

And on another front, M’ris is waging psychological warfare. I make an innocent reference to “Fiddler”, which has the unfortunate side effect of embedding a few of Fiddler’s songs and catchphrases in her head. So M’ris retaliates by trying to make me associate Trinity with Christopher Walken. Yuck! Again, see? Underhanded, vicious street-level combat, for which I am totally unprepared. So the question is, does this deserve a response? On the one hand… an eye-for-an-eye leaves the whole world blind. On the other hand… it’s just this kind of namby-pamby thinking that lets Republican Telemarketer Ladies just, like, walk all over people. But on the other hand… no. No! There is no other hand!