#clojure log - Jan 11 2017

The Joy of Clojure
Main Clojure site
Google Group
List of all logged dates

0:26 foobar_: hello, how do you implement a threaded code interpreter without tail call?

0:27 as far as i see recur is only for recursive tail position..

1:40 uberdan: exit

1:40 exit

3:05 Hanonime: Hola

3:05 mavbozo: halo

3:05 dysfun: yo

3:07 Hanonime: how 'r'y'all in this fine morning ?

3:08 dysfun: i was sat down for a few seconds when i got your message

3:08 so tired as

3:13 Hanonime: rough night ?

3:13 dysfun: no, just rough morning. most mornings are

3:15 mavbozo: rough morning a couple hours ago because I slept late and have to get up early

3:17 Hanonime: have a bit of trouble starting work myself

3:20 dysfun: i do every morning

3:20 that's why i sit in here and read the internet for a couple of hours before doing anything

3:24 deadghost: listening to trance music works very very well for me to kickstart work

3:25 dysfun: I can't really. i only have shit earphones any my partner is in bed sleeping

3:26 deadghost: I used cheapo $30 headphones

3:26 sound is great, not comfortable for 12 hour code sessions

3:27 dysfun: most of my code is written during long sessions

3:31 Hanonime: for certain programming tasks, music is a real boost

3:31 deadghost: it's the only way I can do long sessions without getting distracted

3:32 Hanonime: but then you need the right kind of music

3:33 sometimes i listen to atonal music because it's very good for putting distractions away, although it's shit if you try to enjoy it

3:33 fantazo_: music is also a helpful blanket against colleagues noise.

3:34 Hanonime: i work a lot at home, it's very quiet, too quiet sometimes

3:36 deadghost: would be nice to upgrade to a nicer pair of headphones one day

3:37 very important piece of equipment

3:38 Hanonime: go for Ath-M50X if you can treat yourself

3:39 deadghost: Hanonime, shooting to get that in 4 months if I make it back home

3:39 and have a bit of extra money

3:40 my current pair is already falling apart

3:40 need to position the wire just right otherwise one side doesn't work

3:41 head strap is gone

3:41 dysfun: yeah it's no fun being broke is it?

3:41 deadghost: I wake up every morning wishing for death

3:42 dysfun: we only really do code, not MH advice

3:42 Hanonime: MH ?

3:42 dysfun: mental health

3:43 deadghost: dysfun, funny enough my code productivity has never been higher

3:43 dysfun: because you're making long sessions to sit down and hack

3:43 btw, i figured out that datomic question yesterday

3:44 deadghost: right

3:44 what's the answer

3:44 dysfun: you use :db.unique/value instead of :db.unique/identity

3:44 Hanonime: i think programmers are more prone to have MH issues than the average

3:44 dysfun: and then it will just do the right thing

3:44 Hanonime: well, maybe not mathematicians

3:45 deadghost: I can't stop reading MH has men's health

3:45 dysfun: Hanonime: certainly is. i used to make a point of speaking about mental health at programming conferences, but i just don't even go anymore

3:45 deadghost: dysfun, got a link where I can read more about that?

3:46 oh I think I found it

3:46 dysfun: it's the 'schema' page on the datomic site

3:47 does anyone know if nikitonsky ircs anywhere?

3:47 deadghost: "Attempts to assert a new tempid with a unique value already in the database will cause an IllegalStateException"

3:47 ok so you try catch the exception and handle it from there yeah?

3:48 dysfun: yes

3:48 obviously you can't add a user if they exist, so you just tell the user that

3:48 deadghost: alright I'll put that in my do eventually list

3:58 dysfun: hrm, ekmett says "i tend to write large quantities of code before attempting to compile". I do that too, makes me feel slightly better

3:59 deadghost: ?

3:59 I mean

3:59 you eval in the repl right?

3:59 dysfun: i just write code and eventually try and run it most of the time

3:59 only when debugging or i'm not sure of something

4:00 deadghost: no I need that interactivity

4:00 dysfun: i don't. while i find it annoying tidying up the bugs afterwards, it's not as annoying as losing flow

4:00 deadghost: a tiny bit more discipline up front to prevent possible headaches 30 minutes down

4:01 eval is part of my flow

4:02 dysfun: basically, waiting for things to come back stops my braining

4:09 that's why i'm so big on speeding up dev workfow

4:09 deadghost: dysfun, tooling is essential

4:10 I still have a lot of speed bumps

4:10 dysfun: don't we all

4:10 deadghost: I thought emacs + evil would get me super super fast

4:10 dysfun: i've tried to move things around to focus on delivering more often

4:10 deadghost: and it did

4:10 but I only found more bumps

4:10 dysfun: so i've been tackling simpler problems that can be used in combination to tackle other things

4:11 for example i made a bunch of updates to my spec library yesterday and threw away a lot of code in some other libraries

4:11 deadghost: cljr also could be better

4:11 find-usages takes forever

4:11 dysfun: to get the sort of performance we like requires proper integration

4:12 deadghost: my hardware is also choking up sometimes

4:12 dysfun: which is in general something clojure does terribly, because we like small libraries that do one thing well

4:12 deadghost: need more ram and a ssd

4:12 dysfun: but it's still early days

4:13 deadghost: small libraries made getting started with web dev a pain

4:13 dysfun: yes

4:13 deadghost: now it's *mostly* smooth sailing

4:13 dysfun: a few of us are trying to tackle that one

4:13 i still point people at luminus to get starterd

4:13 deadghost: well it's been 10 years

4:13 I suppose that's still early

4:13 certainly not the golden age

4:13 dysfun: sure. and how many people from here do you think were here ten years ago?

4:14 there are enough libraries to do most things now, which is great

4:14 deadghost: when I started

4:14 dysfun: now is a great time to focus on creating an integrated experience

4:14 deadghost: the lib ecosystem was already pretty good

4:14 2-3 years ago

4:14 dysfun: when i started, it was okay. the documentation was generally terrible

4:15 deadghost: cljs is definitely early days though

4:16 I still don't quite have the hang of it

4:16 and having a concoction of cljs deps that worked was a pain for me when I got started

4:17 seemed to have stabled out a bit

4:18 dysfun: oh yes, libs did not work well together in the early days of cljs

4:18 i haven't had a problem in ages though

4:18 not to say cljs is without its problems today, but it's much better

4:18 deadghost: it is

4:18 at least we can all kinda agree on figwheel

4:19 jumped through 2-3 other brepls before figwheel

4:20 dysfun: oh i'm back to boot-reload, which now uses figwheel-sidecar

4:20 deadghost: I never tried boot

4:20 lein just werks

4:21 dysfun: boot definitely does not 'just work', but it's powerfu

4:24 mavbozo: fighwheel just works through leiningen repl

4:24 dysfun: except when it gets confused

4:25 deadghost: I actually haven't been using the actual repl

4:25 and just modifying the file

4:31 mavbozo: yeah, that confusing part in the repl. sometimes when I evaluate something it says symbol not found and at the same time return the result

5:14 justin_smith: foobar_: you can use trampoline for that

5:15 foobar_: the fundamental limitation is that goto in the jvm can only jump within a single method, and recur is a goto, but trampoline allows ditching the previous stack frame and starting a new one (instead of going deeper)

5:59 dysfun: justin_smith: "but how do they work?"

6:00 justin_smith: dysfun: it's a while loop that calls your return value with no args as until it's not a function any more

6:03 dysfun: :o

6:03 such dynamic. very webscale

6:03 justin_smith: dysfun: the source of trampoline is remarkably simple and readable, in fact

6:03 dysfun: despite being written in java?

6:03 justin_smith: it's clojure!

6:03 dysfun: ooh

Logging service provided by n01se.net