March 26 My work is supported by members. If you find my work valuable and have the means, consider supporting it with a membership or sponsorship! This members-only article has been made publicly available. You can see more of my work at alexanderobenauer.com. The last chapter of Bootstrapping Computing is all about user environments. One of the more unique user environments mentioned is found on the Canon Cat, an obscure machine that didn’t last long on the market, but took some specific philosophies to an extreme, presenting fascinating implications for how users might interact with their personal computers. The Cat’s user environment was one long text stream. There are some caveats to this next statement, but basically: that’s it! There was no mouse, only a keyboard. In fact, the Cat did away with WIMP entirely — there were no windows, no icons, no menus, and no pointer. There was no file hierarchy and no need to name things. None of your text was automatically timestamped. It was just you, a keyboard, and one long text stream with everything you’ve done in it. For navigation, the Cat featured leap keys: two rose-colored keys below the spacebar. ⊕ You could press and hold one while typing a sequence of characters to “teleport” to the nearest instance of that pattern. The left leap key would take you back, the right leap key would take you forward. User conventions emerged to support life within this system. Users would implement their own navigational systems using special characters, tags, “@keywords”, and consistent date and timestamp formats that would work well with the leap keys. That’s what caught my eye first: your environment effectively becomes a system of your own design, over time. With a small set of commands and a simple data model, many of the features in users’ systems were actually personal conventions that made good use of the of the available actions. It’s an interesting form of personal software: your conventions compound and evolve to make the system into what you want and need it to be. Jasper Since the system people used was in part of their own design, built over time, it isn’t a system that you’d understand just from reading about how it worked, or watching a demo, or reimplementing it, or even using a reimplementation for a few minutes. It’s a system you can only really understand when you use it seriously for a long time, such that you feel the push and pull to impose certain conventions that make the available actions help you around your growing body of work. This is what made me curious to live in such an environment: to experience the ways in which this system’s philosophy and implementation play out in the lives of its users. I’ve implemented a basic version of the Canon Cat interface in a little web app called Jasper. Jasper was the original name for the cat in Tom and Jerry. By the time the character would recur, he became Thomas Jasper Cat Sr. (long for Tom Cat). I’ve attempted to start living in this system “full-time”, or as much as possible, for my notes, tasks, thinking, and document composition (so if you’re reading this, that would explain typos: I have no spellcheck in here at the moment). I’m still new to the environment, but in this update, I’ll share some early observations. Here’s a demo video and some screenshots (essay continues below): Screenshots of Jasper: on the left, the standard interface; on the right, when in leap mode. Implementation I’ll first touch on some implementation details before I discuss observations from use. Leap was a central feature on the Canon Cat, and I’ve mirrored its finer details in Jasper. You can leap in either direction, and you can leap again — repeatedly pressing the left or right leap keys after a leap to continue jumping to the previous or next instance of your pattern. When you type a lowercase pattern, it matches case insensitively; if you type a pattern using any capital letters, it matches case sensitively (this was a smart choice in the design of the original system, and I enjoyed having it in Jasper). Also like the original, it has circular search. I do new work at the bottom, so when starting at the top, I can leap backward to “@todo” to get to my most recent todo list. And it has what the Cat’s materials called “cursor rebound” — if you type a pattern that isn’t found anywhere in the environment, the cursor returns to its starting position (the Cat’s how-to guide recommended adding a few “x”s to your pattern if you wanted to intentionally return to your starting position). The hard part is that the Canon Cat had bespoke hardware with dedicated keys for its actions. The leap keys were positioned below the spacebar, so your thumbs could hold them while typing your pattern. Lacking that, I opted to use the option keys to each side of my spacebar. Initially, I tried implementing the leap keys as a hold-and-press quasimode, as in the original. I prefer this approach, because this quasimode is “embodied” — my posture is slightly different while in this mode (like using press-to-talk on video calls). But ultimately, using the option keys this way presented too many problems. These keys are not ergonomically positioned like the Cat’s leap keys; leaping to “@todo” was a bit uncomfortable. But the primary stumbling block with this approach is that the option key has too many meanings in systems today, and so caused all kinds of non-trivial problems, starting with the fact that characters pressed are not the characters typed while the option key is held down. I managed to work around many of these issues to get a basic implementation going, but ultimately found the many edge cases too frustrating to make the less-than-ergonomic option worth it. So in Jasper, leap mode begins when you press and release an option key, and leaving the mode requires pressing escape, return, or any arrow key. Canon Cat was also a WYSIWYG interface: what you print is exactly what you see on screen. The ruler at the bottom of the Cat’s interface is set in characters, with 80 on each line. ⊕ I figured I wouldn’t print much from Jasper, but this arrangement has an interesting effect: everything you type is found in the same place horizontally every time you read it or scan for it. To preserve this aspect, Jasper’s editor has a fixed width, with 64 characters on each line (similar to what the Cat had once you took into account the character spaces used for margins). I added highlighting to leap’s pattern matches in Jasper, as I found using leap taking longer than it needed to when I couldn’t tell where my cursor had moved to. (Canon Cat’s cursor carried more visual weight than today’s blinking bar, but I prefer the latter, and have found highlighting all matches, with the active one given the most color, to be beneficial.) When I’m at my desktop, I use a full-size keyboard with a number pad. It has several function and other keys that I mapped into more of the specific actions of the Cat. When I wrote the second version of Jasper, I left behind most of the other keys in favor of their existing modern equivalents, since there’s no difference in behavior. Merits There are a number of things about this system that I find appealing, often uniquely so among the broader landscape of user environments. As I mentioned in the introduction, I appreciate that this system has a simple data model, leaning on user conventions to take things further. The user will gradually design their own system over time, and evolve it as time goes on. It feels more like a box of tools than a curated experience, something surprisingly rare in the productivity software landscape. On the Canon Cat, users could insert document separators, which were special characters displayed as thick horizontal lines or gaps. They were used to denote the end of one document and the beginning of another. The document separator was a character you’d type from the keyboard, just like an “a”, a space, or any other, so leaping from one document to the next doesn’t require another command or set of keys: you can leap to the next document separator using its special character in a standard leap. You effectively end up with a keyboard shortcut of Leap + Document Separator to navigate to the beginning or end of your current document. But this isn’t a special case; it’s just like leaping to any other character. And you could do the same with newlines or spaces to jump to the beginning or end of paragraphs or words. In my implementation, the benefits are not quite as potent as in the original Cat, since I don’t have a dedicated document separator key and character, or press-and-hold leap keys. Instead, the ` character is used for document separators, which can be used in Jasper’s leap mode to jump to the beginning or end of documents. This is a delightfully efficient paradigm; it reminds me of the MOVE command on the Xerox Star that could be learned once and used for many different purposes, such as, depending on the chosen destination, to put a file in a folder, to print a document, or to send an email — none of these required additional commands. It’s as though the system was designed by asking, “How could we include lots of keyboard shortcuts that we never have to explain, that the user will discover all on their own?” They are a byproduct of the system’s fundamental operation. And as such, users can create their own keyboard shortcuts with how they structure and type text in their environments. Finally, this will be a hard point to make, but I’ll try: Something unexpected that I really like about this system is that it’s always “correct”. If I record something somewhere else (such as on a piece of paper) and move it into my system a day later, I can still put it in the correct day, if that’s how I have things grouped. In a similar system using my phone’s Notes app, the timestamps are automatic and unchangeable, so there’s a slightly different relationship I have with the timestamps and ordering of notes in this app. Apps with this automatic behavior are ever so slightly not my timestamps, and I relate to them accordingly. These timestamps and orderings gesture toward how I think of my notes, but there are lots of little wrinkles. I remember the more important wrinkles, carrying around these asterisks in my head, but there are lots of less memorable ones that give me the impression that these are the app’s timestamps; the computer’s timestamps — not my own. This might sound like a trivial detail, but I think it sows the seeds of distrust and frustration with our digital systems. It’s little things like this that quietly indicate, if only to our subconscious, that this isn’t our system, it’s their system, we just happen to be putting our data in it. That’s not a great feeling! In contrast, the Cat feels more like my system, since I implement my system within it. My document — my whole environment — is exactly as I write it. I was surprised to find that the leap keys mapped into my brain almost immediately. Pretty quickly after starting to use the system, I noticed my mind thinking in terms of its affordances. In a long note in the Notes app on my phone, I found myself mentally reaching for the “leap back” key to go to a particular spot in the note that was off-screen. Lacking that, I wondered if Notes on the iPhone has the similar “find” to search in the document (I had to look this up — it turns out Notes actually has it, buried in a menu with a long list of other features). It would be interesting to explore a custom keyboard for the iPhone that has leap back and leap forward keys (though the quasimode of holding the key down while typing would not work well on this device size). I am increasingly frustrated in other apps — code editors, text editors, even when reading articles in a web browser — because I can’t use leap in them; my mind reaching for it the way an absent mind accidentally thinks to pinch-to-zoom some small text on a physical piece of paper. Early on, I was using my mouse too often as a habit. Without it, I’d be forced to find a couple of other syntaxes in my document that help me navigate with the leap keys. So I added a way to disable the mouse, which I kept on as much as possible. By the time I built the second (and current) version of Jasper, I’d kicked the habit, so it doesn’t feature a way to disable the mouse. Ultimately, I think the value I get from the Cat interface in Jasper is not close to what they advertised it for. Ads called it “the world’s first Work Processor”, a wordplay on word processor. ⊕ A Canon Cat brochure But it clicked for me in a different way. For years, I’ve worked from a single, long document in Obsidian that I call my “Starters”. I usually append to the top (rather than the bottom, as I do in Jasper), but it works in a similar way. Almost everything composed that I think, or see, or want to read later lands in Starters. Like things group together, but as I scroll down, I’m going backward in time seeing lots of little observations, insights, and questions. I don’t have to name or categorize anything. So it lets the ideas unfold freely into whatever they want and need to be. As I scroll back, I see lots of closely related things that I wouldn’t have otherwise realized were related. As my mind is thinking in some particular way, everything from a 7-10 day period all seems shaped in some similar way. It also helps me to see intersections among truly unrelated things, which leads to interesting insights, useful metaphors for writing, and so forth. Starters has also been the closest glimpse I’ve gotten at a system that prevents writers block. (The other is a small list of websites; each reliably gets me thinking and writing.) I like that it works in a particular way to support the kind of free associative thinking that the brain is so good at. I’ve found this to be true of Jasper too. I’ve taken to keeping my Jasper stream always on the left side of my screen when I’m working in other applications (or the left screen at my desk), to record notes during meetings, quickly jot errant thoughts, record interesting links, etc. Extending these ideas Let’s talk about the ways a system like this could extend in the future, and things I found myself wishing the system had, for better or for worse. The Cat had a handful of other features that I’ve largely ignored here. One was performing calculations on math written in your text, when you highlighted that text and hit the CALC key. This is essentially a DSL you can use within your otherwise freeform text that is given certain powers by the system. Could you encode some of your other conventions with user programs that can do things for you with little syntaxes in your document? Archy, a successor to Canon Cat, had an implementation of a similar idea. In Archy, commands could be installed as user programs. They didn’t present separate, bounded apps, but worked on the entire system and could be combined with one another. You could, for example, install an email package that came with a SEND MAIL command, which you could invoke after selecting the text you want to send, then specifying who you want to send it to. It would be quite handy to have autocomplete in the document, and in the leap field, whenever typing something like @ or #, to autofill an often-used name or a person or project. That said, I can usually remember how I’ve chosen to write someone’s name. Macros would also be handy, and autocompleting a date / timestamp in a particular, consistent format would have kept me from a few errors in my convention’s syntax. I also find myself wanting Markdown support. What’s interesting about Markdown in this case is that, like the user conventions that emerged among Canon Cat users, one can target the character sequences used in specific places while leaping (for example, to leap to multiple equal or pound signs to navigate through the headers in a document). It’s interesting to consider how you might use this system with an LLM. LLMs work well with big blocks of text, and that’s what this environment is made up of. It’d be easy enough to send along specific lines, so an LLM could “scan” up or down a document, or use leap on its own to, for example, find the notes from the last few meetings I had with a particular person to generate a summary before our next chat. Maybe predictably, early on I found myself wanting more than one text stream. I fought that inclination to discover what’s in store down the pure Canon Cat path. I also found myself wanting the ability to collapse sections (for finished todo lists, discarded drafts, etc.), though I could see these being a slippery slope, as I may feel the pull to do some deeper organization of my text, the abnegation of which is one of the most fascinating principles of this system. Over time, and once I implemented document separators, this inclination sort of melted away. Having adapted my thinking to suit the mono-stream, one thing that would be nice to have is the ability to filter down to just the documents in your stream with a certain tag or other pattern. This would let me filter down to a certain month or year, topic, project, or notes regarding or with a certain person. I would also appreciate having colors: when scanning through, color-coding different kinds of “entries” would help me find things I’m looking for more quickly. I think in terms of “types” — some entries are meeting notes, some are ruminations, some are composed documents to publish, and so forth. Being able to make types visually distinct while scanning through would help offload lots of “finding” work to my subconscious (as is the case in OLLOS). And finally, in order to continue living in it “full-time”, I’d like to have Jasper sync with other devices. This would be excellent territory for a CRDT like Automerge. Immediacy of a typewriter This system reminds me of the Freewrite (a device that creates a focused space for writing text). The Freewrite takes this further: you can only write at the end of the text; you can’t edit or insert elsewhere. You can try out their online version at https://sprinter.getfreewrite.com. This aspect brings some nice qualities with it. I can “just think”, without being burdened by organizing files into specific folders, or naming things before I’ve even written them. From the Canon Cat’s How-to Guide: “When our designers created the Cat they threw out all the junk that makes computers clunky and held onto the personality and immediacy of a typewriter.” It’s interesting to attempt recreating such a system; there are lots of specific interaction details that I’ve had to look into, which one wouldn’t consider unless reimplementing such a system. Canonical answers haven’t always been easy to find, however! If you want to try it out yourself, it’s available for members here. It will save your text in your browser’s local storage (it does not send your text to any server). Thanks to Paul Rony for introducing me to the Canon Cat and Archy, and for discussions about them and Jasper. Many of the assets associated with the Canon Cat can be found at canoncat.net, published by Vitorio Miliano. Photographs of the Canon Cat are from user snuci on deskthority.net. My work is supported by members. If you find my work valuable and have the means, consider supporting it with a membership or sponsorship! This members-only article has been made publicly available. You can see more of my work at alexanderobenauer.com.