Views and Feelings

My Photo
Name:
Location: Amsterdam, Netherlands

Tuesday 27 October 2009

A taste of who uses XForms

Molly Holzschlag asks who uses XForms, so I thought I would just drop a taste here for the record.

As you would expect with a new technology, adopters of XForms are within companies and vertical industries that have control over the software environment used. This is just a selection:

  • the US Navy (in submarines),
  • the British Insurance industry,
  • NASA (Jet Propulsion Laboratories),
  • UK Government (Planning Inspectorate),
  • many UK local government sites
  • US Government (eg recovery.gov, archives.gov)
  • Verifone - a payment company, for configuring petrol pumps,
  • Xerox, for an Enterprise Content Management system, to implement dynamic forms and to do XML binding to editing and adding for Wikis, Blogs, and content management, and another use in active development.
  • Yahoo for several internal applications, and now part of their mobile platform
  • NACS - the Association for Convenience & Petroleum Retailing for configuring and accessing data from a range of devices,
  • Vancity - A Canadian Credit Union, with public XForms-driven pages,
  • Daiwa - a Japanese Bank, for a transaction system,
  • German Shipbuilders, for configuring ships,
  • Fraunhofer (known for MP3) for configuring websites,
  • Bristol-Myers-Squibb (pharmaceutical),
  • Remia - a major Dutch food manufacturer,
  • KDDI: embedded in a Japanese mobile phone,
  • US Center for Disease Control: for disease control after hurricane Katrina

And don't forget that it is an integral part of OpenOffice's ODF, as well as central to a number of content management systems, such as the one from EMC.

Labels:

Wednesday 8 July 2009

XHTML2: not dead

Late last week, just before the US holiday weekend, W3C management announced that they had decided to no longer supply resources for XHTML2 after its current charter runs out at the end of this year. However, this doesn't mean that work on XHTML2 will stop, or that XHTML2 is dead, just that the work will carry on elsewhere.

The fact that W3C no longer has the resources to support XHTML2 does not mean that the need for it goes away, nor that the companies working on it want to stop. To this end we are now working on where to take the work in order to complete it.

What this does mean is that we no longer have to adhere to the membership rules of W3C to do the work, so if you want to get involved in the future work on XHTML2, please get in touch, at xhtml2 at future-web dot org.

The background

Although a couple of members within W3C have actively campaigned to close the group, many have supported the work. Last spring, the W3C advisory committee in fact voted to continue resources to the XHTML2 WG. And no surprise, because the XHTML2 WG has done a lot of good work.

W3C working groups work within charters. When the group is first created, it gets a charter that outlines and defines its areas of work. The working group normally may not stray outside the bounds of the charter. The original XHTML charter stated the purpose as "To develop the next generation of HTML as a suite of XML tag sets with a clean migration path from HTML 4.0", and that is exactly what the group did.

Modularization

The underlying technology that the group developed to serve this purpose was XHTML Modularization. This is actually just a methodology: a standard definition of how to define and plug tag sets (modules) together. There are versions of this methodology at least for DTDs, XML Schema and RelaxNG.

The nice part of this approach is that you can define a new module, and immediately plug it into an existing (modularized) language. That was how the XHTML+RDFa language was produced so quickly: we just produced the module, plugged it in, and hey presto! you have the complete new language. Similarly, any other language defined with modularisation can also add the new module with little work. And another nice part is that if a module gets changed or updated, or the host language gets modified or changed, it is little work to update the languages.

Modularization in itself is of course only of interest to people and groups who produce languages, not to users of those languages. But still, apart from the XHTML group among others Jabber has used it, as has Epub, the Open Book Format used on the iphone, the Sony book reader, and others.

Based on modularization, the group then produced modules that independently could get implemented, tried out and adopted. The term "XHTML2" then covers the final packaging of all those modules together.

The Design

The group went about its work by evaluating current web practices and guidelines, and talking to representative communities, trying to identify areas that were considered problematic. We ended up with a list that included amongst others Ease of authoring, Forms, Internationalization, Usability, Device independence, Accessibility, Extensibility, and User-defined semantics.

Some of these (such as forms) have produced a module of their own, while others (such as device independence) are distributed over the whole language. Many of the XHTML2 modules have been around, implemented and adopted for a long time now. Most are finished. For instance:

  • XForms: this module was so demanding of the time of the people producing it that it got spun off as a separate working group; that notwithstanding, it is still a central part of XHTML2. XForms is in use in the US government, many UK local government sites are powered using Xforms, XForms is a central part of ODF, the Open Document Format used in OpenOffice, XForms is being used for configuring hardware, building ships, tracking diseases, is embedded in hardware, and in hundreds of other applications. We have convincing evidence that using XForms has reduced the effort needed to produce an application by an order of magnitude.
  • RDFa: this is the most-recently finished module. Again it is being used by the US and UK governments, and supported by amongst many others by Yahoo and Google.
  • Role: While outwardly a very simple module, for a range of uses, its initial aim was to support accessibility, and WAI-ARIA have adopted this for their work.
  • XML Events: this is an improved way of catching events, replacing the onclick style in HTML. As the name suggests, it is applicable to any XML language. and has for instance been adopted by SVG.
  • Access: This is a generalisation of accesskey, and allows you to assign navigation events to parts of the page. Although accesskey was designed for accessibility, it is also widely used for mobile applications.

So there remains little more to be done. There are a couple more modules that need to be finished before XHTML2 can be signed off on, principally the hypertext and embedding modules. Ian Hickson sings the praise of those modules elsewhere.

What about browsers?

The essence of XHTML2 is that you author a page, and the user gets the user experience defined by that page. There are many ways to achieve that experience, and native implementation in the browsers is not a pre-requisite. Many successful Web technologies are not implemented in the browser: for instance PHP and Dojo to name but two. Techniques such as server-side transformation and unobtrusive Javascript are widely used for delivering alternate content to browsers.

Labels: , , ,

Friday 24 April 2009

How to activate MP3 in Ubuntu 9.04

Playing MP3s doesn't work by default in the new Ubuntu (Jaunty Jackalope).

Here's what I did to get it working.
  • Start up Synaptic (System>Administration>Synaptic)
  • Click on Settings>Repositories
  • Select all repositories that are downloadable over the internet
  • Click on Close
  • Click on Reload
  • When it is done reloading, close Synaptic
  • Click on any MP3 file; Movie player should start up.
  • It will ask if you want to add the necessary codecs. Answer yes, and let it do it.
The end.

Thursday 5 March 2009

US Government Website uses XForms, XHTML, and RDFa

Quoting this post:

"This followed another talk there by George Thomas, from the U.S. government website recovery.gov, on how the site will put information on the government's economic stimulus spending into the semantic web and the Linked Open Data world via Atom, XHTML, and RDFa. (Very cool.)"
The slides add XForms to this mix.


Update: shortly after this, the man who was responsible for the site, Vivek Kundra, got appointed as the first-ever Federal CIO in the USA.

Labels: , ,

Friday 26 September 2008

IMDB keyword search

I was trying to identify a film that I had seen it in a jetlag daze at 5am once, and could remember little about it, except it was opera-style and about cowboys.
 
So I went to IMDB, to their keyword search and typed "cowboy opera". I spent some time trawling through the results, but I couldn't find it. So then I spent a lot of time using other ways of searching for it (an actor whose name I didn't know had played in it, but I had seen another film that he had played in whose name I also didn't know, but I did know the name of an actress in that film, so ... you get the picture).
 
I eventually found it. It was called Horse Opera. I looked at the keywords, in order to fix them, and guess what? It has exactly three, Cowboy | Opera | Opera Commissioned For Television.
 
So I decided to try and work out why I had failed to find it via a keyword search. I tried searching for Cowboy, but Opera wasn't in the list of related words next to it. I tried searching for Opera, but ditto. I tried to find a way to narrow down a keyword search with another keyword that you typed in, but there didn't seem to be one.
 
Then I noticed that the URL for a keyword search (after you had clicked on a result) was http://www.imdb.com/keyword/cowboy/
 
So as an experiment, I changed the URL to http://www.imdb.com/keyword/cowboy/opera/ and guess what! One result, the film I had been searching for!
 
There is clearly something wrong with IMDB's keyword search!

Sunday 31 August 2008

Getting a higher resolution with your external monitor on an Asus Eee

Some Eee models (such as the 901) only offer up to 1024x768 resolution when you attach an external monitor. It took me a while to track down the problem, but here is the solution. (This doesn't seem to solve the problem with the 701 where higher resolutions only give static).

The solution comes in two parts. First, you need to change /etc/X11/xorg.conf, which is set up to say that the maximum resolution is that of the built-in screen.

Part one, do this once only

Open a terminal with ctrl-alt-T, and change to the right directory by typing:
    cd /etc/X11
Make a backup of the existing file, just in case:
    sudo cp xorg.conf xorg.conf.orig
Now edit the file to set up the correct maximum resolution:
    sudo kwrite xorg.conf
Find the line that says
    DefaultDepth   16
and change the 16 to 24.

Find all the lines that say
    Virtual   1024 768
(there were 4 of them in my file) and change them to:
    Virtual   2048 2048
Save the file (ctrl-S), and exit (ctrl-Q).

Now reboot (ctrl-alt-backspace is enough).

Now you have a system that is capable of handling higher resolutions.

Part two, do this each time you want to switch an external monitor on

Unfortunately, for some reason that I haven't yet cracked, the "Desktop Mode" program in the Settings tab still doesn't recognise the extended resolution (the resolutions it offers may be just hardwired in). So to start up the external monitor you have to use a terminal again.

Plug your monitor in, switch it on, and crank up a terminal again (ctrl-alt-T).

Type in the terminal:
    xrandr
This will then tell you which screens are available, and at what resolutions. Mine said:
    Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 2048 x 2048
  VGA connected 1680x1050+0+0 (normal left inverted right x axis y axis) 433mm x 271mm
  1680x1050 59.9*+ 60.0 1600x1200 59.9
   1280x1024 75.0
   1152x864 75.0
   1024x768 84.9 75.1 70.1 60.0
   1024x600 60.0
   832x624 74.6
   800x600 84.9 72.2 75.0 60.3 56.2
   800x480 60.0
   640x480 84.6 75.0 72.8 66.7 60.0
   720x400 70.1  
  LVDS connected 1024x600+0+0 (normal left inverted right x axis y axis) 195mm x 113mm
  1024x600 60.0*+ 60.0
   800x600 60.3
   800x480 60.0
   640x480 59.9
VGA is the name of the external screen, and LVGS the internal LCD. Now you can turn on your external screen.
    xandr --auto
and bingo!, this should leave you with both screens (internal and external) on, at the maximum resolution of the external screen.

You can also pick the resolution you want to use from the available list (for instance 1680x1050), and type in the terminal:
    xrandr --output VGA --mode 1680x1050
You can switch the internal LCD off with
    xrandr --output LVDS --off
To return to using just the laptop screen the 'Desktop Mode' program works just fine, but you can also type:
   xrandr --output LVDS --on   xrandr --output VGA --off

Advanced stuff

It works like this: you have a virtual screen of 2048x2048 (which is the largest the hardware supports). You have screens which are windows onto that space.

When you say 'xrandr --auto', both screens are windows on to the same part of the virtual screen (the top left part). However, either or both can be moved to another part.

Simple ways include:
    xrandr --output VGA --right-of LVDS
which puts the external screen to the right of the internal screen. So dragging stuff to the right of the internal screen will make them appear on the external screen.

But there is a caveat: the combined resolution in any direction must be less than 2048. So if you have the internal screen at 1024, the external screen may not be wider than 1024 for this to work.

However, since vertical resolutions are usually the smaller, this is likely to work for high-resolution external screens:
    xrandr --output VGA --above LVDS
(or --below). This is because the sum of the two vertical resolutions is likely to be less than 2048.
Then you have to drag windows to the top or the bottom of the internal screen to get them on the external monitor.

Another option is to have the two screens overlap slightly so that the combination doesn't exceed 2048.

So for instance, if you want to put a 1680x1050 screen to the right of the 1024x600 internal screen, they will have to overlap from pixel position (2048-1680)=368:
    xrandr --output LVDS --mode 1024x600 --pos 0x0 --output VGA --mode 1680x1050 --pos 368x0

Even more advanced stuff

You can even rotate one or more screens!
    xrandr --output LVDS --rotate left
Note that the mouse 'rotates' with it.

You can return it with
    xrandr --output LVDS --rotate normal

Labels:

Tuesday 24 June 2008

How to do hCalendar in RDFa

Now that the BBC has announced that it is dropping use of hCalendar because of its accessibility problems, it is time to show how to define events using RDFa.

The events vocabulary for RDF was defined from 2002 by Dan Connolly and Libby Miller in RDF Calendar. Its use is identified by including the following declaration in your document, for instance as an attribute on the <html> element:

xmlns:event="http://www.w3.org/2002/12/cal#"

The markup for an event, in this case a TV program, can then look like this:

<div typeof="event:Vevent">
<h3 property="event:summary">Have I Got Old News For You</h3>
<p property="event:location">BBC2</p>
<p><span property="event:dtstart" content="2008-06-28T21:00:00">Saturday 28 June,
9</span>-<span property="event:dtend" content="2008-06-28T21:30:00">9.30pm</p>
<p property="event:description">Team captains Paul Merton and Ian Hislop
are joined by returning guest host Jeremy Clarkson and
panellists Danny Baker and Germaine Greer for the
topical news quiz. <abbr title="in stereo">[S]</abbr></p>
</div>

There are no requirements on the order of enclosed elements. For instance here is a description of a conference:

<div typeof="event:Vevent">
<h3 property="event:summary">WWW 2009</h3>
<p property="event:description">18th International World Wide Web Conference</p>
<p>To be held from <span property="event:dtstart" content="2009-04-20">20th April 2009</span>
until <span property="event:dtend" content="2009-04-24">24th April</span>, in
<span property="event:location">Madrid, Spain</span>.</p>
</div>

If you want to validate your page, then replace the DOCTYPE you use with

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

Labels: