History and Influences

This project is over fifteen years old. This is probably the fifth or sixth iteration.

Higher Order Software

A long ago I found a copy of “System Design from Provably Correct Constructs” at the Seattle public library. I didn’t realize it at the time but I now know that it is basically a presentation of Dr. Margaret Hamilton’s Higher-Order Software (HOS). Dr. Hamilton coined the term “software engineering” while developing the software for Apollo 11. She went on to design a system that permitted bug-free software development and attempted to market it. It has a Wikipedia entry: Universal Systems Language.

Edsger Dijkstra panned it: EWD852: Judging “HOS” from a distance. I don’t think he was right, but I include a link to it here for completeness. Also the Navy looked at it and wrote a report NSWC TR 87-181:

The purpose of this document is to describe, evaluate, and critique the HOS approach for system implementation and its automation in the form of a set of tools called USEIT.

The conclusion was grim: “In areas where USEIT is, in principle, sufficient, it has severe shortcomings.”

In essence it’s a thin AST that is only modified by operations that preserve certain kinds of correctness (i.e. type safety), with a tiny core of essential combinators that are combined (in “provably correct” ways) to form control-flow constructs. I was struck by the essential simplicity and spent time on and off trying to get a implementation working.

It never amounted to much but it did get me my first job as a programmer when I presented it at CodeCon 2004 (There’s audio of my presentation available at archive.org.) Some of the details have changed since then.

Oberon

I first encountered Project Oberon in the form of the book at the SFSU library. I read it cover-to-cover. Oberon OS plus the Gadgets system was a revelation. I’ve never used a better UI despite its rough edges.

Humane Interface

Jef Raskin’s “Humane Interface” is another huge influence. He treats UI design as something that can be quanatified, and that some designs are (quantitatively) better than others. Mostly ignored.

Ted Nelson, “Dream Machines”

Ted is the visionary who coined the term “hypertext”. His book “Dream Machines” (the other half of “Computer Lib”) was inspirational. We really haven’t seen anything yet when it comes to human-computer interaction.

Joy

Eventually, I found Manfred von Thun’s Joy language and realized that it was better than my thing and now I’ve implemented that in Python in Continuation-Passing Style: Thun.

Prolog

I recently got into programming in Prolog and wrote a version of Thun in Prolog.