Stephen Kell is a researcher who writes papers and posts on programming languages, C, Unix, and software abstractions.
Commenters recommend his paper "Unix, Plan 9 and the Lurking Smalltalk" on late binding and Smalltalk-like systems, and cite his C paper to explain why C stays the lingua franca.
(author here) It's an old name for an old concept :)
See the previous post The Internet Was Designed With a Narrow Waist, especially the appendix with some history
https://www.oilshell.org/blog/2022/02/diagrams.html
The name was apparently coined by Jon Postel in the late 1970's, but this fact is not well known. There are some misattributions in the appendix
I apparently learned the term from a talk by Van Jacobsen on Named Data Networking at Google in 2006, but I forgot that I learned it that way!
After I wrote the post, a reader Caleb Malchik reminded me about Van Jacobsen's talk, and then I went back and watched it, and realized that's where I got the term from! I then updated the appendix.
---
I have searched Hacker News for "narrow waist", and it surprised me that it's not a very well known idea, despite being old and important. (And again - I wrote these articles specifically to gather related material from others, so I welcome any updates or corrections.)
One place you can see it in passing is in a 2013 paper from Steven Kell - The operating system: should there be one?
https://www.humprog.org/~stephen/research/papers/kell13operating.pdf
Search for "waist in the hourglass"
---
If you think about it, it is not surprising that the "narrow waist" concept from networking is becoming more important to software. Software has become more and more networked for the last 2 decades, and I don't think that trend has even topped out.
It is hard to find any kind…
Your intuition is not right, I have plenty of experience with REPL-driven development, even having used all the tools you have mentioned in your post. (and Clojure Spec is exactly the runtime specification part I was referring to in my comment...)
Logically, it's more the other way around - REPLs are in that sense a compensation for static types, since nothing forbids having a REPL and static types (see: eg. Julia. OCaml, Haskell, Scala etc. have REPLs too, but they are closed-world).
There's a fundamental trade-off though, with the open- vs closed-world assumption - if your types and (generic) methods are open world, then certain kinds of errors are just not analyzable.
As you hinted, REPLs also don't work well for eg. large pipelines farmed out to clusters of machines, or anything that requires a high degree of static assurance, eg. control software - you either must statically analyze for all errors for it to even be legal, or the cost of having to "live fix" an error is much larger than preventing it in the first place (or just impractical for clusters).
Sure, a degree of live patching and experimenting is desirable (namedrop JPL as Lispers do), but that's a somewhat orthogonal concern.
A Lisp-style REPL combines introspection and live patching for both code and data. This can be achieved in many heterogenous ways besides a REPL, though. It's just not a nice, curated and holistic experience. But agents don't really care about that. LLMs don't get magic feelings.…
Don't overlook books that are critical of engineering as it is often practiced and how it fits into our society:
Computer Power and Human Reason by Joseph Weizenbaum (1976). Weizenbaum wrote Eliza, the first AI chatbot, almost sixty years ago and was appalled at the reception. This book is still very pertinent, especially the Introduction, Chapter 1 On Tools, chapter 9, Incomprehensible Programs, and chapter 10, Against the Imperialism of Instrumental Reason. Chapter 4, Science and the Compulsive Programmer, is one of the first written accounts of the hacker culture.
Weizenbaum's original paper on Eliza (1966) [0] is still very pertinent to the present generation of chatbots, especially the introduction and discussion.
Tools for Conviviality, Ivan Illich (1973) [1]. Influenced recent work by the computer scientists Steven Kell [2],[3] and Kartik Agaram [4].
Computation and Human Experience, Phil Agre (1997) (excerpt at [5]). Agre got a PhD in AI at MIT in the 80s and 90s and became very critical of the field. I think his shorter writings [6][7] are a better introduction, especially the personal memoir at [6]: "about how I became (relatively speaking, and in a small way) a better person through philosophy."
0. https://dl.acm.org/doi/10.1145/365153.365168
1. http://akkartik.name/illich.pdf
2. https://www.humprog.org/~stephen//research/talks/kell19de-escalating-intro-script.txt
3. https://www.humprog.org/~stephen//research/talks/kell19software-slides.pdf
4.…
You might be interested in this paper: "Unix, Plan 9 and the Lurking Smalltalk" (https://www.humprog.org/~stephen/research/papers/kell19unix-personal.pdf)
Cuis Smalltalk and related implementations are rather self-contained systems to the point they seemed walled off from the rest of the system, making it difficult to develop Smalltalk programs using external tools.
However, there's something compelling about the idea of a Smalltalk (or Lisp) OS running on bare hardware, where everything runs in a single address space. I've been thinking about this for a few years, but I haven't had time to pursue these ideas. Some ideas from the 1994 paper "Sharing and Protection in a Single-Address-Space Operating System" (https://homes.cs.washington.edu/~levy/opal.pdf) could be applicable to add some security to a Smalltalk OS.
Whenever I read news about the kernel surfacing more traditionally OS level features to user space, I'm reminded of Stephen Kell's "Unix, Plan 9 and the Lurking Smalltalk"[1].
There are a lot of parallels between the Smalltalk VMs (where nearly everything about the system is editable and accessible to the user) and where Linux is heading in certain respects, except going there by a very round-about way and relying on very limited binary formats and C instead of high level languages and live objects.
[1]: https://www.humprog.org/~stephen//research/papers/kell19unix-personal.pdf
> Thats kind of just redefining the OS though, and what a programming language is.
Well, yes.
I am not deeply knowledgeable about the detailed history of Smalltalk, but my impression is that Alan Kay had the ideas and Ingalls wrote the code and made it work. He may be excused some bias. :-)
> You could argue that an OS is just another high level virtual machine.
Hmmmm. I think it depends on the OS.
OTOH, and I read this, barely understood it and disagreed with what I understood:
https://www.humprog.org/~stephen/research/papers/kell19unix-personal.pdf