Fork me on GitHub
#jobs
<
2016-01-08
>
mccraigmccraig08:01:15

@nha: yep - it's working out pretty well so far :)

jan.zy09:01:12

An understanding of monads […]
@mccraigmccraig do you use monads anywhere in your code? simple_smile

jan.zy09:01:30

I am asking because I spent >3 years in Scala world and even there the only guys who were using category theory in commercial projects were Haskell devs who started coding in Scala

keeds09:01:09

Speaking for @mccraigmccraig. In the past he has pointed to httpurr/promesa/cats libraries from funcool (https://github.com/funcool) which implement/use them

mccraigmccraig10:01:38

@jan.zy: all over - both front and back end, mostly as a way of sanely dealing with async and error-handling

jan.zy10:01:43

and how do you like it? from my experience features like control over side effects, better composability etc. are counterbalanced with larger and harder to read codebase

mccraigmccraig10:01:20

i haven't found the codebase to be larger or harder to read - do/applicative-do (mlet/alet in cats) syntax makes things pretty easy to read... the principal problem i've had is overlooking return types and not finding out about it until runtime and getting a weird error - but i got to recognize that class of error pretty quickly

jan.zy10:01:36

i see. problem of return types is not specific to monadic programming style so it looks like choosing this particular programming style is not a big advantage nor disadvantage simple_smile

jan.zy10:01:02

thanks for your comments simple_smile

mccraigmccraig10:01:44

the big advantage for me is straightforward presentation of step-wise async code with error-handling... there are other solutions e.g. chain on manifold/deferred https://github.com/ztellman/manifold/blob/master/docs/deferred.md but i find the let style approach of do-syntax somewhat more readable and flexible, and it's certainly nice to use the same lib on both front-end and back-end

mccraigmccraig10:01:20

e.g. here's a function which updates an entity's unique keys in a cassandra model... it reads very straightforwardly, but each step in the mlet is an async call with early termination on error https://github.com/employeerepublic/er-cassandra/blob/master/src/er_cassandra/model/unique_key.clj#L251

mccraigmccraig10:01:51

that fn could certainly be improved some... it's an age since i wrote it, and i've learned a lot since then simple_smile

jan.zy10:01:12

ok.. this looks nice

jan.zy10:01:40

and I just realized that I spent lots of time coding like that in my previous language of choice 😉

mccraigmccraig10:01:59

was that scala ?

mccraigmccraig10:01:42

what brought you over to the dark^h^h^h^h untyped side ?

jstaffans11:01:14

@mccraigmccraig: in that example, is there some error handling other than early termination going on? e.g. logging?

mccraigmccraig11:01:06

@jstaffans: no - i've got some plans to throw a writer in to the mix in some cases, to get some structured logging out, but i haven't implemented yet

jstaffans11:01:03

ok. thanks for the interesting code!

jan.zy11:01:30

@mccraigmccraig: - C++ FTW! - Java: nice, it has garbage collector so I don't have to take care of malloc. but why do I need to learn all this design patterns? and this JEE stuff.. - Scala: FP and no design patterns but after some time I started asking myself why I need types everywhere? libraries are smaller and more powerful - Clojure: FP, no design patterns, types only when I need them, libs come in even smaller packages = better composability 😉

jan.zy11:01:50

this is a short story of my languages of choice 😉

mccraigmccraig11:01:35

not dissimilar to mine, though i digressed through ruby rather than scala

sonnyto14:01:18

@jan.zy no design patterns in languages other than java? I think u misunderstand what a design pattern is. The monad is a design pattern

jan.zy14:01:12

yeah, for Scala and Clojure I should write ‘less design patterns. good practices are enforced by better grammar of the language’ simple_smile

hans15:01:26

We're still looking for a front end developer who wants to do ClojureScript full time: https://lambdawerk.com/frontend-developer?language=en

thomas16:01:50

@hans: could have a chat about this during ClojureD?

hans16:01:19

@thomas: certainly. i will be there, of course simple_smile

akiva22:01:33

Hey, gang! I was contacted about this job position but I’m currently engaged so he asked if I would pass it along to you lot. Here’s the description he sent me: 'I am working with a privately held 3rd Party Logistics company working on a Functional Programming (Clojure Based application) The Director of Data Sciences is a highly intelligent guy with a VERY laid back work life balance outlook. You can work remotely 100% and rarely are you tied to any type of 9-5 hours. Currently the team has a Raleigh based and a Florida based developer and they are looking to add to the team! I was curious if you, or anyone in your network might be interested in an opening like this. The base pay is targeted right around that 6-figure mark with some bonus opportunity as well!’ If you’re interested, contact Sean Devin at <mailto:[email protected]|[email protected]>.

akiva22:01:40

U.S. based. Not sure if they’re accepting international candidates but it should be worth asking.