WALKTHROUGH DIRECTIONS FOR THE ZIGZAG(R) "ROYALS" DEMO
Ted Nelson, Project Xanadu
Note: "ZigZag" is a registered trademark of Project Xanadu.
This is the simplest introduction to ZigZag. We will use Gzz (the Finnish version of ZigZag, created by Tuomas J. Lukka and his team).
Suggested steps for you to take will begin with the ">" key. For example:
> Scratch your nose.
===SETUP AND FIREUP
>Open the .zip file and place the directory called "ZigZag-gzz" either--
- in the C (root) directory of your Windows machine
- on the Desktop of your Macintosh.
That directory contains fireup directions for both machines.
===THE ROYAL FAMILIES OF EUROPE
> OPTIONAL: OPEN THE PDF, EuroRoyals.pdf.
This PDF shows the current royal families of Europe.
The royal families of Europe are the subject of our demo. We will use ZigZag to represent this same structure and show it. (Adam Moore has input these royal individuals as zzstructure, or hyperthogonal data cells, which are what we'll be working with.)
===KBLANG, our Power-User Interface
"KBLANG" is the name of our Keyboard LANGuage, of which samples follow. This walkthrough takes you through the commands one at a time, for a coherent journey.
>OPTIONAL: If you want the full power-user instructions, open the file "KblangInstrux.html".
===FIRE UP "ADAM'S ROYALS"
Inside the ZigZag-gzz directory,
> Open the fireup directions (choosing either Mac or PC).
> FIRE UP THE PROGRAM.
> On Windows, click on the file called Royals.bat
> On Mac OSX, open a command Window and copy into it what's given in the instructions.
You will see two windows, called "Ctrl" on the left and "Data" on the right.
>Touch the mouse to one one of the windows to activate the keys. (No one knows why this is sometimes necessary.)
>Otherwise don't use the mouse-- this is a keyboard demo.
>IF EITHER WINDOW PARTIALLY COVERS THE OTHER, MOVE AND RESIZE THEM SO IT DOESN'T.
(You could rearrange the windows left-to-right, but these directions would no longer be correct, so please keep "Ctrl" on the left and "Data" on the right.)
===COMPARING THE WINDOWS
For most purposes these two windows are the same.
As presented here, the windows have slightly different views.
Each window contains five parts. We will consider them gradually.
- a cluster of cells at the center of each window
- a green cell and a blue cell, which show the cursors
- the name of the view, in the upper right of each window
- a number in the lower left of each window
- a little map in the upper right of each window, telling what dimensions are being shown
=THE CLUSTER OF CELLS
In this opening view, we see a table of six cells. The two views are different, but they show exactly the same structure.
The green cursor stays in the middle of the "Ctrl" window, the blue cursor stays in the middle of the "Data" window. The blue cursor may or may not be visible in the left window, the blue cursor may or may not be visible in the right window.
We call the cells selected by the cursors the "accursed" cells.
=WALKING THE CURSORS
This is a simple function with a peculiar interface that you will come to understand.
>Press "f". This moves the green cursor to the right.
>Press "s". This moves the green cursor to the left.
>Press "c". This moves the green cursor down.
>Press "e". This moves the green cursor up.
On the keyboard, these four keys make a little cross-- up, down, left, right. They sit under the left hand.
>Press "l" (lower-case L). This moves the blue cursor to the right.
>Press "j". This moves the blue cursor to the left.
>Press (,) (comma). This moves the blue cursor down.
>Press "i". This moves the blue cursor up.
On the keyboard, these four keys make a little cross-- up, down, left, right. They sit under the right hand.
Put together, these commands allow both cursors to be moved quickly.
>EXERCISE: What happens when you put both cursors on the same cell at the same time?
Each user operation can be undone with "u."
>Try successively pressing "u".
Each undone operation can be redone with "-ctrlu."
>Try successively pressing "ctrl-u".
These commands (e,s,f,c,i,j,l,(,)) we call zzarrows-- they are used not just to move the cursors but to specify a direction for other commands-- for instance, making new cells.
=MAKING A NEW CELL
>Press "n" followed by one of the zzarrows.
- Note that if you choose e, s, f or c, the cell will be created connected to the green-accursed cell.
- Note that if you choose i, j, l or (,), the cell will be created connected to the blue-accursed cell.
This command creates a new cell, attached to the accursed cell from which you chose the direction. If you chose a direction that already had a cell attached, the new cell will be attached between the two cells.
In the upper right corner of the left window it says "StretchVanishing", in the upper right corner of the right window it says "Row".
First, let's change these views, which is easy.
>PRESS LOWERCASE "v"
This changes the view (label in upper right) to "Column".
>PRESS LOWERCASE "v"
This changes the view (label in upper right) to "Vanishing".
>PRESS LOWERCASE "v"
This changes the view (label in upper right) to "StretchVanishing".
>PRESS LOWERCASE "v"
This changes the view (label in upper right) to "Row" again.
Each of these views is a different way of showing the cluster of cells.
Each view starts at the cursor and shows the cells around it in a specific way--
- the "Row" view starts by showing the row the cursor is on, then starting from the cell above the cursor it shows the next row, and so on above and below.
- the "Column" view starts by showing the column the cursor is on, then starting from the cell to the left of the cursor it shows the next column, and so on to left and to right.
- the "Vanishing" view is like the Row view, except that the cells are shown diminishing in cells as they get farther from the cursor
- the "StretchVanishing" view is like the "Vanishing" view, except that each cell is shown large enough to hold all the text it contains.
ZigZag-Gzz allows a number of other views, but we will not go into them here.
In principle, any number of other views can be programmed for ZigZag, not necessarily starting at the cursor.
===RESETTING THE DIMENSIONS, or PIVOTING
ZigZag can have many dimensions, but each window can show no more than three at a time.
There is a map in the upper right of each window that shows which dimensions are on view in that window. Each window has three axes, each of which may be assigned to view any dimension.
Each window has a dimension map in the upper left corner. The map shows, in a stylized way, what dimension is assigned to each axis. Verify from the map that
- both windows show d.1 horizontally (x axis)
- both windows show d.2 vertically (y axis)
- both windows show d.3 forward-and-back (z axis)
We will not use the z axis in this demo, partly because it is hard to understand visually in these views.
Actually we call these axes X, Y and Z (in the left Ctrl window) and x, y and z (in the right Data window).
This assigns the next dimension (d.2) to the horizontal axis on the right.
You now see the same dimension, d.2, assigned to both horizontal and vertical axes on the right.
This assigns the next dimension (d.3) to the horizontal axis on the right.
This assigns the next dimension (d.date) to the horizontal axis on the right.
We will explain this later.
Now hit "u" three times, returning the x-axis to d.1.
This assigns the next dimension (d.2) to the horizontal axis on the left.
You get the idea.
Each of these dimensions has a positive direction (which we call posward) and a negative direction (which we call negward).
Every step of a cursor is posward or negward on some dimension/
ENOUGH OF PRELIMINARIES!
===THE HOME CELL.
In every ZigZag dataset there is a home cell, easy to get to.
>HIT 'ESC'. This will take both cursors to the Home cell, and reset the axes of each window to (1,2,3).
If you get in trouble with the dimensions, ESC will help you out. (It will also take you Home.)
===SYSTEM AREA AND DATA AREA
The mechanisms of ZigZag-Gzz are mostly exposed. They are in the area of cells below the Home cell (downward on d.2-- the positive,or posward, direction).
===EXPLORE THE DATA
>Move the cursors up (e,i) into the data area and right one step (f,l). This puts both cursos in the main column of names.
>Hold down "e", taking the green cursor posward. Note that the cursor moves pretty fast.
>Move the left cursor to the top of the names.
>Move the right cursor to the bottom of the names, posward (down) on d.2.
Note that the names are in alphabetical order in d.2.
>Hit ESC. This takes both cursors back to the HOME cell.
>Now move the blue cursor up one and two to the right (i,l,l).
The blue cursor now goes to another column, where certain related royal titles are connected ("Prince of Orange", "King of the Netherlands", "Queen of the Netherlands"). This column forms a parallel track giving quick to access to each individual with one of these titles.
What this shows is that a given dimension in ZigZag can have more than one function.
===SELECTING AN INDIVIDUAL
Let's go to one individual-- Elisabeth II.
>Take the green cursor down (posward) on d.2 till you reach her.
Note, in the lower left-hand corner of the left Ctrl window, that the number of the zzcell of "Elisabeth II" is 814.
Now let's take the blue cursor there more directly.
>Type "814" followed by "g".
This will take the blue cursor to Elisabeth II.
Both cursors should now be on 814, and both windows should have their axes set to (d.1,d.2,d.3).
===USES OF DIMENSIONS
Let's look at some uses of dimensions.
How old is Elisabeth? Pivot the left-hand window to find out her age:
- hit X (capital-x) 3 times
- you will see the year she was born, as a cell connected negward on d.date.
Is she married? Pivot the right-hand window to find out--
- hit x (lower-case-x) 4 times
- you see who she's married to.
Do they have children? Pivot the right-hand window on the Y axis--
- hit y (lower-case-y) 4 tunes
- and under the "plus" to her right, you will find her children.
Now let's change to the "Vanishing" view
- hit v (lower-case-v) twice, and you get to the Vanishing viewin the right-hand window.
===WALKING THE GENEALOGY
Now you can walk the surface of the genealogy.
We did not create a genealogy program; we only put data into ZigZag. Yet that has created an explorable genealogy structure.
Following lines of connection between cells, you may explore the structure with keys (i,j,l,(,)). (You can also use the arrow keys, but this loses the symmetry between left and right hand.)
>Try to find Queen Victoria.
===ENDING THE SESSION.
>Type "q" to quit the session.
===PERSISTENCE OF STATE
> Fire up the program again.
You will see that the data is in the same state that you left it in.
If you want to save the data in any particular state, quit the program at that time and save the data folder.
>Run the same opening command or batchfile as before, but replace the phrase "Adam'sRoyals' with another project name.
This will start up Gzz with a virgin dataset,
If you're on a project, you should back up frequently. This is best done by quitting ZigZag and copying the data folder of the project. Because it's easy, I generally call my successive Gzz backups
However, any naming scheme that suits you should be good.
It is probably best to keep several back versions, because sometimes Gzz begins to go wrong before showing any specific sign.
Don't use Gzz for anything you're going to depend on.
The Gzz version of ZigZag is quite unstable (and certain operations cause it to crash). Generally a crash is recognizable by the words in red in the left window,
At this point it is usually necessary to go back to your previous backup.
===NO DOUBT YOU'VE SEEN some things you'd like to pursue further.