Research
My main research interests are in the field of software models and HCI. I am interested in innovative ideas that empower developers and end-users of software alike, e.g. by making it easier to change applications. My approach to research is eclectic and focused on the real-world value of scientific results. Some of my work was implemented for the Haiku open-source operating system, and is used by the Haiku community.
-
User Interface Models
We have developed various models for specifying user interfaces, the most prominent being the Auckland Layout Model (ALM). ALM is a way of specifying UI layouts using constraints, which addresses some of the shortcomings of Gridbag-like layout models (such as used in JGridbagLayout and HTML tables). ALM was implemented in Java and also in C++. The C++ implementation is part of the Haiku operating system.
Work-in-progress: better solving algorithms for UI layout, UI event models
-
User Interface Customization
How can UIs customized by average end-users? We have developed customization systems with the aim of giving end-users more choice. For example, the Auckland Interface Model (AIM) was implemented on top of ALM (see above), and allows end-users to customize any GUI that uses ALM for its layout.
AIM for Haiku (video)
AIM for Flash (website)
Upsize - document resizing for visually impaired readers (website)Work-in-progress: better window managers, algebraic specification of UI customization
-
Other Software Models
I have worked on a number of other software models. For example, Genoupe is a model for reflective program generators. The model is designed to ensure a certain degree of type safety for all generated programs, and uses a formal type system to detect potential problems in a generator. Angil is a stochastic model for web application load testing. By simulating web users stochastically, it creates a more realistic load, as compared to linear load testing scripts.
-
Model Management
PDStore is a triplestore database system that was developed for easy storage and management of structured and unstructured data, e.g. software models. It offers some functionality for implementing collaborative applications, and explores some advanced functions for model data versioning.
Work-in-progress: versioning and temporal queries, model-based collaboration paradigms