And for people who want to "level up" their programming skills and get an excellent language for writing servers in with a great faculty for safely concurrent semantics:
How is deployment with clojure? I haven't used either, but deploying golang programs looks incredibly simple, whereas JVM wrangling (which I last did years ago) was never fun for me. Does either one support erlang-style hot code swapping?
JVM deployment is a little more involved, but due to the use of the virtual machine, can allow for hot code swaps. However, this isn't cleanly baked into many application architectures, so YMMV.
A lot of people just clone their code to the server and do "lein ring server-headless", (lein is the clojure build tool) which starts the server.
You can also package all your code and its dependencies into a single jar, then copy that jar to your to your provider and run it.
It's pretty easy basically, and more advanced options are available, but even if it was more involved, I think the benefits you get with Clojure are big enough that I'd be willing to put up with quite a bit more difficulty than there is.
You might be over-rating the usefulness of code hot-swaps in production with Erlang. Erlang devs I've talked to have looked a little green in the gills when I asked about it.
Coming from Python and Ruby, being able to just deploy a jar is a dream.
Python has packages ("eggs", although the term has multiple meanings, I'm unaware of good unambiguous name to things you host on PyPI or alikes). You put your code under a certain conventional directory structure, write simple setup.py file and, well, that's about it.
(Although, as I happen to use mostly Debian-based systems, I prefer not using Python packages directly but build .deb out of them with stdeb and use system package manager to deploy. Just dput the built package to company's private apt repo, and Puppets pull the update.)
Eggs are incomplete, broken, don't really solve the entire problem, and don't even solve the problem they were designed to solve.
It's a mess, there are multiple factions and implementations, and until people started consolidating there were 4-5 concurrent popular approaches to packaging Python libraries.
I've lost tangible shards of my sanity to Python packaging and some of my poor coworkers are fighting the terribly useless fight regularly still to this day.
Worse, most Python projects that have any non-trivial dependencies usually entail NumPy, SciPy, or Cython.
Have you ever packaged something that's using multiple C and Fortran dependencies for automated deployment? It's horrific.
Meanwhile, back when I'm at home and I use jBlas or any other Clojure, Java, or Scala library here's what I have to do:
Add dependency to project.clj:
[bulwark "0.0.3"]
Ship the jar.
lein deploy $maven_repo
Writing Clojure code at home is incomparably more pleasant not just in pure code, but in all the accouterments and tooling as well.
http://clojure-doc.org/articles/content.html#clojure_tutoria...