Live data from Hacker News

Elements of Clojure

therepl.net

61–70 of 71 posts

Re: Elements of Clojure

#61

Earlier quoted context omitted.

It has a small active community with many abandoned libraries, no killer app, and painful tooling. I like the language in spite of that, but size of community matters. To your point, as a hosted language you can make up Clojure's deficiencies by using Java libraries, but if you aren't a Java developer (or are a disgruntled Java developer) that isn't a great answer. The only question worth asking is whether the langua…

> It has a small active community Wrong. Clojure community is only smaller in comparison to mainstream languages: Java, JS/TS, Python, Ruby, Go. Today it has more conferences than Haskell, F#, OCaml, Elm, Elixir, Erlang. More meetups and more podcasts. Just this year alone there were announcements for Clojure confs in India, Brazil, Canada, Russia and Belgium (and these are just for new ones) > many abandoned librari…

In the web domain these are killer apps for me, the kinds of thing you can't find in any? c or ml languages: Datomic cloud, Fulcro, Pathom, Datascript, EQL, hiccup, garden, honeySQL, Spec 2, CodeQ, hyperfiddle

I think it's because Clojure in general focuses on the value of things rather than the identity of things

Re: Elements of Clojure

#62
post #42

Earlier quoted context omitted.

I really don't understand why people obsesses over popularity so much. The only question worth asking is whether the language has a big enough community to be sustainable, especially when dealing with a hosted language that leverages the underlying ecosystem. In case of Clojure the answer is unequivocally yes. It's got a large active community around it, and there are many companies of all kinds using it in productio…

It has a small active community with many abandoned libraries, no killer app, and painful tooling. I like the language in spite of that, but size of community matters. To your point, as a hosted language you can make up Clojure's deficiencies by using Java libraries, but if you aren't a Java developer (or are a disgruntled Java developer) that isn't a great answer. The only question worth asking is whether the langua…

>It has a small active community with many abandoned libraries, no killer app, and painful tooling. I like the language in spite of that, but size of community matters. To your point, as a hosted language you can make up Clojure's deficiencies by using Java libraries, but if you aren't a Java developer (or are a disgruntled Java developer) that isn't a great answer.

All of this is demonstrably false as has already been discussed in the other reply.

>Exactly, and I'd argue Clojure was on a path to yes, but has lost momentum and is leaning toward no.

I don't know how you can argue that seeing how Clojure is used commercially by plenty of companies large and small nowadays. It's already been viable years ago, and its only been getting better every year. My team has been using it for nearly a decade now, and we can't think of a better option on the market today. Clojure is way past the point where it needs to show long term sustainability.

Re: Elements of Clojure

#63

Earlier quoted context omitted.

> It has a small active community Wrong. Clojure community is only smaller in comparison to mainstream languages: Java, JS/TS, Python, Ruby, Go. Today it has more conferences than Haskell, F#, OCaml, Elm, Elixir, Erlang. More meetups and more podcasts. Just this year alone there were announcements for Clojure confs in India, Brazil, Canada, Russia and Belgium (and these are just for new ones) > many abandoned librari…

Maybe conferences isn't a great metric there have been a bunch of cancellations like SYNC and Clojure West. People have already mentioned Incanter in this thread, one of many abandoned and out of date libraries. Lacinia is nice, but a killer app? What language doesn't have a GraphQL library? Have many partially supported editors doesn't make better tooling. Clojure still has potential, but by every other metric, besi…

The recent Clojure/north conference [1] focused specifically on commercial usage of Clojure with plenty of companies presenting why and how they're using Clojure to solve their business needs.

There are tons of new libraries and tools being built with Clojure every year. Some recent examples are Spectre, Crux, Metabase, Braid, Neanderthal, and many others.

Meanwhile, the tooling around Clojure is far better than vast majority of languages out there. Leiningen is a one stop shop for managing dependencies, testing, building, and packaging the application. Uberjars are effectively containers that you can drop on any system that has a JVM on it and run them. Compare this to the nightmarish tooling of Node, Python, or Ruby.

Furthermore, if you're doing web development then you get a single consistent setup with Clojure/Script, and once again benefit from superior tooling where you can reliably hot load code in the browser, something that simply doesn't work in Js, do code pruning down to function level, and minification including libraries.

There's a good reason that you rarely see companies switch from Clojure to other languages once they start using it.

[1] https://www.youtube.com/channel/UClJshc6QtMWRqIAwJy85sfA

Re: Elements of Clojure

#64
post #38

Earlier quoted context omitted.

I've noticed the reddit is less active, but I think that's just because everything needing saying was said already. At least it is for me, just busy coding. The Clojure annual survey gets more and more participants every year, so from that angle it seems to be growing.

Clojure survey in 2015 had 2,445, 2016 had 2,420 responses, 2018 dropped to 2,325, and 2019 had 2,461. So pretty flat.

Oh you're right, I got mixed up with the announcement:

> In the first Clojure survey in 2010, 27% of respondents reported using Clojure for work and 33% for serious hobby projects. This number has steadily grown over the years and we now see 66% using it at work and 54% using it for serious hobby projects.

https://clojure.org/news/2019/02/04/state-of-clojure-2019

It's the number of Clojure devs using Clojure for work that has consistently grown. Interesting that this has happened without the community growing in numbers.

Re: Elements of Clojure

#65
post #63

Earlier quoted context omitted.

Maybe conferences isn't a great metric there have been a bunch of cancellations like SYNC and Clojure West. People have already mentioned Incanter in this thread, one of many abandoned and out of date libraries. Lacinia is nice, but a killer app? What language doesn't have a GraphQL library? Have many partially supported editors doesn't make better tooling. Clojure still has potential, but by every other metric, besi…

The recent Clojure/north conference [1] focused specifically on commercial usage of Clojure with plenty of companies presenting why and how they're using Clojure to solve their business needs. There are tons of new libraries and tools being built with Clojure every year. Some recent examples are Spectre, Crux, Metabase, Braid, Neanderthal, and many others. Meanwhile, the tooling around Clojure is far better than vast…

I'm not sure what you are arguing. Clojure is a cool language, with a small community, and declining interest. Why do you think searches trend down if interest isn't trending down.

https://trends.google.com/trends/explore?date=today%205-y&ge...

You can still be adding a few new libraries, and some new users while interest declines. Clojure had the potential to be the default Lisp, the default functional language, and perhaps the default alternative to the c family of languages. Unfortunately, it is heading towards being just another niche language. Tooling is a big problem, not because the once you learn emacs and cider it is insufficient, but because it is a pain to setup and learn emacs and cider. Not because Atom and proto-repl are bad tools, but because to get it set up you need 10 plugins and 20 config setting and it ends up being fragile - complected in a major way. Another part of the problem is that Clojure advocates vastly overvalue the what unique benefits Clojure adds things like hot reloading and the REPL. Clojure and ClojureScript might have better or more pure implementations, but everyone has some form of these features now. It isn't a compelling argument to say switch to Clojure, change programming paradigms, learn Lisp, learn emacs, learn java, so you can get a hot reload that is 15% better than what you have now.

BTW, when I started getting interested in Clojure, one of the videos I learned from was your Philly ETE presentation. So I have a lot of respect for where you are coming from, but I wish the Clojure community was less defensive, and more unified around a strategy to promote and grow the language.

Re: Elements of Clojure

#66

Earlier quoted context omitted.

>Also, good luck getting any of these jobs. When was the last time you've tried? I know a great deal of developers (including myself) working exclusively with Clojure and have never struggled finding a new gig.

I think the Clojure job market is pretty good for senior developers but bad for junior developers. Anecdotal evidence, but I saw someone a few months ago who had an active Clojure blog, gave talks on Clojure, contributed to multiple interesting projects on GitHub, but was unable to find a job before literally running out of money and going homeless. That could just be a weird situation, but I almost never see any job…

> Anecdotal evidence, but I saw someone a few months ago who had an active Clojure blog, gave talks on Clojure, contributed to multiple interesting projects on GitHub, but was unable to find a job before literally running out of money and going homeless

That's a bit hard to believe.

Surely someone in this situation would settle with taking a job programming in a different language instead of going homeless?

It's also possible they placed unreasonable demands (I notice a lot of people looking for jobs in niche languages often ask to work 100% remotely too).

If you work in a niche language, you need to be ready to compromise in certain areas, such as having to relocate.

Re: Elements of Clojure

#67
post #6
post #4

Don't let the title fool you - 90% of the advice given in this book isn't specific to Clojure, and boy is it good advice. This book contains some of the deepest programming insights I've encountered, to be put on the same level as SICP or the Pragmatic Programmer. The discussions on naming and abstraction are particularly illuminating, exposing some fundamental tradeoffs like synthetic vs natural names, or principled…

the sample chapter on naming is a great example https://leanpub.com/elementsofclojure/read_sample

As someone who is currently picking up Clojure, that chapter just sold me on the book. I really liked the sign/referent/sense distinction and discussion. I knew it from philosophy/semiotics, but every other place I come across it instantly goes down another rabbit trail. I'm sure the balance you strike will vary language to language, but it really was useful seeing it discussed in terms of naming in software.

Re: Elements of Clojure

#68

Earlier quoted context omitted.

I think the Clojure job market is pretty good for senior developers but bad for junior developers. Anecdotal evidence, but I saw someone a few months ago who had an active Clojure blog, gave talks on Clojure, contributed to multiple interesting projects on GitHub, but was unable to find a job before literally running out of money and going homeless. That could just be a weird situation, but I almost never see any job…

> Anecdotal evidence, but I saw someone a few months ago who had an active Clojure blog, gave talks on Clojure, contributed to multiple interesting projects on GitHub, but was unable to find a job before literally running out of money and going homeless That's a bit hard to believe. Surely someone in this situation would settle with taking a job programming in a different language instead of going homeless? It's also…

https://twitter.com/porkostomus/status/1151595347157737472

I agree, if this person was acting entirely rationally they probably would have switched to learning JS and found a job by now. My only point is that there aren't many opportunities for junior-level Clojure developers who don't stand out as exceptional in some way.

Re: Elements of Clojure

#69
post #63

Earlier quoted context omitted.

The recent Clojure/north conference [1] focused specifically on commercial usage of Clojure with plenty of companies presenting why and how they're using Clojure to solve their business needs. There are tons of new libraries and tools being built with Clojure every year. Some recent examples are Spectre, Crux, Metabase, Braid, Neanderthal, and many others. Meanwhile, the tooling around Clojure is far better than vast…

I'm not sure what you are arguing. Clojure is a cool language, with a small community, and declining interest. Why do you think searches trend down if interest isn't trending down. https://trends.google.com/trends/explore?date=today%205-y&ge... You can still be adding a few new libraries, and some new users while interest declines. Clojure had the potential to be the default Lisp, the default functional language, and…

The claim that there's declining interest is absurd, and that's what I'm arguing. Google trends are simply not a measure of anything interesting in practice. It's about as useful as throwing around TIOBE rankings.

>Tooling is a big problem, not because the once you learn emacs and cider it is insufficient, but because it is a pain to setup and learn emacs and cider. Not because Atom and proto-repl are bad tools, but because to get it set up you need 10 plugins and 20 config setting and it ends up being fragile - complected in a major way.

It's quite clear you haven't used Clojure tooling if that's your impression of it. Again, Clojure has some of the best tooling I've used in any language and I've been doing development for around 2 decades now. Intellij and Cursive are a fantastic combination that takes minutes to install. Calva is another great option for VS Code and it's also a one click install. Both these projects are actually being funded. Cursive is a commercial product and Calva is funded via Clojurists Together. Both Cursive and Calva show just how much the community has grown, since people and companies are willing to pay for tooling nowadays. That's a real measure of growth.

>Another part of the problem is that Clojure advocates vastly overvalue the what unique benefits Clojure adds things like hot reloading and the REPL. Clojure and ClojureScript might have better or more pure implementations, but everyone has some form of these features now.

Again, this is completely false. I'm not aware of any mainstream languages that facilitate anything remotely like this workflow: https://vvvvalvalval.github.io/posts/what-makes-a-good-repl....

>It isn't a compelling argument to say switch to Clojure, change programming paradigms, learn Lisp, learn emacs, learn java, so you can get a hot reload that is 15% better than what you have now.

Switching to Clojure provides far more benefits than just having hot reloading, and these benefits are very convincing for plenty of companies using Clojure today. These benefits also tend to appeal predominantly to experienced developers: https://insights.stackoverflow.com/survey/2019#work-_-salary...

Post reply on HN