Fork me on GitHub

Datalevin 0.5.3 is out. This is a major release that introduces transparent client/server mode of using Datalevin databases. The server supports full fledged role-based access control (RBAC). A brief documentation for the Datalevin client/server is at

๐ŸŽ‰ 42
๐Ÿš€ 10
datalevin 10
sheepy 4
๐Ÿ‘ 2

New library, js-literal , provides a cljs reader literal #j/s which is like the #js literal, but is recursive. largely built to satisfy some curiosity... maybe something like this exists already but didn't find it. Example `

#j/s [:a {:b [:c]}]
; compiles to => Array.of("a",Object.fromEntries(Array.of(Array.of("b",Array.of("c")))));
; under advanced compilation, compiles to ["a",Object.fromEntries([["b",["c"]]])]
; if you can improve on the above, IOW object literal syntax, please PR

clojure-spin 10

probably an obvious question, but why not just use clj->js ?


yeah I should address that in the readme... clj->js should be equivalent, but will be less efficient, going via cljs datastructures


so this is kind of in between clj->js and using #js all the way down


love the reader tag

โž• 2

@U051B9FU1 interesting. I had an issue in SCI around #js: I accidentally made it behave recursively and I didn't realize that, even though it's a reader function, also I learned that CLJS will still evaluate to new objects all the time, e.g. in (apply identical? (for [i [1 2 3]] #js {:a 1})), this will yield false


interesting @U5H74UNSF, that macro will produce more efficient js, ie with object literals. Possibly they could have a reader function with the same content I believe and so have a tagged literal like #j/s that produces optimal js code... hmm


Crux has been renamed to XTDB, and there are available for testing with the fully-renamed APIs, to check everything has gone smoothly (no functionality changes this time). New Twitter account & blog post here: The Slack channel has migrated to #xtdb already.

๐ŸŽ‰ 60
xt 20

another 4 letter project name with an X, the tradition was respected I see :)

๐Ÿ˜‰ 4
โญ 2

I like it!

๐Ÿ™ 2
Bobbi Towers19:09:38

The #exercism Clojure track has launched brand-new "Concept exercises" in a beta stage: This is the result of a 2 year (mostly volunteer) effort to provide a better learning path on Exercism. What once was a largely haphazard collection of challenges is being revamped into a proper syllabus that navigates the student through the graph of core Clojure concepts, with a new in-browser editor with automated testing. This is very exciting and a bit terrifying for me, because it's the first thing I've written that is used in this scale of production. I'm sure there are lots of bugs, hugely embarrassing ones even, so I welcome your reports and any other feedback that could help improve the tooling and/or educational content.

๐Ÿ‘ 20
clojure-spin 8
clj 8
๐Ÿš€ 20
๐Ÿ™ 22
๐Ÿ’ฏ 74
sheepy 36
๐ŸŽ‰ 34
Bobbi Towers20:09:42

Oh that's interesting... I'll report that to the team ๐Ÿ˜…

partywombat 2

It's just an implicit offering to become a jack of all trades. :)

catjam 8
Bobbi Towers20:09:21

That's not actually a 0, it's a Mobius Strip that has been unraveled, representing the endless cycle of knowledge

โž• 8
๐Ÿ˜ป 4
๐Ÿ˜‚ 12
๐Ÿคฏ 2
metal 4

Great endeavor! Thanks for doing this. I think it will be a great resource to guide beginners to. But one thing I would suggest is to add a project.clj file (or maybe deps.edn I guess but I would stay consistent with the rest of the non concept track Clojure problems) so folks can work on it locally with repl driven development, including running the tests.


Ahh, in looking at the github it looks like you have added a deps.edn file to all the concept exercises except the first one (lucian's luscious lasagna)


Look like the 0 thing is fixed, but what about these missing icons?


Hmm... after signing up didn't see this any more


instead just collapsed all of those containers


Also... not able to start any of the excercises. They seem to be locked?


Oh; I see. It's because I didn't complete "Hello world". But that's a little odd, because from the sylabus it looks like I should start by clicking "Basics", but then can't complete any excercises.


Shouldn't hello world either be first in the syllabus, or part of basics?


Next, after completing the hello world exercise, I see this:


Huh; After clicking around a bit, that box was replaced with one that let me mark it as complete.


Anyway, going through lasagna now; This is pretty sweet! Great work!


If I were to make any suggestions, other than smoothing out the friction above, I'd suggest an option for parinfer, and more robust autocomplete that incorporates local variable names.


Regardless, this is a wonderful resource; Thanks for working on this!


Oh... now, it shows little locks for the other entries on the syllabus: