anchor.diff:  this context dynamically, at compile time (`./gradlew clean` deletes
   it).
   
  +.modules
  +[NOTE]
  +*Note*: modularized apps hava a slightly different structure; see the
  +link:modules/Readme.adoc[modules] demo for more info.
  +
   This means that the Clojure runtime running in a GAE app can only load
   files within that context; it cannot load from the standard
   `<projroot>/src/main/clojure` path, for example.  Furthermore,
  
positive.code: Fortunately, a sufficiently perverse mind can easily get around these
  two problems.  To make changed source code available for reloading by
  the Clojure runtime, we arrange to copy files from the source tree to
  the runtime context whenever they are edited and saved.  To make sure
  that AOT compilation does not interfere with code reloading, we split
  servlet definitions (using `gen-class`) from implementations.  And to
  make sure they get reloaded we use the standard `ns-tracker` library
  in a Java Servlet Filter that intercepts all HTTP requests and reloads
  changed code before forwarding requests to handlers.
  
  Oh yeah, the other thing is we use `gradle` rather than `leiningen`.
  I love leiningen, but using it doesn't make sense for GAE; the
  
negative.code: wrapper on the Google libraries, unless you want to use Java interop
  facilities to work with the Google libs directly.  Some libraries are
  under (slow) development - the
  link:https://github.com/migae/datastore[Datastore] lib is furthest along,
  and stable enough to at least play with.  A demo will be added to this
  project, soon, I hope.
  
  ### previous approaches
  
  This project originated as an attempt to improve
  link:https://github.com/gcv/appengine-magic[appengine-magic], but
  eventually I decided to take an entirely different approach.  A major
  reason for this is just that Google switched to a `gradle`-based build
  a while back, which makes it possible to get a quasi-repl going
  