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.