Please consider a donation to the Higher Intellect project. See https://preterhuman.net/donate.php or the Donate to Higher Intellect page for more info. |
Calisthenics for your Mind
by Robert L. Belleville ([email protected])
Imagine you are sixteen again. Sigh. California springtime, warm air under pure blue sky, fragrances of many blossoms fill you head. Sigh. You are captain of Gunn High's debating team and have to prepare one thousand index cards on the United States' involvement in Vietnam. Crushing reality sets in.
Resolved: The "Domino Theory" was incorrect.
With your Macintosh you begin to assemble information card by card. You type thousands of facts, quotes, dates, places, people, and events on individual cards. You draw little maps and diagrams. You cross reference cards by placing buttons under text and figures which link you (show you, connect you) to other cards. You search through all your information for keywords to build more links which you use with your mouse to fly from card to card. You use button icons to move forward and backward in your card stack. You build little scripts to compute population densities from land areas and total populations. You pop up to a "recent" display to see which cards you have recently visited. You continually add more information and link it into your web of interconnecting cards so that you will be able to give dozens of references for any point you wish to make.
You have HyperCard.
HyperCard is an evolution of MacPaint which Bill Atkinson built for Mac starting in about 1983. MacPaint allows users to draw, spray, and type bits on a page size raster. There is no "structure" to these bits after they are deposited on the page. If you draw a rectangle and later want to change its size you cannot because MacPaint doesn't keep track of rectangle as a concept, your rectangle is just a bunch of bits. To partially reduce this drawback, Bill added a number of features such as a lasso which can select non- rectangular objects and fatbits which allow individual bit editing of a magnified array of pixels.
When I saw MacPaint for the first time I was blown away because graphical manipulation of that flexibility and speed was unknown in 1983 outside of MIT and Xerox Parc.
MacPaint was bundled with Mac at introduction and my kids were among thousands who loved it. It really wasn't too popular in business because it requires artistic skill to use effectively and when you are not a kid it isn't socially acceptable to act like one. MacDraw, a simple, slow and rather cumbersome drafting program is better for organization charts and block diagrams. MacDraw remembers that rectangles are rectangles and lets you change them later by pointing and dragging.
Bill was sole intellectual owner of MacPaint source code and, by the way, QuickDraw, Macintosh's ROM based graphics. QuickDraw underlies every aspect of Mac's visual style. Mac's window code uses QuickDraw as a base. Bill isn't into windows.
After MacPaint, Bill got restless and started working on something called MagicSlate which was essentially Dynabook, Alan Kay's mythical portable computer and nonstop mind toy. Steve Jobs and I were behind MagicSlate and spent a great deal of time trying to get technology suitable for its display but there just wasn't any. In his spare time Bill built a little desk accessory for Mac called Rolodex which simulated its namesake. By now it was 1985 and major trouble between Steve and John Scully forced me to leave the company. But it is pretty clear how HyperCard's seeds were sown.
To get HyperCard, Bill combined the Rolodex text concept with his well established Paint metaphor. I guess he got the idea of buttons, as either visible or invisible rectangular spaces which he could use to allow users to indicate that they wanted to go to a new Paint image. Ted Nelson, patron saint of hyperness, has been around forever and "Hypertext" has existed as a concept for two decades. Somehow a little script language, HyperTalk, was introduced, MacPaint images were cut down to Mac screen size (512 x 342 dots), and voila.
Last time I was in Computer Literacy Bookstore there were almost ten books on HyperCard including Danny Goodman's 721- page tome. There are dozens of 'Stacks' for it. Stacks are HyperCard applications. In stacks both data and application programs are combined. Many stacks can be referenced from a Home card which is analogous to Mac's Finder. If a user only worked in stack space he wouldn't need Finder and could have his machine just boot into HyperCard and live happily ever after.
Given HyperCard's bitmap approach and Apple's attention to visual detail, Bill's package looks terrific. Address books have spiral bindings, arrows have shadows, and text is available in many attractive fonts.
There are flaws in HyperCard but for a moment let's just wallow in its excellence.
Long enough.
Firstly and most seriously, HyperCard's data model is too limited. A stack is a list of cards which are made up of a background and a foreground. Only three data objects are possible, bitmaps, buttons, and fields of text.
Secondly, presentation methods for these objects are fixed and built into HyperTalk; if you don't like the possible set of attributes for text, then you are out of luck. For example, in a single field of text you may only select one font and size. Cards are fixed size and although it is possible to scroll in a field, it really isn't HyperCard style, so again you are bound to someone else's model.
Finally, Apple owns it and it is tied closely to Macintosh graphics. I wouldn't expect Apple to take too kindly to clones and rip offs.
With HyperCard's data model, script language, and built-in operations, HyperCard is a "whole system" (see Weekly Reader Vol 1 Number 6.) People will now spend a lot of time using, criticizing, coping, and modifying HyperCard. Many interesting applications will be built for it but it is too limiting for Convergent's breakthrough product (since Convergent didn't come up with it in the first place.) Like any new baby it is cute and its parents, grandparents, uncles & aunts, and godparents will play with it constantly.
HyperCard's hyperness comes from buttons and links. Clicking a link takes you to another card. A card can link to any number of other cards and cards can have any number of links pointing to them. Hyper- as a prefix comes from the mathematical notion of hyperspace or a space described with more than three basis vectors. A page of paper is a two-space and a house is a three-space. Since text can be viewed as sort of two or three dimensional (actually the great joy of text is that it is one dimensional, ask any Unix person), Ted Nelson coined the term hypertext to evoke a sense that in computer based text systems, future users could create and use groups of words from many authors in any appropriate way. Let's look at links for a while.
HyperCard's buttons and links are human-supplied threads of meaning. The concept is common in most written information and you have seen it tens of thousands of times. In parenthesis you have (see also) (see page x) (c.f. y). HyperCard automates these links: you click on a button and the referent card replaces your current card. By clicking from link to link you can create a thread of meaning. A screen full of "thumb nail sketches" of cards, called the 'recent' display, is shown so you can get back where you started or retrace your meaning thread. HyperCard's concept of a button is simple. A button is just a rectangular portion of the screen. Clicking on a button takes action governed by a HyperTalk script linked to the button. A very simple form of script implements links to other cards.
Doug Engelbart's NLS system (now Augment) has links as an integral part of its design. These links are both machine and human readable. As a user you can put one anywhere. Links contain both an address and a view. So you can say where a referent is (down to a single character and up to a host computer on Arpanet) and give a series of parameters, called viewspecs, which tell how this referent should be presented. In NLS's command language (see WR Vol. 1 Nr. 3) you say Jump Link then bug anywhere on a link inclosed in angle brackets <address; : viewspecs>.; You can follow any trail of links using a "return stack" of previous views to get back. You can also open additional windows so you see both reference and referent. Links can also be placed to "external documents." XDocs are not on line but are included in a machine readable bibliography containing full citation and physical location, like "conference proceedings blappo stored on the lower shelf of Bob Belleville's bookcase."
Links are one dimensional connections. This means that an object referred to doesn't know it is part of something else. This is just like real life. If I refer to The Odyssey, Homer doesn't have much of a chance to take my reference into account. On the other hand, it isn't very likely that The Odyssey is likely to disappear from the face of the earth anytime soon, so my referent is at least as safe as my document. For computer based systems, however, space can be a problem and one might want to delete things. Both back links and reference counts solve this problem. Back links actually establish two-way links. Such links imply methods of continually modifying referent objects in substantial ways. With back links, all documents are alive and future readers can benefit from commentary written by later authors. Back links aren't for the faint hearted because nothing can ever be completely finished.
A simpler but less satisfactory method involves adding to a reference count in a referent document header every time a new reference is made, then subtracting when a reference is deleted. A document can only be deleted if its reference count is zero. If the count isn't zero, one has to have his computer look through all available objects to find and notify references before deleting a referent. This would be like Homer trying to find all references to The Odyssey before deleting it. In real life, not actually being able to find a referent is common.
Links are elements of meaning because from an author's or user's (person authorized to include a link) point of view, the meaning of some symbols nearby a link is expanded, clarified, or extended by symbols nearby the links target address in a referent. 'Nearby' is important because it involves the way information is presented to users. In printed literature, presentation is fixed; in HyperCard's largely visual world, presentation is nearly as fixed; but generally, presentation must be fully fluid and flexible.
Links don't in themselves create a rich thread of meaning. This is done in a user's head. Graduate students construct theses by using magical properties in their heads to follow link by link through documents to build another document which expresses what they meant. This example points not only to theses as threads of meaning but also to a primary and secondary or derivative nature of information. Primary information doesn't mean anything and secondary information contains no facts but it carries one meaning of facts. Dictionaries don't mean anything, "The Adventures of Huckleberry Finn" does, but they both look a lot alike: little black marks, pages, drawings, and covers.
In addition to links, HyperCard stacks have both a current order and a permanent card ID. Cards can be sorted into various orders. A dictionary is only valuable because as a society we have adopted a generally acceptable sort-order for letters in our alphabet. So we are able to find words by applying this sort-order. When I moved from Doug's shop to Xerox Parc to work on Japanese word processing, I had to look up Kanji characters in a Japanese/English dictionary. It turns out that characters are arranged by stroke count and by radical. Radicals are sub-characters used to make larger ones. It isn't easy however and oriental children are faced with a lot more than just their a b c's. It could take me an hour to find a word.
As I mentioned, cards also have permanent IDs. If you know the ID you can go to any card. Permanent ID, next card, previous card, and links are addressing methods used to move between cards. Within a card text fields have names that can be used in scripts and the contents of fields can be converted to number and dates. Text can be searched across card boundaries. So users have a considerable range of tools to find and cross reference information.
User interface to HyperCard is all Mac: point and shoot. The same interface is used for looking around or browsing as it is called, modifying text field information or graphics, or modifying scripts. Buttons, for example, are just a special kind of rectangle. For graphics you use MacPaint's methods. For text you have MacWrite methods with an I beam cursor and cut and paste. Clicking buttons is well established. HyperTalk provides controlled access to HyperCard objects, use of Mac graphics, and a simple control structure. Authors aren't allowed below this level. Presentation, input and user interface, algorithmic control, data model, and objects are all rolled into one neat package. As such it represents one extreme of computer application philosophy: come, join us, here is a happy safe place to do some work. Like Garrison Keillor's slogan for Ralph's Pretty Good Grocery: if you can't find it at Ralph's, you can probably get along without it.
This week we have covered a lot of ground we have:
- taken a surface look at HyperCard, so that at cocktail parties we'll be ready,
- understood linking information, the only "Hyperness" in HyperCard,
- revisited meaning and introduced ourselves to the primary and secondary nature of information,
- continued to understand presentation as algorithmic transformation of objects into two dimensional computer screens and printouts,
- continued to separate and define concepts like graphics, windows, objects, and data models,
- and seen how whole systems provide safety and consistency at the expense of scope.
Buttons are notions much like spreadsheet cells. However, HyperCard doesn't require a rectangular space and its domain is not just numbers. The idea that HyperCard authors can define a little patch of screen, draw a visible figure over it, and have a little script executed when someone clicks inside is a concept so powerful it will require another reader to discuss. (see )