top | item 8827600

Clojure 2014 Year in Review

261 points| fogus | 11 years ago |stuartsierra.com | reply

115 comments

order
[+] zeroDivisible|11 years ago|reply
For everybody who wants to start Clojure, I know that there are loads of good resources, but the best one which I had found is this online MOOC:

http://iloveponies.github.io/120-hour-epic-sax-marathon/

Teaches you TDD in Clojure and "forces" you to use git / Github / Travis to test your code.

Highly recommended.

edit: style.

[+] stevepm|11 years ago|reply
Do you know of any other TDD MOOCs out there? It's my preferred learning method. Thanks!
[+] jeremiep|11 years ago|reply
This is great! Glad to see more Clojure adoption in the corporate world. It's definitely well deserved!

I used it only once at work to develop a stress test for a Java based game server. It was great fun to build, worked like a charm and ended up taking less than a thousand lines of code to implement the communications, bots and their execution scripts.

Furthermore, the company just bought a copy of The Joy of Clojure and there's already a bunch of my coworkers interested in reading it. Good times!

[+] reitzensteinm|11 years ago|reply
Similar experience here. I wrote a log parser with indexing and hierarchical cache invalidation to deal with larger than memory amounts of logs quickly and in a natural coding style, and after that I was hooked. Tiny code base, good performance, little need for ugly hacks.

My latest site is now written in it and clojure script, and I see no reason to not continue. Though cljs is definitely a few years behind on the stability curve.

[+] mikerichards|11 years ago|reply
The amount of traction that Clojure is getting in companies like Walmart, Amazon, and elsewhere is surprising and impressive.

Great work Clojure community.

[+] mikerichards|11 years ago|reply
Are we beginning to see the tipping point where mainstream corporates are starting to question whether traditional OO is the right way to go?

Not to start a flame war, but it seems that Clojure/Rich's strong anti-OO stance is almost a selling point of the language.

IMHO, OO just put some lipstick on the procedural pig.

[+] swannodette|11 years ago|reply
Clojure's anti-OO stance is far subtler than people seem to understand. It's primarily about not reaching for classes as a first tool and eliminating local state (and even this is allowed!)

However there are times when the OO approach makes sense and you have a full range of tools from multimethods to protocols. In ClojureScript you even have Self-like functionality in the form of `specify`.

[+] seanmcdirmid|11 years ago|reply
Clojure is continuing the LISP subculture that has existed for a long time, nothing new here.

OO will continue to be successful for accessibility reasons, and it's demise will continue to be predicted to have arrived.

[+] geophile|11 years ago|reply
Yes, that's exactly what it did. I started my programming career in FORTRAN and BASIC, and really appreciated the advances of structured programming and the control structures in the languages that supported it -- the Algol family, Pascal, C. I see OO as doing more of the same, providing language constructs for commonly used patterns, and I think it is very successful at doing that. I think that a lot of the OO hatred comes from OOs failure at meeting goals that were claimed during the peak of the OO hype cycle. I think that another, well-justified source of hatred is the architecture astronaut stuff -- AbstractFactoryProxyFactory and the like.

Personally, I like Clojure (which I am just learning now) in spite of the lack of objects. I think that the ability to write a Point class, encapsulate the coordinates, and expose an API is great. In my opinion, representing a Point as a vector or map, and then having a set of unassociated functions operating on these point-like collections sacrifices some good ideas that came from object-orientation.

[+] lmm|11 years ago|reply
Scala remains ahead of Clojure because it permits traditional OO. OO is wonderful; try writing some programs in a language that forces you to do proper OO (e.g. Smalltalk). Even if you ultimately decide you prefer non-OO, you'll learn techniques that make your programs better, and you'll at least be able to understand the thing you're criticising.
[+] ww520|11 years ago|reply
> Not to start a flame war, but it seems that Clojure/Rich's strong anti-OO stance is almost a selling point of the language. > IMHO, OO just put some lipstick on the procedural pig.

<sarcasm> Not to start a flame war, IMHO functional bigots just like to incite language wars rather than solving real problems. </sarcasm>

[+] coding4all|11 years ago|reply
I've been writing Clojure almost exclusively for 3 or 4 years and it's just amazing. Core.async, Quil, Om, Chestnut, ClojureScript, ClojureScript + Apache Cordova, and I could go on forever.
[+] geophile|11 years ago|reply
Just learning Clojure now. Would you do us newbies a favor and say a few words about the projects you mention: what they do, why we should look into them? There is much to learn, so a shove in the right direction(s) would be useful.
[+] city41|11 years ago|reply
I recommend checking out Reagent as an Om alternative. I've tried both and like how simple and "pure" Reagent is. There's almost nothing to it (where as Om is a bit more complicated)
[+] dmix|11 years ago|reply
Not mentioned in the article but most interesting to me this year is how these guys are "building a bank from scratch in Brazil with Datomic and Clojure": https://www.youtube.com/watch?v=7lm3K8zVOdY

The future looks bright for the language, especially with applications like this.

[+] zubairq|11 years ago|reply
Clojure is awesome. However I don't want it to become too popular, as then those who do currently use it will lose all our magical powers if everyone has access to it :)
[+] thom|11 years ago|reply
Are people finding it easy/easier to fill clojure positions?
[+] JackMorgan|11 years ago|reply
My team which uses Clojure recently decided to grow. I regularly attend a local Clojure focused Meetup, and it is very easy to find interested developers there. The Meetup, which meets in Philadelphia, has over 150 members, so at least there is a large number of people interested.
[+] terranstyler|11 years ago|reply
I work 50%+ in Clojure as an IT Consultant and here in Europe it's not that easy to find a company that uses Clojure and embraces its benefits.

When I use clojure, it's typically for companies who need to get something done and then I choose clojure to do it, but only once someone specifically asked me for clojure (but it was an American company).

I don't find it as easy to work as clojure guy in Europe.

In comparison, in the US there's much more demand but many companies refrain from remote contracting Europeans (even though I think my background is quite good ML, Data Science, Statistics, ..)

So IMO the TL;DR is: filling clojure positions is only a problem in the US, not in Europe.

[+] 147|11 years ago|reply
I'd like to add that I'm starting a Clojure job next Monday at a "boring" company that you would never think would have a heavy reliance on Clojure. I think that there's a demand for Clojure developers that is unmet. I keep getting recruiters and etc. messaging me about Clojure.
[+] JBiserkov|11 years ago|reply
Microsoft/Nokia is using Clojure to power the web services behind MixRadio.
[+] neilprosser|11 years ago|reply
I'm from MixRadio and we're actually about 40 engineers, not all doing Clojure. Pretty much all of our new micro-service work is done using Clojure. Not sure how many others in wider Microsoft/Nokia.

Edit: making it clearer.

[+] gengstrand|11 years ago|reply
I am surprised that no one here has yet mentioned Clojure in connection with Big Data. At OSCON 2014 ( see http://glennengstrand.info/analytics/fp ), I was first introduced to Cascalog which allows you to write Hadoop map reduce jobs in Clojure. Both Cloudera and Hortonworks support it.
[+] dominotw|11 years ago|reply
I am not sure I would use RedMonk Index as popularity measure.

Most people who I see using clojure are bored ruby programmers and they bought their open source culture with them to clojure.

Clojure is not even in top 50 on TIOBE index http://www.tiobe.com/index.php/content/paperinfo/tpci/index....

[+] puredanger|11 years ago|reply
Red Monk's inputs are at least numbers based on tracks left by actual programmers and not meaningless search results.

The "index" is calculated (http://www.tiobe.com/index.php/content/paperinfo/tpci/progra...) by searching the 25 highest ranked web sites on Alexa which have a search box and meet some basic criteria then magically weighting them as follows:

- Google - 7.7% - YouTube - 7.4% - Baidu - 7.1% - Amazon - 6.8% - Google India - 6.5% - Yahoo Japan - 6.2% - Hao123.com - 5.8% - Google Germany - 5.5% - Microsoft Bing - 5.2% - Google Japan - 4.9% - Google UK - 4.6% - AliExpress - 4.3% - Alibaba - 4.0% - Amazon Japan - 3.7% - Google Brazil - 3.4% - 360.cn - 3.1% - Google Italia - 2.8% - Amazon Germany - 2.5% - Google Spain - 2.2% - Amazon UK - 1.8% - Google Mexico - 1.5% - Google Canada - 1.2% - Google Ad Services - 0.9% - Amazon China - 0.6% - Google Poland - 0.3%

I might buy that a general internet or e-commerce search might tell you one (low-signal, high-noise) piece of data about popularity. Some of these sites seem highly questionable to tell you anything meaningful. Garbage in / garbage out.

I think use of more specific numbers from sites like Stack Overflow or GitHub seems far more likely to give you relevant information.

[+] swannodette|11 years ago|reply
Most Clojure programmers are Java programmers - http://cemerick.com/2012/08/06/results-of-the-2012-state-of-...

Even though this is 2 years old it's still the case that the Clojure folks are heavily dominated by users who have already invested in the JVM. The other largest group seems to be split evenly between Python & Ruby as reflected in this survey.

[+] davexunit|11 years ago|reply
Since Clojure adoption is picking up, what about convincing management to use other Lisps now? Clojure is okay, but I much prefer Scheme (Guile, Racket, Chicken, etc.).
[+] shaunxcode|11 years ago|reply
Remember that the JVM is the major selling point for clojure. (that said there are many other lisps for the JVM)
[+] mikerichards|11 years ago|reply
Probably not yet. Clojure's greatest selling point to management is still that you can just drop in a jar.

But Clojure has a strong opinion on immutability and functional programming. I'm not sure those Schemes do.

In any case, if you were to introduce a Scheme, I would do Racket for it's significant community within the larger Scheme ecosystem.

[+] new2scheme|11 years ago|reply
Between Guile, Chicken and other *nix Schemes which would you recommend for general scripting and admin task automaton? Which has a more expansive library ecosystem? I found that Clojure isn't the best fit for thEse tasks because of the start-up time and the JVM dependency.
[+] gte525u|11 years ago|reply
There is a r7rs scheme (kawa) that runs interpreted on the jvm and can compile down to class files.