Top all-time · #8925
Martin Trojer
Personal blog · martintrojer.github.ioprogramming
Martin Trojer writes Martin_Trojer, a personal blog at martintrojer.github.io about programming. Since 2013, 9 different Hacker News readers have linked it 12 times, most often “Core.async and Blocking IO”. It is still writing: the last post was on 2026-05-09, and you can follow it by feed.
Too few sampled comments (5) to say how often HN recommends it.?
Why HN links it
HN readers link Martin Trojer's Clojure posts on core.async versus Go concurrency, blocking IO and thread starvation, and tail calls in Clojure. Commenters cite them as background on these topics.
Summarised by Claude from a sample of 5 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Core.async and Blocking IO2 people · 3 mentions · first linked 2013-07-12
- Beyond Clojure: Prelude2 people · 2 mentions · first linked 2016-04-26
What Hacker News says?
I used to feel this way until I realized the limitations of core.async. In Go I don't have to worry about whether the particular functions I'm calling, especially IO-related, are blocking or not, as Go will create new lightweight goroutines as necessary to deal with all that. With core.async, if I use blocking IO inside of a coroutine I risk causing thread starvation. See http://martintrojer.github.io/clojure/2013/0…
Comment linking /clojure/2013/07/07/coreasync-and-blocking-io/
on “Why Go Is Not Good (2014)”Submitted Core.async and Blocking IO as a story · 7 points
HN discussionWell, I think I stumbled on this article way back when I was originally porting, and it looks like it still holds: https://martintrojer.github.io/clojure/2014/03/09/working-wi... . While core.async pays homage to go, it's simply not go, and it's harder to work with, and generally the changes are going to be more invasive, and looking around at modern resources, I don't see anything that indicates much has changed. S…
Comment linking /clojure/2014/03/09/working-with-coreasync-chaining-go-blocks
on “Six Years of Professional Clojure”Submitted Some thoughts on clojure.spec as a story · 6 points
HN discussionExactly. I once read a great article [1] written by Martin Trojer I think, it was about recursion in Clojure. EDIT: [1] https://martintrojer.github.io/clojure/2011/11/20/tail-calls...
Comment linking /clojure/2011/11/20/tail-calls-in-f-clojure-and-scala
on “Racket – Lisp beyond Clojure”Submitted Beyond ClojureScript: Elm as a story · 5 points
HN discussionJust one caveat to the use of core.async as a processing pipeline (as in section 6: Callbacks), make sure you're taking extra care to handle exceptions. Since the exception occurs in a separate thread, it will happen silently and will cause your pipeline to stall. Some recommended reading for how to handle such a scenario: http://martintrojer.github.io/clojure/2014/03/09/working-wit... https://github.com/zachallaun/…
Comment linking /clojure/2014/03/09/working-with-coreasync-exceptions-in-go-blocks/
on “Master Concurrent Processes with core.async”Submitted The Clojure REPL; a blessing and a curse as a story · 3 points
HN discussionIt's been a while since I used Clojure, so I apologize if what I'm saying is wrong or out of date. Having used both Clojure and Go there are some significant differences in how coroutines work in each. For instance, in Go making a blocking system call inside of a goroutine "just works" as Go will create additional goroutines as necessary. But if you do the equivalent in Clojure, you risk thread starvation. "However…
Comment linking /clojure/2013/07/07/coreasync-and-blocking-io/
on “Are Go maps sensitive to data races?”Submitted Beyond Clojure: Prelude as a story · 2 points
HN discussionSubmitted Non tail-recursive functions in core.async go blocks as a story · 2 points
HN discussionSubmitted Beyond Clojure: Prelude as a story · 1 points
HN discussion