Hacker Blogs
Work in progress: 15,409 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #801

T

Thomas Leonard

Personal blog · roscidus.comprogrammingsystems

Thomas Leonard's personal blog at roscidus.com covers programming and systems. Since 2009, 82 different Hacker News readers have linked it 137 times, most often “Python to OCaml: Retrospective”. No feed was found, so read it on the site itself.

No feed foundVisit the blog
137mentions?
11recommend?
82HN people?
2009–2026first – last linked?
Links on Hacker News per year · peak 27 in 2014

Sometimes recommended · 11 of 40 sampled comments recommend it?

Why HN links it

Thomas Leonard's OCaml writing, especially the Python-to-OCaml rewrite series of 0install, is valued as the best case study of a gradual language migration, and his OCaml and capability-security posts are cited as references.

Recommended for · 11 comments
Called the best article of its kind and an interesting read; one commenter says it convinced them to learn OCaml.

Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Most-linked posts?

  1. Python to OCaml: Retrospective
    18 people · 22 mentions · first linked 2014-06-06
  2. Choosing a Python replacement for 0install
    13 people · 15 mentions · first linked 2013-06-10
  3. OCaml: what you gain
    8 people · 9 mentions · first linked 2014-02-13
  4. A Unikernel Firewall for QubesOS
    6 people · 7 mentions · first linked 2016-01-01
  5. /blog/blog/2013/09/28/ocaml-objects/
    4 people · 5 mentions · first linked 2013-09-29
  6. CueKeeper: Gitting Things Done in the Browser
    4 people · 4 mentions · first linked 2015-04-28
  7. Qubes-Lite with KVM and Wayland
    4 people · 4 mentions · first linked 2021-03-07
  8. Polymorphism for beginners
    3 people · 4 mentions · first linked 2013-12-21
  9. Python to OCaml: Retrospective (2014)
    3 people · 4 mentions · first linked 2022-12-30
  10. My first unikernel
    3 people · 3 mentions · first linked 2014-07-29

What Hacker News says?

  1. This sounds like a good idea. But change should happen gradually - no to parallel versions. Like author of zeroconf, when he was rewritting in in OCaml: http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml-ret...

    Comment linking /blog/blog/2014/06/06/python-to-ocaml-retrospective/

    on “Firefox.html: Rebuilding Firefox UI in HTML”
  2. Submitted My First Unikernel as a story · 267 points

    HN discussion
  3. In what way are [1] not “full OSes”? They’re minimal templates, but afaik they still run systemd, the kernel, etc. needed to boot the standard Linux systems they are. When I clicked the link I was expecting something like a unikernel, eg https://roscidus.com/blog/blog/2016/01/01/a-unikernel-firewa...

    Comment linking /blog/blog/2016/01/01/a-unikernel-firewall-for-qubesos/

    on “Multiple new macOS sandbox escape vulnerabilities”
  4. Submitted Python to OCaml: Retrospective as a story · 235 points

    HN discussion
  5. Web browsers are at least somewhat sandboxed - they have to be. (I'm not sure about adblock - it blocks some threats in an ad-hoc way, but it might add an exploitation vector of its own). QubesOS is only a little bit more sandboxed than a web page; it's relying on Xen (which has a poor security track record) and mostly still using commodity OSes written in C for the insides (though there is some hope e.g. http://ros…

    Comment linking /blog/blog/2016/01/01/a-unikernel-firewall-for-qubesos/

    on “How to Compromise the Enterprise Endpoint”
  6. Submitted OCaml: what you gain as a story · 198 points

    HN discussion
  7. lmm · 2016-06-08Recommends
    Rust's type system is a bit less awful, and it's better oriented towards immutability-by-default. Its concurrency model is more explicit (which is to say, more verbose to use, but gives you a lot more control). In a situation where Go is acceptable (i.e. GC is acceptable) you should probably be looking at OCaml (probably what I'd recommend; http://roscidus.com/blog/blog/2013/06/09/choosing-a-python-r... may be worth…

    Comment linking /blog/blog/2013/06/09/choosing-a-python-replacement-for-0install/

    on “Program your next server in Go”
  8. Submitted Python to OCaml: Retrospective as a story · 196 points

    HN discussion
  9. tlavoie · 2025-09-20Recommends
    I'd love to see software adopt strong capabilities-based models that enforce boundaries even within parts of a program. That is, with the principle of least authority (POLA), code that you call is passed only the capabilities you wish (e.g. opening a file, or a network socket), and not everything that the current process has access to. Thomas Leonard's post ( https://roscidus.com/blog/blog/2023/04/26/lambda-capabili…

    Comment linking /blog/blog/2023/04/26/lambda-capabilities/

    on “Less is safer: Reducing the risk of supply chain attacks”
  10. Submitted Replacing Python as a story · 173 points

    HN discussion
  11. dropbox, considering their size, is really in a position for a solid rewrite. ocaml ? http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml-ret... nim ? rust ? go ?

    Comment linking /blog/blog/2014/06/06/python-to-ocaml-retrospective/

    on “The new Dropbox”
  12. Submitted Using TLA+ to Understand Xen Vchan as a story · 148 points

    HN discussion
  13. Have you used OCaml? It's a quite different experience than C#. See http://roscidus.com/blog/blog/2014/02/13/ocaml-what-you-gain...

    Comment linking /blog/blog/2014/02/13/ocaml-what-you-gain/

    on “Dynamic type systems are not inherently more open”
  14. Submitted Qubes-Lite with KVM and Wayland as a story · 141 points

    HN discussion
  15. There's a larger amount of overlap with https://spectrum-os.org/ (which builds on Nix). https://roscidus.com/blog/blog/2021/03/07/qubes-lite-with-kv... is also really interesting (and discusses Nix and SpectrumOS) and itself was discussed at https://news.ycombinator.com/item?id=26378854

    Comment linking /blog/blog/2021/03/07/qubes-lite-with-kvm-and-wayland/

    on “Flatpak – a security nightmare – 2 years later (2020)”
  16. Submitted Isolating Xwayland in a VM as a story · 111 points

    HN discussion
  17. CodeArtisan · 2018-10-07Recommends
    there is such a list for Go here https://github.com/golang/go/wiki/FromXToGo The best article of this kind that i have seen is by far http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml-ret...

    Comment linking /blog/blog/2014/06/06/python-to-ocaml-retrospective/

    on “A Year in Clojure”
  18. Submitted A Unikernel Firewall for QubesOS as a story · 111 points

    HN discussion
  19. I wrote a few case studies here: https://www.hillelwayne.com/post/business-case-formal-method... . They're case studies that are targeted towards bosses, so focus on how it saves time and money. A couple more I know of: * https://andy.hammerhartes.de/finding-bugs-in-systems-through... * http://roscidus.com/blog/blog/2019/01/01/using-tla-plus-to-u... * https://www.youtube.com/watch?v=oMSmkRGzQ64

    Comment linking /blog/blog/2019/01/01/using-tla-plus-to-understand-xen-vchan/

    on “Learn TLA+ (2018)”
  20. Submitted Linux mode setting, from the comfort of OCaml as a story · 84 points

    HN discussion
  21. lacampbell · 2017-01-08Recommends
    Constructive criticism is nothing to shy away from or be defensive about. Having criticism for something doesn't mean I think it's spam or off topic. Again, for an example of a language X-to-language-Y rewrite story with some substance, that did a lot to boost the image of the language in many peoples eyes, see: http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml-ret... I'd love to something like that the next…

    Comment linking /blog/blog/2014/06/06/python-to-ocaml-retrospective/

    on “The Piston image library is now pure Rust”
  22. Submitted Securing the Unikernel as a story · 84 points

    HN discussion
  23. Go is not a good example of a type system - its types are limited and restrictive and really will stop you writing some good code that you wanted to write in Python. If you want a Pythonic language with static types, maybe take a look at OCaml (or my personal favourite, Scala - though that language suffers from a bunch of warts for the sake of JVM compatibility). http://roscidus.com/blog/blog/2014/06/06/python-to-oc…

    Comment linking /blog/blog/2014/06/06/python-to-ocaml-retrospective/

    on “Myths of Enterprise Python”
  24. Submitted Visualising an Asynchronous Monad as a story · 80 points

    HN discussion
  25. Firejail with spawning nested Xorg works fine for me, including text-only copypaste between "host" and "guest" and automatic file synchronization through bind-like mounts. For some firejails I also use Linux network namespaces to control traffic going through taps. My introduction to this approach was the alternative Gentoo handbook by Sakaki[1], but the principles would apply on any distro. There's also a very inte…

    Comment linking /blog/blog/2021/10/30/xwayland/

    on “FreeBSD Jails for Fun and Profit (2020)”
  26. Submitted OCaml: The Bugs So Far as a story · 76 points

    HN discussion
  27. It depends on which lightweight OS and which unikernel. But e.g. a stripped down Linux will still have a huge amount of C. If you're going to write your kernel in something safer, then you might as well make a unikernel, rather than creating a kernel/userspace split. It's hard to see how you'd get a traditional OS stripped down anywhere close to e.g. the mirage-firewall unikernel ( http://roscidus.com/blog/blog/2016…

    Comment linking /blog/blog/2016/01/01/a-unikernel-firewall-for-qubesos/

    on “Docker Acquires Unikernel Systems as It Looks Beyond Containers”
  28. Submitted Optimising the Unikernel as a story · 69 points

    HN discussion
  29. Off-hand, Mirage OS comes to mind - it completely upends how you would "build" and "run" back-end services, and it is written solely in a GC'ed language - OCaml. And all GC'ed languages are not equal; see https://roscidus.com/blog about a Linux package manager ported from Python to OCaml for performance reasons (followed by an OCaml reimplementation of a component in a virtualized OS). Some infrastructure, e.g. data…

    Comment linking /blog

    on “Four Years of Rust”
  30. Submitted CueKeeper: Gitting Things Done in the Browser as a story · 44 points

    HN discussion

Search all of HN for roscidus.com

Linked by the same people?