Fork me on GitHub
#jobs-discuss
<
2018-06-13
>
bwstearns16:06:31

@dev964 what did you want to know?

Aleksander16:06:09

how was the decision made? to switch from scala to clojure

bwstearns16:06:44

So basically this is a greenfield project, and we had a Gopher, a Haskeller, and a "Just not Python I'm sick of writing Python"-guy. I'm currently the only one on the backend for the project so ultimately I could pick what we went with but I was trying to find a way to not play favorites or irritate anyone so I started with the compromise of using Scala.

jgh16:06:27

surely the haskeller would be pragmatic and on your side with clojure

😂 6
bwstearns16:06:59

But that meant I had to go learn Scala while starting to build out this API. Ultimately it came down to "I'm sick of scala already, why the hell did they invent implicits, and why does everyone wildcard import everything?"

👍 1
bwstearns16:06:28

I initially figured "oh I can just port over my haskell knowledge and Scala will be just an ugly haskell." I was wrong.

bwstearns16:06:49

And we're getting a new CTO who is cool with more esoteric languages because he is of the (I believe correct) opinion that it won't make hiring harder, and in fact can even help since there are more devs who want to work in [haskell|clojure|erlang] than there are jobs for them.

4
bwstearns16:06:18

@jgh I think he's probably the happiest with the result out of the three lol

scriptor16:06:42

while there are definitely plenty of people who are interested in haskell/clojure/etc jobs, it can be tough finding people with professional experience in those languages

danielglauser18:06:03

I don’t think that’s true. Every time we’re tried hiring Clojure devs we’ve been impressed by the number of experienced folks who respond.

danielglauser18:06:23

Of course we support fully remote folks so that helps.

scriptor16:06:12

which makes having a proper onboarding flow and training much more important

2
💯 2
bwstearns16:06:38

Absolutely, but people language switch all the time anyways. I don't see clojure being particularly difficult to learn (especially if you already have the basics of FP from some other experience)

👍 5
bwstearns16:06:11

While I was stubbing my toes on all of scala's language features I went and chatted with my friend who's really deep in to scala and was basically like "Am I getting dumber as I get older or is scala way harder to learn than haskell or clojure?" and he basically agreed that the number of features and lack of a super principled approach makes it substantially harder to get up to speed.

☝️ 1
bwstearns16:06:19

And he loves scala

seancorfield17:06:13

Yeah, my exposure to Scala during the 2.7/2.8 cycles (with a couple of brief revisits during the 2.10 cycle) left me mostly frustrated with how complex the language (and tooling) is. And, yeah, implicits are evil.

slipset17:06:47

@seancorfield I’ve wondered if implicits are somewhat like dynamic vars. Do you have thoughts on that?

seancorfield17:06:01

@slipset I don't see the similarity, to be honest. With dynamic variables, you are using them explicitly and you can easily search for uses of binding. Scala implicits are... implicit ...so it can be very difficult to spot that they are in play, and their behavior can be very surprising...

slipset17:06:50

I guess I was thinking along the lines of “Oh, suddenly a jdbc-connection”

slipset17:06:36

Like way down the call stack you suddenly have access to the database without explicitly passing it as a param.

slipset17:06:23

But, I agree to implicits being more hidden.

seancorfield17:06:37

Dynamic variables are still explicit in the code -- you don't magically get access to them without requiring their namespace and directly referencing them. Sure, their contents might change, but you know you're using them.

bwstearns18:06:38

I ran into a couple instances of "Wait.... this function worked in this file.... but not in this other file...." An implicit had been imported via the import x.y._ convention

the2bears19:06:58

I worked on Scala micro-services for one role. Just not the language for me, really feels messy and I don't see many people actually using it in an FP style - it's just Java with a different syntax and more problems like the mentioned implicits.

seancorfield19:06:36

@the2bears Well, to be fair, Scala is primarily marketed as a "better Java" to get existing Java shops to adopt it -- and for a while (maybe even still?) there were recommended subsets of Scala for initial adoption by Java developers. There is (or was?) a fairly vocal minority community that advocates fairly full-on FP-style Scala (the ScalaZ folks, for example) but at that point I think I'd rather be writing Haskell...

👍 3
nilrecurring19:06:35

Writing Haskell in 2018 is really nice actually 🙂

nilrecurring19:06:15

Also, if you need to stay on the JVM, there’s eta: https://eta-lang.org/

seancorfield19:06:46

A lot of the Eta site won't render in Microsoft Edge or IE11... I couldn't find a simple guide to show how to write just a small library in Eta and use it from another JVM language (if someone has a URL for such a guide, I'd be interested).

seancorfield19:06:19

"Avoid success at all costs" -- Eta's "Basics" for Java Interop says: You must have a basic understanding of sequenceables/monads to understand the rest of the section.

seancorfield19:06:56

And Haskell folks wonder why no one wants to learn their language? 👀

nilrecurring19:06:39

“Haskell folks” != “Eta folks”

👍 1
ddellacosta20:06:06

> And Haskell folks wonder why no one wants to learn their language? More to the point, that’s a pretty sweeping generalization to make both about “Haskell folks” as well as no one wanting to learn the language…the Clojure community certainly has a lot of issues with good documentation, but I think it would be pretty uncharitable to then make such a statement about Clojure

ddellacosta20:06:56

as it stands I’ve found less and less reason to hang out and communicate on the Clojure reddit or slack because I’ve generally felt like any comments that don’t toe the party line--especially when it comes to talking about stuff like static typing or other ideas prominent in Haskell-land--aren’t given much of a listen. It’s really ironic to me because the reason I found Haskell in the first place was because of Clojure, and Haskell and Clojure share a ton of DNA. I find it incredibly disappointing

👍 8
ddellacosta20:06:49

sorry, just realized I was in #jobs-discuss and not #off-topic or #other-languages 😂

ddellacosta20:06:51

will shut up now

nilrecurring20:06:55

@ddellacosta actually thank you for your comment, I totally agree with it, and I share the feeling about the general sentiment about Haskell in the air. I do embrace both Clojure and Haskell, and totally cannot see why there should be a dichotomy or friction between the communities. Both languages have their space.

5
Aleksander21:06:57

Scala has its unique strengths as well!

nilrecurring21:06:41

Might be, I’m not knowledgeable enough about it to be able to make comments 🙂

☝️ 1
seancorfield22:06:51

Sorry, I should have put a smiley face on that /cc @ddellacosta -- anyone who knows me also knows that I've had a love/hate relationship with Haskell effectively since it appeared -- it was the culmination of work that many of us in academia in the 80's and early had all been working on in various ways. It is frustrating that many parts of Haskell's overall community seem to sabotage any of it's potential for popularity.

seancorfield22:06:05

(my PhD work was on the design and implementation of functional programming languages and, like most researchers prior to Haskell, I created "yet another FP language" for my university, because we had not yet formed a common lingua franca for such work!)

Aleksander22:06:14

There are some good efforts to teach Typed FP and Haskell in particular: http://haskellbook.com/ Tooling is still rather poor and could be much improved.

seancorfield22:06:48

Yes, I admire Chris's approach with that (extremely) comprehensive book.

ddellacosta22:06:34

> It is frustrating that many parts of Haskell’s overall community seem to sabotage any of it’s potential for popularity. …just like it’s frustrating that many members of the Clojure community are unwilling to have nuanced and good-faith conversations about topics like static typing and other prominent features of Haskell ¯\(ツ)

ddellacosta22:06:10

and this is exactly why I don’t care to talk about it--you couldn’t respond without slipping in a knock on the community. Anyways, I’ll stop there

Aleksander22:06:11

@seancorfield chris’s and julie’s

Aleksander20:06:11

@ddellacosta @nilrecurring that sadly doesn’t seem to be the prevalent attitude in either of the communities …

ddellacosta20:06:02

I have had a number of discussions on #haskell on freenode and on reddit where folks have commented on good and bad aspects of Clojure, as they see them--and even address good points Rich Hickey has made about problems with static typing. There is some “dynamic typing is garbage” dismissiveness to be sure, but in general I find people in that community more open to nuanced discussion

ddellacosta20:06:46

the second comment here is case in point. Note that the first comment, while dismissive, is more a reaction to Rich’s attitude--which I think is fair to characterize as uncharitable toward static typing--vs. actually talking shit about Clojure. Whereas the second comment actually takes his comments very seriously and acknowledges problems. https://www.reddit.com/r/haskell/comments/763su7/in_which_rich_hickey_questions_the_value_of/

nilrecurring20:06:55

@ddellacosta +1, I share the same observations about the folks on r/haskell and in real-life

nilrecurring20:06:36

I do think that Rich’s talk would have been much better without the whole business of trying to prove static typing wrong (also I got the feeling he didn’t write enough production Haskell to properly appreciate the power of the type system, but I’d like to be proven wrong)

ddellacosta20:06:26

I agree on all points. I think spec would be far more compelling to me if he tried harder to consider how using a language like Haskell or OCaml would change the approach, vs. the kind of absolutist rhetoric he seems to favor. I think there is a very interesting comparison to be made there that would really highlight the pros and cons of both approaches--but you have to start by acknowledging that there are, in fact, pros and cons to both approaches

👍 4
Aleksander20:06:50

good discussion but feels like #other-languages ^_^

ddellacosta20:06:29

@dev964 you’re totally right! I tried to keep it to this thread at least

manuel04:06:31

Chiming in just to say I agree with @ddellacosta and @nilrecurring ☺️

the2bears21:06:42

@seancorfield agreed re:Scala, there's a place for it (a large place?) and to be fair most I see are fairly happy using it. But once I added FP to my way of thinking I wanted to get as far away from my Java days as I could! 🙂