clojure 2026-05-07

I've scheduled a live coding /modeling workshop at my company, officially to teach domain modeling, but really it's a plot to shill clojure 😅 before I dive into it, does anyone have any more survival tips?

🚀 3

If the focus is domain modeling, I'll stick to clojure maps (that look like JSON to some) and leave the transformation functions to the very end 🪄 Perhaps interesting (from 2013) - https://www.youtube.com/watch?v=kA27Ld6vbDM

Practical consideration: use tools/environment/IDE familiar to the audience (e.g. Calva, Cursive) even if is not your default/main environment

Great to have that idea confirmed :) I was even thinking not mentioning that it's clojure at all. More like "now we're gonna use a simplified json to model our data" and then when that gets tedious ... Boom , omg there's functions

👍🏽 1
😁 1

I would not only say, that "EDN is a simplified JSON". I would also motivate, why it is better. There are two things. 1. Commenting with #_ is syntax aware. 2. The Cava key combinations Alt+arrow (up, down, left, right), Ctrl+arrow (up, down), Shift+Ctrl+arrow. This is a huge improvement over JSON. With EDN+Calva you work with data, not with text. This is exactly what you need for DSLs.

🥰 1

I recently had a DSL for something and at one point I wanted to give people the option to calculate something within their models. So I embedded https://github.com/babashka/sci . That took me one or two hours to implement and enabled a lot of nice features for my DSL. Such things can be very impressive.

Hello, can I ask for a sanity check? I'm trying to transition a project from lein to deps.edn (acrually to polylith and I'm using the poly tool). There is a certain git(hub) dependency that is fetched as source code. Now, when running my tests I get a ClassNotFoundException. Is it that Leiningen was behind the scenes compiling this dependency for me? If so, how should I compile this dependency for use in the tests in the deps.edn polylith setup?

Maybe download and copy the Java source into you project ("vendor" it), since it's been archived (it's not going to get updated) and is very small? Make it a Polylith component with a :deps/prep-lib step.

🧠 1

@msolli this makes so much sense! Thank you for highlighting it.

👍 1

Java or Clojure?

This is how I define it

amazon-archives/aws-request-signing-apache-interceptor      {:git/url ""
                                                                     :git/sha "f39dfaf10763ff3b67f1bdcdfe3dfd1d20e12812"
                                                                     :exclusions  [com.amazonaws/aws-java-sdk-core]}
And I can see it under ~/.gitlib In the code I call it as
(:import com.amazonaws.http.AWSRequestSigningApacheInterceptor)

Yes that code would need to be compiled. Either fetched from a jar or if there's a prepare step

If I get it right the prepared step is relevant to clojure source code dependencies that include it in their own deps.edn?

Relevant to clojure projects which include a prep step like compiling Java. But doesn't help for a pure Java dep.

Since it was mentioned in another thread: There Seem to be projects that could use some support and explicitly provide onboarding. Where are they? Can anyone hmu and onboard me on a project? I have tried clojure camp and I like it, but I feel it's not enough for my learning style and I seem to end up as a mentor myself a bit too often. Mentoring is cool, but I would like to be mentored too:smile: Speaking of learning style: I really don't care a lot what the project is (unless its hurting anyone obviously). The important part is that I don't need to make too many decisions in terms of architecture anymore and that I can grasp the business logic relatively quickly - a bit of a contrast to work and to my own projects. DMS welcome:clojure-spin: 🥰

I could also list topics to help narrow it down. Let us know if any of them are interesting! • data processing • graphics • devops • frontend • performance • web services • media • machine learning • documentation • databases • data structures and algorithms • compilers • networking

👍 1

Ok, it seems my idea of not mentioning my interests to eliminate my own biases from the decision is not very popular:sweat_smile: Well then, if I have to I'll pick my top three from that list: • DSA • Data processing • Media, music in particular

my apologies, what is your goal?

Hands on experience, contributing, connecting to people.

Ah, this might have come off as soliciting, right?

(I am not a native speaker, so I might have missed some nuance there)

not quite, was just unsure if you meant you wanted work, or to join a project, or were getting requests to join a project lol

i think a better means of this would be to look into the development of a project you already know, like a clj library

That would still mean making a content based decision. That's not working for me. I am (also) here for the humans :)

Are there Clojure library projects you already use that you like? Your request seems a bit too open-ended to get good answers...

That's a risk I am willing to take :) If this is too open-ended and nobody is going to answer, I can live with that

That would justify a ping to @smith.adriane then I guess:grin:

👋 1

And it might provide more context for the wider audience :)

I recommended #jank, #cljdoc, and https://scicloj.github.io/ for open ended suggestions (although there maybe more or less capacity for mentoring depending on timing).

As a meta problem, I have a dewey https://github.com/phronmophobic/dewey/issues/15 for finding clojure issues marked as "good first issues" which might be a good place to start. https://github.com/phronmophobic/dewey has several backend and frontend tasks that I would be happy to help support if you would be interested. As others have said, without knowing what projects you've worked on and what types of skills you'd like to learn, it's hard to make more concrete suggestions. Another approach is to look at active projects in #announcements and #releases. It will be more hit or miss, but I imagine some of them would be interested in more collaborators. There may be fewer mentorship opportunities though.

👍 1

I would directly start with something new that you need or something you always wanted to have. I have not the best experience learning from other code. You never know how good the code is. Clojure code often tries to model the domain very well without being overperfect. If something is simple and working well, most Clojure developers are happy even if they know there is a better way. You can call this pragmatic. You have to find your own way without being influenced by someone else. If you have your small pet project, you can improve it over the years with new ideas or language concepts or you can look into the libraries you are using. You will automatically have interesting questions, find bugs, report them get in contact with other developers or even try to fix bugs.

Very vibrant at the moment is everything around Jank. I am thinking to start a pet project of something, wich already exists as a C++ project. Reimplementing something like the tool OpenBoard, but in Jank+Gtk in order to prove that the Jank version is better.

@aaronrebmann I would also point you to the #contributions-welcome channel, but it's a ghost town.

> Ok, it seems my idea of not mentioning my interests to eliminate my own biases from the decision is not very popular:sweat_smile: > Well then, if I have to I'll pick my top three from that list: > • DSA > • Data processing > • Media, music in particular @aaronrebmann data structures and algorithms 1. https://github.com/dco-dev/ordered-collections has been active recently and you can try reaching out to them to see what projects they may need help with. They also have a clj rope data structure that might be a good fit for text editing. 2. #jank is in active development, including DSA work. 3. I've been wanting to update Bifurcan's https://github.com/phronmophobic/bifurcan/blob/master/src/io/lacuna/bifurcan/Rope.java to support indexing and slicing by grapheme cluster. However, the project is in java, which may be a turn off. It would be neat to port to clj, but that may be a bigger project. This is important text editing libraries like https://github.com/phronmophobic/clobber. Data processing 1. https://scicloj.github.io/ has several data processing libraries and a mentorship program. 2. https://github.com/phronmophobic/dewey has several data processing tasks: updating the pipeline to be more efficient, adding the results of clj-kondo analysis to a datomic-readonly database, creating processes that scan more clojure projects. Media and Music 1. #overtone has been active lately and you can try reaching out to see if they want help with any particular projects.

🥰 1