Software


3D printers are very much in vogue and used for everything from spectacle frames to jet engine components. They work by building up a 3D form one thin layer at a time. A variety of materials can be used depending on the desired properties of the resulting component.

I believe we should learn from nature. If you look at natural materials constructed by living organisms, it is really remarkable what has been achieved, for instance, hair, feathers, skin, teeth and bones. Insects are amazing to look at under the microscope and come in all sorts of weird forms. The structure of an insect’s antenna, or a butterfly’s wings are incredible.

The cell is a powerful molecular computer. At its heart, DNA provides the storage for the program. The human genome is said to be about three thousand million bits in size. The cell makes use of a complex set of molecules to determine which parts of the genome are being transcribed into proteins at any one time. The architecture is unlike any digital computer we are familiar with. The cell’s state is distributed across many components, and updated in complex chemical pathways. We are gradually improving our understanding of how they work together as a system.

It is now time to study how to create synthetic cells and learn how to utilize these to create complex materials we can use in a future generation of products. For this purpose, we will have to start relatively simply by studying particular subsystems without the need to fabricate the full complexity seen in living cells. This functional approach also has the great advantage of avoiding the risk of creating a new breed of organisms that can escape to the environment and replicate themselves unchecked.

The first step is to study how to create a molecular computer with DNA, RNA, ribosomes, enzymes and so forth. Can we build a system where we can design a program, translate it into DNA, and used it to switch on and off which parts of the DNA are being transcribed, and to update the state of the synthetic cell in predictable and controllable ways? Once that is achieved we could go on to develop the functional components needed to form a 3D assembler. These include counters and timers, as well as how to control the functioning of a synthetic cell according to its neighbours, or to chemical or electromagnetic gradients.

A working system would involve a means to design a program and translate it into DNA, to massively replicate this and assemble the synthetic cells from the raw ingredients, and then trigger them to start the assembly of the desired components in a carefully controlled environment. The synthetic cells would be unable to replicate themselves, and designed with only one purpose in mind.

The benefits of this approach would be the ability to create a very wide range of complex materials and forms from readily available raw materials in an energy efficient process. Today’s manufacturing processes aren’t sustainable in the long run as they use large amounts of energy and rely on materials that will increasingly be in short supply, for example, copper for electrical conductors and rare earths for electronic components and touch screens in smart phones. Biological processes by contrast make use of trace amounts of materials and as such are much more sustainable.

The time has come for a sustained programme of investment into research in molecular computing and synthetic cells. This is essential for sustaining a high standard of living as we move into a lasting era of increasingly expensive raw materials.

Identity matters!  In everyday life we present different “faces” to different people according to the social context, e.g. family, personal, and professional. Our online life is the same, and our privacy depends on keeping these different faces compartmentalized. To support this, we need ways to restrict access to services. As an example, a social website used by college students could be restricted to fellow students and off limits to everyone else including college staff and past students.  You certainly don’t want potential employers sifting through the site and rejecting your job application on the grounds of some loose talk or revealing party photo!

A powerful way to implement this is with anonymous credentials. Imagine the student union providing electronic credentials to all students that asserts that you are a current student at that college/university.  This is an electronic equivalent of a student ID card. When you go online to the social website operated by the student union, you are asked for proof you are a current student, but not for your actual identity.

I have been working with Patrik Bischel (IBM Zurich Labs)  on an implementation of this approach based upon a Firefox extension and the open source idemix (identity mixer) library.  The extension recognizes policy references in web page markup and asks the user for a PIN or pass phrase to unlock her credentials and construct a zero knowledge proof which is then sent to the website for verification. The browser extension is written in JavaScript and uses LiveConnect to communicate with the Java idemix library. The webserver is Apache2 and proof verification is implemented as a Java servlet on a backend Tomcat server.

This has been done with support from the EU PrimeLife project, and we hope to be able to make the extension and servlet widely available in the near future. Further work is needed on tools for simplifying the creation of credentials and proof specifications, and there are opportunities for integrating biometric techniques as alternatives to typing a PIN or pass phrase. One possibility would be for the browser to confirm your identity by taking a photo of your face with the camera built into phones and notebook computers. Another would be to ask you to say aloud a few digits and use the built in microphone for voice authentication. We’ve also discussed the role of physical tokens such as smart cards, and USB sticks for credential stores, but this is hindered by platform independent ways to access these from browser extensions.

As Dave Birch is fond of saying, there is no privacy without security. Anonymous credentials provide a powerful new way to boost privacy on the Web, and it is time to turn them from a laboratory curiosity into widely deployed solutions. I look forward to working on incorporating them in W3C’s suite of standards for Web platforms.

In my spare time I am working on a project to explore the potential for a new generation of natural language systems, inspired by what could be done with a fusion of computational linguistics, cognitive science and symbolic reasoning. This started with a study of classical and statistical approaches to natural language processing, and a dawning realization that traditional approaches to parsing conflate different kinds of knowledge. Prepositional attachment is highly ambiguous at a purely grammatical level, and requires reasoning at a different level that operates in parallel.

Conventional symbolic reasoning is founded on mathematical logic and deals with what can be soundly deduced starting from a given set of assumptions. Cognitive Science is an interdisciplinary approach to gaining an understanding of the human mind. Cognitive theories such as ACT-R and CHREST aim to provide quantitative predictions of human performance, and have little in common with logic-based accounts of reasoning e.g. description logics as used in the Semantic Web.

To make significant progress will take plenty of effort and time, so I don’t expect quick results. My starting point is the development of a broad coverage chart parser with relatively flat grammar rules. I plan to then introduce cognitive models for dealing with parsing issues that are hard to address using a purely linguistic framework. The biggest problem I am facing is the difficulty of remembering where I left off when I pick up the work again. That’s inevitable for something that I only get time for now and then.

JustSystems have kindly agreed to sponsor me as a W3C Fellow for work on XBRL and the Semantic Web. XBRL gives precise semantics to financial reports and has the backing of financial institutions around the world. There is tremendous potential for combining XBRL with the Semantic Web as a means to support the analysis and exploration of huge amounts of financial data. I hope to explore this potential in collaboration with XBRL International, the research groups working in this area, and the many individuals and companies interested in XBRL. Some of the things under consideration include open source tools, ontologies for relating XBRL taxonomies, and an exploration of ramifications for both XBRL and the Semantic Web, e.g. provenance and authenticity, the closed world assumption, and mathematical relationships within financial data. A likely starting point could be the launch of an Interest Group or even an Incubator Group to explore possible standardization activities complementing the role of XBRL International.

I have just returned from SVG Open which this year took place in Nuremberg, Germany, hosted by Examotion. I gave two presentations, one on my work on rendering and editing SVG using Flash, and another on model-based design.

With the demise of the Adobe SVG viewer plugin, there is a need for a new way to deploy SVG across existing browsers. Firefox, Opera and Safari now include native implementations, but Microsoft is keeping quiet on whether it will eventually add support for SVG in Internet Explorer. In the absence of native support, one possibility is to use browser sniffing and convert SVG to Microsoft’s proprietary VML format for delivery to Internet Explorer. VML isn’t as powerful as SVG, so that can cause problems. Another idea is to use a plugin, such as the former Adobe SVG viewer. Unfortunately, most users are very averse to downloading and installing new plugins.

The good news is that pretty much everyone already has the Adobe Flash player according to Adobe’s statistics. Flash has good support for XML, HTTP and graphics, and this suggests the possibility of using Flash to download and render SVG on any Flash enabled browser. I have been working to realize this idea.

My SVGOpen paper and presentation describe a viewer and associated editor that is designed to allow users to create and edit SVG directly on a website from within their browser. Thanks to Flash, this works on all major browsers and operating systems. Traditional drawing tools are standalone applications that need to be locally installed. The user interface is often very flexible and can be a little hard to learn. By contrast, most people expect Web applications to be easy to drive and something you can use the first time you come across it. Fulfilling such high expectations for an SVG editor isn’t going to be easy, but the work is progressing well and I am looking forward to initial user trials.

XBRL is an XML language designed for filing company reports and backed by the SEC and regulatory authorities in Europe and Japan. It makes it possible to be very precise about the accounting concepts used in a particular report, including the means to define extensions to existing taxonomies. XBRL makes extensive use of XLink and as a result is hard to process with XSLT. I am exploring how to translate XBRL into RDF turtle syntax with C and libxml2, and preliminary experiments are very promising. The code processes the XBRL instance, its schema and all associated linkbases to extract RDF triples which are loaded into a scalable triple store such as sesame. XBRL viewers can then be implemented as server side scripts that query the triple store via SPARQL, which is much easier than manipulating the original XML files.

This also opens the theoretical possibility for XBRL filings to be submitted in one of the RDF syntaxes, e.g. turtle. The current XML syntax makes use of XML Schema to assist with validation of XBRL filings, and it will be interesting to look at validation using Semantic Web technologies as an alternative. I am looking forward to exploring the use of RDF with the rendering linkbase that is under development at XBRL.org.

After struggling for a long while with the limitations of the scripting APIs that browsers expose for SVG and HTML, I have decided to try something different and to explore the potential of the ubiquitous Flash player. I wasn’t particularly keen on the official Flash development tools and have opted instead for Nicolas Cannesse’s haxe web development language. This is comes with a fast compiler and support for Flash 6 to 9. It also targets neko, a fast virtual machine that works well with the Apache web server.

My aim is to explore the role of XML for declarative end-to-end models of user interfaces to business processes. I wish to build upon XForms by adding markup for layout and a rich set of UI controls that are aligned to WAI-ARIA. So far haxe has been really easy to work with and very much better than working with the traditional browsers. I started by focusing on a small library of UI controls and am now working on the XForms support. In parallel, I have been working on implementing support for SVG, building upon Helen Triolo’s work on using SVG path data in Flash, with inspiration from Daniel Turing’s Xinf .

Putting it all together, this turns the Flash player into an XML-based browser for business applications. This follows in the footsteps of DENG a modular XML browser with support for subsets of XHTML, SVG, XForms , XFrames and CSS3. DENG is only 76Kb in size, but is rather slow as it predates the release of Action Script 3 and the performance improvements in the Flash 9 Player.

On the server side, I plan to experiment with a fusion of State Chart XML (SCXML) and business rules languages for executable models of document-based business processes that run on application servers. Here I will probably need to switch to Java on account of the wide availablity of open source Java components (e.g. Commons SCXML and a large number of rules engines), however, there is talk of extending the haxe compiler to target the Java VM. I also plan to explore the use of diagrams for easier authoring of high level models. To support this I am looking forward to working on browser based authoring tools that run within the Flash Player and operate on XML.

One of my software projects is Slidy, a web-based slide presentation application that has proven popular amongst the W3C Team and elsewhere. It uses CSS to render HTML div elements as slides, and JavaScript to move from one slide to the next in response to user input. Another similar application is Eric Meyer‘s S5. When writing Slidy I had to work hard to ensure that it worked across a wide range of web browsers. The variations in the scripting interfaces is a big challenge. (more…)