Refurb Weekend: Canon Cat
oldvcr.blogspot.com
oldvcr.blogspot.com
From this post I learned there was a project called Archy implementing Cat in software.
The core principles still ring so very true: https://web.archive.org/web/20061025010636/http://rchi.raski...
> Computer rage is a familiar phenomenon because computers are so adept at losing your data. At any given moment, you are one innocent step away from destroying minutes, hours, days, months, or years of work.
> Archy never loses your work. This shouldn't be a groundbreaking innovation in computer design, but it is. You never have to save because it's done for you automatically. Your data is stored in such a way that if your computer crashes, your information will still be there the next time you start Archy up.
I think these days we are 70-80% to this groundbreaking innovation—-my computers no longer lose my in-progress e-mail or documents, but sure still keep losing form input here and there, and I still accidentally select all text and type over it in a system with a single-level undo (iOS).
sigh
My favorite 3-way merge tool, kdiff3, has no undo.
[1] https://web.archive.org/web/20080621173441/http://killsave.o...
Autosave has no place outside anything more complex than a simple text form, unless it's solely a backup solution for crashes, or paired with a very solid version control system.
What macOS native apps all do, and have for years, is the right thing. They save your work, but not in your file. Open something, make modifications, close the program, open it: the modifications are still there. Crash? When you reboot, you still have your work. You save when you're ready to replace the old version with the new one, the program doesn't make that choice for you.
Mostly they don't save undo history between boots, though, and that's too bad. Ideally every format in which people actually do the work would be non-destructive, preserving an undo history back to whatever the initial state of the file was. Photoshop got this right, so it's common in image editing, but it should work everywhere.
Clearly you don't usually want finished work to contain the complete edit history, so exporting a rendered version is essential. But this isn't a difficult problem.
The system should regularly quicksave, but when I want to make a conscious checkpoint, let me do so. Perhaps use a VMS-style versioned-file system if you want a seperate channel of undo history.
I bought Jeff Raskin's book years ago in a moment of inspiration.... His ideas were thoughtful, but perhaps impractical? That was my impression nonetheless.
Not having modes is still a big deal for me. Getting lost in menus and "not being able to get back" was something I dealt with a lot, and having this spell out my frustrations was very helpful.
That said, he really loved the interface of the Canon Cat; I had no idea what it was when it existed, and I only know of it through Wikipedia.
In other words, like a bytecode VM?
The "ROM" at IC11 is actually an 8K 150ns static RAM, an NEC D4364C with specific support for battery backup. The service manual calls this the SV-RAM. This is what the CR2032 battery powers at the southeast (lower right) corner.
A CR2032 is surprising for a computer from 1987, given that AFAIK PC mobos didn't have them until the 90s at the earliest.
> In other words, like a bytecode VM?
Kind of, but it's still Forth of the era, so it's still threaded execution. You're still jumping from execution address to execution address (either native 68000 code or another set of Forth words heralded by a JMP to the nesting subroutine); you just have a layer of indirection by having to look them up in the token table first.
Funnily enough, some later more advanced compiler systems could be considered to have bits resembling that in code generation, with Virtual OPerations that abstracted CPU instructions (often more than one).
And indeed, threaded interpreters are one of the efficient ways to implement VMs in resource constrained setups.
Nintendo Famicom cartridges started using them the same year, 87. PCs probably didn't need the space-saving advantage until a few years later.
But that's not what this is. Search is a mode; it's just one that, in the Cat design, requires holding down a key to keep active, and by dint of modelessness as a design goal also fails at discoverability. (How do you cancel a search?)
The idea of using incremental search transparently for both navigation and retrieval does appeal - I could see adding that to Emacs, as a union of isearch and occur, maybe - but we've learned a lot about interaction design in the intervening decades which leads me to feel the veneration of Raskin may often obstruct evenhanded critique of his work: as with Jobs, people seem to confuse the appellation of "visionary" with a guarantee that its recipient's vision was perfect.
AFAICS only that there is a mode.
Glue some little mechanical contraption onto the Cat's keyboard to hold down the Search key until you nudge the thingymabob again to release it, and it's just as (semi-)“permanent” as CapsLock. (AFAIK, that's exactly how CapsLock worked on mechanical typewriters.) The fact that they didn't build that into the Cat's keyboard in the first place is just an implementation detail... That seems very much like a feint to avoid admitting that there's no “quasi” about it; a mode is a mode is a mode.
Maybe we should form a group of the 10 people interested in a Canon Cat? lol