"Watch What I Do" Chapter 10


Uses of Demonstrational Techniques

Brad A. Myers


Garnet is a comprehensive user interface development environment in Lisp for X/11 (Display Postscript and Macintosh versions are in progress). It helps create graphical, highly-interactive, direct manipulation user interfaces. Garnet contains many high-level tools, including the Gilt interface builder [Myers 91d], the Lapidary interactive design tool [Myers 89b], the C32 spreadsheet system [Myers 91a], the Jade dialog box system [Vander Zanden 90], and more to come. Garnet also contains a complete toolkit, which uses constraints [Vander Zanden 91a], a prototype-instance object model, and a new model for handling input [Myers 90c]. The toolkit also contains two complete widget sets, one with the Motif look and feel.

Typical applications created with Garnet include: drawing programs similar to Macintosh MacDraw, user interfaces for expert systems and other AI applications, box and arrow diagram editors, graphical programming languages, game user interfaces, simulation and process monitoring programs, user interface construction tools, CAD/CAM programs, etc. Garnet is in the public domain and is freely available. As of fall, 1992, over 30 projects around the world are using the system regularly. You can get Garnet by anonymous FTP from a.gp.cs.cmu.edu. Change to the directory /usr/garnet/garnet/ and retrieve the README file for instructions. Or you can send electronic mail to garnet@cs.cmu.edu. Garnet stands for Generating an Amalgam of Realtime, Novel Editors and Toolkits.

One of the important goals of the Garnet project is to allow all aspects of the user interface to be created without conventional programming. In particular, we want to allow the user to draw example pictures to show what the user interface will look like, and then demonstrate how the user interface will respond to inputs from the end user. As a result, demonstrational techniques are widely used in Garnet, mainly in the various higher-level tools. This chapter discusses some of these. Other papers about Garnet discuss the overall design [Myers 90d], the components, the programming style [Myers 92a] [Myers 92e], and there is a complete reference manual [Myers 92b].

Garnet -- Lapidary, C32, Gilt

Uses and Users

Application domain: User Interface Development Environment

Intended Users: Primarily programmers

User Interaction

How does the user create, execute and modify programs?
Lapidary: Dialog boxes are used to establish graphical constraints on example objects, and the constraints will be generalized and applied to runtime application objects. Also, an example object can be used to demonstrate how an application object's properties should change in response to a mouse click.
C32: The user can copy and paste a formula from an example slot, and it will be generalized so that it will be applicable to the destination slot.
Gilt: To generate filter expressions, the user can give an example of a return value in the proper format and data type. The user can also demonstrate how certain values of one widget should enable or disable another widget. For styles, an example widget with the correct styles is created.

Feedback about capabilities and inferences:
Lapidary: Shows the inference in dialog boxes.
C32: Dialog boxes show the inferences, and the user must hit the "OK" button.
Gilt: When inferring a graphical style, the style is immediately applied, so the object's appearance will change. Also, the style name is displayed. For filter expressions, the inferred Lisp code is displayed.


Inferencing: Garnet applies fixed heuristics based on domain knowledge. Note that the inferencing is based on resulting graphical objects, not on a trace of actions.

Program constructs: Variables


Types and sources of information: Hard-wired into the various programs.
C32: Information associating slots with physical locations on an object. Information about typical copy-paste transformations.


Machine, language, size, date: X/11 and Common Lisp. Various platforms. 1988-present.

back to ... Table of Contents Watch What I Do