The series ends here. The work doesn’t.
What follows is a brief appendix describing notation experiments currently in progress. Collaborators and kibitzers are welcome. More discussion of these ideas happens on the Programming Simplicity Discord server. The repos contain WIP code “as is”.
dtree
dtree is a DaS notation — Diagrams as Syntax. It uses three primitives: rhombus (decision), yes/no arrows, and process boxes. Turing completeness is not a goal. The notation is useful precisely because it is narrow — easy to imagine, easy to build, easy to read. The simplicity is the feature.
Repo: [https://github.com/guitarvydas/dtree]
sm
sm is also DaS. It expresses state machines directly as diagrams. A state in sm is not a case statement or a single closure — each state requires three functions, which makes it cumbersome to express in FP notation and therefore routinely side-stepped. sm makes it natural.
Repo: [https://github.com/guitarvydas/sm]
Frish
Frish — FoRth-ISH — is TaS (Text as Syntax). The Frish language is text-based; its compiler is DaS. Forth’s core idea — extremely small, composable operations — without Forth’s historical baggage.
Repos:
[https://github.com/guitarvydas/frish/tree/main]
[https://github.com/guitarvydas/frish/tree/debugdefsynonym]
0d.rt
0d.rt is TaS. It implements UNIX-like processes in Python using message passing via Python’s dequeue class. It currently emits Common Lisp and JavaScript in addition to Python — other targets are possible but I ran out of road.
A few design decisions worth noting:
The original implementation used various complicated data structures. It was eventually upgraded to use only strings, parsed on demand using OhmJS/PEG. This seems wildly inefficient by 20th-century standards. It probably isn’t — most programming languages are, at their core, parsers for data expressed as text, preened ahead of time. JIT compilation is likely the right model here, not pre-declared structure.
The deeper principle: systems must not be built around fixed, centralised data structure definitions — no central authority should dictate communication protocols. Parts must be free to negotiate, on the fly, what they can and cannot accept. Strings, with known formats, make this tractable. Complex shared .h-style headers make it brittle.
Repo: [https://github.com/guitarvydas/pbp-dev/blob/main/kernel/0d.rt]
Further
The Spherical Cows of Programming
The Wrong Spherical Cow - First Principles of Parts Based Programming
The Case For Composable Notations (1 / 5) - The Spherical Cow We Forgot We Were Riding
The Case For Composable Notations (2 / 5) - The Restrictions That Came With The Cow
The Case For Composable Notations (3 / 5) - State Isn’t The Enemy
The Case For Composable Notations (4 / 5) - Ease of Expression Is the Whole Point
The Case For Composable Notations (5 / 5) - UNIX Already Showed Us the Way
See Also
Email: ptcomputingsimplicity@gmail.com
Substack: paultarvydas.s. bstack.com
Videos: https://www. youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6J. q
Leanpub: https:. /leanpub.com/u/paul-tarvydas
Twitter: @paultarvydas
_Bluesky: @paultarvydas.bsky.social
Mastodon: @paultarvydas
(earlier) Blog: guitarvydas.github.io
References: https://guitarvydas.github.io/2024/01/06/References.html
Paid subscriptions are a voluntary way to support this work.

