Hi Arnaud,

Are you using lein cljsbuild auto? If so then :none should be sub-second? 
Things that significantly improved my cljs workflow (with om):

 - figwheel (chestnut template is a great starting point) pushes javascript 
changes to the browser (and css as well)
 - defonce the atom so state persists figwheel pushes
 - pristmatic's schema (or core.typed)
 - pristmatic's schema (or core.typed)
 - pristmatic's schema (or core.typed)
 - pristmatic's schema (or core.typed)
 - (yeah, realy, schema is that useful)
 - pristmatic's schema (or core.typed)
 - (I mean it :))
 - https://github.com/cemerick/clojurescript.test (haven't tried David's shiny 
new clojure.test port).
 - ruthlessly separating out logic from components. If I need to unit test a 
component I first see if I can split the interesting logic into a separate 
method which I can test without a browser. If I can't then I go get some coffee 
and try again.
 - in a previous life (CoffeeScript and ExtJS) I had great times with Jasmine.
 - Cursive Clojure (https://cursiveclojure.com/). To be honest you might want 
to stick with LightTable if it isn't clj backend.
 - https://github.com/noprompt/lein-garden (but I suspect you might be using a 
non-clojure CSS generator?)
 - https://github.com/gdeer81/lein-marginalia for documentation 
(https://github.com/zcaudate/lein-midje-doc also looks awesome but I haven't 
used it).

And did I mention schema? :).

For general programming I highly recommend https://github.com/jonase/kibit and 
https://github.com/jonase/eastwood.

Hope this helps.

On Friday, 19 December 2014 15:18:30 UTC, Arnaud Bailly  wrote:
> Hello,
> I have been developing with Om and clojurescript for a few months now, and I 
> do feel I am missing something to get as productive as I am when working with 
> Haskell (or java for that matter). 
> 
> 
> I would appreciate some advices or pointers resources from more experienced 
> people on how to get to the point where I can develop confidently, easily and 
> with decent speed in clojurescript. 
> 
> 
> Here are my main concerns and some experiences I can share to give more 
> context:
>  - compiler is slow: I have setup cljsbuild profile to use advanced 
> optimisation which heavily slows down compiler. Even simple optimisation is 
> rather slow. No optimisation is rather fast, but not that fast (several 
> seconds...). Note that I "often" have to remove generated compiled file and 
> target/ dir to get usable result when doing advanced optimisation, otherwise 
> I got seemingly unrelated runtime errors in the UI
>  - compiler is not very helpful in catching errors: Error messages are ok, at 
> least better than default clojure and its sometimes huge stack trace (or is 
> it something from cljsbuild?), but of course not having types means fewer 
> errors got caught... This is not an issue when one has the fast feedback of 
> the REPL but large compilation time makes it really unwieldy.
>   This is particularly annoying in Om because it requires state to be stored 
> in an atom which in some contexts can be manipulated directly and in some 
> others need to be dereferenced... And it is very easy, at least for me, to 
> forget/add an @ 
>  - unit tests are hard: code is mostly Om/react DOM building and ajax 
> requests, so pure unit testing is not really useful or would need too much 
> mocking. There seems to be a testing framework for React but I could not 
> really figure how to use it given react is actually encapsulated under Om... 
> I tried to write unit tests manipulating DOM elements but got stuck on how to 
> simulate a change event. My JS-fu is probably lacking here but although I was 
> able to synthesize a click, it was not possible for a change. 
>  - I resorted to selenium tests, but of course those are fragile and slow and 
> I would like to avoid having to fire a server for testing part of client 
> application
>  - I tried to LightTable, but not being able to use repl/instarepl means I am 
> left with a text editor less powerful than emacs. I user LightTable with 
> clojure code and found it really nice so I would like to be able to use for 
> clojurescript too.
> 
> 
> As I said, I have been coding for a living mostly in statically (or not so 
> statically) typed  languages (Java, Haskell), but I have been using clojure 
> for side projects in the last few years and I really enjoy coding in clojure. 
> So when I discovered Om I was really enthusiastic about its capabilities and 
> the way it expanded my horizon to make programming in the browser a more 
> pleasing experience. 
> 
> 
> But my coding flow is not satisfying, it takes a long time to iterate so I 
> tend to do larger steps which creates bigger mistakes which take a long time 
> to track... And I positively hate using a debugged, especially with optimised 
> clojurescript compiled code :-)
> 
> 
> So this post is really not a rant at all, I just got the feeling I am not 
> doing things the right way and would like to be enlightened by people more 
> knowledgeable than me.
> 
> 
> Thanks in advance,
> 
> 
> 
> 
> 
> 
> 
> 
> -- 
> Arnaud Bailly

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to