r/Clojure

▲ 23 r/Clojure

Thinking about clojure

I have been thinking about Clojure, to be more specific, Lisp. I recently watched the Clojure documentary on Cultrepo. I guess all you need is a pretty woman on your side to build a lang lol.
I have just turned 21, and I do not see anyone is campus using lisp dialects out here everyone is either on TS, C#, Python, or some PHP. Never lisp. Is it going to die?

I read some of Paul Graham's essays, and He loves Lisp and wonders whether there is something I am not seeing. I also read on HN a blog about you will never understand what people love lisp until you try it.(https://news.ycombinator.com/item?id=46070298if there is)

Clojure is weird. I looked at the syntanx and my word the (,],{ somewhat turned me off. I later read y'all do not have types. Is immutability strong enough not to, need types?

Everyone is also doing clojure in Emacs. I do not have the patience for Emacs, Vim is superior lol.

What somewhat paused me was nubank. I was surprisedNubank a bank using a Lispwas , untyped system. I mean I thought all of them were just a bunch of java, c# fanboys. Now I want to double check is there something I am missing.

So my question is. Should I pickup this lang. I am more of a TS dude but maybe some lisp will help me understand TS more. What is your clojure story?

I am not asking you to pitch it to me but I want to just understand you all.

I am also trying out scheme mostly because I am watching the MIT SICIP on youtube.

reddit.com
u/Worried-Theory-860 — 4 days ago

Best AI Models for Clojure?

I mostly using Claude Code for design and implementation. I have an opportunity to switch to a different AI tool. Rumored that Codex is the best right now for general coding. Anyone compare the models specifically for Clojure?

For my dev, I generally have Claude create a plan, then have it run 2+ agents to refine the use of functional programming paradigms/patterns and data-driven code.

reddit.com
u/bjagg69 — 3 days ago
▲ 42 r/Clojure

Adam Tornhill - Transforming Software Evolution: Lessons from 10 Years of Clojure in Production

youtu.be
u/maxw85 — 1 day ago
▲ 9 r/Clojure+1 crossposts

What is your take on Kotlin Compose / Clojure combo?

hello everyone,

i’m curious about what it's like to send edn from a clojure server to a kotlin client to render a desktop ui. I think server-driven desktop apps could be a compelling approach, especially for pushing updates to all clients. has anyone experimented with this?

i’ve noticed the desktop space losing some momentum, and i wonder if a more flexible, moldable ui paradigm, similar to Smalltalk way it, might be interesting to see, particularly with llms integrated into the development loop.

i’m leaning toward kotlin for its ecosystem and current momentum, though java fx is also a strong alternative.

my main questions are:
• would you build or use a server-driven desktop application?
• would you recommend this architecture to clients?
• do you have any firsthand experience with this approach, or what are your general thoughts?

below is a simple desktop app with a textbox to enter edn string that changes the ui. nothing fancy. i just wanted to see if it works. i has title button and a toaster message mapped to kotlin components.

i think with the power llms mapping out kotlin components to edn structs should be simple enough.

created a simple gist `https://gist.github.com/ozbeksu/35acc1fe2701ec0d57bae3a6fce72900\`

u/source-drifter — 11 hours ago
▲ 46 r/Clojure+1 crossposts

We just shipped a beta of pg-datahike — a PostgreSQL-wire-compatible adapter that embeds inside a Datahike process. psql, pgjdbc, Hibernate, SQLAlchemy, Odoo, Metabase all connect unmodified.

Besides the pragmatism of speaking Postgres we also have a key differentiator: SET datahike.branch = 'feature' and SET datahike.commit_id = '<uuid>' work over standard pgwire — git-like branches and commit pinning as session-level operations, no control-plane round-trip.

It is also bidirectional at the datom layer. Tables you create over SQL show up as normal Datahike schemas, queryable from Clojure with (d/q …). pg_dump roundtrips both directions.

Ships as a runnable uberjar (JDK 17+) or as a library. Writeup with tour, architecture, migration story, and gaps:

https://datahike.io/notes/datahike-speaks-postgres

Happy to answer questions. Lmk which use cases you would find particularly appealing.

u/flyingfruits — 3 days ago

A DSL for Gemma4 that transpiles into Clojure

When I discovered AI coding in 2024, I was immediately thinking: how do I run something like this on my own computer?

Obviously, it wasn't possible then, and remains impossible now... Or does it?

Gemma4's release is what finally got the ball rolling for me. There was a cheap model that could run on not-state-of-the-art hardware, and do reasoning, and even a bit of coding (with some help). So I tried about 10 different prototypes trying to get Gemma4 running locally to produce code, or at least snippets of code. Mainly targetting Python, since there's a billion lines of the stuff Gemma4 and other models slurped up and "knows".

But, I couldn't get Gemma4 to output anything useful in strict Python. Even with a RAG, language graph, linter, etc. It was just too difficult and slow and hallucinated even simplistic scripts. So, I put it on the backburner, kept watching Primeagen, and kept hearing about Uncle Bob and his LISPs.

I had no clue what a LISP was, but upon reading about it, I thought that this possibly the key to the entire problem. Namely the REPL, code as data, writing the AST directly. So I set out again on the harness, but with a new approach.

Since LLMs don't really like symbols, (as in the typically cost several tokens, and can induce hallucination) I thought Gemma4 would need some kind of intermediate language that serves as a go-between. So thus: the unnamed DSL that transpiles into Clojure was born. I chose Clojure because it made making the DSL significantly easier and less time consuming and less annoying to debug, its a LISP, something about it just feels right, and it compiles to the JVM. So tons of functionality.

So the harness > plans out an architecture > structures it in json > the coding task gets handed over to the coding Gemma4 > The coding Gemma4 then writes the unnamed DSL directly into the REPL, which handles the whitespace (which represents the infamous paranthesis heavy LISP code), provides context, internal error messages, validation, etc. > the compiler writes all of this to a json > if the DSL "code" fails for any reason, it is able to reason with the REPLs error messages on it's own and repair itself.

Of course, this kind of ignores the fact that the language itself has to be built up so it has enough features to make it feel general. It's not there yet. But I just had a few complex (for a Gemma model) specs, that it was able to solve both with and without self repair, and it's really exciting!

reddit.com
u/med_i_terranian — 2 days ago
▲ 25 r/Clojure

Workshop: Build Backends at Any Scale With Rama — taught by Nathan Marz (June 4, 2026)

Hi r/Clojure,

I'm really excited that Nathan Marz is teaching a live 4-hour Rama workshop through ClojureStream on June 4, 2026 (17:00–21:00 UTC / 19:00–23:00 CEST)

If you don't know Nathan: he created Rama, created Apache Storm at BackType (later Twitter), wrote Big Data (Manning), originated the Lambda Architecture, and on the Clojure side built Specter and Cascalog. He's been thinking about how backends should actually work for over a decade — Rama is the result.

The workshop is the same curriculum he taught at Clojure Conj, expanded from 2h30 to a full 4 hours so there's room for deeper exercises, more Q&A, and time to build the full application end-to-end (event sourcing, depots, topologies, PStates, deploying to a cluster).

Format:

Live online via Zoom, recording included

- Prereqs: Working familiarity with Clojure; no prior Rama needed

- Setup: https://github.com/clojurestream/rama-workshop

Pricing:

- CHF 349 / CHF 249 early bird / CHF 149 for annual subscribers

Seats: Limited to 20

Link & full agenda:

https://clojure.stream/workshops/rama

Happy to answer questions in the thread.

u/jacekschae — 1 day ago
▲ 74 r/Clojure+1 crossposts

After a ten-year hiatus, we are bringing the EuroClojure conference to Prague from May 19 to 21, 2027.

The main theme for this upcoming edition will be the design, long-term development, and operation of reliable systems. This makes the event highly relevant for industry veterans, ranging from senior developers, tech leads, VPs of Engineering to CTOs.

The goal is to showcase engineering approaches within the Clojure ecosystem, but with a strong emphasis on broader applicability. Together, we will explore the real-world portability of these concepts to other tech stacks, mutual inspiration across different communities, and, of course, adapting to AI-assisted development.

You can already sign up for the mailing list at https://2027.euroclojure.org to stay updated. We are also actively seeking input from the community. Please use the form on the conference website to submit your ideas and content suggestions.

reddit.com
u/kaliszad — 9 days ago
▲ 38 r/Clojure+2 crossposts

I've gotten to quite like using lisp and would like to know as many places as possible I can make use of it. I already use it for writing scripts in Gimp. I use Maxima CAS (I'm an Open University student doing Bsc Mathematics) but have not seen how I can use pure lisp with it. I've also started learning to use emacs and have heard lisp is used to write scripts/macros.

Any tips and pointers for further practice would be appreciated :)

reddit.com
u/Candid-Page1895 — 13 days ago
▲ 10 r/Clojure

Is ClojureVerse / Zulip etc. not providing a read-only archive of Clojurians Slack any longer? I just took a look and couldn't find it in Zulip at all, and the last synced post I could find in ClojureVerse was from 2024.

Or am I just having a bad hair eyes day?

Note: please don't suggest "just sign up for Clojurians Slack" - that doesn't work for my use case.

reddit.com
u/v4ss42 — 8 days ago
▲ 28 r/Clojure+4 crossposts

I built a Neovim plugin that provides text motions designed for prose. My goal was to bypass blank lines and handle punctuation edge cases. Because it's Neovim, the default Lisp path is Fennel. I started there, but rewrote it as a ClojureScript Node.js remote plugin using shadow-cljs.

To be fair, Fennel has upsides:

  • There's almost zero ceremony between Fennel and Lua.

  • You avoid the async overhead of remote plugins.

But the friction started with the standard library. I was using nfnl, which comes with its own Clojure-inspired functions. The problem is they are not comprehensive enough. I found myself manually implementing things like difference just to process text bounds. Since Fennel's fn doesn't support multi-arity functions the way Clojure does, I decided to write some macros to implement it myself. Naturally, this devolved into yak shaving. The dealbreaker hit when I ran into a bug in Conjure. When the REPL failed on the macros I was trying to build just to make the language usable, that was the straw that broke the yak's back.

So I switched to a ClojureScript remote plugin. But I traded the macro REPL issues of Fennel for a different kind of REPL headache in ClojureScript.

Specifically, I'm having a bizarre issue where println fails inside my async code. It feels nondeterministic. Sometimes the output prints perfectly fine. But other times, println disappears into the void. To see the value, I resort to a hack: I create a fake atom and reset! the value into it. That works. But if I try to add a watch to that atom to print the updated value, that doesn't print either!

Does anyone have any idea why println is getting swallowed in this async Neovim context?

If anyone has any other feedback, I'd be happy to hear it.

u/8ta4 — 14 days ago