Are We Really Better Than Sketchpad?
2026-03-07
After 50 years of doing the same thing and expecting different results, are we producing programs better than Engelbart’s Sketchpad — programmed in assembler?
The Only Way to Program a CPU
There is one — and only one — way to program a CPU: create machine code.
Everything else — C, C++, Odin, Python, JavaScript, Clojure, Haskell — is tooling. Tooling that helps us, as developers, produce machine code, purportedly with quicker turnaround and fewer errors.
Yet we lean heavily on “Continuous Deployment,” which lets us ship buggy designs knowing we can incrementally patch them later. Note: designs are more than just code.
The Martian Test
If a Martian landed on our planet for the first time, would it conclude that textual programming languages are the best way to construct machine code for CPUs?
More to the point: disk drives, internet nodes, and GPUs are distinct from CPUs. Would the Martian conclude that textual languages — designed for stone-age, 20th-century CPU-based computers — are the best way to program combinations of these non-CPU devices?
Diagrams Already Won, Quietly
Consider the evidence hiding in plain sight:
Harel: the IDF used control-flow diagrams (Statecharts) to create programs for extremely sensitive military equipment.
Mitkin: the Russian space program used diagrams (Drakon) for rocket science.
The original Pascal programming book gave us diagrams of Pascal’s syntax.
Json.org gives diagrams of JSON’s syntax.
In every case, the diagrams are hybrids — text and figures. SVG noticed this, perhaps inadvertently: in SVG, “text” is just another kind of figure, treated the same as rectangles and ellipses.
The Syntax Fix That Misses the Point
Yes, we can detect the “dangling else” problem in syntax. But that doesn’t solve the larger semantic issues.
Else is a semantic catch-all that allows unhandled edge-cases to slip silently into programs. Detecting it in a parser doesn’t make it go away. It just makes us feel better about a bad habit.
Why Are We Still Here?
In the 20th century, the nascent hardware of the day didn’t give us many options. The best we could muster was to apply 100-year-old ideas (QWERTY) to 500-year-old ideas (Gutenberg typesetting).
Today, we have more choice. But we’re stuck with inherited stone-age technology, wearing it like it’s a feature.
What To Do
If you just want to get something running
Scribble diagrams on scraps of paper and translate them into machine code somehow. How did Engelbart build Sketchpad — the Mother of All Demos — without type-checking and theorem proving?
I find it useful to gather my thoughts by drawing hybrid diagrams containing figures and text, and only then writing code. When I find it extremely difficult to draw a diagram, that usually means I haven’t thought the problem through sufficiently. That’s a good thing. The difficulty is information.
In practice I often dive into code before its time — because that’s what I was trained to think is correct — but when I hit hoary bugs and edge-cases, I remind myself: pencil and paper. iPad. draw.io. Excalidraw.
If you want to improve the state of the art
Step back and re-examine the problem of programming decentralized devices, where machine-coded CPUs are not the only elements of computers, internets, gaming hardware, and robots.
Do not assume that old-fashioned mathematical notation is the right tool for programming new-fangled media.
The question isn’t about diagrams versus text. The question is whether the tools we inherited from the last century — and never seriously questioned — are leaving better possibilities unexplored.
Postscript: Further Reading
Banning the Use of IF-THEN-ELSE — on why else is a semantic trap, not a syntactic convenience.
Statecharts: Papers We Love (Video) — a presentation of Harel’s original Statecharts paper, with slide decks and annotations.
DRAKON Editor — the visual language developed for the Russian space program. Supports code generation to C, Python, JavaScript, Erlang, and more. Free, runs on Windows, Mac, and Linux.
See Also
Email: ptcomputingsimplicity@gmail.com
Substack: paultarvydas.substack.com
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6Jpq
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Twitter: @paul_tarvydas
Bluesky: @paultarvydas.bsky.social
Mastodon: @paultarvydas
(earlier) Blog: guitarvydas.github.io
References: https://guitarvydas.github.io/2024/01/06/References.html

