admin-announcements

Announcements from the Clojurians Admin Team (@U11BV7MTK @U077BEWNQ @U050TNB9F @U0ETXRFEW @U04V70XH6 @U8MJBRSR5 and others)
nblumoe 2015-09-24T05:59:08.000410Z

Can anyone recommend a book to learn more about the JVM and how it works? Ideally focusing on that and not just a chapter in a Java book or relying on deep Java knowledge.

šŸ‘ 2
sander 2015-09-24T07:35:55.000413Z

Hi, i'm wondering about common practice for composing systems. My cljs program combines multiple async data streams (sensor data, twitter stream, output log, bluetooth communication). Currently i'm implementing each component in a separate namespace, and sharing multiple input/output channels from core.async (some are (mult)ed) between them. Everything is set up in a central (run) function that initialises all the component event loops. REPL development is messy so right now i'm just restarting the whole compiled app every time. Is this typically a use-case for e.g. pub-sub, or stuart sierra's component?

sander 2015-09-24T07:37:17.000414Z

In dnolen's core.async talk he says (according to a note) "Think about the abstract event types and handling, not concrete event sources", so i wonder whether this argues for having just one combined pub-sub event channel instead of multiple input and output channels

sander 2015-09-24T07:43:07.000415Z

@nblumoe: no recommendation, but also got interested and found http://docs.oracle.com/javase/specs/jvms/se8/html/index.html - not really an introduction but at least it's precise and correct

nblumoe 2015-09-24T08:13:24.000417Z

thanks @sander! I was hoping for something instructional, with some text book hand holding. haven't started to read this yet, but "specification" doesn't sound like the most digestible read šŸ˜‰

sander 2015-09-24T08:14:32.000418Z

nblumoe: what kind of things do you want to learn about the jvm? for getting familiar with registers, stacks, frames etc. i really like the SICP book

jmglov 2015-09-24T08:17:31.000419Z

If there's anyone around who knows leiningen well, I've got a really strange issue that I could really use some help with.

jmglov 2015-09-24T08:17:49.000420Z

Pop over to the #C0AB48493 channel if you're feeling charitable. :simple_smile:

colin.yates 2015-09-24T08:18:57.000421Z

@sander - yes, I think that is where something like Stuartā€™s component system will help. Each discrete chunk defines a ā€˜startā€™ and ā€˜stopā€™ method. These chunks are wired into a single system. When that system is started all the chunks startā€¦.you can see where I am going.

colin.yates 2015-09-24T08:19:39.000422Z

The nice thing is that order is preserved, so if A depends on B depends on C then C then C will start then B then A. Closing will be done A then B then C.

colin.yates 2015-09-24T08:20:10.000423Z

I have seen a number of people declare their channels as a component in themselves and pass them around. Other components simply tap into them.

colin.yates 2015-09-24T08:20:12.000424Z

hth

sander 2015-09-24T08:22:23.000425Z

@colin.yates: thanks! i think i'll particularly like the order-preserving closing so that i don't need to ctrl-c the whole program each time i want to reload some code. putting channels directly in the component system sounds interesting, will try sketching out some things

colin.yates 2015-09-24T08:22:49.000426Z

a google for core.async and figwheel might help

nblumoe 2015-09-24T08:29:30.000427Z

@sander I could not point out specific aspects directly. However, atm everything that happens under the hood when running Clojure applications is arcane to me, as I don't have a Java/JVM background. Topics I would like to touch are JIT compilation, Garbage Collection, Bytecode. I just want to demystify the runtime. Rather concrete than abstract.

nblumoe 2015-09-24T08:29:58.000428Z

Interesting that you point at SICP...

2015-09-24T15:26:54.000443Z

@mr-spock: http://symbolhound.com/ might be more user friendly for programmers searching for symbols