off-topic

https://github.com/clojurians/community-development/blob/master/Code-of-Conduct.md Clojurians Slack Community Code of Conduct. Searchable message archives are at https://clojurians-log.clojureverse.org/
Chase 2021-01-27T00:27:10.146700Z

Same. It's been quite a fun ride (and I just paid off my credit card balance with it) but I've also learned quite a bit immersing myself in the chaos.

2021-01-27T13:58:06.151Z

Got to go have a tooth extracted in a couple of hours :( anyone having a worse afternoon? I see lots of ice cream and beer in my immediate future tonight.

alexmiller 2021-01-27T20:30:51.156500Z

I think you've just noticed the ever ongoing surge of mini lisps; it doesn't really stop

šŸ˜‚ 1
2021-01-27T20:31:08.156900Z

yeah, there have been toy lisps on a pretty regular schedule since lisp

2021-01-27T20:31:28.157500Z

one of my favorites lately is fennel, janet, from the same original author, is pretty cool too

alexmiller 2021-01-27T20:31:42.157900Z

I mean this is already the 3rd or 4th from Tim :)

dpsutton 2021-01-27T20:34:58.158100Z

baldridge?

lread 2021-01-28T18:19:47.200300Z

His Clojure tutorials live on, some good stuff in there https://tbaldridge.pivotshare.com/

šŸ‘ 1
alexmiller 2021-01-27T20:45:36.158400Z

yes

dpsutton 2021-01-27T20:46:57.158600Z

i miss him being in the community

alexmiller 2021-01-27T20:47:20.158800Z

me too

souenzzo 2021-01-27T22:12:20.159700Z

+1 not-lately https://github.com/pixie-lang/

šŸ‘ 1
sova-soars-the-sora 2021-01-27T22:18:21.160Z

accidentally hit the "sort lines" button in my text editor... what great code popped out of that

šŸ˜‚ 1
sova-soars-the-sora 2021-01-27T22:18:36.160200Z

alphabetically-oriented programming

2021-01-27T22:33:55.160600Z

if your codebase isn't stable under sort, are you really a programmer?

2021-01-27T22:34:22.161Z

if you use FP you could also use uniq after the sort :D

phronmophobic 2021-01-27T22:34:34.161200Z

is it a stable sort?

dpsutton 2021-01-27T22:35:09.161600Z

FP stands for fixed point. (= code (sort code))

2021-01-27T22:36:53.162400Z

ITYM (comp (partial apply =) (juxt identity sort))

emccue 2021-01-27T23:21:50.162500Z

what happened?

2021-01-27T23:32:14.162900Z

Yes! I love fennel, itā€™s been a ton of fun hacking on spacehammer with it.

Ī»raulain 2021-01-27T23:47:09.164900Z

"You haven't mastered a tool until you understand when it should not be used." ā€“ Kelsey Hightower
I stumbled upon this quote and it got me thinking. What are some things you wouldnā€™t recommend Clojure for? What is Clojure not so good at or when shouldnā€™t you use Clojure?

2021-01-27T23:53:45.166100Z

To put it as mutually respectful and briefly as I am able: Tim is in that class of devs who has strong opinions about language design\contribution since he is also a language designer. He holds conflicting ideas in how the contribution process to core should operate.

2021-01-27T23:55:23.167800Z

if your primary constraints include ā€¢ low memory usage ā€¢ predictable response time ā€¢ high numeric throughput ā€¢ fast startup ā€¢ static assurances about data types you probably don't want clojure various experts might disagree about how many you need before it's a definite no, hopefully none would use clojure when checking all of the boxes

šŸ™ 2
Ben Sless 2021-01-28T08:34:43.175700Z

You also have Carp which has Clojure like syntax, an interpreter, but the compiled image uses an ownership model instead of GC

raspasov 2021-01-28T11:08:54.188Z

ā€¢ low memory usage - agree ā€¢ predictable response time - I agree with the GC argument, but thereā€™s GC solutions on the JVM (azul, etc) which allow for more predictable response times; another option is turning off GC completely and letting the system just crash out of memory (OK for some types of problems)) ā€¢ high numeric throughput - I would agree about that in terms of community/library support but not because of a fundamental limitation of the language (see http://neanderthal.uncomplicate.org ) ā€¢ fast startup - thatā€™s fair (possibly use ClojureScript?) ā€¢ static assurances - thatā€™s fair (I would question the ā€œconstraintā€ in the first place, but thatā€™s a whole another discussion šŸ™‚ )

šŸ‘ 1
2021-01-28T16:47:44.198800Z

@raspasov you can improve the predictability of gc, but consider if your domain was eg. a low power software defined radio - any gc in your main loop is a problem period, and "run until you crash" still uses the allocator which still causes periodic pauses on numeric throughput, it's simply easier to write a java class that crunches numbers efficiently than it is to write clojure code that properly unboxes and eliminates runtime reflection, perhaps I'm too dumb to know how my graph algorithm could have used matrices, but I can tell you it got 32x faster and stopped being a bottleneck when it was replaced by 40 lines of very readable procedural java code

2021-01-28T16:48:22.199Z

(graphs don't really parallelize / vectorize like matrix math does)

raspasov 2021-01-28T22:47:29.203700Z

@noisesmith good points, I agree; limited Java in the right places can definitely be useful for optimization.

jcburley 2021-02-07T19:42:36.148900Z

ā€¢ ā€œfast startup - thatā€™s fair (possibly use ClojureScript?)ā€ Two of the kinda-fast-startup Clojure variants of which Iā€™m aware are https://github.com/babashka/babashka and https://github.com/candid82/joker. The former is much more like Clojure itself AFAICT, as itā€™s based on GraalVM, a type of JVM. The latter is an interpreter written in Golang. Included in the canonical build is a startup accelerator I wrote, which seems to make it fairly ā€œcompetitiveā€ with babashka, though perhaps using slightly less resources (probably due to having no JIT or equivalent whatsoever). Someday I hope to investigate whether startup time can be reduced even further, as it still seems slower than necessary to me.

2021-02-08T16:17:10.170100Z

that's true, and they introduce their own tradeoffs - they are not appropriate for the kind of high throughput app that clojure excells with

2021-02-08T16:17:58.170300Z

eg. you can use cljs instead of clj in an aws lambda, but it only saves you total time if your job is short and computationally simple