Fork me on GitHub
#off-topic
<
2018-09-07
>
emccue00:09:59

willing to look like an idiot, but that doesnt apply for transitive deps

emccue00:09:14

at the very least I dont think integrity is verified with the dep downloads in lein

hiredman00:09:07

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

hiredman00:09:27

how those conflicting cases are handled varies by the tool you are using

hiredman00:09:03

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

hiredman00:09:11

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

andy.fingerhut00:09:23

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).

hiredman00:09:04

an exact version in any maven repo

hiredman00:09:33

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

hiredman00:09:16

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

hiredman00:09:14

which, if you don't use the same names for the deps, it can't tell if they are the same library

hiredman00:09:22

as far as artifact integrity, again that sort of depends on which build tool you use, and even which maven repo you use

hiredman00:09:48

(or for tools.deps, things outside of maven)

hiredman00:09:35

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

hiredman00:09:35

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

hiredman00:09:51

āˆµ dallben ~ āˆ“ find .m2/repository -name \*.sha1|wc -l
10555

john03:09:29

we basically want nix in clojure

emccue04:09:18

well I learned some stuff

dpsutton04:09:58

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!

šŸ˜± 8
šŸ‘ 4
emccue04:09:15

who and what now?

emilaasa05:09:59

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.

emilaasa05:09:08

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

eggsyntax13:09:32

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.

emilaasa05:09:45

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

mavbozo05:09:41

@emilaasa is the problem having to do with creating custom struct for every json structure you want to poke?

mavbozo05:09:26

i never used go before, just heard stories from a friend

emilaasa05:09:11

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

emilaasa05:09:38

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

mavbozo05:09:55

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.

mavbozo05:09:59

I have to call getDisplayName, getEmail on the object just to see the information I want

mavbozo05:09:59

I guess I am spoiled by the easiness of clojure hash-map even clojure record

schmee05:09:58

sometimes the bean function can help when dealing with Java APIs: https://clojuredocs.org/clojure.core/bean

mavbozo06:09:22

@schmee interesting, I'm going to try that

emilaasa06:09:55

@dominicm deconstructconf I think

emilaasa06:09:33

Slides look interesting!

dominicm08:09:11

Apparently the videos are coming out week-by-week

fellshard17:09:45

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.