A Brief Introduction To Rewindable Desktops
by Bowie J. Poag, 12/8/02
You and I watch television.
Sometimes, what we see on the screen reminds us of something else we have seen before. Tiny or inconsequential memories, perhaps a different angle on something, maybe a small mention or subtle hint of information. A little snippet of something that didn't seem worthy of remembering at the time. But now, having just seen something that caused us to remember it, you and I both wish on some level that we could go back and see it. To rewind the movie that plays out infront of our eyes to the point in the film we're interested in. Maybe then, we can go back and take what we saw, and add it to what we have now and complete the picture.
You and I work on documents.
The usefulness of college is best measured by how bored you become -- And, how far you're willing to go to alleviate that boredom. I once had to write a paper about the Apollonian and Dionysian aspects of Goethe's "Faust" using both contemporary and mid 18th century examples of German literature. The resulting boredom was so deep and insufferable that I would have beat my face in with a frying pan had one been made available to me. Anyway, failing to locate a suitably large and heavy frying pan, I set about the task of typing up the paper. The first thing you and I do when we write a paper is to take a quick mental inventory of what we know. Since I was only vaguely familliar with Goethe's retelling of the Faust epic, I had to rely heavilly on few snippets of Greek mythology I managed to remember from history classes I had taken in years prior.
You and I work with machines.
The manner in which we humans choose to juggle data has pretty much remained the same for the past 3 or 4 decades. The notion of a filesystem, and its cotnents. What began as a few began to grow...And grow they did -- What began as only a handful of files grew to become thousands, if not tens or hundreds of thousands of files. Here a file, there a file, everywhere a file file. Files for this, files for that. Image files, text files, config files, source files, lock files, hardfiles, hidden files, system files, sound files, streaming files, ROM files, swap files, parameter files, and files of every concievable shape, color and purpose. But, lets think about things a little differently for a moment. What if it never went that direction? What if the notion of a "file" never even entered our vocabulary? What would we do? How would we store things? And even then, how would we manipulate them once they were stored? And even THEN, how the hell do we get a machine to do it for us?
For the bulk of mankind's life here on the big blue marble, we haven't used files. Cavemen had data--LOTS of it. They had data on where the herds were feeding, where to find water, what plants will make you goofy in the head, and even where to find good rocks to make tools from.. Cavemen had plenty of data, and even had methods for storing, retrieving, and modifying that data. How? Simple -- In the form of stories, lessons, songs, and other methods of what I like to call "linear storage". Linear, as in the data has an indefinite beginning, and an indefinite end. It exists as a singular thread of information, one which can be delved into, and bits and pieces extracted from at any point inside the stream. "Linear storage" differs from the notion of a "file" in that a file is static. Its contents are known, and it has a very clearly defined beginning and end. For example, the act of recalling fond childhood memories can be thought of as indexing a points within a 15 year strip linear storage. Recalling specific details on the other hand ... Those are fixed, and non-linear in nature. Your childhood memories dont continue to be created. They are distinct fragments within the aforementioned strip.
Now think of computing. You're at your desk, and going about lord knows what... Chatting on IRC, browsing, maybe even doing some "real work".... And in the course of your work, you remember you did something relative to it, or similar to it in the past. Maybe you'de like to take some of that old stuff, and maybe apply it to what you're doing right now. Nowadays, this is accomplished by accessing a file. Theres a file somewhere that has what you're looking for. You arent immediately sure where, but, its somewhere. You just have to find it. So you thumb through a whole bunch of files, and voila, theres the goodies youre after. A quick cut & paste later, you have the old information appended into what you're currently working on. Now stop and ask yourself...Was it really necessary to have that piece of information stored within a file? Whats the point? Data is just data.. The method of storage is immaterial to the data itself.
Wouldn't it be nice to have a desktop that was constructed in such a way as to _allow you_ to "go back" and see what the heck you were looking precisely 17 days, 3 hours and 47 seconds ago? You know, like a desktop that could be rewound, fast forwarded, like a VCR? Why bother opening up new applications, loading in new files, and looking at them again when you can simply "rewind" your desktop to the state it was in the last time you worked on it?
Consider the following list of events:
00:00 User logs in
00:03 User launches application
00:08 User waits
00:10 User loads a document within the application
00:15 User makes mistakes
00:17 User corrects mistakes
00:21 User adds content to document X
00:29 User makes mistakes
00:31 User corrects mistakes
00:39 User saves document X to a file
00:40 User waits
00:41 User closes application
00:43 User logs out
04:19 User logs in
04:21 User re-opens document X
04:19 User logs in
04:20 User rewinds desktop to 00:31
04:21 User resumes work on document X.
Of course, the notion of being able to "go back" and change stuff creates a few interesting problems. You begin forking time. You have parallel threads of linear storage co-existing within the same system, differentiated only by the behaviors exerted by the user. What becomes a "rewind" from one point of view may turn out to be a "fast forward" from another. But thats the trick -- Since youre no longer dealing with files per se, you lose the concept of a "version". There is no such thing as version 1 or version 2 of a document. Its the same document, just represented differently depending on where you are in terms of time. With the notion of a "file" thrown out the window, you have the freedom to move forward or back within whatever frame of time your system manages to keep.
Suppose your system is a particularly strong one. It has a linear storage length of 437 hours. That means, when you sit down at your computer, you have the ability to roam anywhere within that 437 hour length of time to do your work. As you work on stuff in realtime, things that you did and actions you performed 437 hours ago are slowly forgotten by your system. This isn't a problem. If it was worthwhile to keep and use, you dont have to be afraid, because what falls into oblivion at the 437 hour point is still being used by you in the time inbetween. The document never dies, as long as you keep using it.
Suppose your system is a particularly weak one. It has a linear storage length of 39 minutes. One day, you sit down at your computer and send an IM to your girlfriend. She gives you directions to a place you swear to God you'll remember, but, of course, you forget. Not a problem. Since the machine has witnessed the past 39 minutes of activity, it undoubtedly still has a portion of your conversation. Rewind your desktop to the point in the conversation where she gave you the instructions, and you're off the hook.
Suppose you want to tell a friend on IRC about this post. If you had a rewindable desktop, you wouldnt need to sift thru endless piles of email and URLs.. You could just rewind to the point where you originally read it, copy it, fast forward back to realtime, and paste it.
On the simplest level, you can think of a rewindable desktop as an "Undo" for a program close.
On the most complex level, you can think of a rewindable desktop as a tool which allows your machine to work independently of time or operating circumstances, and actively maintain multiple threads of usage. The degree and number of threads are only limited by the processing capability of the machine, and the amount of time (and granularity) of the data it records.
There, that aught to keep you girls busy. Good or bad, its an idea you can chew on.