I wrote about the idea of hyperlinking information in my last post. Vannevar Bush first described the idea of hypertext in 1945. One of the most accessible and practical pre-World Wide Web applications that drew heavily on the ideas of hypermedia was a program developed by Bill Atkinson at Apple, released on the Macintosh in 1987.

HyperCard, as the name suggests, was based on the idea of stacks of cards, hyperlinked to one another. Think of it as a stack of index cards that you could draw on and annotate with pictures and text. Just like the Memex, you could then use the power of hyperlinks to link cards together so that, for example, clicking on a picture of a dog might bring you to a card with more information and pictures of that dog, with further links to other cards, etc…

I started using HyperCard at a young age, and I remember finding it very frustrating at first. I was used to painting on blank 2D canvases such as the ones in MacPaint. In contrast, when I opened HyperCard for the first times, I found the terminology confusing and foreign. I would get annoyed when, after creating a graphic masterpiece, I would hit a key combination to jump to a new blank card, and see my picture disappear before my eyes.

My world was shaken when I finally got the idea of stacks and cards. It was like all of a sudden, I was able to paint and draw in 3 dimensions rather than 2. At first, I experimented with short stories which would start on the first card, and continue from that card to the next.

The HyperCard 2.0 Home Stack — The home stack was a kind of launch pad into HyperCard. You could start your HyperCard experience through tutorials, by seeing example stacks (such as a phone dialer or address book), or by diving-in to creating your own. There were even customizable tabs, for adding links to your own stacks. Incidentally, this home screen design can be seen in modern products such as the iPhone today. (Image used with kind permission from Robin Silberling)

Shortly after, I discovered that it was possible to make flip-books in HyperCard as well. I would draw a picture on a first card, then make the image on the second card slightly different, and so on. I remember creating countless animations, some of them becoming quite sophisticated, with cut scenes and longer runtimes.

In addition to being able to draw and add text to each card, you could also place a variety of buttons onto each card. In their simplest forms, buttons would skip to another card or play a sound. When I discovered buttons, I started making adventure mini-games. In one game, you started standing outside a house. By clicking on the doorway, you could open the door and step inside the house. Each room had doors leading to other rooms, and so on. All of this was done by drawing pictures of indoor rooms on different cards in a stack, and then using buttons to interlink them.

I experienced another quite profound paradigm shift when I discovered what lay at the heart of buttons: HyperTalk. While Bill Atkinson had written the core of HyperCard (stacks, cards, drawing & painting, etc…), his colleague Dan Winkler had been busy developing a programming language to give stack authors powerful ways of adding extra functionality to their projects. He called this programming language HyperTalk.

The best part about HyperTalk was that it was very intuitive and approachable. Many programming languages tend to look exceedingly cryptic to the uninitiated, but HyperTalk was constructed so that it read mostly in plain English:

on mouseDown
  put "Hard Drive:Documents:Client Contacts" into filePath
  if there is a file filePath then
    open file filePath
    read from file filePath until return
    put it into card field "Client Contacts"
    close file filePath
  end if
end mouseDown

Since HyperCard shipped with a number of demo stacks, I was able to jump in head first, and teach myself HyperTalk very quickly through experimentation and by copying-and-pasting bits of HyperTalk script from other stacks into my own. With every new bit of HyperTalk that I taught myself, I felt like I was pushing my creative boundaries further and further.

Over the next several years, I developed an insatiable thirst for mastering HyperCard. I would rarely do any homework, as generally my bag would get dropped onto the ground with complete disregard as I bee-lined from the front door to my Mac Plus. My experimentation with HyperCard was vast, and the number of stacks I created must have ranged well into the thousands. Among others, I remember creating a Wheel-of-Fortune type game, a trivia game, a maze game, a visual dictionary of wind instruments, a bulletin board system (!!), innumerable Choose-Your-Own-Adventure type games, programs that drew pictures for you, chess puzzles, and the list goes on. And on. And on.

By now, I was fully sold on the merits of HyperCard. Birthday and Christmas gifts would come in the form of new versions of HyperCard or books about advanced programming in HyperTalk. Wanting to evangelize the creative possibilities of this program, I started a computer club at my (primary) school, and (starting in 1995 at age 12) worked for two summers as an instructor in a computer summer camp. There, I met a fellow instructor who was as passionate and savvy with the ‘Card as I was, and we wrote together what I still consider, to this day, my HyperCard Magnum Opus: a battleship program. After the kids had gone home for the day, we’d wire one of the computers to the projector, and we’d take turns programming and reviewing the other person’s work on the projector. By the end, our battleship program became a fierce challenger, with 5 levels of artificial intelligence, each progressively more intelligent than the last. By level 5, the AI would flat-out cheat and look at your board to see your ship positions.

During the day, I taught kids the basics of HyperCard. Some kids chose to make simple flip-books and adventure games, while some of the more advanced learners got into more ambitious projects. I particularly remember working with one boy who was autistic. Stacks and cards were not concepts he was fully able to grasp, but he nevertheless created drawings in HyperCard that showed a lot of talent. The kind of creativity that HyperCard enabled, and which was visible in the kids’ projects constantly surprised me.

From the Memex, to HyperCard, to Wikipedia — the evolution of hypermedia.

By the end of the second summer, I had become a HyperCard guru. By this time, the World Wide Web had come into being in an early form. Not content with simply advocating HyperCard on a local scale, I created a website dedicated to archiving and organizing snippets of HyperTalk code, for the larger community of power users like me. I was the chief contributor.

HyperCard was born in 1987, before the internet and before even colour Macintoshes. By the mid-90’s, HyperCard still didn’t have true internal colour support, and had fallen into disrepair following organizational problems at Apple. In 2000, what little development efforts were being made were ceased, and in 2004, Apple stopped selling HyperCard altogether.

Having learned everything I could about HyperCard, I gradually shifted my focus to other programming languages (like the ones I was using to build the website to promote HyperTalk).

HyperCard was a killer app, and a testament to great software design. The best part about using HyperCard was that it was fun. And yet, it constantly challenged you to explore a little deeper, to try something new. I have not found a single other creative application that was so thoroughly rewarding to use and learn. Sadly, I don’t even remember the last time I used HyperCard. It won’t run on any modern computer, but just in case I get nostalgic someday, I’ve kept my Mac Plus safely stored with a handful of stacks not far away…