Everyone should read Jef Raskin's The Humane Interface. He expresses many of his interface ideas used with the Canon Cat and Archy in the book. I now consider thoughtful interface design a moral decision.
> Every action should be undoable, even after a document or application has been closed and reopened.
At first, this sounded ridiculous. Undo after a save? But then I realized I do that now & then myself, using a version control system. So here I am editing a DVCS-managed document. Pre-save undo is handled by the editor, while post-save undo is handled by the DVCS (which is nice, but I usually have to look up how to do it).
All this underscores what crappy interfaces we really have, and how we get used to them, and so overlook their serious flaws.