Shanghaied

We spent a day looking around Guilin, another day on the rice terraces, then took the bus down to Yangshuo.  Guilin was nice enough, and interesting to see (we spent most of the day in a natural amusement park of sorts, including the sad zoo, where we did get to see a panda), but the terraces and Yangshuo were spectacular.

Up in the mountains with the rice terraces, we saw the a show by the indigenous women (they have long hair, which they tie in buns atop their heads and wear like a turban), then climbed the peaks and even went a bit off the normal tourist-clogged hilltop onto the narrow trails between stepped paddies.  Here again, the lie was put to Chinese Communism, as these people were both poor and opportunistically capitalist, hawking their souvenirs aggressively in the villages and along the trails (not that we could blame them for preferring that to working the fields, and we did buy this and that).  But the sights were gorgeous, and I’d love to see more of it.

Then down to Yangshuo. This is the area of China with the striking narrow mountains, shrouded in mist.  The first day there, having started a bit late, we biked out to the river and took a bamboo raft back down, then climbed to the top of a small mountain called Moon Hill, a striking peak we’d unknowingly seen from the raft, with a semicircular arch through its middle.  At first, we got to the arch, where there was a scenic view.  But then we followed an unmarked, unpaved trail further out, and eventually up, to the top of the “hill”.  Up there, the sky and the mountains were even more spectacular.  The climb was a doozy, but it was worth it.

That night, we stayed in a place appropriately named Fawlty Towers; it was cheap, but we found out why, with a dubious bathroom, no topsheets or duvet covers for the musty and questionable blankets, and, worst of all, some bizarre wiring problem that caused the ceiling lamp to suddenly start flashing erratically (though it was turned off) at 3 AM.  When I stumbled downstairs to complain, they made us move rooms.  Don’t stay there.

The next day, we rented bikes again, and hired a guide to show us around on a bike tour of the local villages.  It rained most of the day, and I was covered in mud by the end.  We stopped at one of the villages for lunch, whereupon our guide tried to convert us… to Christianity!  I asked him to tell us about the countryside and the villages instead, but he kept coming back to religion, until I had to insist he stop it.  Truth to tell, he wasn’t much of a tour guide, showing us the path but not pointing out or explaining any of the sites unless we asked, and not even much then.  But we still had a good ride over bumpy country roads, and we cought a shower and a plane out to Shanghai.

… Where M promptly fell ill.  Luckily, we’re staying with the mother of a friend, who had their driver take us to a clinic.  Gastroenteritis, apparently, and a nasty case of it, so we are taking it easy today.

Underscoring Accessibility

Dramatis Personae

  • Doug Schepers (a Montague)
  • Anne van Kestern (a Capulet)
  • Simon Pieters (a Capulet)
  • Henri Sivonen (a Capulet)
  • Rich Schwerdtfeger (a Franciscan)
  • Aaron Leventhal (an Apothecary)

The Prologue

Over the past few weeks, there has been a long, drawn-out discussion about how to integrate ARIA (an accessibility specification) into both SVG and HTML in a uniform way. There have been two main camps, as there usually are in these matters: the XML advocates, and the HTML5 (WHATWG) advocates. Both sides want to make sure that all content works the same across all browsers, authoring tools, etc. (collectively called User Agents), but they differed in how they thought it should be done.

The XML True Believers have held that the way forward for the Web is to enforce a strict, well-defined syntax for Web languages, and that to extend or combine languages, a differentiating mechanism called “namespaces” would be used. Namespaces in XML are specified to take the form “schepers:doug”. They declared a do-over on HTML, recasting it in the new XML mold (XHTML), and planned for browsers to be stricter on new content, and for authors to have learned their lessons.

The HTML Young Turks came forward with the observation that no matter how well you define a syntax, people will make mistakes (or not know the right way to do things), and that the way to recover from those mistakes is to define error-handling behavior for each kind of mistake; they also believed that since they could now reconcile older “broken” content with new browser behavior, that they were constrained to define behavior that would work in all past browsers, as much as possible, and to degrade gracefully in those that didn’t. But this required a more rigid parsing mechanism that doesn’t work well with extensibility, a problem exacerbated by Internet Explorer’s idiosyncratic and variable (one might even say spasmotic) behavior regarding the colon (“:”), meaning XML Namespaces didn’t work right. Also, the colon has a special meaning in CSS, yet another wrinkle.

So, XHTML and SVG are based on the XML model, and the new HTML5 is based on the new-old model. This difference wasn’t really much of a problem for SVG, though, because SVG and HTML are two different languages…

But of course people want to use them together. (More on that in some other post.)

The obvious way around that is to have two different parsers (a parser is a program that reads a formal syntax and makes a model of it for the browser to act on), and when you encountered SVG inside HTML, you would switch to the stricter parser. HTML would have its model for naming attributes (with no colon), and SVG would have its attributes (with a colon).

But there’s a hitch. ARIA is an accessibility technology meant to work in HTML and XHTML and SVG (and other presentation languages). The functionality for ARIA is defined in its own specification, but it’s not intended to be used on its own… it has to be integrated into a host language. It would be confusing for authors to have to use two different syntaces for the same functionality in different languages.

For example, in SVG you might have:

<svg version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:aaa="http://www.w3.org/2005/07/aaa">

<g xhtml:role="checkbox" aaa:checked="true">
<rect x="5" y="5" width="20" height="20" rx="5" ry="5"
fill="none" stroke="crimson" stroke-width="2"/>

<text x="30" y="22" font-size="18" fill="crimson">
Enable Accessibility</text>
</g>

</svg>

While in HTML, you would have something like:

<html>
<ul role="checkbox" aria-checked="true">
<li>Enable Accessibility
</ul>
</html>

Let the drama unfold…

Read the rest of this entry »

Trapped in Tuscany

Okay, Okay, normally I wouldn’t complain about having to spend another day in Tuscany… but I have other plans.   Yesterday I missed my flight, and it had a domino affect that resulted in the worst tangle of travel complications I’ve ever had.  I’ve missed flights before –sometimes my own fault, sometime through circumstances beyond my control (this time it was a combination… the taxi took a long time to get to my hotel, and got trapped behind a slow-moving truck on the way in, but I should have budgeted more time in the morning)– but normally I hop on the next flight and it works out, usually with no fee.

This time was different.

For fare reasons, I had a fairly complicated flight plan, involving a round-trip from RDU to Zurich, and a second round-trip from Zurich to Pisa.  Though they are actually fairly close geographically, there are limited flights out of Pisa, all involving a layover (sometime 12 hours!), and when I missed my flight out of Pisa, there was simply no way of connecting through in time to catch my flight out of Zurich (and there’s only one of those to the States per day).  So half a day later of figuring out how to get in touch with the 4 airlines involved by payphone and Internet, and several outlandish rebooking fees later, I ended up with tickets the next day… for most of my trip.  I now get home 2 hours and an additional layover later on an already tight schedule to go on my vacation back to Missouri for my 20th high school reunion.  After flying for 18 hours, I’m not looking forward to a 15-hour drive nearly as much…

On the lighter side, a colleague drove me in his luxury sports car to Lucca, a nice little medieval city 25 kilometers away.  We strolled around all evening, talked technology and neurology and such, had a nice dinner and a gelato, and snapped pictures of the town.

This morning I snapped awake at 5:30, long before my wake-up call.  You’d better believe I’m making this flight… which is now boarding…. Ciao, y’all.