6 ms·
Bringing Clojure programming to Enterprise (2021)
- 0x1ceb00da 6mo agoWhat is the y axis in first chart? What is the data source?
- dgb23 6mo agoThey publish their yearly surveys on their official website. The graph seems to be from State of Clojure 2020: https://clojure.org/news/2020/02/20/state-of-clojure-2020 https://clojure.org/news/2020/02/20/state-of-clojure-2020 The most recent report: https://clojure.org/news/2026/02/18/state-of-clojure-2025 https://clojure.org/news/2026/02/18/state-of-clojure-2025
- maximgeorge 6mo ago[dead]
- LouDNL 6mo agoIt's good to read that Clojure is getting more and more exposure. I write Clojure fpr my day job and wouldn't want to swap it for anything. The community is small but very helpfull and easy reachable. The learning curve is steap indeed, but very much worth it!
- thunky 6mo agoClojure has some pretty big downsides last i looked: - syntax is hard to read unless you spend a lot time getting used to it - convention for short var names makes it even harder - function definition order makes it even harder - too dynamic for most people's taste - no type safety - the opposite of boring - no clear use case to show it clearly beating other languages - niche with small community and job market - JVM For all those reasons its a hard sell for most imo.
- jimbokun 6mo agoMost of those seem very subjective with many people having the exact opposite opinion.
- thunky 6mo agoyes it's just my opinion. but Clojure's market share is tiny so there must be something to that. it's not even in the top 50 here: https://www.tiobe.com/tiobe-index/ https://www.tiobe.com/tiobe-index/. Lisp is 26.
- Antibabelic 6mo ago"The TIOBE index measures how many Internet pages exist for a particular programming language." For some reason I doubt this is in any way representative of the real world. Scratch, which is a teaching language for children, bigger than PHP? Which is smaller than Rust? Yeah, these are results you get when you look at the Internet, alright.
- thunky 6mo agoSure that index isn't great (I think it's basically a regurgitation of Google Trends), but I don't think you're suggesting Clojure is actually a popular language are you? Which is the only point I'm trying to make (that it isn't popular).
- Antibabelic 6mo agoClojure is reasonably popular as far as programming languages go. It's not difficult to get a job as a Clojure developer, particularly in certain sectors (fintech and healthcare are the heaviest Clojure users). Of course C++, Java, C# and PHP dwarf both Clojure and Rust by several orders of magnitude.
- iLemming 6mo ago> It's not difficult to get a job as a Clojure developer Let's be honest and avoid painting a misleading picture. Getting a job as a software developer of any kind is genuinely difficult right now. Finding a position on a Clojure team has always been relatively harder for various reasons - and not simply because of its [in]popularity. Clojure tends to attract older, more experienced developers. If you want a full-time Clojure role but have no prior experience with it, you'll often need to accept a junior-level salary - something many seasoned developers can't afford or simply won't do. Junior developers have it even harder. Recruiting pipelines don't really distinguish between experience levels - everyone goes through roughly the same process, and juniors are expected to keep up with veterans, with almost no room for error. Senior, battle-tested Clojure devs face a different kind of pressure. Interviews are frequently grueling, mentally exhausting sessions comparable to architect-level evaluations in other places. And because Clojure enables small, skilled teams to accomplish a lot, companies rarely need to hire in bulk - so competition for each opening is fierce. This creates a frustrating situation for everyone, companies included. They want top-tier talent but offer junior salaries, while simultaneously rejecting juniors and anyone without direct Clojure experience. Supply and demand are badly out of balance. That breeds resentment - "why bother learning it if I'll never get hired?" Honestly, there's no clean answer, and Rust seems to be in a similar spot right now. Even so, the language is worth learning. It has real practical value, even when you're not using it on a team. The future-proof choice I believe is to learn both - Rust and Clojure. Exploring both of these languages, I can honestly think things will change in their favor. Unless you want to stay sad at nearly-burnout levels for the next decade or more with TS/Python/Java/etc.
- bitwize 6mo ago> It's good to read that Clojure is getting more and more exposure. I nominate this sentence for "best inadvertent freestyle rap on Hackernews".
- VMG 6mo ago503
- dgb23 6mo agoArchive Link: https://web.archive.org/web/20260402084152/https://blogit.michelin.io/clojure-programming/ https://web.archive.org/web/20260402084152/https://blogit.mi...
- sswezey 6mo agohttps://archive.ph/5RJ2V https://archive.ph/5RJ2V
- killme2008 6mo agoI wrote Clojure for about five years. Left when I changed jobs, not because I wanted to. It's genuinely one of the most productive languages I've used, and I still miss the REPL-driven workflow. One thing I built: defun https://github.com/killme2008/defun https://github.com/killme2008/defun -- a macro for defining Clojure functions with pattern matching, Elixir-style. Still probably my favorite thing I've open sourced.
- dgb23 6mo agoI like it! Really nice API. I had an idea about writing something similar, but for multimethods, but never got around thinking it through and trying it out. The way defmulti and defmethod work is that they do a concurrency safe operation on a data structure, which is used to dispatch to the right method when you call the function. My hunch is that it should be possible to do something similar by using core match. What I don't know is whether it's a good idea or a terrible one though. When you're already doing pattern matching, then you likely want to see everything in one place like with your library.
- tombert 6mo agoClojure is such a fun language to write; it has great concurrency tools from the get go, and since it has access to the entire Java ecosystem you're never hurting for libraries. I find myself missing Clojure-style multimethods in most languages that aren't Clojure (or Erlang); once multimethods clicked for me, it seemed so blatantly obvious to me that it's the "correct" way to do modular programming that I get a little annoyed at languages that don't support it. And core.async is simply wonderful. There are lots of great concurrency libraries in lots of languages that give you CSP-style semantics (e.g. Tokio in Rust) but none of them have felt quite as natural to me as core.async. I haven't had a chance to touch Clojure in serious capacity in awhile, though I have been tempted to see if I can get Claude to generate decent bindings for Vert.x to port over a personal project I've been doing in Java.
- iLemming 6mo agoI regret stumbling on Clojure around 2012-2013. I had every chance to learn and work on a big Clojure project with very knowledgeable people yet I looked dead in its eye, right between the parentheses and confidently said: "no, thank you!". It took me a few more years of enormous struggle with Javascript, and after exhausting my options, trying Typescript, Coffeescript, Livescript, Gorillascript, IcedCoffeeScript, Fay, Haste, GHCJS, Elm to finally arrive on Clojurescript. Even though I was dealing with frontend at that time, I already had good experience, and had gone through other stacks: .Net - C#, F#, VB; Python; Haskell; Objective-C; ActionScript; Delphi; some other lesser-known things. I remember my initial confusion, but it didn't take long when I suddenly felt flabbergasted - shit just made sense. It was so down-to-earth, inexplicably pragmatic and reasonable that it made me want to learn more. I didn't even build anything with it, I was just browsing through related Google search results when I saw "Clojure/Remote Conf" announcement. It was a no-brainer - I took a day off and joined from my home computer. I immediately became a fan-boy. The amount of crazy awesome stuff I saw, the people I met in the chats, the articles and books I put in my notes - all that made me feel excited. After the conference I sat in my chair staring at the blank screen, for 40 minutes or so. Thinking, meditating, contemplating if that was a mid-career crisis or something. Knowing that on Monday I would have to go back to the same struggle, same shit, same mess that I had for the past two years, everything that until this very point made me feel depressed. On Monday I went back to work and said I'm leaving because: "I saw things I cannot unsee". I just knew I could never sneak-in some Clojure there. So I left. Even though it was well-paid job, fifteen minutes away from my home. Getting into Clojure radically re-opened my eyes to the entire concept of computing. Not only had I found a different way of programming - I felt so enlightened, and largely thanks to the people I met in the community, which deserves special acknowledgment. Clojurians are just made different - they are the kindest, extremely knowledgeable, tolerant and most sincere professionals I have ever met. Not a single time when I asked them a question - no matter how dumb, provocative, or confusing it was; they always, every single time gave me much deeper and thought-provoking answers than I ever expected. None of my inquiries were ever dismissed, ignored or rejected. They'd gladly discuss just about anything - no matter the language, tool, technique, or ideas. Whatever helps you to find answers or get closer to the solution. I know, I have become a better programmer, thanks to Clojure. Yet more importantly, it helped me to become a better person. Yes, I regret stumbling on Clojure. I wish I never saw it when I wasn't ready for it. It makes me feel sad for the time I have wasted. I wish I had someone persuasive to convince me to learn it sooner.
- midnight_eclair 6mo agoevery time i go back to writing non-clojure code outside of repl-driven environment i feel like a cave man banging rocks against each other no amount of ide smartness or agentic shenanigans is going to replace the feeling of having development process in sync with your thought process
- jimbokun 6mo agoYou just made me wonder if REPL driven development and LLMs can be better combined somehow.
- thom 6mo agoThis is already a strong theme in the Clojure ecosystem, e.g.: https://github.com/BetterThanTomorrow/calva-backseat-driver https://github.com/BetterThanTomorrow/calva-backseat-driver
- SatvikBeri 6mo agoI use a REPL in tmux. That lets Claude code read/write to it easily, as well as letting me take manual control to investigate.
- laszlojamf 6mo agoSlightly off topic, but I find it to be a testament of how software has already eaten the world when friggin Michelin has a tech blog. What's next? General Electric releasing a frontend framework?
- user3939382 6mo agoFunny example since they’re known for automotive parts and their food guide. It’s almost on brand.
- jimbokun 6mo agoI mean how else are you going to get people to drive long distances and buy more tires without giving them yummy destinations to eat at?
- brabel 6mo agoToyota has an open source game engine written in Flutter! https://www.youtube.com/watch?v=98n32VstnpI https://www.youtube.com/watch?v=98n32VstnpI
- chii 6mo ago> general electric releasing a frontend framework or toyota releasing a game engine: https://www.theverge.com/games/875995/toyota-fluorite-game-engine https://www.theverge.com/games/875995/toyota-fluorite-game-e...
- Cthulhu_ 6mo agoYou'd be surprised: https://www.ethosdesignsystem.com/ https://www.ethosdesignsystem.com/ (okay it's a design system, not so much a framework, but still)
- erfgh 6mo agoCan someone enlighten me about the REPL that lispers keep raving about? Isn't it more-or-less the same as the Python REPL?
- sammy0910 6mo agoit is very similar, but it is easier to evaluate sub-expressions thanks to the unique syntax of lisp. there's a detailed explanation here: https://youtu.be/Djsg33AN7CU?t=659 https://youtu.be/Djsg33AN7CU?t=659
- whalesalad 6mo agoMore or less, yes. It's more about the approach to the repl and how it is leveraged in development, or even jacking in to a running system and modifying it as it is running.
- fredrikholm 6mo agoYou evaulate code within your editor against the REPL, seeing the output in the same window you're writing in (perhaps in a different buffer). The cycle is: 1. Write production code. 2. Write some dummy code in the same file (fake data, setup). 3. Evaluate that dummy code. See what happens. 4. Modify code until satisfied. Your feedback loop is now single digit seconds, without context switching. It's extremely relaxing compared to the alternatives (rerunning tests, launching the program with flags, what have you).
- embedding-shape 6mo agoIndeed. For people used to the "typical REPL" from Ruby, Python and alike, the best comparison I've found is this: "Typical REPL" workflow: Have one editor open, have one REPL open, have one terminal open that runs the application. One change is typically: Experiment in the REPL window, copy-paste into your editor, write tests, restart application (lose all state), setup reproduction state, test change. Or something like this. In a Clojure REPL workflow, you'd do something like: Have one editor open, this starts the REPL and often the application in the background too. One change is typically: Edit code, evaluate that snippet of code (which sends it to the REPL and the running application), write tests, evaluate them too in the editor, if you're happy, hit CTRL+S and you're done. Application still has the existing state, no restarts needed and you essentially never have to leave the editor window/pane. Of course, others might have slightly different workflows, but for myself and many (most?) other Clojure developers I've observed in the wild, this is pretty much the standard.
- honkcity 6mo agoI'd love to work with Clojure. I have the misfortune of working on something that is stuck on java1.8 and Groovy, part of the issue is the code quality is a disaster (json and xml parsed with regex...). At least with Clojure I'd get to enjoy the repl workflow and usable text editor (emacs). I also just enjoy working with sexps.
- deleted 6mo ago[deleted]
- dkarl 6mo agoHonestly, if I could quit my job for six months and work in a codebase like yours, I'm extremely curious what I could accomplish with AI. We have a codebase at work that was "stuck." We've consistently done minor library upgrades, but no major upgrades in several years, and was recognized as a major piece of technical debt / minor disaster for almost two years, in that we urgently needed to dedicate an engineer to it for a month or more to bring it up to date. We also suspected that framework upgrades would improve performance enough to save us a little bit in operating costs. I got curious, created a branch, and threw Claude at it. Claude knocked it out in a couple of days while I mostly worked on other things. Then we dedicated several engineer days to doing extra manual testing. Done and deployed. Now we're ready to experiment with giving it less resources to see if the performance improvement holds up in practice. This codebase was only about 200k lines of code, so probably smaller than yours. Really curious how it would go with a larger codebase. EDIT: Claude may only have taken a couple of days because I was only checking in occasionally to give it further instructions. I don't know how fast it would have been with my complete attention.
- eduction 6mo agoThe latest clojure still works with Java 8 fwiw... Although I believe they are looking at moving to 17 soon as minimum.
- IBCNU 6mo agoAI augmented Repl driven dev has got me back into Clojure and it's been changing my life (full on JVM nerd: Kotlin mostly on the backend). The syntax is the best in the world (how computer's really operate?) but it's always been a pain to setup the tooling for me. I'm dumb like that. Now with AI it's become super easy to get back into the REPL and I'm in heaven. Totally moving it back into workflow and proposing to bring it back into the dayjob.
- nmil 6mo agoMay I ask what your workflow actually looks like? There's been a fair bit of clojureposting over the last few days, and I've decided to jump in and learn. I love the idea of an AI integrated repl (like what Jeremy Howard and team have done with solveit), it's far more in line with my preferred vision of the AI augmented future of coding. Less "swarm of agent" more, "learn with the agent".
- IBCNU 6mo agoSure! Setup is: - nvim --listen /tmp/nvim — starts Neovim with a socket Claude can connect to - /mcp in Claude Code — enables the Neovim MCP server, gives Claude direct control of Neovim - lein repl in the nvim terminal - Claude reads .nrepl-port, runs :ConjureConnect — REPL is live! The loop is so dope: - Claude writes code directly into my .clj files - Then evals it into the running process via Conjure - Sees the result in the REPL, iterates if wrong, all in the same conversation turn - wrap-reload middleware means the web server hot-reloads changed namespaces on the next request
- zingar 6mo agoHmmmm… seeing this workflow makes me wonder if I can do this with Ruby (the integration between agent and repl)
- embedding-shape 6mo agoAbsolutely, spin up a TCP server in Ruby, make it run `eval` on what it receives and tell the agent how to call it with netcat or whatever, works like a charm :)
- InvOfSmallC 6mo agoMy pain point (which I admit didn't recheck if someone did something about it), is an interoperable example of how to use Spring (n.1 framework for many enterprises) with Clojure. Something where I feel Kotlin did better. For me the best way to introduce something like this is that I can actually start with small software increments on a Spring Java project.