The zaubertrank applitude

by Benjamin Fallenstein (b.fallenstein@gmx.de)

Name issues

The zaubertrank is pronounced TSAU-ber-trunk. The name means "magic potion" in German.

Raison d'être

"Programming for people." As Chris Crawford argues in his book Understanding Interactivity (2000), computers can expand our capabilities of thought as much as the written word, but in a different direction: while writing improved our sequential thinking (thinking in complex chains of ideas), computers can improve what Chris calls subjunctive thinking (thinking in many different possibilities). While the book allowed us to bring together many different ideas, the computer program allows us to explore the countless permutations resulting from a fixed set of rules. Instead of explaining the effects of every single possible action to a recipient, we can write a simulation they can experiment with.

Write a simulation? We need to be able to program for that, right?

The zaubertrank aims to be what the alphabet was (following Chris' line of thought) for the Greeks: the very tool that made writing easy to learn, that was the necessary prerequisite for a culture in which 'everybody' (every free grown-up male) was supposed to be able to read and write. Before the alphabet, there were thousands and thousands of signs which one needed to know by heart in order to produce a written text, or even understand one. Scribes where a very special class of people who had gotten a lot of training. The alphabet reduced these signs to a small number which, once learned, resembled the spoken language. Something people already knew.

So what does the zaubertrank do? In a way, the same. The complex world of signs and abbrevations programming languages consist of is translated into natural language (albeit not everyday language). Sentences like "Put the selected card on top of the stack the user clicked on" replace cryptic formulas like "selected.put(clickStack)," formulas which need time to understand and more time to actively write. The user doesn't enter these sentences; that would require a natural language parser far beyond our reach. Rather, they put it together from fragments functionally equivalent to the tokens of a programming language: "Put (which card?) on (which stack?)," "the selected card," and "the stack the user clicked on." This putting together with menus and mouses also ensures that there can't be any syntax errors: the computer won't allow the user to enter anything wrong.

Will this make computer programming trivial? No, unfortunately not. Creating a program will still be a complex task needing some thought. But hopefully, the barriers will be lowered, the learning curve will be better, and a program won't look as cryptic to non-programmers.

My aim right now

In 2001, I will be teaching a course on Interactive Storytelling, which uses the computer for interactive literary narrative. The interaction here is not between author and reader or even different authors; rather, it's between the reader and their computer. Stories take the form of interactive simulations. Ever read a Choose Your Own Adventure book? Well, if you imagine a more intelligent behind-the-scenes system than "flip to a different page," you have the idea of what we'll be dealing with at first.

As the people in this course won't be computer science students, I need some good way to teach them programming easily without wasting too much time on it.

So right now, I'm working on a first version of the zaubertrank, which shall be suitable for the needs of my course. The goals are: user interaction in "turns;" relative freedom in the internal workings of the literary simulation; easy to use for some simple structures, without the need of understanding the internals right off; an interface showing some text and some possible reactions (which you can click on). Of course, I need some good editing tools for the programs, too.

I want to realize this as a GZigZag applitude or zone of functionality. ZigZag(tm) is a new "world" for computing, designed by Ted Nelson, the inventor of computer-based hypertext. It aims to be a replacement for the file system, for the common user interfaces, for confining structures like lists, tables, and hierarchies, and for many other things most people take for granted in their everyday computer use. GZigZag is a free implementation of the system, lead by Tuomas Lukka at the University of Jyväskylä, Finland. An applitude is to ZigZag what an application is to the common computer world, with the difference that applitudes are combinable -- that is, they live in the same bigger structure and can share parts of their substructures. One way to look at applitudes is to say they're a way to interpret a part of the structure. Applitudes can contain custom views, that is views of the structure which look (somewhat) like the text editors or other programs we know so well. At the same time, the underlying structure can be viewed in generic views, which show the "bare metal" in useful ways, so that it's easy to see how things are stored.

Why, you ask, would anyone choose a completely different computer world they have trouble explaining as the basis for a new system of computer programming which shall function as the core of a new form of literature they have even more trouble explaining? Well, because the trouble with today's programming languages is not only in their cryptic syntax, but also in the non-visibility of their inner workings. A whole mental model needs to be build of variables, objects and so on, which can never be shown on the screen (or only with sophisticated tools written for the classroom). ZigZag makes this simple. If the underlying design is right, it will be easy to show what's going on when a program is executed. Besides, once the ZigZag model is learned, modeling otherwise complex structures in programs will be easy, because the ZigZag model makes them easy: that's why Tuomas, the technical leader of the GZigZag project, calls it a "hyperstructure kit," a toolkit for creating structures beyond lists, tables, and hierarchies.

Components I need