Last week, I gave a talk about Clojure at Functional Programming Brno meetup.
This was my first meetup talk and my first public Clojure presentation too. I’m very grateful for the experience. It was fun, and I met a couple of interesting people.
Kiwi.com and especially Jiří Nečas helped a lot with meetup organization. They provided free beers and some food. It was a first-class experience - I truly appreciate everything they did.
Also, all the attendees were very kind and patient with me. Big thank you to everyone, especially Tomáš Janoušek and the former organizer Matej Kollár.
I hope to find more speakers for the next Functional Programming Brno meetups. If you have any experience with FP and would like to share it with us, please, send me a message via Meetup.com.
My presentation was based on a wonderful talk Clojure in 10 Big Ideas by Stuart Halloway. I added a brief Clojure introduction at the beginning and some bits about Clojure in the real world at the end. I reduced the number of ideas to seven (leaving out core.async, protocols, and logic programming).
The presentation focused on people unfamiliar with Clojure. I tried to cover quite a few concepts, and that’s why it was so long (1h 45 min). In the future, I certainly need to make my talks shorter.
I divided the talk into four parts:
A very brief introduction to Clojure syntax using simple hello world covering basic function definition.
A quick tour of Clojure (dynamic, functional with an emphasis on immutability, LISP, hosted on the JVM, etc.).
I also mentioned important Clojure ideas:
Separation of identity and state
The core of the presentation. Seven ideas selected from Stuart’s 10 Big Ideas:
EDN
Persistent Data Structures
Sequences
Transducers
REPL
ClojureScript
Spec
After each section, I demonstrated the examples in REPL. Most of them were very basic. After the Sequences section, I included bit longer demo: Game of Life. I also demonstrated the Game of Life visualization in a browser after the ClojureScript part.
A summary of tooling, "problems" with Clojure (e.g. error reporting), real-world Clojure usage, and community resources.
I used the results of Clojure survey: State of Clojure 2016 Results and Analysis.
Slides, audio & video recordings are available:
Video (screen) recording: https://youtu.be/YeUOWaM_Gk8
Slides: https://www.slideshare.net/FPBrno/fpbrno-20171024-clojure-a-functional-lisp-on-the-jvm/
Audio recording: https://soundcloud.com/fpbrno/fpbrno-clojure-presentation-oct-24-1809
Clojure samples from the presentation: https://github.com/jumarko/presentations/tree/master/clojure-presentation/src/clojure_presentation
Game of Life in ClojureScript: https://github.com/jumarko/presentations/tree/master/game-of-life
Almost all the stuff presented at the meetup come from one of the following resources: