Clojure/Conj 2026 Workshops
Table of Contents
- 1. Wednesday, September 30 — workshop day
- 2. W205CD Backseat Driver — it maps onto our tooling
- 3. W205ABCD AI Tools & Practices Showcase — talks
- 4. W205AB Babashka: fast native Clojure scripting
- 5. Prerequisites, per workshop
- 6. The morning block is oversubscribed
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.2.3. Secret Sauce for Claude and Clojure — Jonathon McKitrick
GitHub: jmckitrick. Related: clojure-mcp-config.
Notes pending.
3.2.4. Keeping Things Apart — Apollo Nicolson
GitHub: apollonicolson. Related: claude-clojure-lsp.
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.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-clientand 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.