Toni Vanhala

ClojuTRE 2019 — Interview with André Staltz

ClojuTRE 2019 is just four weeks away as I'm writing this. I'm seriously excited about how amazing stuff we have this year!

ClojuTRE 2019 offers more than just excellent talks. Each morning, we start the day with trainings. One of them is given by André Staltz, who told us a few things about his background, the training, and his current interests in open source development.

Toni Vanhala: How did you get into functional programming?

André Staltz: It was actually through Oleg Grenrus (editor's note: who's speaking at ClojuTRE 2019) in Futurice who in 2014 was presenting a lot of functional (and functional reactive) programming ideas in Futurice internal meetings that I got interest in the topic. There was something about the topic that felt very new yet simultaneously familiar (given my background in Mathematics at the University), and this was intriguing. A mathematical approach to programming always sounded to me like a good idea, but I hadn't been introduced to functional programming before 2014.

TV: Which languages or frameworks you find exciting?

AS: Off the top of my head, the first one that comes to mind is Koka, a new experimental language that tries to achieve functional purity and algebraic effects, through a familiar JavaScript-looking imperative syntax. Also, I'm increasingly more fond of Rust and how it's becoming the "next C".

TV: Your training at ClojuTRE is about building abstractions in Javascript. What are the key concepts that I will learn?

AS: This workshop will cover Iterables, AsyncIterables, Observables, Promises, async-await, and Callbacks. Even though these may sound familiar, what's new is the way these concepts will be presented. There is a unified theory that underlies all these abstractions, and if you learn that, you'll be comfortable dealing with all of those. In my experience teaching this a few times, everyone who has taken this training has learned something new.

TV: Does thinking about and practising these concepts make me a better programmer? Why?

AS: One of the problems with using abstractions is using them in the wrong context or for the wrong purpose. Most programmers know how harmful abstractions can become if they are used incorrectly and extensively. This training will show why and where to apply each abstraction in the right context. Also, it will show that many abstractions are unavoidable and already present in your code. It's better to recognize them and manage them well.

TV: What interesting projects are you currently working on?

AS: Actually, related to the training topic, there is a library called pull-stream, an alternative to AsyncIterables, which needs some new utilities. I've been working on pull-cpu-throttle because I want to improve the user experience of my main project, Manyverse, a decentralized and mobile social network. Also related to the training topic, I've been maintaining Callbags, a hybrid Observables/AsyncIterables standard for JavaScript callbacks.

TV: How can people find you online?

AS: Just and from there people can find my other accounts on the web.

Thanks André and see you at ClojuTRE! Don't hesitate, read more about André's training, and sign up! If there's a bunch of you coming, you can also write to us at

Toni Vanhala