
Countdown to Safari
The next big task that I'm about to tackle on the Ubiquity XForms project is support for Safari and Chrome. In general, UXF has seemed to work pretty well in the WebKit-based browsers whenever I've tried it, but I've never run exhaustive tests.

A brief history of Ubiquity formsPlayer
Having spent the majority of my last four years working on the likes of Ubiquity XForms, Hubbub and UBX, I've found it rather nostalgic to get back to working on Ubiquity formsPlayer during the last few weeks. So much so, in fact, that I decided to take the opportunity to delve back through the source control logs and brush up on the old girl's history a bit.

Ant, Buildbot and continuous integration
For the last few days, I've been working with Buildbot and Ant to improve the automated testing process for Ubiquity XForms. They are both seriously cool technologies in their own right, but together they are a genuinely awesome prospect. Buildbot is an automated client/server build system that enables remote builds to be triggered by events such as commits to source control or commands issued on an IRC channel. Ant is essentially a cross-platform, hyper-extensible version of make, although it is so far advanced from make that comparing the two feels slightly disparaging towards Ant. They have really captured my imagination because of the tessellation they share with the extreme programming practice of continuous integration.

navindex and accesskey
Recently I added an initial implementation of the navindex and accesskey attributes to Ubiquity XForms. Both attributes enable an XForms author to improve the navigation experience for their users; navindex by defining the order in which form controls are navigated and accesskey by defining shortcuts for navigating to particular controls.

Hubble, bubble, toil and trouble... *
(* apologies to Shakespeare for the flagrant misquotation)
A common response that we've had, when making the case for UBX as an application platform, is for people to say "Okay, show me an example". This poses a problem for us because, being a small team, we're often so busy working on our software that we have insufficient time left over to build demo applications. The last six months have been different for me, however, as I've had the opportunity to concentrate solely on the development of Hubbub, a new application that is built on UBX and Ubiquity formsPlayer.

Sidewinder is dead, long live UBX
Now that all of our software is open-source, we have started the process of moving it from our own source control repositories to projects hosted on Google Code. As well as easing the load on our servers, doing this helps to make our projects more visible to the wider open-source development community. The last of our projects to move is Sidewinder, which has been my main focus for the last three-and-a-half years.

Sidewinder makes an exhibition of itself
Recently, I've had the chance to spend time on some of the more presentational aspects of Sidewinder and this work has led to the addition of the Sidewinder Application Gallery to the installer. The purpose of the Application Gallery is to act as a showcase for the many different kinds of application that can run in Sidewinder.

Getting (web)kitted out
This week I am making a start on bringing WebKit into LibRender, the rendering component of Sidewinder. When I'm finished, this will leave our reliance on Microsoft's XML parser as the last remaining hurdle before we can start porting Sidewinder to other platforms. The prospect of finally addressing these two tasks is something that I'm rather excited about.
Phil Booth
Phil is a software craftsman, someone who goes the extra mile to produce software that exceeds expectation. He favours clean, elegant code that is simple to maintain and provides few hiding places for bugs. To that end, Phil employs test-driven development and refactors aggresively, mercilessly. He never, ever programs by coincidence.

How to harness the power of XHTML and XForms in your .NET applications
Recently, we've had a number of enquiries about embedding formsPlayer inside third-party applications, as more people are realising the benefits of using XForms as a dynamic UI framework. Fortunately, formsPlayer exposes a set of COM interfaces explicitly for this purpose and a number of commercial solutions exist that are currently relying on them. With this in mind, I've posted a tutorial article to The Code Project, one of the leading .NET developer resources, which demonstrates integration of these interfaces in a simple C# browser-like application.

Turn any web page into a desktop application
I've just finished implementing a new feature in the Sidewinder Viewer, which further simplifies the task of turning any web page into a desktop application. If invoked with a command line argument that specifies the document to load, the viewer now also checks the fragment identifier for the presence of a meta XPointer scheme. The expression associated with this scheme allows you to set a number of application-level properties, such as the window title, height, width, position and so on.

Driving Google Maps from the XForms model
I've just written a new tutorial, describing how to write an XForms application that overlays data from a BBC Backstage feed onto a Google Map. The application is pretty short and straightforward, but it also provides a cogent illustration of the advantages that the XForms model can bring, even to non-XForms user interfaces.

formsPlayer now supports Tablet PC pen input
One of our customers in the insurance industry recently required us to provide proper Tablet PC stylus support in formsPlayer. The latest version implements our first cut of this feature, allowing hand-written data entry into the XForms input, secret and textarea controls.

Embed XHTML documents in your .NET applications
We've just added a new tutorial to the site, demonstrating some basic techniques which allow you to embed XHTML documents inside your .NET applications. They rely upon our Renderer COM component, which is installed as part of the Sidewinder Viewer. The first tutorial is very straightforward; in later ones we shall demonstrate more exciting features, such as event-based communication between the live document and your application.

More ways to dock windows
The latest version of the Sidewinder Viewer provides more options for docking renderer windows from the JavaScript API. Notably, it is now possible to create Renderer objects as docked children of a larger Application object. This allows a user to close your entire application from a single top-level window and can also provide a more convenient grouping of related windows.

Source View colour schemes
In the latest release of the Sidewinder Viewer, you are able to alter the colour scheme used in the Source View tab. The option is available in 'Preferences > Source View'.

Bubbling events beyond the document boundary
We've just started developing a new sample for the Sidewinder Viewer which, among other things, demonstrates basic communication between a running script and the rendered document. The sample uses the Backpack web service, via its RESTful API, and is something that we shall continue to develop as the viewer becomes more powerful.

Introducing SVG-rich XForms controls
An important feature of formsPlayer 1.5 has been the development of richer form controls, implemented using XBL and SVG. The screenshot here shows a simple XForms output control styled to look like an LED display:


Enhancing your Google Calendars
Google Calendar is a good example of an application that benefits from features of the Sidewinder Viewer, without the need for any changes to be made. Given particular calendars that you may have cause to refer to throughout your day, it is a simple task to invoke the viewer in such a way as to make your calendars readily available, yet also unobtrusive.

Docking windows from script
With the latest release of the Sidewinder Viewer, it is now possible to dock many windows to a single edge of the display. The requirement for this change really became apparent with the increased control over renderer objects from script, that was introduced in an earlier build of version 2.0.4. One of the things that this enables us to do is extend the Kool IM Sample so that individual message windows themselves may be slid on to and off from the display as necessary.



