View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Squeak Research, Spring 2003

The class on Tuesday, April 22, 2003, is about current research that uses Squeak. It includes about 5-15 minutes on each of the following research projects. This page gives you links to more information about each project.


DigiQuilt Home Page

Digital Family Portrait

The Everyday Computing Lab aims to develop computational solutions to everyday situations. Elizabeth Mynatt and Jim Rowan's Digital Family Portrait is one such project.

The Digital Family Portrait addresses the fact that people often live distantly from their family. It allows people to roughly see how a member of the family is doing even when they are located distantly. It includes indications of:
In the authors' words, "the portrait attempts to capture the observations that would naturally occur to someone living next door or in the same home."

Dude's Magic Box and Grandma's Lapdesk

Dude's Home Page

Squeak: EToys

EToys is an interface of Squeak that allows children to learn by exploring and building computer simulations of important ideas.


The "Drive a Car" lesson series is available on Bob's SuperSwiki.

Squeak for Omniusers

The printing press allowed the same written text to be sent to hundreds or thousands of people, but it took 100-150 years after Guttenberg's invention for this idea to develop. What will a computer -based essay of the future look like?

A central difference of computers to other media is that they can encode ideas plus rules that those ideas must follow. Thus a computer can be viewed as an idea processor. A computer essay might then be an "active essay", that is an essay that includes

The Squeak support for building active essays is called the "omniuser interface". This interface should not require a full programming degree, but it is acceptible if it requires roughly as much time as it takes to learn written composition. Thus it should be accessible to omniusers, i.e. almost everyone.

Ted Kaehler's Evolution Essay

MorphicWrappers and MathMorphs

MathMorphs is a collection of Squeak classes and SqueakBooks that support college math classes. They support both presentation in lectures, and exploration outside of class. MathMorphs is usually used with MorphicWrappers, which was developed by the same group.

MorphicWrappers allow the desktop to become the workspace. It allows you to drop any object onto the desktop and then easily invoke its underlying Smalltalk methods.



The original Swiki, completed within about three weeks, was designed to explore collaboration tools for students when they are outside of lectures. A huge number of uses for them have been found within this framework, and there is a lot of research within the Collaborative Software Lab surrounding tbe use of Swikis.

Here are two especially interesting Swikis, other than the 2340 Swiki:

Catalog of CoWeb Uses

The following uses of cowebs are given as examples:


Audio Explorer is a tool built by Jochen Rick to explore the physics of sound. In addition to providing a visualization, the tool provides multiple linked representations, so that the student may gain understanding and intution about each representation in terms of the other.

The main window plots frequency strengths versus time. The user may start and stop the recording, and the user may drag a horizontal bar up and down the screen to select a particular frequency to study. The other representations shown are:

For all of the calculations, the formula is given for obtaining that calculation, to provide further intuition.


Traits is a new inheritance mechanism for object-oriented languages.

existing mechanisms for building classes from existing chunks of code:

problems of these mechanisms:


Nathaneal Schaerli's Research Page


Sometimes a user wants to interact with untrusted computational objects. More generally, two objects may wish to collobarate, but without completely exposing themselves to each other. (Note that complete isolation, and complete exposure, are the trivial endpoints of a spectrum. All the interesting security policies involve both cooperation and protection.)

The solution that comes to most people's mind is what is called access control lists, or ACL's. Under the ACL security model, every security-sensitive request is checked in a global table. Each row of the table is a process or an object or a user, and each column is something that may be allowed or denied.

This security model has problems in practice. In particular, there is the Confused Deputy Problem: in slightly complex scenarios, it can be unclear which user to look up in the access table, and using the wrong user leads to one user doing something under another user's permissions. To avoid security holes of this kind, it is necessary to examine every program that ever uses two different users' permissions at different times. In the Unix world, this shows up as setuid programs, where the difficulties are notorious.

The capabilities security model arranges execution so that a disallowed action cannot even be requested. Thus, confused deputy problems are avoided completely. To accomplish this feat, security policies are managed by manipulation of "capabilities". Each capability does two things: it designates some things that may be done, and it gives permission to do them.

The capabilities security model maps excellently to object-oriented languages: an object makes a great capability, so long as the VM enforces proper object-oriented semantics. An object already designates a resource, and the things it allows to be done to it are automatically specified by the methods that are available. Furthermore, objects are nice to work with: they are something that any OO programmer already understands, and they allow any resources to be provided that can be programmed as an object.

Islands is a project to implement capabilities-based security within Squeak. When it is complete, it will allow a single Squeak instance to include objects from multiple parties, and for those parties to cooperate freely and safely.

Type Inference

It is possible to infer types in a Smalltalk program even though no types are explicitly present in the program's text. The details cannot be published right now, but Lex Spoon gave an overview of the technique.

Link to this Page