This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-08-31
Channels
- # announcements (3)
- # aws-lambda (1)
- # babashka (122)
- # beginners (241)
- # calva (28)
- # cider (7)
- # clara (7)
- # clj-kondo (43)
- # clojars (5)
- # clojure (326)
- # clojure-europe (60)
- # clojure-italy (2)
- # clojure-nl (4)
- # clojure-spec (21)
- # clojure-uk (4)
- # clojurescript (162)
- # cursive (30)
- # datomic (3)
- # editors (5)
- # emacs (4)
- # figwheel-main (1)
- # fulcro (24)
- # gratitude (3)
- # helix (7)
- # honeysql (20)
- # improve-getting-started (1)
- # introduce-yourself (11)
- # jobs (3)
- # joker (2)
- # kaocha (15)
- # lsp (21)
- # lumo (2)
- # meander (3)
- # off-topic (34)
- # re-frame (6)
- # reagent (1)
- # releases (4)
- # rum (2)
- # shadow-cljs (37)
- # spacemacs (16)
- # tools-deps (16)
- # vim (23)
- # xtdb (32)
what do you think about? https://nanovms.com/nanos-c2 has anyone tried it? worthwhile to test?
I just have to recommend the book “The Murderer’s Ape”, by Jakob Wegelius. I think that maybe outside of Sweden it is easily missed for the gem it is. In our family we are four who have read it, aged 8, 11, 21 and 53. We read it together, that is the 21-yo read it loud for the rest of us. We all just loved it! The 8-yo was climbing the walls at times, because of the suspense and the way Wegelius sometimes treats the characters he makes us love. I just have to give it to him, he is a genius author. No idea why this book only has 4.25 on Goodreads! You have to be dead for this story not to totally soak your being. https://www.goodreads.com/sv/book/show/33978302-the-murderer-s-ape Caveat for me not having read the English translation, but from what I have heard it should be well done.
Totally going to add that to my list. I have a middle schooler who loves murder mysteries.
I know this was so long ago, but I finished it! Thanks for the recommendation. It was really good and I’m going to encourage my kids to read it. Thanks so much!
CIDER is no worky in my emacs ;_;
I get a nil>
with an infinite loading ===
bouncing around
sdkman to the resq
new system for collecting, deriving and working with facts about source code just dropped (in Haskell, by Facebook) https://glean.software I think Rich was working on something similar at some point
codeq https://blog.datomic.com/2012/10/codeq.html is the Rich thing you're referring to
there is actually a codeq v2 but they've never released it
i've mentioned it once but will say again, a queryable runtime is an absolute killer feature of Clojure. And i think it might take a while for that feature to be recognized for the genius that it is
can you explain what you mean by queryable runtime?
(apropos "rename-keys")
(clojure.set/rename-keys)
(doc clojure.test)
(find-doc "dynamic")
the next best thing is how rust generates documentation and runs a webserver with all of this. but its even more first-class when the runtime itself has all of this. and this includes regular jars. it's just built into the language
@U11BV7MTK 💯 - I have on the back burner a talk about using ed
as a clojure editor, not because ed
has some killer feature, but because you can do so much of what people think they need editor tooling for in clojure itself
for instance, this is our production jar:
MB_JETTY_PORT=3006 java -Dclojure.server.repl="{:port 50506 :accept clojure.core.server/repl}" -jar 0.40.0.jar
and then just a simple
% nc localhost 50506
user=> (apply require clojure.main/repl-requires)
nil
user=> (apropos "union")
(clojure.set/union)
user=> (apropos "password")
(clj-ldap.client/modify-password metabase.api.session/GET_password_reset_token_valid metabase.api.session/POST_forgot_password metabase.api.session/POST_reset_password metabase.api.user/PUT_:id_password metabase.api.util/POST_password_check metabase.driver.common/default-password-details metabase.email/email-smtp-password metabase.email.messages/send-password-reset-email! metabase.integrations.ldap/ldap-password metabase.integrations.ldap/verify-password metabase.models.database/protected-password metabase.models.user/form-password-reset-url metabase.models.user/set-password! metabase.models.user/set-password-reset-token! metabase.public-settings/enable-password-login metabase.public-settings/password-complexity metabase.util.password/active-password-complexity metabase.util.password/common-passwords-url metabase.util.password/verify-password)
user=>
i'm querying about all of the things related to passwords from a production jar. that is mind blowing to me
yeah. honestly a first-class dev experience in clojure is really just a way to easily paste forms into a repl buffer, and perhaps to require the current buffer.
@U051SS2EU would watch that talk 100%
@U11BV7MTK if you want to play a little bit more, I'm trying to make the "queryable runtime" even more uniform in this project: https://gitlab.com/clj-editors/duck-repled
There's little documentation, but I can help (and add new docs) if you're interested 🙂
@U3Y18N0UC what is "my repl interaction"?
What do you mean? Is it something that's on the code?
Ah, I see, on the README
Yeah, maybe the README is not that well-written also 😅. It meant that instead of trying to figure out what's the sequence of commands to get all public vars on a specific namespace, and evaluate them, you get an EQL query that will do that for you
Sometimes you can even combine them, like for example, suppose you want to get all vars from a specific namespace. This could be:
(eql {:clj :repl/namespace 'some.namespace}
[{:namespace/vars [:var/fqn]}])
Or you could ask to include metadata for these vars:
(eql {:clj :repl/namespace 'some.namespace}
[{:namespace/vars [:var/fqn :var/meta]}])
That would be great. Thanks for the clarification.
didn't LISP invent the queryable runtime? Seems like it's taking a while to catch on 😉
I once wondered how many things were added to clojure.core
over the versions. After cloning the Clojure repo, and doing weird regex checks across history in git, I realised I could just do this:
user=> (->> (vals (ns-publics 'clojure.core))
#_=> (keep (comp :added meta))
#_=> (frequencies)
#_=> (sort-by #(Long/parseLong (subs (key %) 2)))
#_=> (run! println))
[1.0 434]
[1.1 38]
[1.2 45]
[1.3 16]
[1.4 8]
[1.5 11]
[1.6 8]
[1.7 19]
[1.8 1]
[1.9 27]
[1.10 8]
That's when I started to really "get" the value of the queryability. I then understood how easily I could implement my own version of clojure.repl/apropos
.
Edit: fixed the sorting.