admin-announcements

Announcements from the Clojurians Admin Team (@U11BV7MTK @U077BEWNQ @U050TNB9F @U0ETXRFEW @U04V70XH6 @U8MJBRSR5 and others)
meow 2016-01-16T15:26:36.004040Z

welcome @tstephens @scottman @t0by

2016-01-16T15:26:52.004041Z

hi!

meow 2016-01-16T15:26:59.004042Z

hi

2016-01-16T15:28:29.004043Z

I'm t0by, I'm a grad student with a vague knowledge of haskell and elisp who's curious about this Clojure thing :simple_smile:

jaen 2016-01-16T15:37:52.004044Z

Unfortunately doesn't have types and has pretty bad error messages, but has good concurrency support and macros P ;

meow 2016-01-16T15:39:19.004045Z

@t0by: what are you studying at the graduate level

2016-01-16T15:45:19.004046Z

pkobrien: I'm doing a master's in computer science

2016-01-16T15:46:01.004047Z

pkobrien: at the university of padua, eeetaly.

meow 2016-01-16T15:46:12.004048Z

you should find much to like about clojure/lisp

2016-01-16T15:47:16.004049Z

I hear this is where the fun is, fun that can carry over to the real world too.

meow 2016-01-16T15:47:25.004050Z

feel free to discuss in detail in one of the other channels

2016-01-16T15:47:54.004051Z

pkobrien: thanks. I think I'll just lurk a while. I lurk a lot.

2016-01-16T15:48:07.004052Z

pkobrien: thanks for the warm welcome.

1🤘
meow 2016-01-16T15:48:15.004053Z

lurking is good to start

jaen 2016-01-16T15:49:01.004054Z

Lurking is not bad - you can learn a lot just by looking at what others discuss. Though asking questions is quite welcome here from what I can tell.

1😲1😼
jaen 2016-01-16T15:52:46.004055Z

@t0by: out of curiosity where did you encounter Haskell?

2016-01-16T15:54:43.004056Z

@jaen: I know two types of people. Some who really like Haskell and some who really like Clojure. I also have a prof who belongs to the former group and has us working in Haskell on stuff, so that's how I learned Haskell first. (Or should I say "learned" with scare quotes.)

jaen 2016-01-16T15:55:10.004057Z

So at the university?

jaen 2016-01-16T15:55:11.004058Z

Neat.

2016-01-16T15:55:45.004059Z

Haven't done real world stuff with it yet. That's in fact one of the main reasons I'm curious about Clojure - I hear people build actual stuff with it.

meow 2016-01-16T15:56:00.004060Z

#C050BB98B perhaps? not sure

2016-01-16T15:56:16.004061Z

pkobrien: sorry about the OT.

meow 2016-01-16T15:56:27.004062Z

np

jaen 2016-01-16T15:56:49.004063Z

Well, you can build real world stuff with Haskell and people do. But it's certainly true you have to invest considerably more time into learning Haskell than Clojure in order to be real-world productive.

meow 2016-01-16T15:56:58.004064Z

#C03RZGPG1 is a bit like at channel

meow 2016-01-16T15:57:32.004065Z

and we all make "mistakes"

jaen 2016-01-16T15:57:45.004066Z

It's basically why I use Clojure - I'm a Haskell person (if we're talking about language tastes), but want to be able to write real-world code now, instead in two years after I had internalised all the typeclassopedia.

meow 2016-01-16T15:58:19.004069Z

sometimes I even make them on purpose so I can get really good at it

meow 2016-01-16T15:58:45.004070Z

as any lurker can confirm

2016-01-16T15:59:28.004071Z

jaen: I don't doubt that, what I meant to say is that I get the impression that there are more Clojure projects and companies popping up lately than Haskell. yes, that's awfully opportunistic (is that the English word?) :simple_smile:

2016-01-16T16:00:25.004072Z

<old joke about how you can in theory build stuff with anything that's Turing complete after all>

jaen 2016-01-16T16:00:48.004073Z

Yeah, I think that means what you want - that is taking advantage of opportunities for personal gain.

jaen 2016-01-16T16:01:36.004074Z

Yeah, that's true; Clojure has a steeper popularity curve than Haskell for many reasons - being on JVM and a dynamic the biggest of those, I think.

2016-01-16T16:01:38.004075Z

Oh, well, make it "selfish". You get what I mean :simple_smile:

2016-01-16T16:01:47.004077Z

Good to know

meow 2016-01-16T16:01:56.004078Z

you can create even more with the support of the community

jaen 2016-01-16T16:02:52.004081Z

Which is what basically lets you be productive with Clojure faster. And for most jobs you don't need Haskell levels correctness guarantees.

jaen 2016-01-16T16:03:03.004082Z

At least, that's how I would explain this popularity.

jaen 2016-01-16T16:04:08.004083Z

And sure, everything is Turing-complete (or Church-complete to riff a bit on the eponymous hypothesis), but the question is not what language makes possible, but what it makes easy.

jaen 2016-01-16T16:04:38.004084Z

And I noticed that Clojure (or more generally - functional programming) considerably lowers the bar of what is a hard problem.

jaen 2016-01-16T16:05:41.004085Z

When I was doing websites in Ruby my problems were more like "how to wrangel jQuery to modify that DOM element when this AJAX request goes through" and not "how do I make a client side database with reactive queries".

jaen 2016-01-16T16:06:01.004086Z

It kinda makes you feel more powerful, because you can accomplish more with less.

2016-01-16T16:23:46.004087Z

Fragmentation of approach is quite the problem for me. Many languages propose so many different ways of doing similar things. And it feels so not right to not know, i.e., missing out on the concepts. This really hurts the focus that is needed in being productive with some language. Say if it takes around a week to get all the fundamentals down, being aware of and the curiosity towards other languages and technologies that surfaces makes me want to try another one without getting the current one right.

2016-01-16T16:38:20.004088Z

Really need to focus on this one though, value proposition is way high and is a lisp that can actually be used. Learning to use lein now, just tried user profiles which is very awesome, but now I'm attempting to... oh look a new statically-typed functional reactive programming language!

jaen 2016-01-16T16:39:30.004089Z

Well, programming is relatively young - we still don't know all the answers. OO seemed like the solution for the longest time, but when you look at it, it's more of a solution to problems of mainstream languages coming from imperative, mutable, procedural part of the lineage and in a FP language some of those problems are non-issues and others can be solved differently. It'll all come together in tens of decades, hopefully ; d

1👍
jaen 2016-01-16T16:40:12.004091Z

If you mean Elm then yeah, it's pretty interesting, but as opposed to Clojure it isn't really general-purpose at the moment (if ever).

jaen 2016-01-16T16:40:21.004092Z

So there's that to convince you to stay with Clojure.

2016-01-16T16:40:23.004093Z

Ahaha yeah

jaen 2016-01-16T16:41:43.004094Z

As for shiny things, but in Clojure land - boot should be worth taking a look at, especially if you're interested in using Clojurescript.

2016-01-16T16:42:04.004095Z

Its only been a year and a half since I started programming professionally, just as I thought I grasped OO, I immediately started to learn of its negatives and all the recent remarks that are around on the internet.

jaen 2016-01-16T16:42:09.004096Z

And if you think Elm is interesting, then there's Zelkova library that's inspired by it (no static typing though).

jaen 2016-01-16T16:43:20.004097Z

Well, OO is about the best thing imperative world has to deal with it's problems. But if you can step outside the imperative? There's a whole brave new world out there.

2016-01-16T16:43:29.004098Z

I really want to get clojure down this time around, I think I'll be starting from the backend, learned about compojure today, are there other alternatives?

jaen 2016-01-16T16:44:01.004099Z

I'm of the mind that learning people to program starting from imperative languages is doing them a disservice, but that's just me.

jaen 2016-01-16T16:44:13.004100Z

Alternative routing libraries?

jaen 2016-01-16T16:44:37.004101Z

I like bidi - https://github.com/juxt/bidi - though I must agree the route definitions are a bit less readable.

2016-01-16T16:44:57.004104Z

I do want to go full functional, because I've felt that joy too, did RxJava, albeit the boilerplate, it was sooo much fun to get things way functionally.

jaen 2016-01-16T16:45:01.004105Z

On the flip side - you get reverse routing and you can easily share routes with Clojurescript if need be.

jaen 2016-01-16T16:46:42.004106Z

I certainly can agree that functional programming is more fun. And sometimes more readily understandable even. I couldn't for the life of me grok event sourcing as described in the OO manner. But when I read it's basically a fold over events I understood it immediately.

2016-01-16T16:46:45.004107Z

It is a huge disservice, where I learned programming (college), the lecturers hardly could explain what for what. If I had the power, I'd change the entire syllabus to go the functional and traditional CS route.

2016-01-16T16:48:02.004108Z

Do you recommend clojurescript for the backend? That would go with node, wouldn't it?

jaen 2016-01-16T16:48:51.004109Z

Oh, I never tried Clojurescript on the backend, just on the frontend - I was talking about ability to share things between Clojure backend and Clojurescript frontend.

2016-01-16T16:48:55.004110Z

Understandable it is, but unlearning and getting it into the habit is tough.

jaen 2016-01-16T16:49:16.004111Z

Though yeah, you could use it with node, but I don't see many people doing that if they can reach out to JVM Clojure.

2016-01-16T16:49:20.004112Z

Oh I see.

jaen 2016-01-16T16:49:34.004113Z

Mostly if someone is writing a CLI utility that needs fast boot time or something

jaen 2016-01-16T16:49:38.004114Z

Which is a rare-ish case.

jaen 2016-01-16T16:50:16.004115Z

And the Clojurescript maintainer isn't really interested into improving Clojurescript+node, since not a lot people use that.

2016-01-16T16:50:24.004116Z

Is this the right channel to discuss workflow?

jaen 2016-01-16T16:50:35.004117Z

Hmm, yeah, maybe not, my bad '

2016-01-16T16:51:00.004118Z

There are things that I want to ask.

2016-01-16T16:52:12.004119Z

I see that Emacs is the favoured editor, but I'm using Atom, I'll get around Cursive once I understand the project structuring idiom things.

2016-01-16T16:53:04.004120Z

How does a Clojure programmer do actual development? Write to a sourcr file and reload in REPL? How does one be productive?

jaen 2016-01-16T16:53:06.004121Z

I'm using Cursive and it's really good. I used to hate IDEs, but Cursive made me reconsider. Never could get into Emacs on the other hand, prefer the vim way of editing.

jaen 2016-01-16T16:54:05.004122Z

Not sure what would be a best channel to talk about things like that, thought.

jaen 2016-01-16T16:54:14.004123Z

People don't seem to want to use this one, since it's unpartable.

2016-01-16T16:54:22.004124Z

Right.

2016-01-16T16:54:32.004125Z

Off-topic may be better.

jaen 2016-01-16T16:54:50.004126Z

Yup, could be.

2016-01-16T17:13:16.004127Z

can talk about workflow in #C03S1KBA2

2016-01-16T17:17:29.004128Z

jaen: the funny thing is that Milner and, of all people, Backus were functional advocates in the late '70s, way before OO was cool. I am no expert, but I suspect that it's the fact that hardware and compilers have gotten to the point where you can actually build efficient stuff - along with new software engineering models (i.e. not-waterfall) - that helped given rise to the recent popularity of the function approach.

2016-01-16T17:18:26.004129Z

but the short answer is that many folks start with a variant of: http://thinkrelevance.com/blog/2013/06/04/clojure-workflow-reloaded

2016-01-16T17:18:42.004131Z

*helped give

meow 2016-01-16T18:16:03.004133Z

do we need a #bikeshed channel

meow 2016-01-16T18:17:24.004134Z

or maybe #chitchat

meow 2016-01-16T18:17:34.004135Z

someone solve this

jsa-aerial 2016-01-16T18:56:38.004136Z

Re: you don't need Haskell levels correctness guarantees - Haskell (no type system) has much to offer wrt correctness in domain semantics. Given that most bugs always center on domain semantics, static type systems are generally highly overrated. If you really want 'guarantees' of correctness you need to go with formal proofs (ala' Gries, Dykstra, et.al.) My go to example of this is - give me the HM type description that would 'guarantee' the correctness of an implementation of Interaction Information. I'm not sure it is even doable, but if so, it would likely take far more effort than just using proof principles and still not be as tight as the latter.

jsa-aerial 2016-01-16T18:57:19.004137Z

As Rich Hickey points out - what is it that all bugs in the field have in common? They all passed the type checker and they all passed the test suite...

jaen 2016-01-16T19:06:11.004138Z

Not that I am smart enough to know (or understand what interaction information is) but maybe even more powerful and proof-oriented type systems like Idris or Agda or Coq have could deal with that? But regardless of that yeah, it's getting pretty fringe.

jsa-aerial 2016-01-16T20:09:21.004142Z

OK, yes, this is fringe, and this is my last comment here. Re: Idris or Agda or Coq : Coq is a theorem prover not a type system, and yes that would help in a formal proof scenario. Idris and Agda both have embedded (limited) theorem provers along side their type systems, and so again could help in a formal proof setting. Actually all these things are 'limited' in the sense that all of them are necessarily incomplete (or alternatively, and even worse, unsound).

sveri 2016-01-16T20:53:39.004143Z

I'd also like to add that from a philosophical point of view I think it is impossible for us to create "correct" systems. I always see it like this. Humans are prone to error in everything they do. So everything they create will also be prone to error, given the complexity of a task will be greater x. Where x is dependent on the other stuff, like the humans involved, etc. For me the logical conclusion is to focus on "getting things done", fullfilling a goal instead of chasing down a path where I know that I can not succeed. So I know my solution won't be correct, but maybe it is enough to please people, my boss or my customers.

sveri 2016-01-16T20:56:59.004144Z

Also I would like to add that I make a difference between creating / crafting and discovering stuff. Mathematics and physics for instance, are laws of nature that the human being discoverd. Some script or program is something we invented to let repetitive tasks be done by a machine.

jsa-aerial 2016-01-16T21:12:01.004145Z

@sverl : nicely put - agree completely

jsa-aerial 2016-01-16T21:14:09.004146Z

Ooops, that should be @sveri - should use the slack suggestion list...