meets Orkut.

Jim Webber joins the fray. Welcome, Jim. Subscribed (sorta – hurry up with the RSS and permalinks! 8-O )

One of his first entries is titled “Messages != Flattened Objects”, which is a topic very near and dear to my heart, and a frequent point of discussion between Jim and myself, both publically and privately.

The term “Flattened Object” is interesting. I hadn’t heard it before, though I do use “serialized” and “pickled” on occasion. This is what I call a “document”; a bag of bits REpresenting the STate of some object.

Yet another WS-* specification with a bunch of Get* methods that fails to use the SOAP 1.2 WebMethod feature which supports HTTP GET and therefore giving important resources URIs.

WS-* effect considered harmful? It appears so.

In my ample spare time, I often fire up one of a handful of multiplayer first-person shooters that I’m familiar with, and play against opponents across the Internet. Perhaps you’ve done this too.

I frequently use a tool called Gamespy3D to help me locate the servers playing the game/mod/map I’m interested in. Of course, sometimes pinging this list of servers takes quite some time, leaving the ever-growing possibility that the ones pinged first are no longer playing the map they said they were N seconds ago. As a result of this, sometimes I double-click on a server, only to end up playing a different map than I intended, wasting up to a minute of my time.

What would be nice is if part of the “join” message that is sent from my PC to the server, contained information which declared “Here is the map I’m interested in playing, and if you’re not playing it right now, I don’t want to join”.

Of course, sometimes you don’t have the expectation that any particular map is being played, such as when you just want to join one where you know your friends hang out. So it should be optional. But when present, its value must be understood.

You know, something like SOAPAction (well, mostly), something that forms languages should support, because that server list inside Gamespy is a form.

Tim notes that Googlebot is frequenting his server, and costing him real money.

A quick investigation on an old page from his log reveals;

HTTP/1.1 200 OK
Date: Wed, 03 Mar 2004 14:20:02 GMT
Server: Apache/1.3.26 (Unix) Debian GNU/Linux
Last-Modified: Wed, 03 Mar 2004 08:00:54 GMT
ETag: "1b404e-f1d-404590b6"
Accept-Ranges: bytes
Content-Length: 3869
Keep-Alive: timeout=15, max=20
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8

Like many other agents and caches, Googlebot presumably uses some “freshness” heuristic based on Last-Modified. As you can see above, Tim’s server is telling the world that even his archived content changes frequently. Ergo, Google hits him frequently. Conclusion; don’t do that! 8-)

Full disclosure; my weblog isn’t cacheable at all – not even any Last-Modified headers – and I have little motivation to fix it because my bandwidth isn’t metered.

ZapThink gets it totally backwards;

Rich clients will supplant portals as the primary interface to Web Services and Service-oriented functionality in the enterprise by the end of 2007.


These guys need to get out more. Go check out some of the KnowNow or mod_pubsub demos for an example of what’s possible with existing (nevermind next-generation!!) thin-clients.

Sure, a fat-client approach may have some minor advantages (more responsive?), but zero-install is da bomb, baby; once you’ve tried it, there’s no going back. Ask any CIO; they’ll gladly accept a slightly suckier zero-install solution over a fat client solution any day of the week.