Implementing Clojure on a new VM - A Walkthrough

by Juan Facorro

About Juan Facorro

Juan Facorro

After working with ASP, C# and Java for years at the beginning of his professional career, Juan entered the world of functional programming (FP) through Common Lisp. Around that same time he found Clojure and he knew he had found something great. While looking for a job doing FP he ended up at Inaka learning and building systems in Erlang. Juan now lives in Stockholm with his wife, working for Klarna, building and maintaining Erlang applications.

Functional Calisthenics

by Jorge Gueorguiev Garcia

OOP habits die hard. Having trained my OOP skills through the years, I have applied unconsciously OOP techniques while writing code in functional languages. The quality of the code and test suffered because of it, leading to a very confused design and maintenance problems.

For OOP we have designed good guidelines to produce code that is readable and maintenable, like SOLID, DRY, … On top of it we have Object Calisthenics, for practicing the creation of good OOP Code. Functional Calisthenics have the same aim for the functional paradigm.

In this talk I will explain the rules, with examples in Clojure, on the hope that I can show how they lead to better functional code and to entice you to try them for yourselves.

Watch on YouTube


About Jorge Gueorguiev Garcia

Jorge Gueorguiev Garcia

Although he started early (with QuickBasic and Turbo Pascal), it took him a while to center into the developer way of living. Nonetheless, he has more than 10 years experience as software developer at different levels. His main experience is around C# and .Net, but has a keen interest in other languages, especially around functional programming.

In his experience two maxims have been revealed, Simple is Beautiful and Make Everyone's Life Easy. Because of them, his personal goal is to improve the experience of fellow developers.

They'll have to pry the REPL from our cold dead hands!

by Christophe Grand

The REPL is central to the Clojure flow. However some frameworks or targets make us abandon it because of a save-compile-run cycle forced upon us.
We have to stand up for our REPL and code back! We have to hone and cherish it! We have to push it where it has never been before! Join us, join the replistance!
In this talk I’ll cover experiments in pushing the REPL forward.

Watch on YouTube

About Christophe Grand

Christophe Grand

Christophe is a long-time Clojure enthusiast, independent software consultant/engineer, trainer. Co-author of Clojure Programming.

Reframing your next Single Page App

by Kenneth Kalmer

Building a rich single page app is really hard. re-frame, a ClojureScript wrapper over React, together with a beautifully simple flow of immutable derived data, makes this an absolute joy. It also sports a toolchain that is the envy of any developer who’s seen it, but can’t use it.

Watch on YouTube

About Kenneth Kalmer

Kenneth Kalmer

Kenneth is full stack web developer with nearly 20 years under the belt. He's currently enjoying the revitalizing experience of writing Clojure and valuing values. Outside of his day to day, he maintains and contributes to several open source projects, writes on his Open Sourcery blog, co-hosts the ZADevChat podcast and enjoys speaking at local meetups and conferences. He enjoys learning and sharing, meeting and connecting people and being involved.

Crunching Data with Onyx

by Vijay Kiran

Onyx is a distribute computation platform that helps crunching data in a hybrid (batch and stream) model. In this talk we explore the „ins-and-outs“ of Onyx and how to use to process data.

Watch on YouTube

About Vijay Kiran

Vijay Kiran

Vijay is a functional programmer in Clojure/Scala and Defn Podcast co-host. Lead Dangineer working with Big Data and Machine Learning Werkspot, Amsterdam.

GraphQL: Making JavaScript Simpler Than ClojureScript

by Dom Kiva-Meyer

GraphQL is the worst form of API, except for all those other forms that have been tried from time to time. — Winston Churchill

GraphQL is an emerging standard for describing and querying APIs. In this talk, we’ll explore GraphQL, including its quirks and imperfections, and learn how, despite its copious flaws, it makes building user interfaces far simpler than REST (even with re-frame). GraphQL puts data, and operations on that data, first and foremost, and, like React, is a perfect fit for ClojureScript. If you’re building user interfaces with ClojureScript and React but not GraphQL, you’re doing it the hard way.

Watch on YouTube

About Dom Kiva-Meyer

Dom Kiva-Meyer

Dom is a partner at (paren), a small software consultancy that specializes in Clojure, React, ReactNative, and GraphQL.

Dom has been cursed to run into problematic edge cases in everything he touches. He tries to solve some of them but must make do with complaining loudly about most of them. This talk fits squarely in the latter category.

Maria: a beginner-friendly coding environment for Clojure

by Dave Liepmann

A recurring problem newcomers have with Clojure is that one must learn everything at once: the host language, and stack traces, and a new editor, and functional programming, and and and…. What if we shielded beginners from the complexity of tooling, stack traces, and programming language theory? What if we got out of their way and let them feel the power of programming for themselves, right away?

Our project, named for educational pioneer Maria Montessori, aims to delay as many of these obstacles as possible so that new coders can get right to playing, building, exploring, and sharing with code.

In this talk, we’ll demo our live „code playground“, explain its pedagogical philosophy, share how it worked with first-time coders at ClojureBridge Berlin, and brainstorm what’s next.

Watch on YouTube

About Dave Liepmann

Dave Liepmann

Dave is a freelance software developer based in Berlin. He spends his time building systems with Datomic, maintaining Tufte CSS and an open-source Clojure library for MarkLogic databases, and building way too many fun side projects.

Writing tests that suck less - “What” vs “How”

by Torsten Mangner

Writing unit tests in Clojure is easy, since testing pure functions is trivial. But the more high-level our tests become, the more they have to deal with the state and side-effects of your application. It becomes harder and harder to write proper tests. And worst of all: they are harder and harder to understand and to maintain, greatly diminishing the value of those tests as a documentation of your software.

On the other hand Acceptance Tests can be seen as the most important tests of our systems. They should be easy to read and to reason about. These tests have to clearly communicate the intent of the code under test.

In this talk I want to show how you can use Clojure language features to write acceptance tests, that clearly separate what is tested from how it is tested. These tests will be easy to grasp and to reason about, providing great value as an executable documentation of your systems.

Watch on YouTube

About Torsten Mangner

Torsten Mangner

Torsten is an agile test consultant, who spent the last 12 years on projects as a Tester, Developer, Coach, Automation Engineer or Click Monkey.

He loves working in agile environments and is constantly trying to pivot his approach to quality, so he co-founded a consultancy agency dedicated to agile practices and software quality: @inoxio

On his current project, at one of Germany’s biggest online retailers, he is working in a cross-functional team. Together they are facing the challenges of developing, testing, monitoring and operating a polyglot microservices architecture.

Bear Traps: the Logging Edition

by Alexander Mann

Bear traps are those computer programming problems which are really, really tempting to dive into, but you know you just shouldn’t. They’re so common that we have multiple names for them: yak shaving, bikeshedding, bug lights, etc. These problems are especially troublesome because they generate so many solutions; we rarely approach them in organizations because we know they’re productivity cesspools.

In this talk we’ll go over one such problem: logging in Clojure/Java. We’ll cover the hoops, trials, and tribulations that CircleCI had to endure to arrive at a logging solution which… everyone in the engineering team still can’t agree on.

Watch on YouTube

About Alexander Mann

Alexander Mann

Alex started hacking at a young age, just on wood and metal... under the supervision of his one-index-finger-shorter-than-the-other grandfather. In high school he learned how to program... pic chips operating the innards of a life sized pinball machine. In undergrad he used his theoretical computer science background and fine arts major to build datamining art... and rationalize watching old vaudeville movies. As a junior programmer he built his first microservices in Clojure... talking to PHP... running in a Hadoop JVM. He likes cooking, climbing, people, his dog, writing run on sentences, and building the absurd/beautiful.

Class of 2013 University of Toronto. Senior Developer at CircleCI.


by Ray McDermott

Explaining jokes to people is tough and explaining them to a computer is even tougher. Join in the adventure as I live code a fully compliant spec for humour. Hilarity may ensue. Bring beer.

About Ray McDermott

Ray McDermott

Clojure programmer / architect, co-host defn podcast.

A Dynamic, Statically Typed Contradiction

by Andrew Mcveigh

The topic of static types in the Clojure community is often contentious, but why is that? Is it simply a matter of taste? Poor experience with other statically
typed languages? Or is there a deeper, underlying reason? If Clojure is such a powerful functional programming language, can we not have the choice?

And, what even is a type system anyway?

This talk will explore the Simply Typed Lambda Calculus, and it’s application in a „Hindley-Milner“ based type system with „full-program“ type inference. How it
can be mapped onto Clojure’s syntax, and how it can be used to „type-check“ a subset of Clojure code.

We’ll discuss how expressive static type systems compare to clojure.spec, and how they can be used as a tool to complement Clojure’s REPL driven workflow, not just to hinder the programmer. Finally we’ll discover strategies for mixing typed and untyped code.

Watch on YouTube

About Andrew Mcveigh

Andrew Mcveigh

Andrew is a software developer at GoMore, working mostly in Clojure. He's interested in experimenting with functional programming languages and implementing them.

Exploring Interactive Art

by Lisa Passing

Let’s take a look at the intersection of nature, basic AI and human-computer interaction. Can we be programming artists, using the browser as canvas and ClojureScript as our paint brush?

Watch on YouTube

About Lisa Passing

Lisa Passing

Lisa is a full-stack developer based in Berlin, hacking on video games and other things in JavaScript, Clojure(Script) and Rust.

Clojure and AI

by Michael Pershyn

Originally specified in 1958, Lisp became the favored programming language for artificial intelligence (AI) research.

Clojure is a dialect of Lisp. AI is booming today.
So what is the situation about AI and clojure?
Let’s look into history, current moment and …future?

Watch on YouTube

About Michael Pershyn

Michael Pershyn

Michael is a passionate software engineer with rich experiences in IT since 2005.

In his professional journey he contributed to linting engine for hardware description languages, analysed malware, ran a company, designed test-frameworks for implantable devices and worked in a technology incubator. Coming from C++/C#/Python background, he loves how Clojure shifted his paradigm and also how it helps him to tackle complex problems and provide elegant solutions.

Since 2013 he enjoys building BigData solutions using Clojure with Storm, Trident, Kafka, Hadoop and Aerospike.

DIY fast random generation of structured data

by Frederic Peschanski

Random generation of structured data is becoming a big thing in Clojure: think spec, test.check, etc. In this talk I will explain, in a maths-light livecode-heavy way, what makes a good random generator. I will livecode a simple DSL and a very fast random generator for tree-shaped structures in Clojure(Script). I will use a powerful technique known as Boltzmann sampling. Sounds hard? You’ll see … it’s beautifully simple and incredibly efficient!

Watch on YouTube

About Frederic Peschanski

Frederic Peschanski

Frederic is a professor and researcher in theoretical computer science at the UPMC University in Paris. Despite all his efforts to become a true polyglot, ultimately he has to accept that he is and will remain a Lisper! He thinks that through live-coding anyone (with some Lisp background) can reach high levels of abstract thinking!

Teaching Clojure

by Michael Sperber

Clojure is a great language for just about everything. So, naturally, we want to teach it to others. How should we do this? Unfortunately, as natural as Clojure and its focus on functional programming feel to us, it is not easy to teach well. Moreover, Clojure itself is not the best tool for teaching – the language was designed for professional developers, as are its IDEs. So what to do when we want to enable a fellow developer to hack in your project, as a professional trainer, or to teach students? This talk will report on the insights gained by the Program by Design and DeinProgramm projects, the tools and materials they have produced, and how to apply them in your teaching. Three points will be important – effective teaching requires a didactic strategy built on systematic programming construction, languages that support that strategy, and tools and languages that have been adapted to the needs of beginners. With that in place, your students will be up to speed in Clojure in no time!

Watch on YouTube

About Michael Sperber

Michael Sperber

Michael Sperber is CEO of Active Group in Tübingen, Germany. Mike is an internationally recognized expert in functional programming, with many publications and several books under his belt. Mike also maintains a strong interest in teaching programming: He's been teaching programming for 30 years, has designed introductory courses for several German universities, and has taught professional training in Clojure. He's a co-organizer of the annual BOB developer conference, which immediately precedes :clojureD in Berlin.

Introducing Structure

by Jan Stępień

Once you’ve got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let’s see what the best practices are and which Clojure libraries can help us.

Watch on YouTube

About Jan Stępień

Jan Stępień

Jan is a senior consultant at innoQ, where he works with people and with computers. He's based in Munich but you can run into him in Berlin too. Jan enjoys community events, where he often discusses functional programming, architecture, and testing. He organises the Munich Clojure Meetup; swing by if you're in town, we're a really friendly bunch.

From Things to Apps: Building a Realtime IoT Data Pipeline

by Andrei Ursan

IoT platforms promise to connect thousands of „things“ to applications that enable users to take better decisions and control their daily activities. Building such platforms entails dealing with a set of new challenges, such as storing large amounts of device data and realtime data delivery to connected applications.

In this talk Andrei will cover how they built core parts of Geeny.io, an IoT platform, using Clojure. The talk will focus on how they store and realtime deliver large amounts of things data.

Watch on YouTube

About Andrei Ursan

Andrei Ursan

Andrei is a Software Engineer at Telefónica Next, part of the polyglot team that builds Geeny.io, an IoT platform for consumers. He’s now enjoying the world of microservices, solving scalability problems and the challenges of IoT data pipelines. Having worked with a number of programming languages he finds Clojure and its simplicity to be his preferred tool.

Lightning Talks

Omnia – An arguably better Clojure REPL

by Robert Avram

One of the most interesting aspects of Clojure and Lisps in general, is their apparent symbiosis with REPLs. Languages of the LISP family are generally
associated with REPLs or REPL-driven development. Just by themselves however, REPLs are rather extraordinary playgrounds for experimenting with code. If one were to have a vague idea about an implementation, a typical immediate reaction would be to „“try it in the REPL““.
Sadly however, they suffer from certain limitations that reduce their usability when one desires to use them with more structurally complex code. Multi-line code is an example of one such complexity.

The goal of this talk is to shortly present „“Omnia““, a new REPL that is explicitly tailored both for supporting structurally complex code, but also for enhancing the general idea of „“experimentation““.

Watch on YouTube

About Robert Avram

Robert Avram

Robert is a software engineer currently using Clojure at REWE Digital for building (hopefully) sane and (generally) functional microservices. Academically, he is a passionate functional programmer, advocate of the functional paradigm and equational reasoning.

You might also say that he is in a quantum superposition of sorts, being an avid interestee and user of both functional rivals of the JVM, namely Clojure and Scala.

Why Clojure on the Erlang VM?

by Juan Facorro

There is already support for Clojure in multiple hosts (JVM, CLR and JS), each of these have their own uses cases, benefits and tradeoffs. This talk will be about what Clojure on the Erlang VM has to offer, where does it shine and where it is lacking, using the JVM as the main point of comparison.

Watch on YouTube

About Juan Facorro

Juan Facorro

After working with ASP, C# and Java for years at the beginning of his professional career, Juan entered the world of functional programming (FP) through Common Lisp. Around that same time he found Clojure and he knew he had found something great. While looking for a job doing FP he ended up at Inaka learning and building systems in Erlang. Juan now lives in Stockholm with his wife, working for Klarna, building and maintaining Erlang applications.

Debugging with re-frame trace

by Saskia Lindner

How often do you print something to the console? Your application does not behave as expected, so some piece of data has an incorrect value, but which one is it? Debugging is hard, but luckily, we can build tools to make it easier. The key is to present the application data in a clear and browsable form. We want coding to be more enjoyable so that we spend less time on fixing bugs and more on building things.
With re-frame trace, you can have a look inside of your application’s data. Information about events, subscriptions and renderings are being displayed while interacting with the application and it is possible to inspect the current app-state.

Watch on YouTube

About Saskia Lindner

Saskia Lindner

Saskia writes Clojure and ClojureScript at work and for fun. Her home of choice is Berlin and she finds her balance away from the computer through movement and music.

Self-care in tech

by Carolyn Stransky

Let’s face it, lack of self-care is a problem in the tech industry. We wear exhaustion like a badge of honor, promote unrealistic expectations about loyalty and often times we neglect our body, heart and mind’s most basic needs. In this talk, we’ll introduce the scope of the issue and explain how you can start building your own self-care toolkit.

Watch on YouTube

About Carolyn Stransky

Carolyn Stransky

Carolyn is an American journalist and JavaScript developer based in Berlin, Germany. There, she works as a technical writer for Contentful and teaches front end development in the evenings at ReDI School of Digital Integration.


Thanks again to our sponsors in 2018:

Doctronic provides software development services to publishers and other businesses.
In our projects, we heavily rely on Clojure.
Therefore we support the Clojure community and the advancement of Clojure.

LambdaWerk GmbH is a software development and Web engineering company in Berlin, Germany.
We specialize in data interchange and transformation systems for the U.S. managed healthcare sector.

Hello! We’re Zimpler, a FinTech company. Our vision is to provide the best payment experience in Europe, giving consumers control over their spending. Clojure is powering our system and we love it, that’s why we’re a sponsor.

innoQ offers strategic technology consulting, development and training. We combine pragmatic, lightweight technologies with sound architectural practices.

Acrolinx software helps the world's greatest brands create amazing content: On-Brand, On-Target, and at Scale.
Acrolinx is the only AI platform that uses a unique linguistic analytics engine to “read” your content, score it, and guide you to make it better. Our technology is transforming how brands create high-performing content.

Paren is a small software consultancy that specializes in helping startups move fast using Clojure[Script], React, ReactNative, and GraphQL. We've worked with top startups backed by Y Combinator, Techstars, and 500 Startups, and are startup founders ourselves.

We are a group of skilled programmers. We consult, educate and implement challenging software projects. Metosin is the Finnish first software house to specialise in Clojure.

Nubank is Latin America’s no.1 financial technology company, that has recently opened its 1st international engineering office in Berlin. We rely on the most innovative solutions in the market to create simple and transparent products that will help our customers take control of their finances. Clojure is the core language that enables our technology that empowers our customers.