LANGREITER.COM plain, simple
      START     INDEX
squeak-notes-seasideVisualize Context (requires Java Plug-in)
CREATED BY unknown • LAST EDITED BY unknown a long time AGO
Avi Bryant on [create Squeak-L], 2002-02-01

- complete separation of html from logic: each page is described by an html template with no code or special tags of any kind, and a class with no html snippets, url generation, or direct interaction with the HTTP request. Let the designers do straight html and the programmers do straight smalltalk. However, the html can be in the image instead of external files (and in fact I write most of my html in a lispy-syntax using array literals).

- a set of "bindings" connects the template elements to the smalltalk elements. These can usually be inferred through naming conventions, but can also be specified explicitly. The basic idea is that form elements are connected to instvars (eg, the system makes sure that a particular input and a particular instvar always have the same value), and links/buttons are connected to methods - when you click on that link, that method is called. The method may take an argument giving some context (ie, which of a list of items was clicked on).

- pages can be called like subroutines and return values to their caller; ie, inside a method called from a link, a series of other pages can be called; the browser will be forwarded through them. When they return, you will be back at the original page. This allows complex multipage control flow to be specified in a single method. As a really simple example, the basic Page class implements #inform:, #confirm:, and #confirm:orCancel: that work exactly like the MVC methods, allowing code like:

removeItem: anItem
(self confirm: 'Are you sure [...]?', anItem)
ifTrue: [items remove: anItem. self inform: 'Item removed']
- sophisticated backtracking support: by using snapshots of state, continuations, etc, the system can be made quite transparent to the use of the browser back button; for example, subroutine calls to other pages may return multiple times to the same spot (ie, in the above example, someone could use the back button to choose a different branch of the #confirm:). This can be disabled if it isn't needed.

- pages or entire applications can be embedded as subcomponents within
another page, or wrapped around them. This allows complex widgets ike
trees, tabs, navbars, etc to be built and reused. Subcomponents use the same transparent bindings system as form elements to sync data with their parent page.

- it comes with some nice goodies like web-based inspector, profiler, and
configuration tools.

- it currently works with [create PWS], [create Comanche], or Apache, and can be made to work with anything else quite easily.

I'm posting this even though we haven't had time to pull together a release yet, since there seemed to be some interest in web apps. Goran, if you happen to want to coordinate, perhaps we can do so off-list. I don't actually expect you to use our work instead of your own framework (it's very nice to have a framework you know to the smallest detail, after all) but no doubt we can learn something from each others' experiences.

Oh - the name: it builds on work I did in Ruby called IOWA (Interpreted Objects for Web Applications - there's some info at, but the Squeak version has advanced far enough beyond IOWA that we may call it something else. The other alternative is SEASIDE, which has something to do with eggplants. But more on that later, perhaps. ;-)



So log in, fella — or finally get your account. You always wanted one.
Nearby in the temporal dimension:
... and 12 of the anonymous kind.
Click on Join us in the chatterbox dimension! for a moderate dose of lcom-talk. This will probably not work in Lynx and other browser exotica.


  Blood Stone
  wet towel
  B Studio
  Pilcrow News
  Nastassja Kinski

Special Entanglement Forces provided by Vanilla

GeoURL RSS 0.92

Uncut Games bei Gameware

Offenlegung gem. 25 MedienG:
Christian Langreiter, Langkampfen
See also: Privacy policy.