PurelyFunctional.tv: What is your favorite feature of Clojure?
Nils Blum-Oeste: The extensibility of the language. This stems from being a LISP and the very thoughtful language design. Adding powerful libraries and functionalities like core.async, core.logic, transducers or clojure.spec without requiring big bang releases or affecting backwards compatibility is really great. Anglican, the Clojure embedded programming language I am going to talk about at EuroClojure is another great example for that.
Ultimately, my favorite “feature” needs to be this: Being a LISP.
PF.tv: What is your least favorite feature of Clojure?
NB: It is hard to say what my least favorite feature would be. Of course there are some tradeoffs that came with decisions like leveraging the JVM, for example not to have general tail call optimisation, having Java stacktraces and JVM startup times. Nevertheless I am quite happy with that pragmatic choice and think it is an excellent runtime environment.
Two other aspects on my mind would be richer ecosystems for distributed systems and Data Science in Clojure. In the era of microservices and distributed systems it seems to me like Erlang’s BEAM has capabilities that would be very useful be be readily available in the Clojure world too. For Data Science I find a lot to be missing to be a pragmatic environment for general purpose analytics work. Of course it is a wide field and it depends on what you want to achieve but it is hard to compete with Python and R if versatility and richness are important to your Data Science work.
Especially the Data Science topic is first of all driven by and constrained by social aspects and not technical ones. To see what the community thinks about this and figure out how we can develop this, I proposed an Unsession at the upcoming EuroClojure. I would like to encourage people joining that or get otherwise in touch if they are not at the conference.
PF.tv: Can you briefly describe your talk?
NB: The talk will be an introduction to Bayesian inference, probabilistic programming systems and the Clojure hosted probabilistic programming language Anglican. I am myself still new to that field and this will rather be a beginner friendly talk. Anyone who knows basic Clojure and does not immediately run away when encountering terms like “probability distribution” or “statistical inference” should be able to follow and enjoy. Some parts might require a bit deeper understanding of more advanced Bayesian inference or Clojure techniques to get the most out of it but there is very little of that.
PF.tv: Why did you choose this topic?
NB: Before I became a professional software engineer, mostly doing web, backend and data engineering work, I was a researcher doing my PhD on quantitative modelling of chemical and physical processes during volcanic eruptions. Having grown up with programming as a passion and hobby, I used programming a lot for data analysis and wrote some utils for myself for various tasks. So for me quantitative science and code have always been going well together.
Recently I got into Probabilistic Programming as a natural extension of what I already knew and did. With the deep domain knowledge I got as a scientific researcher, I found it appealing being able to leverage that knowledge in machine learning techniques and this is something that probabilistic programming is really good at.
Also, to be honest, I have quite some passion for fringe and freak technologies and opinions. I mean that in a very positive sense, like questioning common believe systems to enable paradigm shifts that really open up radically better approaches to problems. I consider Bayesian statistics to do that to statistics and Probabilistic Programming to Machine Learning in some ways, that is really something that makes it appeal to me, something that probabilistic programming is really good at. In the collaborative project GeoUnMix we are currently evaluating usage of Probabilistic Programming techniques in the context of geoscientific data analysis software.
PF.tv: What is one thing I will be able to do after watching your talk?
NB: You should be able to see if Probabilistic Programming is something that interests you, maybe even offers solutions to problems that you are facing as a software engineer or data scientist. You should have a solid foundation for how to get started with Probabilistic Programming, with Anglican in Clojure but also other systems if you prefer.
PF.tv: What are the three most important concepts I need to know to follow the conversation?
The most important concepts would be Bayesian inference, modelling generative processes and probability distribution sampling (for example Markov chain Monte Carlo. It is a wide and deep field though, it can be quite easy to get confused and lost in terminology and overlapping approaches. When you get into the research papers things can get very mathematical and abstract.
However I think when you understand the three aforementioned concepts you should be able to follow most conversations and be able to relate things that you don’t yet understand to those.
PF.tv: Where can people follow you online?
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
This fall we run the next ClojureBridge Berlin workshop to help increase diversity in the tech community. Please spread the word and get in touch if you would like to support us, for example as a sponsor.
PF.tv: What one feature from another language would you like to see in Clojure?
NB: Racket’s reader extensions would be cool, although this definitely strengthens the LISP Curse. It is really nice regarding language extensibility but to keep Clojure a language that is reasonable to use in the industry and avoid the risk of fragmentation (on many levels) I understand the pragmatic choice of not having such things.
PF.tv: What is your favorite Clojure function or macro?
NB: Let’s appreciate the simple, important things, I choose