other-languages

here be heresies and things we have to use for work
martintrojer 2016-07-06T07:32:40.000107Z

having worked in Elm in anger for a handful weeks all I can say its been a near religious experience.

martintrojer 2016-07-06T07:33:00.000108Z

I'm so much more productive than I used to be in CLJS is off the charts,

martintrojer 2016-07-06T07:33:03.000109Z

OFF. THE. CHARTS.

cfleming 2016-07-06T08:31:38.000110Z

@martintrojer: A few people have commented that the tooling is considerably less mature. Do you agree?

martintrojer 2016-07-06T08:32:02.000111Z

I think Elm tooling > CLJS

martintrojer 2016-07-06T08:32:16.000112Z

Emacs integration pretty great

cfleming 2016-07-06T08:32:17.000113Z

Interesting, good to know.

cfleming 2016-07-06T08:32:30.000114Z

So you’re using it for work?

martintrojer 2016-07-06T08:32:33.000115Z

Compilation errors, and navigate back to the source

martintrojer 2016-07-06T08:32:46.000116Z

For work yes, we are re-writing a 20k CLJS app

cfleming 2016-07-06T08:33:11.000117Z

I think there are pretty sweet looking modes for light table and Atom, too.

cfleming 2016-07-06T08:33:19.000118Z

Wow, removing your legacy code 🙂

cfleming 2016-07-06T08:33:55.000119Z

You’re at Juxt, right? How do your co-workers like it?

martintrojer 2016-07-06T08:33:58.000120Z

The think that clinches it for me (with regard to dev-setup) is how amazingly fast the Elm compiler / REPL is. That gives me a much more pleasurable dev experience than the sluggishness of figwheel and bloody google closure

cfleming 2016-07-06T08:34:22.000121Z

Yeah, I can see that. Does it have a figwheel-type-thing?

martintrojer 2016-07-06T08:34:31.000122Z

I mean, a scratch build of the Elm prod artefact is ~10 seconds. The equivalent CLJS build is 6-7 minutes!

cfleming 2016-07-06T08:34:45.000123Z

No shit.

cfleming 2016-07-06T08:34:47.000124Z

Wow.

martintrojer 2016-07-06T08:34:53.000125Z

Yeah, cljs is just terrible

martintrojer 2016-07-06T08:35:54.000126Z

Re; figwheel-type-thing, Elm complier errors is pretty much state of the art. I haven't seen any other language even close.,

1👍
cfleming 2016-07-06T08:36:07.000127Z

I meant in terms of live reloading.

cfleming 2016-07-06T08:36:25.000128Z

And yeah, I love those errors.

martintrojer 2016-07-06T08:36:28.000129Z

Oh yeah, basically I don't to that (yet), its so fast so reloading the pages is fine.

cfleming 2016-07-06T08:36:41.000130Z

Interesting.

martintrojer 2016-07-06T08:36:44.000131Z

but, Elm support pretty wicked hot reload (and time-travelling debuggers)

cfleming 2016-07-06T08:37:01.000132Z

Yeah, that looks very nice.

martintrojer 2016-07-06T08:37:12.000133Z

but the basic setup is so great I haven't felt the need to setup hot reload.

martintrojer 2016-07-06T08:37:29.000134Z

I mean, CLJS dev withjout figwheel is just not possible, and its still not particularly good.

cfleming 2016-07-06T08:37:33.000135Z

I’m keen to know about JS interop too, but I have to step out for a bit. I’ll be back later on.

lewix 2016-07-06T13:43:03.000136Z

martintrojer: really? is it that good?

lewix 2016-07-06T13:44:22.000137Z

martintrojer: were you using cljs and reagent?

lewix 2016-07-06T13:44:44.000138Z

martintrojer: I was thinking about investing some time with Elm

martintrojer 2016-07-06T13:45:12.000139Z

CLJS, Reagent, figwheel ofc

martintrojer 2016-07-06T13:45:31.000140Z

don't waste your time on cljs if you're considering Elm

lewix 2016-07-06T13:46:17.000141Z

martintrojer: wow.

lewix 2016-07-06T13:47:20.000142Z

martintrojer: you almost got me excited. How is the interop with js? Also what do you guys use for the backend - clojure or elixir? (I heard a lot of Elm folks like Elixir)

martintrojer 2016-07-06T13:47:48.000143Z

Clojure backend (I'm am/was a Clojure dude)

lewix 2016-07-06T13:48:22.000144Z

martintrojer: any plans to change the backend to something else?

martintrojer 2016-07-06T13:48:54.000145Z

not immediately, Clojure works better on the backend. Still looking for alternatives.

martintrojer 2016-07-06T13:49:02.000146Z

I'm blogging about my quest if you're interested

lewix 2016-07-06T13:50:07.000148Z

martintrojer: sure. Golang works well for some... https://www.reddit.com/r/golang/comments/4r8ah1/do_you_know_of_a_company_who_moved_from_golang_to/

lewix 2016-07-06T13:50:25.000150Z

markmandel: can you link me to your blog

martintrojer 2016-07-06T13:50:31.000151Z

golang doesn't pass the bar for me.

martintrojer 2016-07-06T13:50:52.000153Z

"Beyond Clojure"

martintrojer 2016-07-06T13:51:14.000154Z

have a number of in the pipe

lewix 2016-07-06T13:54:20.000155Z

racket?

martintrojer 2016-07-06T13:56:38.000156Z

so, what I'm looking for;

martintrojer 2016-07-06T13:56:39.000157Z

1. FP

martintrojer 2016-07-06T13:56:43.000158Z

2. Expression based

martintrojer 2016-07-06T13:56:46.000159Z

3. No nulls

martintrojer 2016-07-06T13:56:59.000160Z

4. ML-like type system

martintrojer 2016-07-06T13:57:21.000161Z

5. Practical, i.e. good library ecosystem

martintrojer 2016-07-06T13:57:32.000162Z

6. Something I can live with in prod

martintrojer 2016-07-06T13:57:46.000163Z

so golang, racket, elixir are out

lewix 2016-07-06T13:59:33.000164Z

what you're looking for doesn't exist yet

martintrojer 2016-07-06T14:01:04.000167Z

looking at; ocaml/reason, haskell, F#, Purescript, rust

1👍
lewix 2016-07-06T14:01:10.000168Z

markmandel: Elm doest not have point 5 as far as I know

martintrojer 2016-07-06T14:01:24.000169Z

don't agree, Elm is very practical

lewix 2016-07-06T14:02:03.000171Z

markmandel: oh how does F# compare to clojure in your opinion, i also considered looking at it

lewix 2016-07-06T14:03:22.000172Z

markmandel: Elm is not mature enough to have a good library ecosystem, isn't it

lewix 2016-07-06T14:23:26.000174Z

learning F# also means getting familiar with .Net ecosystem..I'll probably postpone that to another year lol

martintrojer 2016-07-06T14:31:17.000175Z

> Elm is not mature enough to have a good library ecosystem, isn't it

martintrojer 2016-07-06T14:31:23.000176Z

Totally disagree with this ^^^

lewix 2016-07-06T14:36:00.000177Z

martintrojer: I see. that's good to know I'll give it a shot.

lewix 2016-07-06T16:24:14.000178Z

I wish clojure had elm error messages; i would be in heaven

markmandel 2016-07-06T16:55:49.000180Z

@lewix: http://www.compoundtheory.com/ is ma blog

lewix 2016-07-06T17:04:28.000182Z

markmandel: thanks

lewix 2016-07-06T17:04:38.000183Z

markmandel: any nice article that you want me to see?

2016-07-06T18:46:30.000184Z

isn't Elm's interop with vanilla js libraries still somewhat wonky?

2016-07-06T18:46:39.000185Z

as in, you have to use the ports system

seancorfield 2016-07-06T20:01:28.000186Z

I wouldn’t call that "wonky" — I’d call it a well thought out abstraction to keep impure code effects out of the Elm side of your app.

seancorfield 2016-07-06T20:02:52.000187Z

Elm has tried (and rejected) a number of interop abstractions and what it has today is pretty darn good. I followed the evolution of Elm for a long time (and was pretty involved in some of the language design discussions for a while). I think Evan and his team have done an amazing job in many areas.

seancorfield 2016-07-06T20:04:41.000188Z

I think the recent "course correction" away from FRP terminology is also a smart move, enabled by baking certain concepts into the runtime, to allow a more pure way to write your code. This mirrors the early decisions to avoid the "M" word and some other terminology that can distract from elegant abstractions and concepts.

2016-07-06T20:11:14.000189Z

which concepts have been baked into the runtime? The move away from FRP has definitely interested me, seems like it'd make a lot of applications more feasible

markmandel 2016-07-06T20:48:26.000190Z

@lewix: ALL OF THEM 😄

lewix 2016-07-06T20:54:18.000191Z

lol

seancorfield 2016-07-06T20:58:49.000192Z

@scriptor: Essentially replacing FRP terminology with subscriptions and commands (baked into the runtime)

seancorfield 2016-07-06T21:01:55.000194Z

I wrote this little Elm program for fun one weekend, to get myself back up to speed on the latest changes (since I’d been away from the language since before the FRP course correction): https://github.com/seancorfield/solar-viewer/blob/master/src/Main.elm

seancorfield 2016-07-06T21:02:33.000196Z

I think that’s very elegant in terms of architectural separation (I could easily break it into separate modules at this point).