Revisiting the Objections* section today: First Run: New quickstart page is much better Types: Clojure.spec is available for ClojureScript Editors: Guides available on the site Java: Still here
Enjoyed the video. I have watched several clojure videos in an attempt to answer one question. Is this relatively new eco system worth learning if your new to programming?
Agreed. I've started to learn Clojure with Light Table and it is a really cool editor (I am used to Sublime Text). The inline REPL is a great experience for a first run!!
Good talk & I defo want to start using ClojureScript. Examples of verbosity in JS are cherrypicked though and can all be done in one line: ISO date string: (new Date()).toString() Iterate w/ previous & next value (eh, could be better): const iterate = (a, f) => a.map((v, i) => f(v, a[i-1])) Trim: _.trim(str) Clone: _.cloneDeep(obj) Check for empty string: str === ''
+Ashton War I agree w/ the comments about templates, they suck. I wrote a library based on react-hyperscript that solves this in native JS. So I'd write something like: div([ span(`Hello ${name}`) ul( options.map((v, i) => li(`Option ${i}`)) ) ])
+Ashton War That async / callback hell problem you put up is a little tricky, the people working on RxJS have solved this in native JS but the ideas haven't spread to the wider JS community yet.
I get where you come from when starting up IntelliJ/Cursive and start New Project, but choose Leiningen and just ignore the first screen and you're golden.
Tony Hoare had many brilliant ideas, but CSP really wasn't one of them. This is the one part of working in ClojureScript that I remain worried about: I don't want the components I'm using to make use of unsafe concurrency primitives. In javascript, I can be confident that my event runs to completion before the next microtask is executed, but in clojurescript afaict, any number of unrelated events may be processed before some library function resumes. This means the developer can no longer reason locally about effect order.
fwiw that ""javascript"" code example contains experimental ES7 features that are part of an early draft standard and require bleeding edge, experimental babel plugins: babeljs.io/blog/2015/05/14/function-bind/ It's misleading to say "this is javascript [right now in 2015]" :)
+S ཨཽཨཽཨཽ Once point you didn't make but could, however, is that "javascript runs in the browser" is no longer a valid argument. Modern javascript REQUIRES a compile step (babel), so clojurescript really is not at a disadvantage here.
Developing on a modern Lisp language in back and front end avoiding JS: feels like heaven.
07:00 Web Development Spectrum
09:25 new framework
14:55 tooling
16:35 interop
23:40 types
~ 26:00 editor
28:00 templates
29:33 workflow
31:43 shaky foundation, javascript, one-liner
33:09 code size
Thank you! This is a great talk for everyone who wants to bridge the gap between ClojureScript programmers and JavaScript developers.
The only person on the planet who can make this topic interesting and useful for that 180 degree arc of intellect that spans marketing to SDE.
Excellent talk, thank you for a great pitch for the javascript community!
This is very helpful. Is there a recent update of this comprehensive nature for the current state of the ecosystem?
Revisiting the Objections* section today:
First Run: New quickstart page is much better
Types: Clojure.spec is available for ClojureScript
Editors: Guides available on the site
Java: Still here
Really good talk. Experienced speaker, still relevant in 2022.
is closurescript doing anything to integrate with webasm?
Really nice presentation!
Enjoyed the video. I have watched several clojure videos in an attempt to answer one question. Is this relatively new eco system worth learning if your new to programming?
At 25:35: What about Light Table as a good starting editor for ClojureScript ? Based on electron (same as Atom) and written in ClojureScript.
Agreed. I've started to learn Clojure with Light Table and it is a really cool editor (I am used to Sublime Text). The inline REPL is a great experience for a first run!!
Very good speaker!
Good talk & I defo want to start using ClojureScript.
Examples of verbosity in JS are cherrypicked though and can all be done in one line:
ISO date string:
(new Date()).toString()
Iterate w/ previous & next value (eh, could be better):
const iterate = (a, f) => a.map((v, i) => f(v, a[i-1]))
Trim:
_.trim(str)
Clone:
_.cloneDeep(obj)
Check for empty string:
str === ''
+Ashton War I agree w/ the comments about templates, they suck. I wrote a library based on react-hyperscript that solves this in native JS. So I'd write something like:
div([
span(`Hello ${name}`)
ul(
options.map((v, i) => li(`Option ${i}`))
)
])
+Ashton War Immutability + hot reloading, yep JS sucks at this and we don't have good solutions. +2 for clojurescrupt here
+Ashton War Yeah, your right about Java, biggest thing making me want to stay away from Clojure
+Ashton War That async / callback hell problem you put up is a little tricky, the people working on RxJS have solved this in native JS but the ideas haven't spread to the wider JS community yet.
+Ashton War Though async / await in es7 could be seen as a step in that direction
Impressive
I get where you come from when starting up IntelliJ/Cursive and start New Project, but choose Leiningen and just ignore the first screen and you're golden.
And here I am still using jQuery. Oh btw, also using JSPs. And best of all, we also don't use SCM/versioning.
Good luck
Tony Hoare had many brilliant ideas, but CSP really wasn't one of them. This is the one part of working in ClojureScript that I remain worried about: I don't want the components I'm using to make use of unsafe concurrency primitives. In javascript, I can be confident that my event runs to completion before the next microtask is executed, but in clojurescript afaict, any number of unrelated events may be processed before some library function resumes. This means the developer can no longer reason locally about effect order.
fwiw that ""javascript"" code example contains experimental ES7 features that are part of an early draft standard and require bleeding edge, experimental babel plugins: babeljs.io/blog/2015/05/14/function-bind/ It's misleading to say "this is javascript [right now in 2015]" :)
+S ཨཽཨཽཨཽ Once point you didn't make but could, however, is that "javascript runs in the browser" is no longer a valid argument. Modern javascript REQUIRES a compile step (babel), so clojurescript really is not at a disadvantage here.
Interesting but pretty outdated.