[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]
:zz: The Plan for ZigZag (4) FORMIDABLE LIST OF SMALL CHANGES
- To: zzdev@xxxxxxxxxx
- Subject: :zz: The Plan for ZigZag (4) FORMIDABLE LIST OF SMALL CHANGES
- From: Ted Nelson <ted@xxxxxxxxxx>
- Date: Mon, 13 Jul 1998 21:27:22 +0900
- Cc: ted@xxxxxxxxxxxxxx
- Reply-to: zzdev@xxxxxxxxxx
Dear Andrew and Bek:
Well, here they are. And this may not be all.
Please respond soon, even if you've only had time
to skim this.
Clearly we have a lot of payoff issues to consider.
We have to decide together where the real payoffs lie.
Because what we have here is plainly radical and exciting
to a lot of people, with extraordinary potential.
QUICK & EASY (maybe)
There are of course two different strategies: one-step undo and backtrack.
If we had some way of copying the whole database fast, the former would
work, but maybe it won't.
The Undo method chosen is quite negotiable.
Full-screen cell view with quad window.
Reset-view function ----------
r, R => Reset the view coordinates to d.1, d.2, d.3.
NO CURSOR BLOCKING
Blue and green cursor should always be seen at center of own window. Thus
cursor routine checks negward on d.cursor until it finds **a non-cursor
cell**, and refreshes its window outward from that.
Put the "+" *after* the name of the dimension at the coordinate rose.
MODIFIABLE COORDINATE ROSES
- I need to experiment with what the coordinate rose (the XYZ picture)
should look like. There ought to be a way to bring this in from outside
for each raster (independent of the coordinates shown), so that a text
'picture' there can be put in the corner of its window.
"Put inside" function ----------
p => puts cell under right cursor into contentslist inside cell under left
cursor (i.e., into contents list negward on d.inside it).
P => puts cell under left cursor inside cell under right cursor (i.e., into
contents list negward on d.inside it).
Note that the cell does not leave its present position.
If cells are actively marked,
p => all of them are put in the cell on the right
P => all of them are put in the cell on the left
Put all functions into Executable cells ----------
- These should dangle from a cell labelled "Menu" on Main Street (the main
horizontal)-- not from cell Home.
- We want **all** the keyboard functions to be in cells, so they can be
cloned for scripting into combination cells (macros).
- We'll later even want clonable cells with useful functions which don't
ZIP DRIVE SAVE.
SLICES! Worked out, memo to come soon.
KEY OPERATIONS NOT YET IMPLEMENTED
COPY, CUT and PASTE operations.
- Not to be destructive like *their* way of doing it.
MARK (after a selection, keystrokes to be announced)
- Creates series of cells connected to the selected cells in d.mark; lists
them consecutively on d.marklist; for a time this set remains the "active"
- Note that 'mark' should be a cell type.
- IF THINGS WORK OUT CORRECTLY :-) all functions-- those which already
exist, and the ones below-- should work just as well across a series of
marked cells as with one.
- Note that ''mark' should be a cell type.
CHUG (after a selection, keystrokes to be announced)
- Moves a marked bunch of cells. Each cell breaks its former connection
and connects to the one just broken ahead of it. If the connection to be
made by the front cell is not determinate, it makes none, becoming a loose
- This operation may not be easily reversible or undoable.
SHEAR (after a selection, keystrokes to be announced)
- Same as chug but one-sided. Note that the privileged side-- the one
whose consecutive connections are passed along to its mates-- must be
- This operation may not be easily reversible or undoable.
OKLAHOMA MARKDOWN for Outlining
- (So called because it marks a hidden area shaped somewhat like the state
- This marks all the hidden cells folded in outline format (hidden in axis
y because the cursor is on a leftmore cell) under a selected row or rows
along axis x. The row(s) and hidden outline ranks can then all be hopped
upward or downward in axis y, or chugged left or right, in axis x.
(Otherwise the hidden cells would stay put in the direction of movement
while the visible rank moved.)
- Cut some of the connections of a block of cells, and rotate that block
into other dimensions.
VIEW TOGGLES ==========================
- Toggle to show cell boundaries in buttered-text views.
- Toggle to show clones.
- Toggles to show different cell types (either in cellview or in buttered
VIEW STEPPERS ==========================
Different keys step respectively through::
- The different cellviews
- The different connection views
- The different rasters
ANY NUMBER OF CURSORS!
This is the same as--
ANY NUMBER OF WINDOWS, EACH WITH ITS OWN--
- Dimension list (of dimensions it shows)
- current cell size
- window size
- menu list (!)-- a rank of operations which are executable while that
cursor is active, stepping to the next.
NEW VIEW RASTERS =========================
- A viewing and selecting method.
- For instance, can select the intersection of cells which are connected
perpendicularly to two other ranks.
-- Starting at one rank, which is marked and remains viewable,
-- The user steps the cursor perpendicularly to that, extending all the
ranks which are connected;
-- Reaching a second rank, the user marks its corresponding cells;
-- The user steps onward to a specific third rank, reaching on it only
cells connected to both. These may be marked and operated upon.
CONTAGIOUS PRESENTATION ("View Nudge")
- A cell, after showing itself, may pass the showing privilege to one more
more neighbors, triggering them to show themselves in turn. (Depth-first
- (See also "CONTAGIOUS EXECUTION").
- This spreads textual contents of one cell xward across the area of
several empty cells (see 1983 ZZ book).
PERT / PLANALOG RASTER
- This refreshes cells in a PERT format (see 1983 ZZ book).
VIEW MODES ==============================
BLOCK GRID MODE FIXED SIZE
- Our current mode, just here for completeness.
BLOCK MODE OWN SIZE
- cell shows at true size of text contents.
FULL SCREEN WITH FULL SCROLL
- Full-screen read/edit window with scrolling.
- This is necessary for large works.
BAR NOTATION (loop does not show repeatedly, but has visible 'caps' at the
end similar to those on a repeated bar of music.
COLORED DIMENSION LINES
- Should be excellent for orientation to what view you're currently seeing.
3D VIEWS =============================
3D GRID MODE
- This extends the current grid mode; separate 2D plates are connected
along one more cellular axis from the accursed cell.
3D BLOCK MODE (solid)
- Cells in perspective.
3D BLOCK MODE (wire-frame)
- Cells in perspective as cube edges.
- Can show many more dimensions at different angles, but not far.
(LOOP-CHECKING OPTION FOR 3D VIEWS)
- Show loop as bar notation, thread, etc.
SHOW A CELL SIDE BY SIDE IN ALL ITS DIMENSIONS.
GAPLESS VIEWS (with cursor and scrolling) =========
- Compresses better than 2:1 over our current mode, but will be hard to
understand in many cases.
- No gaps but cells alternate in reverse video, showing boundaries.
- One or more ranks become a consecutive scroll of text.
BUTTERED WITH BOUNDARIES
- The first character of each cell is put in reverse video.
- Combines the above two effects to show vari-sized cell boundaries in
consecutive scroll of text.
(BUTTERED WITH CURSOR -- desirable feature)
- Move the cursor to a specific position in the buttered text, switch to
cell view, cursor is on it.
FREESTYLE VIEWS ====================
- Cell may have own idiosyncratic view, including animation).
GRAPHIC FIXED-SIZE FREESTYLE
- Cell may have own idiosyncratic view, but shown with our usual rasters.
GRAPHIC CONTAGIOUS ANY-SIZE FREESTYLE
- This can look like a Macintosh or any damn thing. Nudge raster puts a
series of pictures and/or animations on the screen with arbitrary positioning.
- ****THIS IS THE FULL-ON ZIGZAG SYSTEM.****
TRANSITION ANIMATION ==========
- A cell may have a transition animation (sound, video clip, MacroMedia
frames) when entered or left.
-- Note that making the entering and departing event unconditional--
independent of where you're coming from or going to-- makes implementing
this much easier and cleaner.
ROLL ALL 3 DIMENSIONS
- Increments each dimension being seen by 1.
"MULTIMEDIA" (preliminary) ==========
AUDIO PLAY CELL
AUDIO RECORD CELL
VIDEO PLAY CELL
- An output view where certain cells generate HTML tags.
CONTAINMENT SUSPEND OR SELECT
- To see part of what's in each cell
- To see only what's in the cell itself
PRINTOUT FUNCTIONS in various views =============
POINTER (to Primedia)
- Calculating cells for spreadsheet-like purposes which seek their operands
along their ranks.
- Note that when a calc cell is first made or changed, it looks negward for
calc-numbers to make its first calculation.
- Numbers in cells, suitable for calculation by CALC cells.
- Note that when a calc-number cell is made or changed, it looks posward
for calc cells to revise.
- Page numbers, timers, etc.
- Vinculae, or "Vinks"-- walls for gathering or selecting.
- Different Vink types must be separately implemented--
-- Sync Vink for schedules
-- Arithmetic Vinks
EDIT FUNCTIONS ===========================
EXTERNAL ACCESS TO CELL CONTENTS
- Leave the files created by Emacs available as external files under the
cell numbers until explicitly deleted by the user.
-- We need to provide some quick way for the user to re-inject the modified
contents of such files into the corresponding cells.
OUR OWN CELL EDITOR.
WRITTEN FORMAT for instructions
- Some character-based programming notation?
- Lisplike? What?
CONTAGIOUS EXECUTION ("Execution Nudge)
- A cell, after executing itself, may pass the execution privilege to one
more more neighbors, triggering them to execute in turn. (Depth-first
- (See also "CONTAGIOUS PRESENTATION").
- Take arguments from left and upward edge of cell (as seen by user)
- Deliver results to right and downward edge of cell (as seen by user)
LINK LOCKS (covered in a memo currently underway)
- Lockable cells (undeletable from a rank-- tricky)
- Lockable sequence (can't delete or rearrange, but can insert other cells)
- Lockable connections (actually the mechanism).
EACH CELL CONTROLS ITS OWN I & O.
- Each cell has
-- an input routine (Eat)
-- a calculation routine (Do)
-- an output routine (Show)
-- These correspond to Read-Eval-Print in Lisp.
- d.mark, d.marklist (for markings of multiple cells)
- d.cluster, d.clusterlist (for instancing)
- d.version (with "make new version" a single command)
- d.conversion (where successive conversions of the same data may be found)
- d.xpl (for explanation, documentation)
- d.transformation (for successive versions of data
-- FOR INSTANCE, TEXT POINTERS AND THEIR DEREF MATERIAL.
- d.slice, d.slicelist
- d.subcell, d.subcell-list
RADICAL CELL LIST for experimentation
- a different point of view--
- d.time, d.space, d.money, d.people?
PRIMEDIA POINTERS ====================
IMPROVE PRIMEDIA POINTERS WITH CACHING.
- Necessary. But cache strategies unclear.
Modify primedia pointer (sliding the primedia pointer boundary in an editor)
OBJECT-ORIENTED VERSION, constraining particular cell types and dimensions.
CELL TYPE CONSTRAINTS
ADDABLE PARTS AND CHARACTERISITICS
- This will assimilate object-oriented structure consistently to our
- A cell which has a certain property or part will have a reachable cell
(or virtual cell) corresponding to that part.
- All subcells of that type are connected from a master template at the
negend of the Subcell Dimension (d.subcell).
Theodor Holm Nelson, Visiting Professor of Environmental Information
Keio University, Shonan Fujisawa Campus, Fujisawa, Japan
http://www.sfc.keio.ac.jp/~ted/ PERMANENT E-MAIL: ted@xxxxxxxxxx
Home Fax: 0466-46-7368 From USA: 011-81-466-46-7368
Project Xanadu (Permanent)
3020 Bridgeway #295, Sausalito CA 94965
Tel. 415/ 331-4422, fax 415/ 332-0136
Quotation of the day, 98.07.13:
"Obsolete power corrupts obsoletely." TN86