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