Pretty neat. Figwheel is pretty new to me, so it's something I'll have to look into.
I just recently got my head around using ClojureScript with vim-fireplace and Austin. It took a bit of work, but I finally got to a point where I easily have a browser REPL running using an environment stored in a var. This helps avoid security error, but it's not as simple a setup.
I suppose one big difference is the HTML I am using is being served via a Ring-based server rather than using a separate serving process. This allows me to add middleware in development mode that will inject the necessary JavaScript to connect to the browser REPL.
It is great to hear success stories for the Clojure/ClojureScript workflow. I really respect the work behind LightTable and understand the natural lisp support of Emacs, but I have a lot of time and neurons baked into using Vim.
Most of my dev time is spent with JavaScript lately, I'm really curious what live reloading is like.
I would highly recommend anyone starting Clojure or ClojureScript give LightTable a spin. I find it's workflow generally fantastic. Connecting it to the browser is a snap too. You'll be up and running in 4 minutes, don't even need to download/install clojure; it does it for you!
I'm learning OCaml now and this blog post really makes me wish if tooling around js_of_ocaml[0] were this great! Thanks for the detailed write up! Bookmarked for when I start clojure!
As this blog post shows (the author spend a lot of time working on this setup), the UX for starting with ClojureScript is pretty horrible, to much incidental complexity.
I hear the maintainers of Cljs are going work on it but its not a priority.
I generally agree. Even as an experienced Clojure developer (but not much of a web developer), it took a bit of time for me to get a ClojureScript working environment integrated with Vim fully worked out.
However, you can still get to a very usable state with a minimal setup. Once you get lein-cljsbuild set up, just running 'lein cljsbuild auto' and reloading the page after changes works fairly well. No, it doesn't have the polish or Vim integration of this full configuration, but it's usable.
I don't see how you can get much simpler than this http://swannodette.github.io/2013/10/27/the-essence-of-cloju... for any compile to JavaScript language. Fundamental UX is definitely a priority - this is why fast incremental compilation and source map support exists.
I don't think it's so much that it's hard to get a productive working environment. In my experience, getting vim-fireplace working with a new Leiningen project takes nearly zero effort. Moreover, I get all sorts of nice functionality (easy evaluation of expressions, sourc/doc lookup, etc.). Getting all of these features with ClojureScript takes quite a bit more effort, especially connecting it all to a browser REPL. At least, this has been my experience.
I just recently got my head around using ClojureScript with vim-fireplace and Austin. It took a bit of work, but I finally got to a point where I easily have a browser REPL running using an environment stored in a var. This helps avoid security error, but it's not as simple a setup.
I suppose one big difference is the HTML I am using is being served via a Ring-based server rather than using a separate serving process. This allows me to add middleware in development mode that will inject the necessary JavaScript to connect to the browser REPL.