Friday, May 1, 2026

I FOUND IT! Principles of Sane Computing

Several years ago, I was working at a Cryptocurrency Startup that hoped, among other things, to create a cryptocurrency computing platform where, for a little bit of "coin", one can pay for some computing power to do pretty much anything. This is where I learned of NixOS, which we explored as an approach for managing packages and versions -- and I cannot remember if someone pointed me to these "Principles of Sane Computing", or if I found them on my own, they got lodged into my brain and have influenced my thinking concerning human and computer interaction. I nonetheless lost track of them, and couldn't find them, regardless of how hard I tried to search.

But recently I found them! I want to share them here, because if I can, I hope to emulate these principles (and others) with my work in 3D graphics! (I am somewhat limited with what I could do, however, if only because I'm limited to "userspace", and not in a position to write a complete operating system at this time.)

The First Law of Sane Personal Computing: Strict obedience. Assuming physically-intact hardware, the user shall retain full control of the machine at all times. In particular, the handling of the keyboard, mouse, and other human interface devices must take absolute priority over all other processing. The user shall have the ability to issue commands and receive immediate confirmation of said commands at all times, regardless of system load.

The Second Law of Sane Personal Computing: Forgives mistakes. Information which entered the machine through deliberate user action shall never be destroyed or otherwise rendered inaccessible except as a result of deliberate user action to that end. No user action shall lead to the destruction of information unless said destruction is the explicit and sole purpose of the action. If all non- volatile storage space that could hold full undo-information for user-initiated actions is exhausted, the user shall be informed immediately and given the opportunity to explicitly erase unwanted data or connect additional storage devices, thus preventing unintentional information loss.

The Third Law of Sane Personal Computing: Retains knowledge. Volatile storage devices (i.e. RAM) shall serve exclusively as read/write cache for non-volatile storage devices. From the perspective of all software except for the operating system, the machine must present a single address space which can be considered non-volatile. No computer system obeys this law which takes longer to fully recover its state from a disruption of its power source than an electric lamp would.

The Fourth Law of Sane Personal Computing: Preserves meaning. Compilation is to be considered a form of caching, and thus shall happen solely behind the scenes, like all other forms of caching. The machine is to accept no externally-introduced executable code except in the form preferred for making modifications (i.e. source.) All executable code visible during any kind of debugging session or accessible to the user/programmer in any other way shall also be exclusively of this form. Nothing residing at any lower levels of abstraction shall be semantically relevant to the machine's operation. In effect, the machine behaves exactly like a "hardware interpreter" of a high-level programming language. Note that what the silicon actually does to achieve this is irrelevant so long as no programmer need ever be made aware of just how it does it.

The Fifth Law of Sane Personal Computing: Survives interruptions. If the machine encounters an error condition requiring the user's manual intervention, the state of the now-halted process prior to this event shall be preserved, and the user given an opportunity to correct the error using an interactive debugger and resume execution from the saved-and-corrected state. The debugger shall display the code which generated the condition -- and any other executable code on the system, upon request. All of the code shall be viewable and editable in the form preferred for modification.

The Sixth Law of Sane Personal Computing: Reveals purpose. All of the information contained inside the machine's storage array (see the Third Law), whether executable or not, shall be accessible at all times for inspection and modification by the user/programmer, in the form preferred for modification. The user/programmer shall have the ability to modify the functionality of any executable code within the system without cycling power or performing any similar ritual. No modification of any kind shall be able to render the means for undoing said modification (the keyboard and a spare instance of the built-in debugger) inoperable.

The Seventh Law of Sane Personal Computing: Serves loyally. The machine shall never tell a lie to the user/programmer. It shall obey all orders given to it through the human interface devices, without attempting to pass judgement on their legality or morality. The machine shall not put the interests of any third party (including society in the abstract) above those of its user/programmer.

All these principles are also nicely summarized in a single blog post, Seven Laws of Sane Personal Computing. When I rediscovered this blog, I went down a bit of a rabbit hole, because Loper OS has a lot of discussion on the fundamentals of computing and how they can be different from what they are today. For my part, I'm pretty sure I have absorbed additional Laws of Sane Computing, both from my own research, and from my own thoughts!

I am particularly inspired by the lost arts of complete computer control as established by Lisp machines and Smalltalk, as well as other desirable features seemingly lost to time, that work hard to satisfy the Fourth and Sixth Laws. Whenever my computer freezes, however temporarily, I always think back to the First Law and wonder why, at a minimum, I can't at least have control of my mouse, my keyboard, my display, and any task I want focus on. And I always think of the Third Law whenever I have to restart my computer, knowing I'm going to lose certain programs I have running, as well as directory information stored in particular panels.