This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-09-07
Channels
- # 100-days-of-code (1)
- # announcements (10)
- # aws (2)
- # beginners (134)
- # calva (25)
- # cider (29)
- # cljs-dev (43)
- # clojure (130)
- # clojure-dusseldorf (3)
- # clojure-italy (27)
- # clojure-nl (48)
- # clojure-spec (32)
- # clojure-uk (63)
- # clojurescript (75)
- # core-logic (5)
- # cursive (18)
- # datascript (2)
- # datomic (37)
- # emacs (5)
- # figwheel (13)
- # figwheel-main (55)
- # graphql (1)
- # java (7)
- # jobs (11)
- # jobs-discuss (19)
- # juxt (1)
- # leiningen (16)
- # luminus (10)
- # mount (3)
- # off-topic (40)
- # om (1)
- # onyx (1)
- # pedestal (7)
- # re-frame (40)
- # reagent (81)
- # ring (2)
- # shadow-cljs (32)
- # spacemacs (5)
- # testing (1)
- # tools-deps (48)
you will get the exact version of the transitive dep specified by the transitive dependency unless some where else another version is specified, either non-transitively or another transitive dep specifies a version
most build tools have some kind of utility or whatever that will complain if it finds those kinds of conflicts and so you can resolve them by excluding or whatever
but at no point is it some kind of floating flapping version thing, exact versions are specified and there is a deterministic algorithm that is used to choose one of the exact versions if they conflict in transitive deps
They let you specify exact versions in Maven central or Clojars, but not a specific GitHub git commit, I think? deps.edn lets you do specific git commits, but I wasn't aware that lein or boot can do that (happy to be corrected).
tools.deps extends the model to gti repos, but it still has to deal with conflicting transitive deps in someway, and uses some deterministic algorithm for it
but tools.deps also opens the door for things like a transitve dep giving some library from git the name :foo/bar and some other transitive dep gets that library from maven and calls it :foo/baz
which, if you don't use the same names for the deps, it can't tell if they are the same library
as far as artifact integrity, again that sort of depends on which build tool you use, and even which maven repo you use
maven does provide for(but doesn't require) signature files distributed with the artifact, and I believe it checks those when fetching artifacts, but the utility of those depends on if you are fetching those over https and if you trust the maven repo you are fetching artifacts from
you can also gpg sign maven artifacts, but I don't think checking those are turned on anywhere, largely because most artifacts are not signed because gpg is a huge pain
just saw that bruce hauman is cited in a paper about racket pattern matching as having rewritten and maintained the current imiplementation of the racket pattern matching infrastructure. amazing!
I've been struggling with my workflow in the day job languages since getting into clojure. I feel like I could improve my workflow in those imperative languages (Golang, Java) a lot with some inspiration from the Clojure world.
Everything feels pretty awkward now even in Go for example, which is a pretty small language and it has first class functions etc and a CSP implementation which is nice to use
That's the unfortunate dark side of learning Clojure š I eventually had to quit my day job and go hunting for something where I could use clj/s.
But just the everyday things, like I want to get some data that I'm interested in from a json endpoint, take out the parts that I'm interested in and just poke at them a bit
@emilaasa is the problem having to do with creating custom struct for every json structure you want to poke?
It's on another level than that, it's more like how do I efficiently see the data? Currently I use some kind of amalgamation of TDD and using the debugger to actually understand what is going on in any piece of Java / Go software that I write
I don't quite know how to phrase it, but it feels like I have to do a lot of work just to get the same feedback as evaluating an expression with a keystroke in Clojure
weeks ago I tried to see data inside Firebase User object returned from java sdk, and it's not easy as just println or evaluating the data object in the clojure repl.
I have to call getDisplayName, getEmail on the object just to see the information I want
sometimes the bean
function can help when dealing with Java APIs: https://clojuredocs.org/clojure.core/bean
https://github.com/stuarthalloway/presentations/wiki/Aim-Small,-Miss-Small:-Writing-Correct-Programs does anyone know where this talk was given?
Weird things I just found: While Java does not have standard SmallTalk-style collection utilities as first-class members of its collection classes, there are two exceptions - the fairly normal .forEach
, and the far more odd choice .removeIf
. I guess .map
or .reduce
would force you to create a new collection, so they aren't present? Still seems odd.