HN Theater @HNTheaterMonth

The best talks and videos of Hacker News.

Hacker News Comments on
David Nolen: ClojureScript: Lisp's Revenge

NDC Conferences · Vimeo · 10 HN points · 1 HN comments
HN Theater has aggregated all Hacker News stories and comments that mention NDC Conferences's video "David Nolen: ClojureScript: Lisp's Revenge".
Vimeo Summary
Once upon a time Google Web Toolkit stood relatively alone as a production quality solution for compiling a different language (Java) to JavaScript. However today we can also choose TypeScript or Dart, both languages designed specifically for "programming in the large" that are backed by big companies. We also have more grass roots offerings like CoffeeScript which has seen quite a bit of traction among web developers. But these solutions are not really as different as they seem. In this talk we'll see how ClojureScript offers a genuinely futuristic approach (by way of the past!) to client side software development.
HN Theater Rankings

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this video.
For some deeper rationale of why ClojureScript over other neat compile to JS languages like CoffeeScript, Dart (via dart2js), and TypeScript check out a talk I gave recently at the Norwegian Developers Conference, ClojureScript: Lisp's Revenge http://vimeo.com/68334908

I think the arrival of core.async makes ClojureScript an even more compelling option as it has the potential to eliminate an incredible amount of incidental complexity.

adrianm
I'm already a big fan and advocate of both Clojure and ClojureScript, and although I've had great success convincing friends and coworkers to give Clojure a try (and even get excited about it), unfortunately ClojureScript has been a different animal entirely.

Thus far, everyone I've taught Clojure concepts to really appreciates the functional bend of the language, immutable values, and of course the elegant sequence/collection abstractions/persistant data structures that Clojure provides. But semantics are almost never a convincing argument (for most for programmers I know) for spending the time to pick up another language.

What really pushes people over the edge in my experience from thinking of Clojure as "just another Lisp" or a parentheses laden toy, are the amazing concurrency primitives that Clojure provides out of the box. Once my colleagues realize how trivial (and fun!) both concurrent and parallel computation becomes with Clojure, they're hooked and want to dive in.

The talk you gave is probably the most concise manifesto I've yet to come across of just how much better Clojure's semantics are for, well, pretty much any complex problem I can think of. You did an absolutely fantastic job with your assemblage of example functions which definitely shows off the language.

But I know that if I want to convince the company I work at to adopt ClojureScript as a JS replacement for our client side applications, an argument for superior semantics is almost never going to get very far.

Clojure (in combination with libraries like Incanter, JVM interop, etc.) allows me to completely replace R & Python for both exploratory data analysis, machine learning, and building a powerful backend for any distributed application with a double whammy of awesome - I get a much better language for expressing a lot of ideas AND it's fast as hell. I can scale my Clojure code to a cluster of CPUs for training some model without a second thought. I can write really powerful software and never feel limited in what I can accomplish and in the end, project managers/execs just can't argue. Simply nothing else exists in this class with this combination of agility, functional elegance, and "enterprise" class power.

Okay, this comment began as a thank you for making a great appeal for ClojureScript and has unexpectedly turned into... I'm not even sure.

So, TLDR? We need a killer feature that goes beyond semantics for ClojureScript that fixes something broken and practical in JavaScript. Is this a seamless and powerful Web Workers VM or abstraction that just works? Is it a mature core.async in tandem with full featured promises? Is it a new core lib that makes having to think about client/server interaction a problem of the past? I just don't know.

mtrimpe
That feature is bound to be functional reactive programming which extends into the server.

The two easiest ways to think of FRP are to either a) imagine it as declarative data binding with the ability to add function transformations or b) think of Excel cells and their functions and dependencies.

Pedestal [1] seems to be an attempt at getting there but it's still incredibly convoluted compared to its Common Lisp equivalent Cells [2]

[1] http://pedestal.io [2] http://common-lisp.net/project/cells/

P.S. If you combine FRP with Clojure's purely functional data structures you also get an amazing 'replay' feature since your UI is nothing more than your (client + server) data models materialized into a view through a graph of FRP functions.

bkirkbri
I think this is insightful. Benefits of ClojureScript like namespacing, functional primitives and client/server code sharing can be attained via other, easier (though not necessarily better) tools in the JS ecosystem.

Of the things that you mentioned, I'd wager that core.async will be the captivating feature for ClojureScript. David Nolen's excitement is a good gauge. If that increases adoption significantly, it's my hope that ClojureScript's other benefits keep the fire burning.

dustingetz
I think the killer feature will be functional Dom manipulation which is just starting to become feasible (Facebook React). Give it another year.
pigs
Very well stated. A few months ago I wrote a post on my company's blog pushing Clojure, and the ideas just seemed to flow. Now I'm getting around to writing a specific post on ClojureScript, and even though I love writing cljs code, I'm having a hard time making a convincing argument to others. There are however a few things that still stand out about ClojureScript I think, but I don't think they are mature enough to qualify as a killer app, but mostly just something to pique the interest of a certain class of programmers.

One is the port of core.logic. AFAIK there is not a comparable Javascript logic library, although the ClojureScript port does not have all the features of the Clojure base.

Another novel feature is integration with nrepl via the piggieback library[1]. This allows you to evaluate ClojureScript code directly in your running web app if your editor has nrepl connectivity. Again, I don't know of a way to do this with current Javascript tools. But here again, the solution still feels like it lacks maturity.

I don't understand enough of core.async to really comment, but the excitement around it seems to point to another rather exclusive bit of ClojureScript functionality.

[1]: https://github.com/cemerick/piggieback

Jun 29, 2013 · 6 points, 0 comments · submitted by llambda
Jun 28, 2013 · 4 points, 0 comments · submitted by twism
HN Theater is an independent project and is not operated by Y Combinator or any of the video hosting platforms linked to on this site.
~ yaj@
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.