Learn the fundamentals of core.async, a concurrency library for Clojure and ClojureScript that gives you tremendous power.
Screencasts, Whiteboards, and Slides produced to help you learn
Clojure core.async provides basic building blocks for communication and coordination. This course explores ten patterns you can easily implement using those building blocks.
Pragmatic and in-depth guides to a topic.
From Agents to Executors, this guide covers all of the important concepts for concurrent programming in Clojure. It includes a comprehensive catalog of concurrency primitives.
Curated selections of courses on a specific topic
If you’re looking to watch absolutely all of the courses on this site, I’ve put together a suggested order. Start at the beginning and just watch everything straight through. Be sure to click those checkmarks to track your progress.
Web development is an extremely popular use for Clojure. If you want to learn web programming, here are the courses I recommend you watch. I am assuming you already are familiar with Clojure. Be sure to click those checkmarks to track your progress. Backend You’ll want to learn Ring. It is a unifying set of […]
Parts of courses on specific topics
In this lesson, things start getting serious. You’ve hired more workers, now they need to work together to build cars. And the common technique in factories is to use an assembly line. Learn to create patterns of communication between your processes using channels.
Backpressure is incredibly important in a distrubuted environment. Our servers can face more load than they can handle. Web requests are cheaper to produce than to respond to. The best practice when faced with more requests than you can handle is to immediately respond that you can’t handle it so that you can continue processing the requests you’ve already accepted.
This lesson addresses some issues that came up with the switch to conveyor belts. How do we tell everyone to stop working when the trucks are loaded and ready to ship? We don’t want them to keep building cars. Learn about how to close channels so that they don’t accept any more work.
In this lesson, we finally consolidate the work and improve scalability by analyzing the diagram of our assembly line.
Central to any modern factory are conveyor belts. In this lesson, you learn about buffers, which are like conveyor belts between go blocks.
[Core Async](https://purelyfunctional.tv/guide/clojure-concurrency/#core.async) is a library for concurrency brought to us by the core Clojure team. I love it because it’s a game changer for complex concurrent tasks. It’s very versatile and can be used to implement many common patterns.
PDFs, code, and other downloads to help you learn
Overwhelmed by the number of functions in Clojure core.async? This reference sheet shows you just the essentials in an easy-to-follow format.