Folks,

I'm skipping Midge for the time being.

I've written up a little more on my environment for other newbies:

http://blog.goodstuff.im/clojure_setup

I plan to read more of Chas' book on my NYC flight on Saturday.

Thanks,

David



On Wed, Jun 5, 2013 at 2:44 AM, Chas Emerick <c...@cemerick.com> wrote:

> Hi David,
>
> It's odd/interesting that you're finding yourself restarting the JVM
> regularly.  For many years, I've developed Clojure with very rare restarts;
> especially if my baseline project configuration is stable, I often have
> REPL sessions that last days.
>
> (Random thought: it'd be cute if various development environments
> regularly plinged `(.. java.lang.management.ManagementFactory
> getRuntimeMXBean getUptime)` so as to show uptime of your REPL/runtime.)
>
> Stuart's clojure.tools.namespace patches over a couple of long-standing
> trapdoors around code loading, but I've always preferred simply loading
> files/expressions into the REPL, much as we described in the 'REPL-oriented
> Programming' chapter in the book.  I generally prefer to have as complete
> an understanding as possible of what's being loaded / being done to my
> REPL, and so various automated tools have never appealed to me.
>
> As for testing, I've always used `clojure.test`, so re-running tests after
> changing them or the code under test has always been just a `(test-ns
> *ns*)` away.  This was actually a primary objective of mine in porting
> `clojure.test` to [clojurescript.test](
> https://github.com/cemerick/clojurescript.test), which carries forward
> all of the former's dynamic-runtime facilities like `test-ns` and
> `run-all-tests`, despite the lack of first-class namespaces and the static
> nature of ClojureScript compilation and Closure optimization.
>
> In any case, whatever you do, any workflow that results in your bouncing
> the JVM is a broken one, and any tools/libraries/frameworks/whatever that
> push you in that direction are to be avoided IMO.
>
> Cheers,
>
> - Chas
>
> On Jun 4, 2013, at 4:51 PM, David Pollak wrote:
>
> Folks,
>
> I've been doing Clojure coding for the last couple of weeks and really
> love the language... and the community is fantastic.
>
> But the development cycle is slow.
>
> I'm coming from mostly Scala and a little Java.
>
> In Java, there's no REPL or anything... but the compile/test cycle is very
> fast. So, I can make a few changes to code, type "mvn test" and see the
> results typically in less than 2 seconds (my MacBook Pro and my Linux
> desktop).
>
> In Scala, the compile cycles are slower than in Java because the Scala
> compiler is doing a whole ton more. But in sbt (Simple [ha ha] Built Tool),
> one is always building/testing in the same JVM instance so the JVM is
> warmed up. A "change code and run tests" cycle is typically as fast as it
> is in Java. For example, Changing something significant in the
> net.liftweb.util package and doing a recompile and test takes about 9
> seconds. This is running > 450 tests.
>
> My Clojure development cycle is much slower. On my MacBook Pro (3rd gen i7
> quadcore processor, 16GB of ram), each time I make a change and re-run the
> test for Plugh ( https://github.com/projectplugh/plugh ) it takes about
> 20 second and there are only 4 tests. On my desktop Linux box (i7-3770 with
> 32gb of RAM) it takes about 4 seconds to run the 4 tests. I also ran stuff
> on a very old ThinkPad (core 2 duo with 4GB ram running Linux Mint 15) and
> the test cycle takes 12 second.
>
> So... the questions:
>
> * Is there a faster cycle than to change code, change tests and type "lein
> test" to see the results?
> * Is there a way to keep everything in a hot JVM (I've done a little
> research on Nailgun... but it seems to be out of vogue) so there's no JVM
> start-up penalty?
> * Is there a reason for the huge disparity between my MacBook Pro and my
> desktop box?
>
> Thanks,
>
> David
>
>
> --
> Telegram, Simply Beautiful CMS https://telegr.am
> Lift, the simply functional web framework http://liftweb.net
> Follow me: http://twitter.com/dpp
> Blog: http://goodstuff.im
>
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
Telegram, Simply Beautiful CMS https://telegr.am
Lift, the simply functional web framework http://liftweb.net
Follow me: http://twitter.com/dpp
Blog: http://goodstuff.im

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to