Not really sure what channel to post this in, but I’m wondering if anyone out there has recent experience teaching a group of people how to get a working Clojure dev environment up and running, and how that went. How did you get them to install java and which version? What IDE? What did people struggle with? I’m working on the “getting started” guide for my BobKonf workshop in March and wanting validation for my recommendations 😄 It will be an audience of mostly experienced programmers with some functional-language backgrounds but not necessarily Clojure. Probably a lot of Linux but I need to have instructions for all platforms.
I would hope that https://clojure.org/guides/getting_started is useful for the first part of this (Java + Clojure). If they already have Java, then they are probably fine without doing anything, but otherwise I would recommend Temurin 21 as the current Java LTS (https://adoptium.net/temurin/releases/).
this is old and you probably want different choices for every part of it, but might be a useful form to start from: https://github.com/ClojureBridge/curriculum/blob/gh-pages/outline/setup.md
These are definitely great guides. This is super helpful, thank you!
Helpful discussion 🙏 Great to know about that Nightcode Getting Set Up page you liked to.
Since this thread may be helpful to more people, I'll mention another thing even though @kiraemclean knows all about it. In the last few months, @krukow and a few other people have been making some improvements and updates in https://github.com/clojupyter. Recently there was a very helpful discussion in the Zulip chat initiated by @markus.agwin, with a few realizations about making Clojure easy to start with. Following that, @carsten.behring did some incredible ✨ work adding data visualizations to Clujpyter. Today this was https://github.com/clojupyter/clojupyter/pull/187 by @krukow. This means Clojupyter will soon support a decent subset of the https://scicloj.github.io/kindly/ standard, which is will make it great for teaching data analysis with current Clojure libraries. Of course, many Clojure people like to stay in their editors with their keybindings and structural editing, but in a workshop for people who are mostly new to Clojure, this might be less important.
For the https://clojurebridgelondon.github.io/ events I created https://clojurebridgelondon.github.io/workshop/development-tools/ for all the main editors that supported Clojure, so attendees didn't have to learn an editor as well as Clojure, they used what was familiar. We introduced a few hundred people into Clojure and provided essentials guides to ensure enough information to resolve all the common questions, so we could focus on Clojure. The guides havent been updated since 2019 so may be a little dated. There is an https://practical.li/clojure/clojure-editors/ which is up to date. Feel free to use anything from the https://practical.li/clojure/install/ and https://practical.li/spacemacs/) and https://practical.li/neovim/ books, both of which have configurations for an "out-the-box" Clojure setup I would be happy to help or review workshop content if you would find that valuable.
Thanks so much @jr0cket! I would love to take you up on the offer. These are great. In this case the goal is simplicity, since the workshop is about data science/analysis more than Clojure programming specifically. Most people in that world are very used to using many different bespoke GUI tools to get things done, and having to configure an editor would be a non-starter. My goal/dream (won’t be ready in time for this workshop) is to build something like https://colab.research.google.com but for Clojure’s data science stack. The development workflow is just very different.. using an environment like that would be as excruciating for software engineers as using emacs is for data scientists 😆
> Colab I think @carsten.behring did have some success using https://jupyter.org/binder.
that’s cool! Carsten’s work on clojupyter is incredible.. I was thinking that may be the best way to go. It will at least be the most familiar for the context, I think. I was look at the devcontainer setup, too, but I think I will just not include any python/R interop (maybe mentioning at the end, but there is more than enough to talk about without it)
My comments to this: "very beginner friendly" comes sometimes with the notion of I don't need to install anything on my PC, just have a web browser. (ex. Colab) In this , several of the most popular Clojure IDEs • Emacs+ Cider • Intellij + Cursive • Vim are all a bit out of the game, as having those in Browser is mostly a hack. VsCode in Browser is possible, but not completely "free" (Codespaces) So Clojupyter + Binder is one of the really few options of a pure "in Browser Clojure experience"
I agree.. a simple “open this tab and start typing” would be ideal for this type of demo.
We can create a clojupyter kernel includ. Noj and partial Kind support. Thant can be added to a Binder, which everybody can start in Browser. BUT: I noticed that starting Binders is sometimes very slow, up to the point of "time out"... It runs on free hardware... Its a bit tricky to rely on this for a demo.
There is https://www.maria.cloud/ although I have only used that for relatively simple code. It worked well for those new to coding, but thats different to the audience you mentioned. https://www.gitpod.io/ might also be a relevant approach as it allows you to define a custom development environment which can be accessed via a browser. https://github.com/emacs-lsp/lsp-gitpod is one example of a pre-configured Emacs setup in Gitpod, although any editor or journal tooling could be configured instead. Perhaps https://nextjournal.com/ would be more relevant for a data science specific workshop with custom environment and access through the web. I assume both these could take some time to configure and test,but should be reusable.
I tested Clerk (/nextjournal) at some point in the past. As a naive non-notebook-user, what is the difference with Clojupyter?
Clojupyter is "jupyter notebooks", but the code cells allow Clojure code and render the result "close to the code". In Clerk, the "Clojure namespace" is the code, results show in Browser. For showing off, the side-by-side mode in Clojupyter is somehow cool:
The second plot can be "rotated in 3D" with the mouse: Thanks to @daslu for all the examples of nice "kind" visualizations.
@kiraemclean nextjournal is indeed an interesting proposal. Unless you want to showcase "kind" based plots, which are not rendered by nextjournal
@kiraemclean , @carsten.behring: I think https://en.wikipedia.org/wiki/Ellen_DeGeneres:_Relatable, the title of the Ellen DeGeneres show, says it all. Jupyter is not the best solution, technically-wise. But Jupyter notebooks are the most relatable Clojure- AND Clojury-thing (=Repl) out there for Python-Scientists, an audience very relevant for SciCloj.
A related thread -- this week's announcement by Carsten about Noj & Clojupyter: https://clojurians.slack.com/archives/C06MAR553/p1738746032884499
this is really amazing work
https://clojurians.slack.com/archives/C8NUSGWG6/p1737333436781959
Tomorrow, at the London Clojurians are happy to present: *Clein: Bringing a bit of leiningen to deps.edn (by Noah Bogart)* https://www.meetup.com/London-Clojurians/events/305279887/