I happened upon the video through a different source yesterday. Saw it. Didn't really get the title. Sure he quickly ran through the What-Why-How-Perf-Examples of ClojureScript. Had I not already been interested in Clojure/ClojureScript, I would have walked away from the talk thinking whats the big deal? Other languages also compile to JS and vanilla JS isn't all that bad once you get to know it. So yeah, just by watching the video, I didn't understand what the title meant by 'Lisp's Revenge' or even 'Hoare's Revenge'.
EDIT: Before viewing the presentation I wasn't aware who the presenter, David Nolen, was. I was aware of the online persona "SwannOdette" and his blog posts [1] were a major reason for me seriously considering ClojureScript. During the presentation I realized that "SwannOdette" and "David Nolen" are one and the same. His blog posts [2][3][4] are a lot more convincing than this video.
Some day I will write in vanilla Javascript the corresponding code for the examples in those posts. That will truly help me appreciate the advantages Cljs brings to the table. Incase someone else does that, please do reply here.
David is a great guy, but sometimes his talks don't get the point across in a powerful way.
Clojurescript uses CSP (same concept as Go channels invented by Tony Hoare) to allow simulated multiple concurrent threads of execution in javascript. How many compile to javascript languages have concurrency? not many.
Clojurescript has powerful immutability at the core of the language, macros that are so powerful they can add concurrency to single threaded javascript via a library.
I admit it's not simple to understand everything clojurescript has from a casual glimpse, but if you learn enough, it can really kick all the other compile to JS languages in the butt.
I am still learning FP and originally I was only looking at server side languages as I felt Javascript already lets me write code in an FP manner. It was after I read SwannOdette's blogs posts on ClojureScript and CSP that I started getting really excited about it. Couple that with Om and Flux, I think I would love writing apps that way. Meaning I was already sold on the potential of ClojureScript/CSP before even watching this presentation.
My dissatisfaction wasn't with ClojureScript but with the presentation. Given that I saw the presentation out of context (I don't know who the audience at the goto; conference was supposed to be - experienced FP developers looking to move to web or existing js web developers looking for something better). Purely from the presentation, I (who belongs the latter) wasn't really sold on anything. Maybe I wasn't the group being targetted.
Finally, I didn't watch the presentation because it was presented by David (I didn't who he was), I watched it for the title. It wasn't till midway through the presentation I realized SwannOdette is actually David. And that surprised me a lot cuz his blog posts are really good, and as I said really sold me on considering ClojureScript. I didn't intend to pick on David, maybe he just had a sub-par day. Especially after knowing David=SwannOdette :)
You just made every single Common Lisp programmer who reads your comment cringe.
Clojure is a very nice language and while it has no real innovations it does bundle a few unusual (for mainstream) concepts into a single easy to use package. However, you should wait with calling Clojure macros "powerful" until after you get access to readtable. Or wait, you won't ever, that's a feature, supposedly...
Right, in general languages without any means of syntactic abstraction feel contrived to me now, and after working with several macro-enabled languages I really want to have support for them in more places. JS (Sweet.js), along with Dylan and Nimrod (and others) showed that it's possible to have real macros in non-prefix languages - I wonder how long it will take the "mainstream" to become comfortable with this feature. It looks like it takes anywhere between 20 to 40 years on average for concepts to "enter mainstream", so I think we're going to have to wait quite a long time yet.
I really like Clojure (and have enjoyed David Nolen's CLJS tutorials and guides), but I find ClojureScript to have terribly arcane tooling. Despite being familiar with Clojure, it's still 10 minutes of cargo-culting and copy-pasting before I can start actually working on a ClojureScript project. Slightly ironic for a language which places such an emphasis on removing "incidental complexity."
Internalizing exactly what all the ClojureScript build options do definitely takes some time and it's frustrating if all you want to do is quickly try some little thing out. But it's for this reason I created the Leiningen templates mies, mies-om, and mies-node. These can get you up and running in a few seconds. For similar reasons other people have created templates for Ring app + ClojureScript, etc.
If Emacs is your thing, which it should be if you do Clojure, DPPs starter project Spiffy, will give you very decent setup in a couple of minutes. https://github.com/dragonmark/spiffy
> If Emacs is your thing, which it should be if you do Clojure,
This is the kind of attitude that keeps people away from your language. The amount of people who shun away from C# simply because they don't like the idea of Windows / Visual Studio should be a hint.
And it's unfounded. Thanks to Lisps unusually regular syntax adding support for semantic editing features (paredit-like) should be rather straightforward in any editor. And accidentally paredit is also enough to make coding any Lisp way more pleasant than editing raw code in other languages.
That's more of a Lisp problem than a Clojure problem. All the Expert Lisp Programmers settled on Emacs many moons ago (as in decades past) and no one has bothered to write another (good) Lisp-friendly text editor since. And well, you can't really write Lisp without a suitable text editor, so all the Lisp neophytes either give up or learn to cope with emacs and eventually forget about replacing it.
all the Lisp neophytes either give up or learn to cope with emacs and eventually forget about replacing it.
This is really not true any more. LightTable is great for beginners, and there are more options for Clojure now. I'm developing Cursive, which is becoming pretty popular - Vim also seems to work well, Counterclockwise is good too.
Even before that, it's shocking how few text editors have basic Lisp indentation and REPL support.
I guess I did forget about Light Table (as AFAIK it doesn't support Scheme or Common Lisp yet), which seems like the right thing to point beginning Clojure programmers to.
Hell, that's probably a big part of why Clojure became more popular than the previous Lisps.
To be fair, I'm on-side with the idea of an environment that adds niceties for your language. However, I agree that you should be able to still have a decent experience without installing or setting up language-specific editors or environments. I've really enjoyed being able to get into Rust with nothing more than Vim and a terminal.
This was only meant as a recommendation, not a command. Lightable, Vim, Eclipse IntelliJ and quite a few others are perfectly viable alternatives. I have just personally found that Emacs to be excellent for Clojure development.
I definitely felt the same but there's quite a few bits of tooling popping up now - lien-mies for a very quick first step, and more powerful bits like figwheel, which makes itterating in the browser with om really shine.
David Nolen inspires me with his grasp of programming concepts & paradigms. Watching his talks and the other clojure geniuses truly inspire me. You are so right about the passionate, bright, and brilliant part. I feel his enthusiasm to iterate the world into a better place to code in.
EDIT: Before viewing the presentation I wasn't aware who the presenter, David Nolen, was. I was aware of the online persona "SwannOdette" and his blog posts [1] were a major reason for me seriously considering ClojureScript. During the presentation I realized that "SwannOdette" and "David Nolen" are one and the same. His blog posts [2][3][4] are a lot more convincing than this video.
Some day I will write in vanilla Javascript the corresponding code for the examples in those posts. That will truly help me appreciate the advantages Cljs brings to the table. Incase someone else does that, please do reply here.
[1] - http://swannodette.github.io/2013/11/07/clojurescript-101/
[2] - http://swannodette.github.io/2013/07/12/communicating-sequen...
[3] - http://swannodette.github.io/2013/07/31/extracting-processes...
[4] - http://swannodette.github.io/2013/08/31/asynchronous-error-h...