Don’t mention you-know-who!

The past 2 days, the fundraising campaign of a certain Texas Congressman has made it big in the news.

I was amused to see that digg allegedly blocked stories relating to the event. For a brief while, anyhow. My debatewire item made it through, and has been drawing a bit of traffic today.

I’m always intrigued when technical stuff gets caught up in social issues. Should the stories be considered spam? Are they the efforts of online supporters and zealots? Does it make a difference if they’re submitted by supporters or his paid campaign staff? And does it matter that they’re getting voted up and people seem interested in reading them?

It makes my head spin. Only in our nutty, postmodern culture.

Small Victories

It always feels very rewarding when my coding-related problems have happy outcomes. A few small but cool things that have happened recently:

A while ago, I discovered an issue with the way the cherrypy web server resolves “localhost” to an IP6 address on some operating systems. The cherrypy folks actually listened to my suggestion and made a helpful change.

It looks like one person has already benefited from the tiny patch I created for a feedparser issue last week.

When I couldn’t get SQLAlchemy’s “pool_recycle” option to properly close and re-open inactive connections, the estimable Michael Bayer took a minute out of his busy life to explain what I had missed, for which I was extremely grateful. (One of these days, I need to write about a post about how truly amazing SQLAlchemy is.)

Open source projects create the opportunities for good things to happen. Most of the time. (Or maybe it’s just the python projects.)

Who, me? The problem with a “do not call” list

Should there be a federally regulated “do not track” list for the internet, similar to the existing “do not call” lists? There’s an angle to this issue that I think proponents are missing.

As at least one person has already pointed out, the internet doesn’t work like a telephone system. It makes sense to say “do not call me”, since the “me” is the phone number. But how do you identify the “me” who’s using the web? Schemes using IP addresses and browser cookies aren’t adequate, since they can often be shared by several people.

Contextual advertising tries to make smart guesses about what might interest the user, but it’s only as good as its assumptions about whether it’s the same individual who generated the browsing patterns. The fact that advertisers are constantly extending their networks to probe more data and perpetually improving their algorithms speaks to how difficult this problem of identification is.

This is not simply a technical problem, but one that has broader social ramifications. The crux of it is this: in order to say “do not track me,” there needs to be a “me.” Supporters of this initiative are, in effect, implicitly also supporting the creation of a strong identification mechanism. Any federal regulation would need such an id in order to sign people up. Otherwise, how would you? Who’s the “me” that advertisers shouldn’t track?

A “do not track” list might successfully limit advertisers’ collection of web usage data, but it would certainly also improve government’s ability to do so. Would privacy really be improved then? The more practical solution is to encourage people to make use of ad-blockers and secure channels, and to educate them on how to be more savvy web users.

In praise of feedparser

I discovered an issue this morning in the excellent feedparser module.

feedparser (aka Universal Feed Parser) has a reputation in the python community for being an incredible piece of code. With good reason: it understands a mind-boggling array of feed formats and versions, and it’s been put through the paces with a suite of 3262 unit tests. Mark Pilgrim’s terrific work has saved me (and many others, no doubt) months of toil and sweat.

The issue has to do with encountering multiple “title” tags defined in different XML namespaces. A dc:title or media:title tag, if it is encountered anywhere after a regular RSS title tag, will overwrite it. Several other people have actually already documented this in the bug tracking system.

It’s unclear how much work is actively being done with feedparser these days, so I reluctantly dived into the module to try to see what was going on. A little over an hour later, with almost no pain, I found myself with a patch that passed the test suite. I’d love to say it was due to my incredible coding prowess, but really, the code is just amazingly clean and easy to understand. That’s how fixing bugs should be.

The patch is here if anyone wants it.

Musings on User Interfaces

It’s interesting to read how different people are reacting to the user interface changes (“improvements?”) in Leopard, which got released today. It’s probably premature to say how opinion will ultimately shake out. But I’ve started to collect some noteworthy opinions.

Also concerning user interfaces: Mozilla Prism has been announced. It’s a project which extends the existing browser platform of established web standards in order to run as desktop applications. The description is light on details and implementation, but several comments on the announcement already express skepticism.

Ian Bicking is clearly excited about it (I actually found the announcement through his truly wonderful blog). He sees Prism as embracing the essence of the web model. The key, I think, is whether the extensions will be rich enough: will there be ways to access local storage, control security, and access devices? Without those changes, I’m not sure the desktop app “frame” around the web application buys all that much. Some underlying functionality needs to accompany the desktop interface in order to be really transformative.