@sveri : you're now my favorite person in #gae !
😄 thanks
is this #off-topic-v2?
hehe, not sure
I am waiting for the rant 😄
http://www.reactiongifs.com/wp-content/uploads/2011/05/THISGONBGUD.gif
we want a rant!
we want a rant!
@sveri, @notanon: here's the multi part rant: 1) If you want to setup Clojure on GAE via the Java Environment, it's this: http://lambda-startup.com/developing-clojure-on-app-engine/ ^^ this is black magic 2) now, after this is setup, you think to yourself I am awesome. I got clojure on GAE. I am awesome. Why does my app take 20 seconds to load? 3) Maybe this is because assets are served via ring/compojure. Thus, you move everything to public-root/static in app.xml 4) does not fix it 5) then you read about JVM warmstart -- because maybe the delay is due to JVM being started on first request does not fix it 6) then you think -- maybe instead of puny 512MB RAM, JVM/Clojure needs more bigger instances 7) does not fix it 8) then you give up on GAE, because 20 second delay on first reqauest = fucking unacceptable 9) while exploring lein, you discover ":aot :true" one day 10) you try it 11) then you realize ... all this time, lein "uberwar" was uploading *.clj files, NOT compiled java classes. what was happening was as follows: 12) a request comes in: gae fires up a jvm from scratch for you this jvm loads up clojure dependencies this jvm loads up yoru *.clj files this jvm compiles your *.clj files this jvm serves the request ... then if there isn't a immedaite followup request, this jvm is kiled yeah, so that's why there's such shitty latency /end-rant
now thats what im talking about
basically, if you're deploying to gae, make sure to use ":aot true" in your project.clj
how long between requests until the jvm is killed?
seems pretty unacceptable for a jvm app to be killed like that
jvm start up is slow 🙂
ah, you can specify "min # idle instances" and "max # idle instances"
this rant is turning into a how-to guide 🙂
yeah, GAE should pay me marketing fees
the main issue is lack of websocket support
which I believe can only be done via having a separate google compute engine machine -- whose sole purpose in life is to route websockets
hm
does it not work to provide a jar built by uberjar to GAE?
I know very little about jar/war, but in my very limited understanding, they're using jetty or something, so you're supposed to provide a ring handler of some form
also, GAE requests only have 30 seconds to respond and very limited system APIs; so even if you uploaded a jar, it'd not be possible to do websockets on GAE with it
GCE == approcimately EC2, GAE == approximately AWS Lambda
ec2 is a full unix box that you can do anything with
you mean gce != ec2?
gce = google compute engine; gae = google app engine
gce = gives you a VM, you do whatever you want; gae = you write functions, it runs on their runtime
ah
thus, gce == ec2, gae == aws lambda
wasnt seeing the difference in the acryonms there
so your whole approach/effort with gae is a no-go?
I'm very happy with gae; I'm just going to put websockets elsewhere
I'm now very happy with gae; it was a rough week until all got sorted out