4 ms·
Clojure 2013 Year in Review
- dizzystar 13y agoI started using Clojure in 2012. Here are the changes I've observed, though it is more subtle. The tooling and the libraries are working much better right now. A strong indicator of this was the decision to nuke Noir, which I gather made a lot of sense when it came out. I've noticed that my code makes fewer calls to Java than it did a year ago. nRepl was a huge improvement over Slime. I'm looking forward to Leiningen 3. Documentation across the board has improved quite a bit. Its still not perfect, but you can't deny the quality found in Elastich [1], Leinengen [2], ClojureScript [3], Luminus [4]. Many more useful libraries. I can't list them all here, but the library ecosystem has improved quite a bit, not only in quantity, but quality. Don't get me wrong, there are a few duds out there, but it is nice to see that many problems are being solved. [1] http://clojureelasticsearch.info/ http://clojureelasticsearch.info/ [2] https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md https://github.com/technomancy/leiningen/blob/master/doc/TUT... [3] https://github.com/clojure/clojurescript/wiki https://github.com/clojure/clojurescript/wiki [4] http://www.luminusweb.net/docs http://www.luminusweb.net/docs
- moomin 13y agoStuart obviously has a Cognitect-centric view of what's gong on. It's interesting that you name three projects he didn't. This reflects the fact that, these days, there's way too much interesting stuff going on in Clojure. e.g. Cascalog 2
- dizzystar 13y agoI am mentioning projects that have been around before 2013. I'm simply pointing out that one of the large complaints is being taken seriously. Documentation a year ago was basically "install and good luck." This is changing.
- coolsunglasses 13y agoHave you used Elastisch in anger? Last project I used it in I gave up (and so did another colleague) and we started using clj-http + Cheshire to generate the JSON ourselves. It was not a good experience and trying to get any help with errors netted me angry and uncooperative responses from the maintainer/creator.
- dizzystar 13y agoNo, I haven't exactly had a use-case for it yet. What I've needed so far can be solved with the database. You do bring up an interesting point though. Some people in the community truly do suck and come across as elitist and are quick to dismiss you as an idiot with no good reason, when reality it is their poor documentation and assumptions that are amiss. I shouldn't really write the dismissal found in the above paragraph. I've met quite a few Clojure users in real life, and to be honest, the vast majority are humble and just sort of making it up as they go along, albeit at a higher level. Overall, the Clojure community I've been exposed to has been great, and more than willing to help you. Don't let a bad apple ruin the basket.
- pron 13y agoI'm a Clojure newbie, but what impresses me about Clojure is the restraint and good taste in introducing new features to the language and core libraries. The language continues to be simple, extremely elegant and fun, but most of all, there is a strong sense of good design. APIs are considered carefully and not introduced into the core unless they solve a major problem, and solve it cleanly and well. What is missing from Clojure, I think, is better support – either at the language level or as common practice – for large software composition, or programming-in-the-large. This is probably the opposite problem from to of Erlang, the other language that tackles the huge problem of state management well. Clojure is terrific when it comes to implementing computation, but how to best assemble various components into a large, maintainable program is not so clear.
- moomin 13y agoTake a look at EDN, fressian and especially core.async. You can do pretty similar things to Erlang.
- pron 13y agoYes, and my own Pulsar[1] brings you even closer, but that's not what I was talking about. I was talking about large-scale program organization. [1]: https://github.com/puniverse/pulsar https://github.com/puniverse/pulsar
- Moocar 13y agoI'd highly recommend checking out Stuart Sierra's component library. It's helps define your application into components that manage state and gives you lifecycle control of those components. basically dependency injection for clojure. https://github.com/stuartsierra/component https://github.com/stuartsierra/component
- ataggart 13y agoAnd his talk on the subject of larger scale clojure programs: http://www.infoq.com/presentations/Clojure-Large-scale-patterns-techniques http://www.infoq.com/presentations/Clojure-Large-scale-patte...
- yresnob 13y agohttps://www.google.com/url?sa=t&source=web&rct=j&ei=67jEUrLqNIfZoATMgYLADA&url=http://www.infoq.com/presentations/Datomic&cd=1&ved=0CCgQFjAA&usg=AFQjCNHXR0WgXw9RvAnqneyBY8d_kHBfuA https://www.google.com/url?sa=t&source=web&rct=j&ei=67jEUrLq... great video outlining how datomic was implemented using clojure..I would say this is a large sized system.... I have built a larger system in clojure and do not have the same concerns..I feel for the first time in a while I have a powerful tool at my disposal and will be my tool of choice for now..
- mark_l_watson 13y agoAfter not using Clojure For about half a year (not a language my last customer uses) I have started using Clojure again for a new project. Clojure is like Ruby in the sense that I am simply happy working with both languages. I also use Java and JavaScript a lot, but I don't get the joy using those languages (not knocking them, but they are not as much fun to use).
- mpwolfe 13y agoseems like we are going around in circles. what is so new and great about Clojure? we have Lisp and various implementations of Scheme which are more functional,powerful and stable. Clojure runs on the JVM so what?? seems like we kind of reinvent the wheel when the wheel was not broken to begin with.....i have done some programming in Clojure and also scheme. scheme is the real deal simple but powerful and not restricted because the JVM will not allow it.