Alan Dix - Research Topics

Dynamic pointers
and Moving between contexts

One of the first topics I dealt with when I began work in computing research was dynamic pointers - pointers which retain their semantic location within a changing document or data structure. These were initially devloped to deal with multiple views of documents and aso as a generic formalism to describe various data structures used in single-user editing. From the beginning dynamic pointers were both an analysis technique and also an implementation mechanism being used in the construction of a sizeable (10K lines of C) prototype hypertext program browser.

Over the years many more uses have become apparent including multi-user editing and undo, remote synchronous collaborative editing, and merging of documents updated on mobile computers. The fact that the same technique can be applied in new circumstances is a testimony to the strength of formal analysis.

In trying to understand why dynamic pointers were being so successful, it becam clear that many of the problems they were addressing had a common theme - an action or location which was articulated in one context needed to be re-articulated in a new context. In the case of undo if we want to undo an action which was not the last, the subsequent actions must be re-articulated to apply to the circumstances before the unwanted action. In the case of merging of updates, the updates at one site must be re-articulated to apply to the now altered version of the document.

Another application of this general concept is parallel development of heterogeneous document formats. Choosing a common document format is one of the most difficult problems for cooperative working. Often the only answer is to reduce everything to ASCII text! One solution is to keep copies of a document in all relevant formats and then to propagate changes made to one to all the rest. Of course this involves some complicated mappings between the formats - another example of moving between contexts which can be tackled using dynamic pointer techniques.

See also work on undo and versions.

Some of my papers

Related work by others

maintained by Alan Dix