Absolutely happy with my choice of Clojure as a startup (doing data science, analytics, some front-end work). Biggest wins for us are: - ClojureScript / figwheel as an awesome front end development combination. - The…
Clojure on the back end and ClojureScript on the front end. Some reasons: 1. It's a proper full-stack solution. You can share code between client and server if you need to. 2. There is some amazing front end technology…
Note: you don't need to commit to Emacs to get the productivity benefits of Clojure. Eclipse with the Counterclockwise plugin (and I believe IntelliJ with Cursive too) also give you comprehensive REPL, s-expr…
This is great stuff, but it should really be designed as a core.matrix implementation rather than providing it's own API. The last thing the Clojure community needs is fragmentation with more incompatible libraries.
Clojure has all of this in core.async - which is just a library, it doesn't need special support from the underlying language. goroutines are certainly nice and CSP is a good mental model for solving many problems, but…
Silverline Mobile (http://silverline.mobi/) uses Clojure in production - managing data from sensors installed in the homes of senior citizens in Singapore.
We're using Clojure in production at Datacraft (http://www.datacraft.sg). Main usage is on the server side: for web applications, APIs and data analytics back ends.
I'm actually trying to address this in my current language experiment: https://github.com/mikera/kiss The idea: add static types to Clojure without compromising on the dynamism / flexibility / convenience
IMHO Clojure's omission of reader macros is sensible: it prevents proliferation of custom syntax, which makes it harder for a human to read code and reason about reader behaviour. The Clojure reader also already has its…
FWIW, I've been in the Clojure community for a few years and see almost zero FUD about Common Lisp. The atmosphere in the Clojure community is much more about pragmatism than zealotry. Mostly, I see a healthy respect…
There's a pretty good argument that taking away features is what makes programming paradigms effective. You create restrictions (invariants, if you like) that enable the paradigm. Consider: - Structured programming…
One of the reasons that Clojure has so many libraries is that most things didn't have to be implemented from scratch. Building Clojure on the JVM was a genius move by Rich Hickey - it meant that an advanced runtime…
I don't think you can credibly describe Java/JVM as a small ecosystem.... there's nothing else remotely close in terms of the combination of runtime platform capabilities and the number of available open source…
I'm actually trying to prototype a language that gets you the best of both: * Clojure style dynamic development * A Lisp (with proper macros, homoiconicity etc.) * Runs on JVM * Can use Clojure libraries unmodified *…
Also I would guess that people who like Clojure's philosophy are much more likely to build simple / loosely coupled / composable services than a big monolithic project.
Agree with everything you say, but it is worth noting that the insights you get from static analysis on desugared forms (which can be very large and complex!) is much harder to interpret than static analysis on the…
It makes a lot of sense in the context of programming when you look at the big picture. I think Rich Hickey articulates it best: http://www.infoq.com/presentations/Value-Identity-State-Rich...
The problem is the design paradigm where you enforce an arbitrary fixed hierarchy on real-world data. This doesn't work for several reasons: * In the real world there are multiple overlapping hierarchies, which have…
It concerns me when people confuse the idea of gender equality and rights (which I think most reasonable people agree is a good thing) with the idea that men and women's lives have to be the same in all aspects. I think…
Erlang has a very nice concurrency approach, particularly if you are into distributed and fault tolerant systems. But it's ridiculous to say that "only Erlang can do concurrency". Many other languages do concurrency…
The point about complexity is probably fair from the perspective of someone just getting started with Clojure. Sure, the syntax itself is very simple and regular (like any Lisp). The complexity is in all the other stuff…
vectorz-clj has sparse vector support.... it's bit of an hidden feature at the moment (you'll have to use Java interop to instantiate a SparseIndexedVector) but it works and is pretty fast for many operations.
You've just pretty much described the motivation for core.matrix: it's an API that wraps various other back end vector/matrix libraries (including JBlas etc.) with a nice, standard Clojure API.
core.matrix developer here :-) we're definitely looking at expression compilation. Also hiphip could be very useful for writing fast core.matrix implementations for the standard API. So definitely good room for…
I've been thinking about adding some IO features to core.matrix. Haven't got round to it yet, but linking this with hdf5 format could be very useful.
Absolutely happy with my choice of Clojure as a startup (doing data science, analytics, some front-end work). Biggest wins for us are: - ClojureScript / figwheel as an awesome front end development combination. - The…
Clojure on the back end and ClojureScript on the front end. Some reasons: 1. It's a proper full-stack solution. You can share code between client and server if you need to. 2. There is some amazing front end technology…
Note: you don't need to commit to Emacs to get the productivity benefits of Clojure. Eclipse with the Counterclockwise plugin (and I believe IntelliJ with Cursive too) also give you comprehensive REPL, s-expr…
This is great stuff, but it should really be designed as a core.matrix implementation rather than providing it's own API. The last thing the Clojure community needs is fragmentation with more incompatible libraries.
Clojure has all of this in core.async - which is just a library, it doesn't need special support from the underlying language. goroutines are certainly nice and CSP is a good mental model for solving many problems, but…
Silverline Mobile (http://silverline.mobi/) uses Clojure in production - managing data from sensors installed in the homes of senior citizens in Singapore.
We're using Clojure in production at Datacraft (http://www.datacraft.sg). Main usage is on the server side: for web applications, APIs and data analytics back ends.
I'm actually trying to address this in my current language experiment: https://github.com/mikera/kiss The idea: add static types to Clojure without compromising on the dynamism / flexibility / convenience
IMHO Clojure's omission of reader macros is sensible: it prevents proliferation of custom syntax, which makes it harder for a human to read code and reason about reader behaviour. The Clojure reader also already has its…
FWIW, I've been in the Clojure community for a few years and see almost zero FUD about Common Lisp. The atmosphere in the Clojure community is much more about pragmatism than zealotry. Mostly, I see a healthy respect…
There's a pretty good argument that taking away features is what makes programming paradigms effective. You create restrictions (invariants, if you like) that enable the paradigm. Consider: - Structured programming…
One of the reasons that Clojure has so many libraries is that most things didn't have to be implemented from scratch. Building Clojure on the JVM was a genius move by Rich Hickey - it meant that an advanced runtime…
I don't think you can credibly describe Java/JVM as a small ecosystem.... there's nothing else remotely close in terms of the combination of runtime platform capabilities and the number of available open source…
I'm actually trying to prototype a language that gets you the best of both: * Clojure style dynamic development * A Lisp (with proper macros, homoiconicity etc.) * Runs on JVM * Can use Clojure libraries unmodified *…
Also I would guess that people who like Clojure's philosophy are much more likely to build simple / loosely coupled / composable services than a big monolithic project.
Agree with everything you say, but it is worth noting that the insights you get from static analysis on desugared forms (which can be very large and complex!) is much harder to interpret than static analysis on the…
It makes a lot of sense in the context of programming when you look at the big picture. I think Rich Hickey articulates it best: http://www.infoq.com/presentations/Value-Identity-State-Rich...
The problem is the design paradigm where you enforce an arbitrary fixed hierarchy on real-world data. This doesn't work for several reasons: * In the real world there are multiple overlapping hierarchies, which have…
It concerns me when people confuse the idea of gender equality and rights (which I think most reasonable people agree is a good thing) with the idea that men and women's lives have to be the same in all aspects. I think…
Erlang has a very nice concurrency approach, particularly if you are into distributed and fault tolerant systems. But it's ridiculous to say that "only Erlang can do concurrency". Many other languages do concurrency…
The point about complexity is probably fair from the perspective of someone just getting started with Clojure. Sure, the syntax itself is very simple and regular (like any Lisp). The complexity is in all the other stuff…
vectorz-clj has sparse vector support.... it's bit of an hidden feature at the moment (you'll have to use Java interop to instantiate a SparseIndexedVector) but it works and is pretty fast for many operations.
You've just pretty much described the motivation for core.matrix: it's an API that wraps various other back end vector/matrix libraries (including JBlas etc.) with a nice, standard Clojure API.
core.matrix developer here :-) we're definitely looking at expression compilation. Also hiphip could be very useful for writing fast core.matrix implementations for the standard API. So definitely good room for…
I've been thinking about adding some IO features to core.matrix. Haven't got round to it yet, but linking this with hdf5 format could be very useful.