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.

What HN saysHN 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.
28HN people shared it
10linked it in comments
56stories submitted
1.2Kstory points
3 months agolast shared
2011people per year2026

Most-shared posts

  1. 1
    Why Object-Oriented Languages Need Tail Calls (2011)
    5 people · 58 points · first shared 2016 · 71 comments on HN
  2. 2
    Why OO Languages Need Tail Calls
    4 people · 34 points · first shared 2011 · 5 comments on HN
  3. 3
    Mendeley encrypts your data so you can't access it
    4 people · 1 points · first shared 2018 · discussion on HN
  4. 4
  5. 5
    Lying to TCP makes it a best-effort streaming protocol
    2 people · 215 points · first shared 2018 · 91 comments on HN
  6. 6
    History of Actors
    2 people · 71 points · first shared 2016 · 9 comments on HN
  7. 7
    Monads in Dynamically-Typed Languages
    2 people · 45 points · first shared 2015 · 2 comments on HN
  8. 8
    Our operating systems are incorrectly factored
    2 people · 6 points · first shared 2016 · 1 comments on HN
  9. 9
    UI for sums must remember products
    2 people · 4 points · first shared 2024 · discussion on HN
  10. 10
    TypeScript: Messages from Interfaces and Back
    2 people · 3 points · first shared 2021 · discussion on HN
  11. 11
    Why learn Smalltalk?
    2 people · 2 points · first shared 2019 · discussion on HN
  12. 12
    Purely Functional Operating Systems
    2 people · 1 points · first shared 2022 · discussion on HN
  13. 13
    Monads in Dynamically Typed Languages
    2 people · 1 points · first shared 2015 · discussion on HN
  14. 14
    60x speed-up of Linux “perf”
    1 people · 477 points · first shared 2021 · 215 comments on HN
  15. 15
    Developing with Squeak on a Cellphone
    1 people · 42 points · first shared 2020 · 27 comments on HN

What HN people wrote when they linked it

tonyg · 2022-01-15
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… 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.
Luc · 2022-08-14
> 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-sy…
xyzal · 2020-03-26
It should be noted that Mendeley encrypts user database, presumably to lock in its users: https://eighty-twenty.org/2018/06/13/mendeley-encrypted-db
acdha · 2019-02-28
Mendeley is owned by Elsevier so they’re likely to continue user-hostile things like locking down your data to prevent interoperability: https://eighty-twenty.org/2018/06/13/mendeley-encrypted-db
ufo · 2016-09-27
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
abecedarius · 2016-03-03
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
kd0amg · 2015-12-21
> 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-la…
YorkshireSeason · 2019-04-06
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-langu… [2] O. Kiselyov, Monadic Programming in Scheme. http://okmij.org/ftp/Scheme/monad-in-Scheme.html

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close