Fork me on GitHub
#off-topic
<
2021-11-14
>
ericdallo01:11:01

@drewverlee I use this at clojure-lsp: https://github.com/clojure-lsp/clojure-lsp/pull/585 It opens PRs automatically whenever a new version is available

👍 1
ericdallo01:11:02

It's a https://github.com/clojure-lsp/clojure-lsp/blob/master/.github/workflows/bump_deps.yml that runs at every push, and it's really smart, I've using for some months already and it works really well for clojure-lsp project

ericdallo01:11:53

It could be improved to show the CHANGELOG of the bump though

mjw15:11:12

As someone who started learning Clojure as a way to learn more of the JVM without having to learn Java, I'm now reading Java Concurrency in Practice and it's dawning on me for the first time how horrifyingly brittle Java programs with mutable state can be.

☝️ 4
p-himik15:11:53

Isn't it the case for all languages with similar concurrency primitives? Or does something exacerbate it for Java?

mjw15:11:50

I'm reading about how the Java Memory Model allows the compiler to reorder and cache operations with the result that, without synchronization, operations can occur in different order across threads and that some changes may never be visible to other threads. I'm sure other languages allow similar optimizations in their spec, but I'm only just now getting the full grasp of the fragility of these applications I've been working on.

Alex Miller (Clojure team)15:11:19

it's enough to drive you to making a language without shared mutable state :)

❤️ 9
gklijs20:11:42

It's one of the advantages of Kotlin as well. Although still not as easy to get right as with Clojure.

2
genekim15:11:35

I had a similar experience of horror reading this book — I studied concurrency in graduate school, so I thought I had developed an intuition for these types of problems. I'm especially loving the stories emerging from all the ARM JVM issues emerging from its less stringent memory barriers vs x86. Here's one deep inside Scala framework: https://youtu.be/EFkpmFt61Jo

🤯 1
gklijs15:11:54

Expanding a bit, as I see some :thinking_face:. Kotlin uses immutable collections as default, but it's much easier then in Clojure to (also) use mutable ones. With Kotlin coroutines some call back heavy code becomes easier, but it's not really breaking things down to simple functions like they would with Clojure.