Asher Coren Clojure/conj 2016 Interview

Asher Coren will be giving a talk at Clojure/conj 2016. He and his team have created the world's first web-based audiometer using ClojureScript at Audyx.

Follow him on GitHub and Stack Overflow. How did you get into functional programming?

Asher Coren: When I got to Audyx two years ago, it was already after the VP R&D had decided to build the app with ClojureScript. Coming from a world of Java and JavaScript, this was my first encounter with functional programming. It took some time to get the idea, and it is still learning in progress, but the more I work with it, the more I enjoy the great benefits of it. What is your talk about?

AC: Writing a large scale client side web app all in ClojureScript involves many challenges. I will talk about some of the challenges we faced, and how we handled them. Audyx sounds like quite a feat of engineering. What were some of the biggest challenges?

AC: There were many challenges involved in building a web-based Audiology tool. From the audiology aspect, it was necessary to have complete control on the level and quality of sounds produced by the app. From the technology aspect, one of the biggest challenges was to work with HTML5 JavaScript APIs and objects, while trying as much as possible to decouple them from the heavy ClojureScript code. Were there any difficulties working with such a large ClojureScript code base?

AC: The main difficulty was keeping the code well structured, with the correct separation between the different components. In a code base with close to 300 ClojureScript files, it is very important to have a well-organized structure. This also affects the compilation time, where a change in code of one file requires recompiling of all the files that depend on it. How did you come to the decision to use ClojureScript?

AC: Well, as I said before, it wasn't really my decision... it took me quite a long time before I fell in love with ClojureScript. What do you hope people will take away from the talk?

AC: When coming to develop a web app, JavaScript is always the default go-to language, and one may ask himself why use something else other than what the web is build for. I hope my talk will show that the advantages of ClojureScript make it worth while. What concepts do you recommend people be familiar with to maximize their experience with the talk?

AC: Some of the things I will talk about will be common with Clojure, so some knowledge of Clojure will suffice to understand a major part of the talk . Some of the web specifics I will discuss are a couple of web frameworks: Angular and Om, some HTML5 WebAudio code, and the browser developer tools, mostly the developer console and the local-storage. What resources are available for people who want to study up before the talk?

AC: A solid understanding of Clojure, and some basic knowledge in web development should suffice to be able to follow along the talk. For further reading: The official ClojureScript page, the OM documentation, Figwheel, Chrome Dev Tools. Great live online repls are and, of course,, where one can see how the ClojureScript code gets translated into JavaScript. Where can people follow you online?

AC: I'm not the kind of person who tweets and blogs about technology. The best ways to follow me are via my GitHub page and my StackOverFlow profile. Are there any projects you'd like people to be aware of? How can people help out?

AC: It's super easy to contribute to Clojure and ClojureScript. There are many useful libraries that could use some more contributors. Also, the more people that use ClojureScript, the easier it will be for people to join on.

AC: I can also recommend my friend's blog where he discusses many interesting things about Clojure and ClojureScript. A great way people can help Audyx is by starring some issues we opened on the Chromium project. The WebAudio API is very new and not so commonly used, so every so often we find some annoying bugs in Chrome. Here are a few examples: issue 638823, issue 659641, and issue 647974. Where do you see the state of functional programming in 10 years?

AC: Although functional programming has been around for a very long time, I think the Clojure ecosystem finally gives the opportunity for functional programming to become a serious player in the programming world. The fact that Clojure can be used in many different environments gives it a strong advantage. If functional programming were a superhero, what superpower would it have?

AC: Detachable limbs: If the functions are the limbs of the code, pure functions can be moved around and used anywhere.