Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    S

    Stephen Kell

    humprog.org/~stephen · Personal blog · on HN since 2021

    Stephen Kell is a researcher who writes papers and posts on programming languages, C, Unix, and software abstractions.

    Visit blogHN submissions
    Languages & CompilersSystems & PerformanceProgramming
    What HN says

    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.

    Stats for nerds
    36HN people shared it
    46linked in comments
    449story points
    May 2026last shared
    2021people per year2026

    Top posts on HN

    1. 1
      A tiny self-remaking C program
      3 people · 123 points · first shared 2024 · 45 comments on HN
    2. 2
      How to wrap a C compiler and preprocessor, really
      2 people · 81 points · first shared 2024 · 3 comments on HN
    3. 3
      I'm starting to suspect my work is incompatible with a full-time academic job
      1 person · 75 points · first shared 2025 · 87 comments on HN
    4. 4
      Motto: Unsafe languages allow mostly-safe implementations
      1 person · 51 points · first shared 2022 · 6 comments on HN
    5. 5
      Some Were Meant for C (2017) [pdf]
      7 people · 29 points · first shared 2021 · 8 comments on HN
    6. 6
      In Search of Types (2014) [pdf]
      1 person · 16 points · first shared 2025 · 3 comments on HN
    7. 7
      LLMs exploit our tolerance for sloppiness
      1 person · 12 points · first shared 2025 · 1 comments on HN
    8. 8
      Unix, Plan 9, and the lurking Smalltalk [pdf]
      8 people · 8 points · first shared 2022 · 13 comments on HN
    9. 9
      How and why to do link-time symbol wrapping (or not?)
      1 person · 6 points · first shared 2022 · Discussion on HN
    10. 10
      Reversing Abstractions: An Existential Crisis
      3 people · 4 points · first shared 2026 · Discussion on HN

    What HN people wrote when they linked it

    • chubotApr 2024

      (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…

    • jaenMay 2026

      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.…

    • jonjackyJan 2024

      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.…

    • linguaeMay 2025

      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.

    • nsmSep 2021

      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

    • lprovenDec 2024

      > 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

    Related

    Jonathan Goodwinpling.jondgoodwin.com18 people

    Compiler Performance and LLVM

    Jonathan Goodwin
    Personal · last shared 2024
    composition.alcomposition.al45 people

    My first fifteen compilers

    composition.al
    Personal · last shared 2022
    Random ASCIIrandomascii.wordpress.com274 people

    There are only four billion floats, so test them all (2014)

    Random ASCII
    Personal · last shared 2026
    Stephen Diehlstephendiehl.com209 people

    What I Wish I Knew When Learning Haskell

    Stephen Diehl
    Personal · last shared 2026
    Robert Atkeybentnib.org23 people

    Propositions as Filenames, Builds as Proofs: The Essence of Make

    Robert Atkey
    Personal · last shared 2024
    Stefan Marrstefan-marr.de35 people

    How to slow down a program and why it can be useful

    Stefan Marr
    Personal · last shared 2026
    John Regehrblog.regehr.org401 people

    Teaching C

    John Regehr
    Personal · last shared 2026
    Max Bernsteinbernsteinbear.com68 people

    You can use C-Reduce for any language

    Max Bernstein
    Personal · last shared 2026