October 2002

Back from Canada

Compared to the long straight organized roads through endless flat prairie of Alberta, even British motorways look like a maze of twisty little fog-bound lanes... let alone the back-streets of London or Oxford. I’m surprised tourists from North America don’t get claustrophobia.

Alas! What photos I took are on Jamie Lokier’s digital camera in far-off Bristol. Well, I say far-off, but in Canadian terms it’s trivial, of course.

I managed to throw my back out getting the suitcases lined up ready for driving to the flight home—one moment I was putting down Jeremy’s black bag, the next I was all curled up in agony. Luckily I was able to unkink enough to hobble in to the car using a chair as an ersatz zimmer frame. The airport at Calgary loaned me a wheelchair so I had no trouble getting through check-in and customs. At Gatwick the wheelchairs have small back wheels, which means the occupant cannot wheel themselves, and instead must put up with being pushed around by an attendant. This infuriates my sister Kate no end. (She cannot use her own chair at the airport because wheelchairs have to be checked in as luggage.) I have also discovered that those electric golf-cart things are not as fun to be driven around in than you might hope. Still, I am recovering my mobility now.

Namespaces annoyances in RSS

In an earlier note I listed four namespaces used in RSS and RSS for the same element names. One of these has now been unmade: the RSS specification never explicitly mentioned the namespace, but the sample file included an xmlns attribute. While I was away in Canada, this was removed to ensure backward compatibility with RSS 0.91. This makes sense (there exist examples of applications that genuinely are broken by this), but is kind of icky.

There is still the old RSS 0.9 format—which did use its own namespace—but given that even RSS 1.0 did not preserve that, I think we can assume it is dead too. I assume that the programs that were broken by the fleeting addition of the RSS-2.0 namespace are also incapable of parsing RSS-1.0 data?

I just tried printing a copy of the RSS 2.0 spec., but because he chose to use a fixed-width table for the text, it is clipped all down the right-hand side of the page, making it useless. Goddammit!

Update (2002-10-14): I have removed the namespace declaration from my experimental RSS feed.

Must ... ignore ... HLink!

The TAG rejects HLink, not many dead scream the headlines. Is this the end for XHTML 2?

What’s XHTML 2? It is the next step in the bridge from HTML 4.01 to the futuristic world of ‘pure’ XML documents. XLink is a recommendation from the W3C for how XML documents should express links to other resources. HLink is a new proposal from the XHTML committee for how XML documents should express links to other resources. In effect, they are saying that XLink is inadequate and they need to replace it. TAG have expressed an opinion that XLink should be used instead, presumably on the grounds that we don’t want to have two W3C recommendations for one and the same thing.

Can XLink replace the special-purpose linking attributes in HTML? I suppose we can imagine replacing img and object tags with something like

<object
    xlink:type="simple"
    xlink:show="embed"
    xlink:actuate="onLoad"
    xlink:href="myLogo.gif"
    width="400" height="300">
  My Logo
</object>

In principal the first three attributes (which would be the same for all images) can be given default values in the DTD. This is the approach used in SVG and MathML. The problem is that it prevents the XML document in question from being stand-alone. That is, the DTD must be downloaded and parsed before the document can be rendered. SVG fudges this; SVG documents often do not have DOCTYPEs, and SVG viewers in effect use a DTD compiled in to the software. All very messy.

There’s another problem: the HTML tag img also allows for URIs for the low-res version (lowsrc attribute), a long description (longdesc), and an client-side image-map (usemap). XHTML 2 also wants to add an href attribute to all elements (so any element in the document can be a link). I’m not sure that XLink defines xlink:show values for all of these. Even if it does, we cannot have more than one simple XLink link per element (since we can only have one xlink:href attribute). We could possibly follow the same system as XTM, with one child element per link:

<object style="width:400px; height:300px;">
  <source xlink:href="myLogo.gif"/>
  <usemap xlink:href="#logoMap"/>
  [My Logo]
</object>

(Here we are assuming that the DTD is used to generate default values for the other Xlink attributes—but do we really want to rely on all XML browsers being validating browsers...?)

The question is, will this work? Yes, if we are using a specialized XHTML-2-savvy browser (one which understands object and source, and knows how to interpret them). If the aim is to make XHTML 2 implementable using only XML + CSS 2 + XLink + XBase, without making XHTML a special case, then the answer is no.

The upshot of this is that, if the W3C want to make XHTML 2 just another XML format, displayable in a generic XML browser, then it looks like XLink is not quite right for the job. It may well be that I am missing something, and the above example can be reworked to work with XLink. It might be that lowsrc and longdesc are dumb features that no-one wants to carry over in to XHTML 2 anyway. But my naïve understanding of XLink and the nascent XHTML 2 suggests that the XHTML working group might have a point.

How is this going to end? Right now it looks to an outsider like the question is being discussed less in terms of technical issues like what XHTML’s goals are, and more in terms of committees and procedure and politics and such-like. We may end up with an XHTML 2 that requires a specialized XHTML 2 browser (requiring upgrades to existing browsers that recognize the XML namespaces or the DOCTYPE, or any of the other stupid heuristics in use today to distinguish different flavours of HTML). The dawn of XML as a fully-fledged hypertext mark-up language will delayed by a few more years...

I really should not be writing about this—I have plenty of other things to work on. I just find it difficult to tune out all these arguments about XHTML when that’s what I work with every day...

XSS—Extremely Simple Syndication

Proposal for Extremely Simple Syndication (XSS), a profile (a restricted subset) of RSS 2.0, proposed by Tim Appnel (tima) [pointer from Mark Pilgrim]. This is the same acronym as I timidly suggested for the successor to RSS 0.92. I had started on something I was going to call XSS myself, but tima’s is headed in the same direction, so I should probably just withdraw my inchoate drafts to prevent any confusion...

I had started drafting a proposal myself, but in the end I don’t have time to do it properly (my evenings at home should be spent on the CAPTION web-site...). Oh, well. Excuses, excuses.

On the subject of things I don’t have time to do: Lars Marius Garshol points to a treatment of RSS data in AsTMa=. (AsTMa= is a linear notation for Topic Maps). I would like to do a proper treatment of interoperable syndication data in topic-map format, but, again, no time...

Dave Whiner asks that people not use variations on the white-on-orange XML icon (used to link to RSS data). So I have changed the link on my pages to use the ‘standard’ image.

WAP really is crap ... surprise!

An information system for one’s mobile phone. A lousy user interface, partly necessitated by the small form factor. And every second counts, because it is charged by time, not a per-byte or flat-rate fee. Therefore, obviously, WAP is only useful for information I really need, and which I need right now, and for which I cannot simply go home and use my usual internet connection. Such as, to pick a topic at random, train times.

So it was I found myself in Lydney yesterday (Sunday). Lydney might or might not be a lovely village, but from the train station all you see is a few house-backs, a bus graveyard, a rusty wrecked car, and two doorless brick shelters. The paper timetable listed no trains for over three hours. We wanted confirmation before wandering off to look for a pub. The Railway Enquiries number (0845 748 4950) was busy. In desperation I thought I’d see if WAP could manage the job. My Virgin phone has two links marked Travel. Both lead to adverts for special offers and no actual information. In the end, after twenty minutes of wandering through the menu structure and gritting my teeth at tiny progress indicators, I found Google. Google found several train timetables, including one Dutch one, and (amazingly) a 500 error page or two. One of them worked. Praise Google!

WAP does have a link to PocketBeer.com, which located the nearest pub—in another village–but when I tried to follow a link to a page with the pub’s address, I got a 500 again. Argh.

It was very cold and windy, and Jeremy and I were still dressed in the clothes we wore to her sister Ellë’s wedding, not to mention clutching a bouquet of very exotic flowers.

In the end it was the much-overlooked press-button information point that supplied the most authoratative and useful confirmation of the train times. It also warned us that, because of severe weather, train times were liable to change. By happy chance, someone else pressed the button for the other platform, which alerted us to a train we had overlooked in the opposite direction, which was much earlier than the one we were interminably waiting for. It would at least take us to a station in an actual city, with the prospect of food, hot drinks, and maybe even a warm room to wait in. So we worked out an alternative route. Pressing the button again, we discovered the message had changed—the robot apologised profusely for cancelling the train we had just decided not to catch. We were aware of some fallen trees on the way to the station, but this was this was the first indication of just how badly the train system was affected.

WAP, despite being accessed via a device that knows my location to within a hundred metres, is incapable of delivering such locally specific information. (Even the pub guide requires that I enter the name of the town using the keypad.)

0845 748 4950 is similarly useless: you can press 1 to enquire about the weather, but it is organized not geographically, but according to the companies that run the services. Useless, in fact.

In the end the journey home, which took 3 hours total on Saturday, took twelve full hours (Taxi from the hotel at 11:30, bus from the Oxford train station arriving 23:30). The Lydney–Goucester leg was the most dramatic, actually having to stop at an apple orchard because the wreck of one of the trees had fallen over the line. I have never been so pleased to see Didcot Parkway train station.

RSS valid, again (ahem)

My RSS 0.9x feed failed to validate after my last entry—because I included an HTML 4 character entity in the title. (I used &mdash; to create an em-dash.) This is OK for HTML, but forbidden in RSS. I have fixed the script that generates the file so it converts these entities in to the corresponding Unicode character. Sorry for any inconvenience.

Picky Picky periodicity

My back-burner project for the CAPTION web site is something that I shall give the working name of Picky Picky Game. This game will work in rounds, with everyone able to vote for a picture from this round at the same time as people are submitting pictures for the next round. The idea is that we make a comic strip out of the favourite pictures from each round.

A round might last a week or a month (depending on how often people submit new pictures), so I want to make it a configuration parameter. The code I was working on today was the routine that works out the current round number, given today’s date, the start date, and the period. For example, if we had 2-week rounds and had started on 1 January 2002, then we would today (2002-10-31) be in Round 21.