(take 5 kevin-lynagh)
How did you discover ClojureScript?
ClojureScript came to my attention either through Hacker News or my Github activity feed. I used Clojure for the first time in 2010 with Ring to build the backend for a document annotation service. Most my work now is clientside data visualization, so when ClojureScript came out I jumped on it.
How are you using ClojureScript in your business
Hotel operators get occupancy and pricing data every week as Excel spreadsheets; we scrape those data using JVM Clojure, throw it into PostgreSQL, and then serve it to the browser using Chris Granger's awesome Pinot + Noir projects. Pinot's "remotes" in particular are pretty cool---they let you make server side calls which return Clojure maps and vectors to the client. So far we haven't needed to muck around with JSON at all.
We have a lot of technical freedom on our projects: clients come to us with handfuls of data and just want a report or some dashboards for their iPad or something. Much of the time they could care less about the backend details. Most of us have mathematical backgrounds (I studied physics in university), and that community has historically had good relationships with functional, REPL-happy languages like R and Mathematica. Since so much of our work is data-oriented, Clojure and ClojureScript have been a great fit.
I think they're a good idea.
We've been going back and forth with a large scientific journal publisher on this very issue.
So far, things have boiled down to:
- We deliver source code in some crazy hipster language none of your people have heard of, and then train them to use some elaborate build process.
The biggest ClojureScript challenge is the same as that of JVM Clojure, or any new language. You have to be very upfront about the risks and benefits and figure out what best addresses the client's needs.
Did you try any of the other languages before settling on ClojureScript?
How/where can ClojureScript improve?
At the time there wasn't exactly a ton of example projects on Github I could rip off infrastructure code from.
(The complete state of our ClojureScript infrastructure understanding is in the cljs-d3 README.)
Right now all of our ClojureScript projects access the compiler via git submodules, which feels gross. Lein and Cake are awesome at managing dependencies, and it'd be great if there were an official ClojureScript build that integrates into that system (i.e., something you can just add to
The browser REPL looks promising, but it is just different enough than the usual SLIME/swank workflow that I haven't really used it much. So far we've been delegating to D3 for DOM manipulation, which means most of our ClojureScript code is statistical / data transformation in nature, so I've been cheating a bit and just using the SLIME. I'm thinking about building a declarative visualization library like D3 in pure Clojure(Script), but before I get really deep into that it might be worth spending some time polishing up a browser REPL starter kit with nice Emacs integration.
ClojureScript the compiler itself is remarkable given its age; pretty much everything I've written that works in Clojure works in ClojureScript. What I'm most excited about is seeing more open source ClojureScript code. Clojure the language is just really elegant, and the community is full of freakishly bright early adopters who aren't afraid of the academic literature. I've learned a ton reading Clojure code, so I'm interested to see how Clojure folks handle the clientside---user interaction, asynchronous processing, &c. Callbacks get gnarly pretty quickly, and the Clojure community and language are powerful enough to explore and implement other approaches like functional reactive programming and state machines.
I'm just a guy who makes charts and graphs, so I'm expecting my mind to get blown as the Clojure community starts tackling the web.