Now blogging at diego's weblog. See you over there!

inertia breaks

It begins: "this would be interesting to blog about." Some notes are made. Thoughts organized. In-brain sessions held, middle of the night, smoke-filled-backroom-atmospheric-like. Then nothing happens: you're too busy. Busy, busy, busy, busy. "Tomorrow," tou think. Tomorrow turns into Tomorrow again. Ideas accumulate. Things you wanted to comment on further start to become stale. Events pass you by. There's another earthquake! Grokster v. MGM is in play, and everyone talks about it, even if a decision is not expected until June or thereabouts. Services launch. Get invited to some of them, use them. Even more things to talk about. Even less time.

Comments are posted, page rebuilds, and MovableType's all-seeing all-knowing configuration with its "show posts for last seven days" (which you keep forgetting to find some way around) suddenly yields an empty page. Blank.

But a blank page is full of possibility too. Like a desert.

And hey, Spring is here!

Inertia breaks.

Sort of. :)

Categories: personal
Posted by diego on March 29, 2005 at 5:26 PM

the problem with scoble's linkblog

While I enjoy perusing Scoble's linkblog when I have time (there's pointers to a ton of interesting stuff in there) I have not been so thrilled about his full-republishing technique. In my opinion, the question who exactly created the content is going to be slightly confusing for someone arriving there from a search engine (this in particular for people that don't yet know what blogs are, much less linkblogs).

Even if it was obvious though, the fact that he is republishing articles/posts wholesale without explicit permission means that a reader that would otherwise end up in my blog suddenly has no reason to do so. I have avoided commenting publicly on this, waiting to see if it changed, but it hasn't.

For example, check out his reposting of my take on AJAX. It's a long post (something relatively common for me) and by the time you scroll down to the second paragraph, you have forgotten that URL at the top. Many people will just get to the end, and move on to the next linkblog post.

Republishing content wholesale without permission is a bad idea. And a linkblog is supposed to be made of links, not full posts.

Robert, I suggest you simply post links and titles, rather than full posts---at most, a 50-word snippet or comment would do (similar to what Kottke does for his linkblog posts). If you think that's unreasonable, I'd ask you to remove any posts of mine that you may have republished over there and to avoid republishing other posts in the future. Thanks. :)

Categories:, technology
Posted by diego on March 20, 2005 at 6:09 AM

"forget oil" revisited

Almost a year ago I posted a short entry titled forget oil. Aside from the facts that bottled water costs more than gas at the pump in every country I can think of, and that more than one sixth of the world's population still has no running water, this New York Times article on China's river-management policy caught my attention. "Something to keep in mind" indeed.

Categories: geopolitics
Posted by diego on March 20, 2005 at 5:59 AM

more on ajax

Don talks about his POV on AJAX, and brings up something that (to keep things simple) I neglected to mention in my post.

For a long time I have been deeply ambivalent about using DHTML and Javascript for serious apps. I really like the reach these apps create, the ease of distribution, and all the good stuff that comes from that. But aside from the problems that Don mentions in terms of pushing the browser "platform" beyond its design limits, I keep wondering about what writing complex applications using these technologies would do to software engineering in general. We have advanced quite a lot, and it's taken a lot of effort, to get away from error-prone techniques and tools that we used as recently as 5 years ago. Thanks to advanced IDEs, we are no longer bound by pre-existing structures and we're much more free to refactor, analyze, and reuse code in new ways. Java has been crucial in that (and in finally establishing how sensible memory-managed languages were), but now we're onto Python, PHP, Ruby, and other languages.

Going to DHTML and Javascript would put us back a bit in this evolution. Javascript and DHTML IDEs are basically non-existent or too basic. Debugging apps in a browser environment is a nightmare. Software maintenance becomes another nightmare. And so on.

But assumming that AJAX apps prosper, I think that we'll just circle back, realize that we're facing the same problems, and then find solutions based on our previous turn on this particular loop. Maybe this will another step towards what Marc Andreessen hoped (almost ten years ago, and I still remembering reading that article!): "A secure, truly mobile agent language -- way beyond Java -- will eliminate the Tower of Babel that prevents us from harvesting more of the benefits of computing and communications today."


Posted by diego on March 19, 2005 at 6:57 PM

quote of the day

If you can't stand the heat, get out of the kitchen.

Harry S. Truman

Categories: personal
Posted by diego on March 19, 2005 at 3:52 PM

on ajax

One of the latest buzzwords to make its way around the web is AJAX (short for Asynchronous Javascript and XML, is that a "buzzcronym" then, rather than a buzzword?), which strikes me, as well as others, as one of those there and back again technologies, old ideas reborn in a different form. Recent weeks have seen the appearance of various AJAX toolkits, from SAJAX (for PHP) to JSonRPC (for Java). JPSpan, another PHP toolkit, is a little older.

But first, what is AJAX? Here's a good intro article on it. The basic concept is a simple one: turn a web browser into a more responsive client by making asynchronous requests to the server on another thread, handled by Javascript (there's nothing that says that this couldn't be done with, say, Flash or Java, but Javascript is a more universal platform on which to implement this). This separate thread can create the appearance of a more responsive UI by managing the requests in a manner transparent to the browser's default navigation mechanisms (e.g., Back, Forward, etc.).

Why do I say that AJAX is an old idea reborn in a different form? To answer that, allow me to take a little detour.

How web apps (used to) keep state, or the thin client way

Originally, a browser+HTTP+server combo was a stateless content-retrieval system. As more complex logic was added, browsers remained "thin" in that held very little state information. Cookies (on the client side) and Sessions (on the server side) were created to address that as more complex applications were brought online. But the limitations of cookies for data storage mean that they are used primarily for two things: initialization information (e.g., automatic login to websites) and historical or subscription data (although even in this case cookies are largely used as browser-held keys that point to more complete server-side DB records). Sessions, therefore, have remained the primary method to maintain state through the lifecycle of a web application (Some data can be held in the web pages themselves, e.g., hidden form fields, but that data has to be passed back to the server on each request). The problem with keeping sessions in the server is that, for nearly all significant operations, the client has to go back to the server to present a result, and it has to do it through the core UI thread, leading to a diminished user experience.

The problem this creates is that as long as we're not all accessing the Internet over low-latency T3 lines, and as long as servers experience load spikes, unexpected loads, etc., the user experience of web applications (via thin clients) differs significantly from that of client-side applications (fat clients). AJAX bridges this gap by creating what amounts to (cue reference to Douglas Coupland's Microserfs) a "thin-fat client."

AJAX: web client/server, or the rise of the "thin-fat client"

In the early 90's, the buzzwords du jour were "client/server systems". These were systems where PCs actually performed a certain amount of processing on data obtained and passed back through tightly coupled connections (typically TCP). As important as servers were in that scheme, one of the keys of client/server computing was that the client maintained most of its state. True, the server did maintain a certain amount of state and logic (just keeping state on a TCP connection would count, for instance), but it was the client that drove the interaction, that kept information on a user's location in the dataflow, etc. The web, however, changed all that.

If the web thin client model decoupled UI from processing (at least relative to client/server), AJAX allows for a flexible "free form coupling" when necessary. By pulling more data-management logic back into the client, AJAX goes back to a more traditional client-server model. True, the server could maintain state if necessary, and undoubtedly some AJAX-powered applications, such as Gmail, do so to some extent. But consider the difference between Google maps and, say, Mapquest. Mapquest stores the current view's data in hidden fields in the page, which have to be sent back to the server on each request. While this is, speaking strictly, stateless operation, the server has to re-create the state of the client for every request, modify it as necessary, and then send it back. Google maps, on the other hand, can keep the state on the client, requesting new data from the server as the user moves around the map, zooms, etc. The result? The server is freed from creating/keeping/updating state and goes back to doing what it does really well, which is serve data.

So does this mean that we're going back to client/server? Doubtful. There is no silver bullet. As cool as AJAX apps (like Google Suggest, Google maps, or A9) are, I suspect that AJAX's greater value will be to add another tool to the toolset, allowing for hybrid thin client/fat client applications that improve web UI interactions and bring us to the next level of distributed applications.

Posted by diego on March 18, 2005 at 8:59 AM

opml, icons, and the nooked rss directory

A couple of months ago I was looking for options for identifying OPML output while going through the design stage of the Nooked RSS Directory.

The question was: if the white-on-orange XML icon is a common way to identify RSS feeds, what's the equivalent for OPML?

One answer was to use the same icon, which is in fact generic, to represent OPML as well. This solution, however, can be used when you have either one type of output or the other, but not both at the same time. Another possibility was to use one of the many different icons that turn up in a Google Image search for opml. Another option was of course to create an entirely new icon. The problem was to come up with something that a) wouldn't be unfamiliar to users, b) would be unobtrusive and c) would maintain the value of the XML icon for the RSS feed.

On one hand, the line was crossed long ago when different applications overloaded the XML icon, and even its Look and Feel, while changing its contents (Yahoo! for example has modified the original icon here and they also have a similar-looking icon with "RSS" instead of "XML" to subscribe to Yahoo! Groups, example -- there are many others, I'm not singling out Yahoo! in particular). On the other hand, there's no need to create even more confusion. Dave has advocated the use of the XML icon for the appropriate XML output for a page (be that RSS, OPML, etc), and, maintaining the value of the icon by avoiding changing its contents while keeping the look and feel intact. After some thought, I concluded that in this case the second approach made more sense: barring a particular design or business need (for which there are many good examples, but that weren't a factor in this case) simplicity was the best option. Additionally, avoiding possible user confusion that would result from a non-standard icon is definitely a good thing.

So what I ended up doing was to maintain the common XML icon to point to an RSS feed (the most accepted use of it by far) and to link to the OPML using a simple text link, enough to be unobtrusive while remaining usable for those that know what they're looking for (after all, not everyone knows what "OPML" is). As it turned out this was a fourth option: have no icon at all.

For example, check out the directory's Arts & Humanities page. The same page can be viewed as OPML and as RSS. (The link to the OPML view is still there, to the right --- Nooked replaced the link that directs to the RSS view with a small ad after I delivered the app, so essentially imagine that the white-on-orange XML icon is where the Nooked ad is).

Interestingly, this solution was also pretty good in terms of matching the functionality needs that we had (unobtrusive and at the same time easy to identify for experienced users).

Related: there's some cool stuff that can be done by using the OPML output as a start, for example, reading the OPML of feeds listed in a category and presenting a full RSS data view of them (different from showing the entries of the directory in RSS, which the directory does) with little coding. Then the loop could go on by creating OPML views of the category feeds, and so on... interesting possibilities for meta-aggregation and possibly other kinds of data processing/analysis.

Categories: technology
Posted by diego on March 18, 2005 at 8:45 AM

a st. patrick's day story

Happy St. Patrick's Day everyone!

Since this is the first time in three years that I'm not in Ireland for St. Patrick's, I thought I'd do a little blog-remembrance while having a Guinness.

While in Dublin it is common to come across groups of drunk people late at night in the weekends (and sometimes during the day!) it becomes even more common during this holiday. Many of those are not necessarily Irish, mind you, since there's a huge influx of tourists during this week every year (between half a million and one million if I remember correctly).

Now, in St. Patrick's day, 2003, I was heads-down working on what would shortly become clevercactus pro. It was a night of deep fog, and I was working quite late (as usual). Around 3 am, I hear sounds coming from the door. Sounds that indicated that someone was trying to open the lock. Coming out of flow state, slightly confused, I walk to the door and look through the peephole. A man is standing there, looking with confusion at a set of keys in his hand, with which he had evidently tried to open my door.

"Hello?" I venture, non-committal.
The man's head jerks up. Now I can see his eyes, glazed.
"Open the door" he says, in what semantically registers as an order but with a tone that makes it sound more like a plea.
"What?" I say.
"Come on, let me in." Definitely pleading now.
I chuckle under my breath. "I'm sorry, but you don't live here."
"Come on, let me in," he repeats, this time less sure of his request.
"Go away," I say, then laugh. I can't believe this guy.
He stands there for quite a while, undecisive, until he suddenly turns away and I see him go to the door of the apartment in front of mine. Problem is, he doesn't live there. I observe him. Again he tries to open the door with his keys, and I go back to work. I hear him make more noise further away, presumably trying to open the final door in the group, again with no luck.

Now, all the doors in the complex look alike, so I understand some level of confusion. But you really have to be wasted to not remember what apartment number you live in.

I assume he eventually went through all the apartments and found his, after all, there was only one more floor to go.

Unless he was in the wrong building of course. :)

Categories: personal
Posted by diego on March 17, 2005 at 6:00 PM


I have absolutely no idea what I'd do with a bunch of Gumstix Waysmall systems, but, like Cringely, I keep thinking that there's something cool that one should be able to get them to do. A mini-cluster, connected via bluetooth! Right, but for what exactly? Anyway. Certainly something to keep in mind for when I need a swarm of tiny computers to do something. :)

Categories: technology
Posted by diego on March 15, 2005 at 9:50 PM

a9's opensearch

Werner blogs about A9's new OpenSearch. From the site:

OpenSearch is a collection of technologies, all built on top of popular open standards, to allow content providers to publish their search results in a format suitable for syndication. [...]

Many sites today return search results as an tightly integrated part of the website itself. Unfortunately, those search results can't be easily reused or made available elsewhere, as they are usually wrapped in HTML and don't follow any one convention. OpenSearch offers an alternative: an open format that will enable those search results to be displayed anywhere, anytime. Rather than introduce yet another proprietary or closed protocol, OpenSearch is a straightforward and backward-compatible extension of RSS 2.0, the widely adopted XML-based format for content syndication.


First Yahoo and now A9 are now pushing the boundaries of Search APIs. Google's API, sadly, remains in its usual we-don't-seem-to-know-what-to-do-with-this-or-want-to-support-it state. Maybe all of these announcements will spur Google to crank it up.

Posted by diego on March 15, 2005 at 8:54 PM

there and back again

The objectives of [this software] are 1) to promote sharing of files (computer programs and/or data), 2) to encourage indirect or implicit (via programs) use of remote computers, 3) to shield a user from variations in file storage systems among hosts, and 4) to transfer data reliably and efficiently.
Hm. Where did I get that from? Gnutella? Freenet? Some other fancier P2P app?

Nope. It's from RFC 959, circa 1985, which defines the FTP protocol (RFC 765, which it obsoletes, dates from 1980). "To promote sharing of files (computer programs and/or data)". Ain't that a riot?

One of the points I made in my thesis was that initially the Internet was truly a P2P system, and only later it moved into the client/server direction, only to slowly creep back into decentralized mode. FTP, which we hardly think about anymore, was a great example of this that I didn't use.

Consider that the original mode in which FTP worked was one where the client was actually a server as well. How so? Well, these days most FTP connections are "passive mode" connections. The "passive" there is talking about the ftp client. Normally, an FTP server accepts connections along with a port specification on the client. The server then opens connections to the client, which must have its own server for that. Passive mode enabled clients to open all connections themselves, a clear necessity as systems started to find themselves behind firewalls, NATs, and such.

The point is that even FTP, which we tend to think of as one of the prototypical client/server applications, was actually one of the prototypical peer-to-peer applications. The client and server divided the load, clients being responsible for serving transfer connections, and servers for the serving control channel connections.

There are many "loops" of this sort, sometimes repeated decade from decade. A lot of computing has been about making the same things easier, faster, or more scalable. And what's important about this is that, hard as it might be, it's always useful to know what happened before, from the 60s onward. Revisiting ideas is fun, as long as we avoid revisiting the mistakes: we should be trying to make new mistakes, not repeat the ones from the past. :)

PS: let's see how long it takes someone to note the title of the book from which the title of this entry was, er, "downloaded". :)

Posted by diego on March 13, 2005 at 9:33 PM


Matt points to a new wordpress plugin for structured blogging. Kewl. Reminds me of.

Then, completely unrelated to this, but way more fun is Ted's pointer (originally from Boing Boing) to LoTR in l33t:

**The white light fades, revealing Gandalf
Gandalf: "Teh balrog was noob. He got pwned. I can dance all day, I can dance all day!"
Gandalf: "Boom! HEADSHOT!"
Gimli: "FFS, make up your mind! ><"
To which one can only say: LOL!

Then we've got Andrew Sullivan who thinks that society is dead. Why? Because people in Manhattan listen to music on iPods rather than to the noise of traffic and such. Right. Lighten up, dude. Music players have sold, since inception, maybe, what, 100, 200 million units? There are about 6.3 billion people in the world without music players. Maybe society isn't dead quite yet? More than a billion of them don't even have running water, but they haven't "fallen under the spell of iPods" either. So it ain't all bad...

iPods and blogs. Now, that is something that should keep you up at night.

Woody Allen comes to mind: "What if everything is an illusion and nothing exists? In that case, I definitely overpaid for my carpet."

Also, Adam Curry: "Veni, Vidi, Velcro."

While working, I've spent half a day listening to U2, the other half to Sinatra. Both rock, even though Sinatra didn't. Language is funny that way. If I was really feeling recursive, I'd say funny, not ha-ha funny (like this Bono vs. Carly post is), which in itself is funny, but not...

Well, what do you know, I guess I am feeling recursive.

Categories: technology
Posted by diego on March 10, 2005 at 12:08 AM

trackety track

[via Mitch]: Tracking PCs everywhere on the Net (paper):

The technique works by "exploiting small, microscopic deviations in device hardware: clock skews." In practice, Kohno's paper says, his techniques "exploit the fact that most modern TCP stacks implement the TCP timestamps option from RFC 1323 whereby, for performance purposes, each party in a TCP flow includes information about its perception of time in each outgoing packet. A fingerprinter can use the information contained within the TCP headers to estimate a device's clock skew and thereby fingerprint a physical device."

Kohno goes on to say: "Our techniques report consistent measurements when the measurer is thousands of miles, multiple hops, and tens of milliseconds away from the fingerprinted device, and when the fingerprinted device is connected to the Internet from different locations and via different access technologies. Further, one can apply our passive and semi-passive techniques when the fingerprinted device is behind a NAT or firewall."

And the paper stresses that "For all our methods, we stress that the fingerprinter does not require any modification to or cooperation from the fingerprintee." Kohno and his team tested their techniques on many operating systems, including Windows XP and 2000, Mac OS X Panther, Red Hat and Debian Linux, FreeBSD, OpenBSD and even Windows for Pocket PCs 2002.

"In all cases," the paper says, "we found that we could use at least one of our techniques to estimate clock skews on the machines and that we required only a small amount of data, although the exact data requirements depended on the operating system in question."


Categories: technology
Posted by diego on March 8, 2005 at 11:33 PM

listen. think. act.

And get started by watching Bono's speech to this year's TED conference. The whole address is about 30 minutes. Highly recommended.

Categories: geopolitics
Posted by diego on March 8, 2005 at 11:05 PM

back into the flow

I've been really busy the last few days, and blogging has suffered. Oh well. I expect this will continue to happen for the foreseeable future. :)

I am really enjoying the weather here. Truly fantastic. One thing I miss, though, is Webvan, which was really great. I have to try out Safeway and see how it goes--otherwise shopping is kind of a pain since I don't have a car yet. But, you know, biking back and forth to the office actually makes up for it. Particularly in this weather.

Did I mention I'm enjoying the weather? :)

Categories: personal
Posted by diego on March 8, 2005 at 3:20 AM

new mobibot, new GoogleME

Erik has released a new version of GoogleME and a new version of mobibot. Very cool. I still don't have a local phone, but once I do I'll actually be able to use the local features of GoogleME (which weren't very useful in Ireland :)). Also, mobibot is now uploading directly to, which is a great example of the use of the delicious API. I still have to make some time to play with that myself!

Posted by diego on March 8, 2005 at 3:17 AM

yahoo! wakes up

Yahoo does webservices!! Jeremy has a good roundup of pointers, and Yahoo search now has an excellent Developer site which includes information on their API and other things. Cool!

I keep saying that Yahoo! doesn't get enough credit for the stuff they do (probably because they have so many services and systems that it's difficult to see a "simple narrative"). Maybe this will start to change things.

Posted by diego on March 1, 2005 at 6:13 PM

the nooked rss directory


So, last week Nooked publicly released the application that I wrote for them during late December and January: The Nooked RSS Directory.

The directory is an interesting app: basically a resource of corporate RSS feeds (including Podcasts). Data is still being added, so there are some categories that don't yet contain many entries. One of the points of this particular app is that there is "editorial control" (similar to the Yahoo! directory) and so a level of relevance should me maintained throughout the entries.

While the nature of blogs (and the web itself) makes centralization difficult to maintain, directories are of course useful resources, and in this case, for many people that are only now approaching RSS from a corporate communications point of view, the directory would be a useful resource to get started and find information on the companies or products that they are interested in, and they could submit their own feeds.

It took a bit longer that originally planned, but it's great to finally see it deployed. The OPML view of the listings has some interesting consequences--but that's for later! :)

Categories: technology
Posted by diego on March 1, 2005 at 9:02 AM

Copyright © Diego Doval 2002-2011.