Clojure/Conj 2026 Workshops

Table of Contents

Sibling to the Clojure/Conj 2026 overview. The workshop day is Wednesday, September 30 — two three-hour blocks. Program: workshops · full schedule · registration.

1. Wednesday, September 30 — workshop day

1.1. Morning, 9:30 AM – 12:30 PM

  • W201AB — Datomic Deep Dive — João Nascimento Mello (Staff SWE, Nubank). Living with production Datomic.
  • W201CD — Clojure Camp Coding Jam — Rafal Dittwald (Clojure Camp). Mob session, then pairs.
  • W205AB — Babashka: fast native Clojure scripting — Michiel Borkent, Rahul De. Instant-start, batteries-included bb. See the session entry.
  • W205CD — Backseat Driver: Calva Tools for AI agents — Peter Strömberg (PEZ, creator of Calva). See below.

1.2. Afternoon, 1:30 PM – 4:30 PM

  • W201AB — Fast, Lean, Native Clojure — Adrian Smith. Native libraries + off-heap memory.
  • W201CD — Clojure Camp Coding Jam, Part II — Jordan Miller.
  • W205ABCD — AI Tools & Practices Showcase — Eric Dallo (Sr. Lead SWE, Nubank). Fast-paced attendee demos of AI dev tools and practices. See the talk list.

2. W205CD Backseat Driver — it maps onto our tooling

Backseat Driver is a Calva (VS Code) extension that hands an AI agent access to Calva's REPL sessions, REPL log, and structural editing — as native tools or an MCP server — plus Calva's multi-user REPL for parallelized agent work.

This is the same pattern www.wal.sh already runs, on the Emacs side: agents eval through CIDER into one nREPL (127.0.0.1:42527), with a shared multi-agent REPL on nexus. See Advanced Clojure ("bb nrepl-server so CIDER and Calva can connect"). We have ~80% of it; the piece worth wiring in is Backseat Driver's MCP mode — an nREPL-to-MCP bridge exposing 42527 as a first-class agent tool, retiring the ad-hoc bencode client. Structural-editing-as-a-tool is the one capability we lack (our agents edit text, not structure).

Related on the talk schedule: Live Systems, Live Thinking: Materializing Production Traces into AI-Assisted REPL Flows (Juliana Prieto, Thu) sits on the same agent-plus-REPL thread.

3. W205ABCD AI Tools & Practices Showcase — talks

Eric Dallo, Wednesday 1:30, three hours. Workshop listing. The abstract, in full: "This fast-paced session of attendee demos will be a showcase of tools and practices that are making a real difference for Clojure developers today." Ten short talks, closing with a speaker Q&A.

GitHub profiles below were found by name on 2026-10-01. Each is matched on the name plus either a repository tied to the talk or, where noted, Clojure activity alone.

3.1. Host: Eric Dallo

Software engineer at Nubank; ericdallo on GitHub. His bio names clojure-lsp, emacs-lsp and clj-easy; his profile adds ECA and lsp-dart.

Tool What it is
clojure-lsp the Clojure and ClojureScript language server
clojure-lsp-intellij IntelliJ plugin over clojure-lsp, written in Clojure
ECA Editor Code Assistant: editor-agnostic AI pair programming (eca.dev)
eca-emacs the Emacs client for ECA
lsp-mode Emacs client and library for the Language Server Protocol
lsp-dart Dart support for lsp-mode
clj-easy organization; graal-docs covers Clojure on GraalVM

ECA is the one on topic for this session, and the nearest relative of Backseat Driver from the morning: both put an agent next to the editor's language tooling.

3.2. Hour 1

3.2.1. Just-in-Time Context for Agents — Lukas Domagala

GitHub: Cyrik. Related: rule-fairy (rules for Claude Code and Codex, delivered by hooks), clojure-lsp-proxy.

Notes pending.

3.2.2. The Philosophy of AI — Lorelai Lyons

GitHub: TheFakeLorLyons, matched on commit author name and Clojure activity only.

Notes pending.

3.3. Hour 2

3.3.1. Wagoe the framework — Thijs Creemers

GitHub: thijs-creemers. The framework: wagoebv/wagoe, a batteries-included Clojure web framework on functional core / imperative shell (wagoe.com).

Notes pending.

3.3.2. Leverage AI to do the nasty stuff — Santiago Cabrera

GitHub: santiagocabrera96, matched on name and Clojure activity only. Also speaking Thursday: heap dumps.

Notes pending.

3.3.3. The Literate One-shot — Kimo K

GitHub: kimo-k (Day8). Related: cljs-lite-skill.

Notes pending.

3.3.4. ORC: A Lab for Self-Evolving Agents — Daryl Roberts

GitHub: Daryldactyl. The project: ObneyAI/orc, a lab and production line for accountable agentic software features in Clojure.

Notes pending.

3.4. Hour 3

3.4.1. Neither Gets the Last Word — Marc Limotte

GitHub: mlimotte. Related: monocle, a web UI for Beads.

Notes pending.

3.4.2. Prompt: Play Tetris — Ag Ibragimov

GitHub: agzam.

Notes pending.

3.4.3. Speaker Q&A

Notes pending.

4. W205AB Babashka: fast native Clojure scripting

Michiel Borkent and Rahul De, Wednesday 9:30, three hours. Session page. Setup is under Prerequisites.

The session covers the life of a babashka tool, from a quick script to a published, installable CLI. It assumes Clojure and does not teach the language. Topics, from the abstract:

  • dev environment setup
  • projects managed with babashka tasks (bb.edn)
  • the built-in libraries: fs, process, http-client and others
  • writing and running tests
  • a CLI with subcommands and automatic help
  • a terminal UI
  • a small web app
  • publishing through GitHub, or as an installable tool with bbin

Every topic has an exercise, and the exercises add up to one application: a password manager on the stateless Spectre algorithm. The material is babashka/babashka-workshop-spectre; doc/exercises.md is the worksheet. The tests fail until the exercises are done, and bb test is the progress meter.

Exercise Namespace Work
E1 spectre.core read the given algorithm, add sanity tests; optional libsodium FFI path
E2 spectre.clipboard find a clipboard command, write to its stdin
E3 spectre.db per-site settings in an EDN file
E4 spectre.cli wire core, clipboard and db into the pw command
E5 spectre.tui2 a TUI on charm.clj, changed while it runs
E6 launchers run the CLI from another directory, ending with bbin

The repository closes with open-ended extensions: SQLite through babashka.sqlite, CI with setup-clojure, caching the master key, and swapping scrypt for Argon2.

5. Prerequisites, per workshop

The conference publishes a wiki with one page per workshop. Four of the six sessions have a page; the AI Tools & Practices Showcase and the afternoon Coding Jam do not. Two pages carry a tool list, two delegate to a repository.

Read on 2026-09-22 at wiki commit 6238754. The Backseat Driver page has been revised twice already, so treat any list below as a snapshot rather than the current requirement.

5.1. W205CD Backseat Driver — Peter Strömberg (PEZ)

Wiki page. VS Code "or fork" (PEZ recommends Cursor, his daily driver; Antigravity is described as clunky with Backseat Driver), babashka, Java, Clojure CLI, Node.js, Calva, Calva Backseat Driver, Joyride.

Attendees run the facilitator's slides locally, which wants Markdown Preview Mermaid Support and a dark theme. Plus, verbatim:

An active AI subscription: Copilot and Cursor integrate most seamlessly, but
any non-cloud agents will also work fine.

The page states no versions. The extension itself declares vscode > 1.96.2= and node > 20.18.0= in its manifest, which are the numbers worth checking.

5.2. W205AB babashka — Michiel Borkent, Rahul De

Wiki page delegates entirely to babashka/babashka-workshop-spectre — building a password manager on the stateless Spectre algorithm, with local site storage, a terminal UI, a CLI, and native scrypt via babashka's FFI.

That README asks for babashka > 1.13.220= (the FFI floor), Java 17+ (FFI needs 22+), Clojure CLI, bbin for exercise E6, OpenSSL 3 — Homebrew's, not the system one — and libsodium for the FFI path. Editor support via clojure-lsp plus a structural editing mode; it lists CIDER, Conjure, Cursive, Calva, elin and Clojure-Sublimed as equal options.

5.3. W201AB Fast, Lean, Native Clojure — Adrian Smith

Wiki page. Required: JDK 22 or newer, Clojure CLI, and a Clang or GCC compiler. Optional but recommended: GraalVM native-image, babashka 1.13.220+, and jank.

The JDK 22 floor is the one to notice — it is the only workshop that will not run on a 21 default, and 22 is where java.lang.foreign (Panama) left preview.

5.4. W201AB Datomic Deep Dive — João Nascimento Mello

Wiki page asks that you "visit the joaomello/datomic-lab repository and have its environment running beforehand."

That lab is a local Datomic Pro learning environment: transactor and Console as host JVMs, plus Prometheus, Grafana, Loki and Promtail in containers. It wants Java 17, 21 or 25 — not 22, 23 or 24 — Clojure CLI, curl, unzip, lsof, pgrep, and a container runtime whose daemon is actually reachable.

It binds eight ports: 4334 and 4335 (transactor), 9100 (metrics exporter), 8080 (Console), 9090 (Prometheus), 3000 (Grafana), 3100 (Loki), and 9101 (optional peer exporter). Three of those are conventional enough to collide with something already running.

5.5. W201CD Clojure Camp Coding Jam — Rafal Dittwald, Jordan Miller

Wiki page, in full: "A laptop with Clojure installed and set-up with your favourite editor."

6. The morning block is oversubscribed

Four workshops run 9:30–12:30 and three of them are the interesting ones: Datomic Deep Dive, babashka, and Backseat Driver all sit in the same slot. Fast, Lean, Native Clojure is the afternoon, so it pairs with any morning choice. The Datomic lab is the only one that has to be running before the session, not just installed — an argument for setting it up regardless of which room you end up in.