PurelyFunctional.tv: What is your favorite feature of Clojure?
Fergal Byrne: If there's one thing, it has to be the immutable map. A map allows you to do almost anything, and importantly it allows you to declaratively inject data to be used elsewhere in your code.
For a longer answer, I'd recommend Stuart's updated Clojure in 10 Big Ideas.
PF.tv: What is your least favorite feature of Clojure?
FB: Well, you can't really criticise a thoughtfully-designed Lisp. My least favourite aspect of Clojure is its often unfriendly and uninformative error messaging story, which it inherits from the JVM and JS VM. Hopefully spec and some input from elm will improve this in future.
PF.tv: Can you briefly describe your talk?
FB: Our talk is an introduction to a new AI architecture called the Feynman Machine, and a report on our project to combine its strengths with the benefits of Clojure and Clojurescript.
The Feynman Machine is based on a theory which explains why and how your brain learns about the world so efficiently. This theory uses some deep results from Applied Maths, Neuroscience and Machine Learning, but we'll be skipping the detail and talking about what you get out of it. At Ogma, we've been building a new class of learning technology which takes these ideas and applies them along with tricks and techniques from existing work in machine learning. We'll be showing how we've simplified and abstracted the brain model into what we call a Sparse Predictive Hierarchy, which forms the architecture of today's Ogma software.
The second part of the talk is about bringing this new technology and the Clojure ecosystem together. Hopefully, it's also more generally about "doing real science in Clojure". We'll talk about a few approaches we've decided to make part of the project, and how we've done so far. We'll show working Clojure code and compare it with similar code in the other languages Ogma's software supports.
PF.tv: Why did you choose this topic?
FB: I (Fergal) have been working on the theory behind this since 2013, and Ogma was formed early in 2016 to combine that with the best of machine learning and high-performance computing and build a set of useful and powerful technologies for AI. Louise and I want to explore what we get when we bring Clojure and its ecosystem into that.
PF.tv: What is one thing I will be able to do after watching your talk?
FB: You'll have an understanding of how the Feynman Machine uses inspiration from Nature, from Mathematics, and Machine Learning to allow you to build powerful, simple systems to solve complex, real-world problems. You can download Ogma's existing software on our github page right now, and the library, demos and animations we're building will be available in source-code form in due course.
PF.tv: What are the three most important concepts I need to know to follow the conversation?
FB: You don't really need to know much in detail to follow along. Just an open mind and common sense.
The details of the theory are only important if you are interested in them, it's really the implications that matter. The central concept is that you can take a stream of data over time from some thing in the world, and use a simple mechanism to build predictive models of it, solely from the data stream. People have been applying the mathematical concept behind this for decades, but always "by hand", and only on one problem at a time. This technology allows you to just build a network and give it your data, and it'll very efficiently start producing information of value.
As far as the Clojure/Neanderthal side of things, we'll be mentioning how you get from Clojure code to the stuff that's running on the CPU or GPU, but much of the point is that our library and Neanderthal look after those details and present an idiomatic, simple but fully-functional Clojure way of using it.
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?
FB: We'd be delighted if anyone interested in exploring the technology started with the current C++ and OpenCL software on Github. We have bindings for Python, Java and C# right now, and we'll be adding this Clojure code to that soon. We're particularly interested in anyone who has a problem in say industry, medicine, or applied sciences and can't get existing machine learning systems to help out. People are encouraged to contribute to our software via a contributor agreement, details are in the repos.
PF.tv: What one feature from another language would you like to see in Clojure?
FB: It seems that someone somewhere has either ticked everything on my wish list or it's in progress! A few things just can't be done at the language level, because of the underlying VM or due to fundamental (and correct) design decisions by Rich Hickey and the team, but that's fine - you can just learn some really interesting languages like Elixir and Haskell and enjoy those features there.
I would like to see Elm's quality of error messaging, and we might see that using spec.
PF.tv: What is your favorite Clojure function or macro?
FB: Maybe str. If your program is all data, and your data is all immutable, then you can see everything you need just by printing stuff out. That's what str let's you do.