I have a fascination with HCI. It is an uneasy marriage of computer science and psychology. Some would go so far as saying it is streamlining the interface between two computers. I don't care about that. I want to make my applications better. I want the Six-million dollar man of applications.
I was reading some HCI articles and forums a little while back and came upon a repeated quandary. "Do we really need the Save button?" No one's arguments were very persuasive, but the idea held promise. So, I did what I always do. I tried it.
Pad
A notepad replacement designed without a user accessible save or open command.
When I started this project I only wanted to axe the Save command, but, upon further consideration, I noticed the Open command was equal in utility. Thus, it was open to the same question of importance.
Now for the big question. If you have no save command, when do you save? Saving to often, while supremely safe, wastes resources and accesses the disk irresponsibly. The scenario of a publisher saving a four MB document on every keystroke shows an extreme of this.
The traditional answer is to use a countdown timer. Every thirty seconds, one minute, or some user set time the application saves. Time-based saving is a good solution, proven by the relief you feel when you find MS Word saved your document for you before a program crash, but how do you determine a good time interval? If the interval is to long, the user loses everything they've typed since they last manually saved, which is usually everything. With a short interval you encounter the same argument for saving to often, wasting system resources and over-burdening hardware.
A second solution is to derive a save-point from the language itself. "Separation characters" are built into most languages. The punctuation characters could be used in English applications. In normal word processing situations the punctuation characters would be ideal, because they are numerous in documents and, yet, not so numerous as to over-burden the hardware. But, the extreme cases must be considered if you are removing the user's ability to manually save, such as lists or the lack of a punctuation character in the document. (I admit this is a very rare case.)
Also, the saving method needs to be tweaked to only save differences, and compensate for the write buffer size for efficiency.
My solution is to combine both and add major window events, such as minimize and close, into the saving strategy.
The open command is taken care of by Windows, but causes one problem. If the user wants to jot something down they need to create a document first. This might force users to organize their documents or just create more excess documents. Since the latter is more likely, I created a default save file. A centralized text file for all the unorganized, untitled, and unrelated notes. There is potential for abuse, but it's inclusion is worth more in terms of user convenience.
That was easy. Now, why isn't everyone doing it?