Clojure Concurrency Tutorial
I get to do Clojure about ~60% of the time at work now, and it never ceases to amaze me how much easier it is to deal with concurrency than in vanilla Java.<p>Futures and Promises and core.async don't allow you to totally avoid planning out your project (I've been bitten slightly by core.async's `go` blocks behaving differently than Go's goroutines), but they are a godsend compared to dealing with manual mutexes and semaphores.<p>I still need to play with manifold; I hear that it helps deal with the IO-heavy stuff that core.async chokes on.