We warmly invite you to our Appsflyer Clojure Meetup.
— Morri Feldman will speak about “Channels and macros in core.async”
— Max Vovchuk will present “Manifold basics in nutshell”
About speakers from their own words:
Morri Feldman: “I joined AppsFlyer as the first member of our data team about 4 years ago. Before AppsFlyer, I was in academia training as a Biophysicist. Since joining AppsFlyer I have been loving the fast pace of development and exciting technologies that we use to handle the enormous scale of our data. Most of my coding at AppsFlyer is in Clojure with some work in Scala for our Spark jobs. The functional paradigms in Clojure really help us to quickly write correct code that performs well in a multi-threaded environment.”
Max Vovchuk: “I have worked as a Software Engineer in different outsourcing/outstaffing and product companies using various programming languages like PHP, Ruby, Clojure etc. Now I’m working in Appsflyer data team. I came to Clojure like 2 years ago from Ruby community, inspired by Clojure’s data-oriented approach, homoiconicity, fast prototyping, non-verbosity, simplicity, and interactive programming and found this language great for full-time programming, when you don’t need static typing.”
Few words about Core.async and Manifold:
Clojure’s core.async library implements Tony Hoare’s concurrent programming model Communicating Sequential Processes — CSP. CSP is probably best known from its implementation in the Go programming. In the CSP programming model, independent processes communicate synchronously across channels. The runtime is then responsible for shifting work on and off of worker threads as needed. Such a programming model allows for achieving good concurrency and utilizationof modern multicore processors without getting trapped in “callback hell.” Clojure core async provides the two pieces required to program in the CSP style — channels and the equivalent of Go’s goroutines. The channels facilitate interprocess communication and the goroutines transform sequential code to run concurrently. Surprisingly the goroutine in Clojure is implemented not as a core language feature but as a macro — the “go” macro — that rewrites any provided code into a state machine which can park rather than block a CPU thread when there is no work to do. We will examine core.async’s channels and its “go” macro in some detail as well as look at some real-world examples of using core.async channels with and without the “go” macro.
Manifold is a great library created by Zach Tellman. It provides a very powerful toolkit for asynchronous programming in Clojure. This tech talk is a high-level overview of manifolds main abstractions with examples of common use cases.