Heart of Clojure - Talks & Workshops

September 18 & 19, Leuven, Belgium.

Opening Keynote (TBD)


We are excited to have Lu join us to deliver the opening keynote. Stay tuned for more details.

Responsible Data and AI



The Wonders of Abstraction


Fish are to water as programmers are to abstraction. We swim in it all day, barely aware of it. We say “abstraction” all the time, but have we thought about what it means?

I’ve spent 20 years asking how computers–that move electrons around in a complex circuit–do work useful to humans. Abstraction is the key. In this philosophical talk, we explore this wonderous process called abstraction. We’ll wade through the everyday uses of the term, paddle out to formal definitions, and dive into why some abstractions give us incredible leverage. Along the way, we’ll see how abstraction is at the heart of getting computers to do useful work. I hope you leave with a deeper appreciation of the wonders of programming.

An Exceptionally Janky Tale


Gather ‘round, friends, it’s story time! Hear the adventurous tale of plunging into unknown depths and meeting new friends along the way.

Meanwhile, in the interludes, we’ll be plunging ourselves deep into the jank compiler and implementing our story’s chapters: throw, try, catch, and finally. We won’t shy away from the C++ involved, so be ready for a highly technical discussion.

By the end of the talk, you’ll not only have your heart warmed, you’ll also have a clear idea of how a non-trivial compiler feature is implemented, from parsing through to code generation.

An introduction to application.garden


Learn how to use application.garden to quickly deploy a working application with hassle-free authentication, cron jobs, email handling, and a live REPL.

Babashka in practice


What is Babashka? Why should you care?

In 90 minutes you’ll get an introduction to Babashka, and hands-on experience with it through a shared programming experience with the rest of the group and two veteran Clojure programmers. You’ll learn what Babashka is, how it fits in with JVM Clojure, and how to work with it in a practical sense.

The workshop aims to be a joyful learning experience where we’ll get to know each other better and learn more about REPL-driven programming, testing Clojure, and, of course scripting with Babashka.

Beyond the Hype: Obstacles on the Path to Clojure Adoption


To the mainstream public (devs and business folks), clojure is either seen as an arcane lisp, or as a hyped language. This perception of Clojure is further solidified by the fact that it’s hard to get started with Clojure.

Clojure definitely has a very passionate community and undeniable strengths, then what is holding it back?

By openly discussing these issues and collborating on solutions, we can propel Clojure beyond it’s current position as a powerful defacto business choice. There are many low hanging fruits and quick wins we can do to get the ball rolling.

Build a Desktop Application with Humble UI


Humble UI is an ongoing project to build desktop-class UIs in Clojure without help of the browser.

In this workshop, we’ll try to build a new graphical desktop application that works across all three OSes from scratch.

Build full-stack ClojureScript apps with and without Sitefox


Interested in building “full stack” ClojureScript software running on the Node ecosystem instead of Java? I’ll take you step by step through different options for going all-in on ClojureScript. We’ll start with simple backend-only websites and work our way up to apps with both frontend and backend components. We’ll learn about shadow-cljs (front and backend), Nbb, Squint, Scittle and my web framework, Sitefox. We’ll look at the tradeoffs of different approaches and learn to get web projects up and running quickly and with minimum fuss.

Building Conversational Speech Annotation Tool in Clojure


This talk will be a story of inheriting a bespoke text editor with annotation features written in ClojureScript and turning it into a number of things. It will include horror stories of debugging in-house Specter macros running in browser as well as calming stories of how nice it is to work in a code with a good test coverage even if it is difficult to approach, or how enjoyable it is to create interactive audio annotation tooling in ClojureScript.

Cursive office hours

Office Hours

Come with all your questions about Cursive! I have developed Cursive from the very start, and I’d love to hear your questions, see how you’re using Cursive and (hopefully!) help you with any problems you’re experiencing. Whether you’re an experienced Cursive user, an experienced Emacs user curious about why anyone might want to use anything else, or anywhere in between those two points, I’d love to hear from you and help with any issues you’re experiencing.

Klor: Choreographic Programming in Clojure


Over the past five years, the European Commission has invested over 250M EUR in its Next Generation Internet initiative. As part of this ambitious program, we are developing a new free and open-source core technology for distributed systems – in Clojure, of course.

Living With Legacy Code


A look into maintaining backward compatibility in Clojure codebases.

Open hearts for diversity


As women in tech I am used to being the only women in the room. I am used to feeling different. At time this raises the question: Do I belong here?

Working on a team with people of different age, gender, sexual orientation, religion, physical and mental abilities, ethnic and social background helps me to realize that we are all different and we all belong. Unfortunately, many teams are less diverse and not all people get to make this experience. Therefore, it is important to create opportunities to learn about each other and to become aware of similarities and differences.

In this interactive session we share experiences and talk about challenges. The goal is to raise awareness for the topic, to hear each others stories and to support each other. The session is open for all! I invite you to open your hearts for diversity and connect with each other!

Our Lovely Hosts


Carmen and Jordan will be your esteemed hosts. They will guide you through your Heart of Clojure journey, warm up the crowd, and make sure speakers get the introduction they deserve.

Richer SQL — Steering SQL's Future Towards Clojure's Philosophy



…SQL has been celebrating its 50th birthday this year, and this original query still runs flawlessly across countless implementations - an impressive milestone in the world of software that nobody could have predicted back in 1974. SQL is the most potent example of declarative programming and backwards compatibility.

However SQL’s continued dominance and legacy has not been without significant downsides. Mountains of complexity has been built, and continues to be built, upon its sprawling, anachronistic designs.

In search of some antidote to SQL’s myriad issues the Clojure community has always been a vibrant melting pot of visions and attempts to tame SQL or surpass it entirely.

The XTDB team has spent the past 3 years working on evolving SQL to make it more compatible with Clojure’s philosophy and in this talk we will take a tour through how this is achieved and where it might lead.

Sailing with Scicloj: A Bayesian Adventure


The presentation, created in collaboration with Daniel Slutsky and the Scicloj community, discusses the Scicloj project and the data science tools for Clojure. Sami Kallinen shares his personal journey of learning to sail during the Covid-19 pandemic. The main focus of the presentation is on Polar diagrams, which are crucial for assessing a boat’s performance, important for racing tactics and choosing the optimal sailing routes. The speaker has collected and analyzes various data points to create these diagrams for a 46-year-old Finnish half-tonner cruising sailboat with a classic design. The primary focus is on showcasing how Clojure’s data science tools are used to analyze data and construct models, especially through Bayesian analysis.

Squint: a taste of Clojure for JavaScript devs


Diving head first into shadow-cljs and the surrounding ecosystem can be daunting. What if we could incrementally introduce Clojure into our existing JS applications from the safety of our favourite frontend frameworks like React or Svelte to tame its more complex logic - hopefully with the help of a trusted REPL

Staring into the PLFZABYSS - From the IBM AS/400 to Clojure & Datomic


Starting in 2021, we naively took on the task of bringing mission-critical legacy systems in the automotive logistics sector into the modern era.

This experience report covers our eventually successful live migration from the IBM AS/400 to Clojure and Datomic. We look at both the technical and human organizational challenges we faced and share our failures and learnings along the way.

Thousands of globally unique 8-character column names, green-screen terminal UIs, skunk work projects and personal drama — this talk has it all!

The Shoulders of Giants or Uncovering the Foundational Ideas of Lisp


In the world of computer science, we often acknowledge that we are standing on the shoulders of giants. However, the identities and contributions of these giants are sometimes less known than we might expect. While many Lisp practitioners recognize John McCarthy as the inventor of Lisp, the story of the foundational ideas that enabled its discovery remains largely untold. This talk aims to explore two essential questions: Why do we know so little about the foundational ideas that enable our practice, and what are those ideas and their connections?

TimeLines: Crafting a Live Coding Musical Instrument with & out of Clojure


TimeLines is an ongoing PhD research project in the design and implementation of Live Coding musical instruments. Live Coding is a creative practice that, at its core, involves real-time Human-Computer Interaction (HCI) with a live and dynamic computational system - as much an instrument as an open-ended instrument-building workbench. TimeLines follows a purely functional approach to music, treating both the synthesis of sounds and of musical structure to be functions of just a single numerical argument: time itself. All time-varying behavior is encoded in those pure functions, enabling the potential for massive parallelization and static analyses. Clojure’s Lisp-heritage’s metaprogramming powers are greatly relied upon to make an instrument that is capable of creating and extending itself.