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
    T

    Tony Garnock-Jones

    eighty-twenty.org · Personal blog · on HN since 2011

    Tony Garnock-Jones writes on programming languages, operating systems, networking, and actors, with notes on Smalltalk, Erlang, and tail calls.

    Visit blogRSSHN submissions
    Languages & CompilersSystems & PerformanceOpen Source & Linux
    What HN says

    HN commenters mainly link his post showing that Mendeley encrypts its user database, which they read as lock-in, and a paper on functional operating systems.

    Stats for nerds
    28HN people shared it
    56linked in comments
    1.2Kstory points
    Aug 2022last shared
    2012people per year2022

    Top posts on HN

    1. 1
      60x speed-up of Linux “perf”
      1 person · 477 points · first shared 2021 · 215 comments on HN
    2. 2
      Lying to TCP makes it a best-effort streaming protocol
      2 people · 215 points · first shared 2018 · 91 comments on HN
    3. 3
      History of Actors
      2 people · 71 points · first shared 2016 · 9 comments on HN
    4. 4
      Why Object-Oriented Languages Need Tail Calls (2011)
      5 people · 58 points · first shared 2016 · 71 comments on HN
    5. 5
      Monads in Dynamically-Typed Languages
      2 people · 45 points · first shared 2015 · 2 comments on HN
    6. 6
      Developing with Squeak on a Cellphone
      1 person · 42 points · first shared 2020 · 27 comments on HN
    7. 7
      Python3 is removing crypt.crypt and not replacing it with anything
      1 person · 41 points · first shared 2024 · 76 comments on HN
    8. 8
      GRPC.io is interestingly different from CORBA
      1 person · 39 points · first shared 2015 · 32 comments on HN
    9. 9
      BitSyntax for Smalltalk
      1 person · 36 points · first shared 2020 · 1 comments on HN
    10. 10
      Why OO Languages Need Tail Calls
      4 people · 34 points · first shared 2011 · 5 comments on HN

    What HN people wrote when they linked it

    • YorkshireSeasonApr 2019

      monads if the language is functional

      Monads are not a functional concept. For example an imperative language like Scala (which, being in the ML family of languages has a powerful and first-class functional sublanguage) has monads that work perfectly fine with imperative computation. Indeed, I find it a good programming style to let
      trivial, ubiquitous monads, like printing / IO / global state, be handled by the built-in primitives, while higher-level, unusual, application-dependent effects are implemented explicitly using monads.

      Monads are essentially a form of overloading / re-defining composition operators, e.g. the semicolon operator in traditional imperative languages. In languages like Haskell and Scala, types (and higher kinds) are used for this purpose, hence it is often though that monadic programming is restricted to statically typed languages with powerful types, and don't make sense for dynamically typed languages. Nothing could be further from the truth. All we need is a 'hook' into the sequencing mechanism(s) the language provides, at least in principle. Admittedly, the outcome is not nearly as pretty as in statically typed languages. See [1, 2] for discussions.

      [1] T. Garnock-Jones, Monads in Dynamically-Typed Languages. https://eighty-twenty.org/2015/01/25/monads-in-dynamically-typed-languages

      [2] O. Kiselyov, Monadic Programming in Scheme. http://okmij.org/ftp/Scheme/monad-in-Scheme.html

    • tonygJan 2022

      IMO, Smalltalk-the-system is best thought of as an OS, yes. (Remember how everyone ridiculed the idea of Smalltalk's images right up until virtual machines became a thing?) It has a runtime and a systems programming language, too: the Smalltalk VM, and Smalltalk-the-language. Analogously, Unix has its kernel and C, respectively. The global variables of Smalltalk are analogous to Unix files. Smalltalk processes to Unix processes. It's not a perfect analogy but I found it surprisingly useful once I stumbled across it.

      Preferable, though? Not sure. Certainly, as Marcel notes, a flat file system isn't the best idea; but then, is a hierarchical strict tree? (Related: https://eighty-twenty.org/2011/05/08/weaknesses-of-smalltalk-strengths-of-erlang, https://eighty-twenty.org/2016/05/05/unix-is-incorrectly-factored)

      I think you'd have to burn the disk packs (ie: neither Smalltalk nor Unix as they stand make a suitable foundation), but out of the ashes I think something largely based on Smalltalk taking into account lessons from the forty (!) years that followed it could definitely end up being preferable.

      Coming back to OP, and viewing Smalltalk as an operating system on equal footing with Unix: Different operating systems interact best via networks. Which neither Smalltalk-the-OS, Smalltalk-the-language, Unix-the-OS nor C-the-language support particularly well.

    • ufoSep 2016

      loop/recur is good for replacing structured loops but tail recursion is more general, since it can replace arbitrary gotos.

      One example is given by Guy Steele in "Why Object-Oriented Languages need Tail Calls". Basically, tail recursion lets you keep O(1) stack space even in the face of opaque method dispatching in OO code. https://eighty-twenty.org/2011/10/01/oo-tail-calls

      Another required reading are the "Lambda the Ultimate" papers, if you haven't read them yet. The "GOTO" one is particularly relevant here. http://library.readscheme.org/page1.html

    • kd0amgDec 2015

      > You could pass around explicit dictionaries with all your values or some such, … if you have an extremely low-overhead way of doing so

      A lot of that plumbing could be hidden from the user given the right dynamic features.

      http://www.eighty-twenty.org/2015/01/25/monads-in-dynamically-typed-languages.html

    • LucAug 2022

      > Of particular interest is Henderson’s paper “Purely Functional Operating Systems” which was difficult to find the last I checked.

      Find it here: https://eighty-twenty.org/2022/06/23/henderson-functional-operating-systems-1982

    • abecedariusMar 2016

      It's kind of interesting that TCO goes together with FP, because logically it makes at least as much sense for OOP, as Guy Steele pointed out at http://www.eighty-twenty.org/2011/10/01/oo-tail-calls.html

    Related

    Tony Finchdotat.at58 people

    tolower() with AVX-512

    Tony Finch
    Personal · last shared 2026
    LShift Bloglshift.net41 people

    Python quirks

    LShift Blog
    Company · last shared 2016
    James Coglanblog.jcoglan.com93 people

    The Myers diff algorithm: part 1

    James Coglan
    Personal · last shared 2026
    Richard Jonesmetabrew.com41 people

    How we use IRC at Last.fm

    Richard Jones
    Personal · last shared 2025
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Chris Wellonsnullprogram.com295 people

    Why Aren't There C Conferences?

    Chris Wellons
    Personal · last shared 2026
    Steve Vinoskisteve.vinoski.net30 people

    Concurrency and Message Passing in Erlang [pdf]

    Steve Vinoski
    Personal · last shared 2024
    Fred Hébertferd.ca168 people

    Awk in 20 Minutes (2015)

    Fred Hébert
    Personal · last shared 2026