
Clojure Web Infrastructure - fogus
http://www.glenstampoultzis.net/blog/clojure-web-infrastructure/
======
lukev
Excellent breakdown.

This is an important point about Clojure - the culture seems to be leaning
towards multiple small libraries, rather than whole frameworks or packages.

Which is actually kind of neat, since a properly written Clojure library is
much more composeable than libraries in most other languages.

~~~
futuremint
Isn't this sort of the same philosophy as the way Lisps are built? It seems
like having proper namespacing and a overall functional style lend themselves
to smaller, more self-contained libraries.

Similarly there isn't as much of a need to have a monolithic stack like Ruby
has, because Ruby's style tends to step on other's work a bit leading to
preferring a all-in-one style for reliability.

------
astine
Holy Crap why oh why couldn't someone have posted this two weeks ago?! I just
upgraded an internal application from Clojure 1.1.0 to Clojure 1.2.0 and had
to upgrade my entire web-stack as a result! I was more than a little annoyed
to find out that not only had Compojure outsourced nearly all of it's earlier
functionality to other libraries, but that I could no longer just download the
jars. I'm sure Leiningen solves all of your dependency needs when you are on
Linux or a Mac, but I cannot get it to work on Windows and Clojure package
maintainers seem to have forgotten that there are people who might want (or
need) to install libraries manually without things like Leiningen or Maven.
</rant>

I understand that Clojure is still young and that it's ecosystem is still
evolving at a fast pace, and I understand why the changes being made are
largely improvements, but for my particular circumstances it's a large
headache.

EDIT: Here's a hint for people want to get a Clojure environment going but
can't use one of the package managers for some reason or other: You can visit
clojars.org and download all of the jars that you need. This was, you don't
need a build system on you development machine. You still have to figure out
what the dependencies are manually, but you aren't stuck if you can't get
Leiningen or Maven working.

~~~
moomin
I know this sounds completely crazy, but you could always run a Linux VM on
your windows machine. I find this more convenient than trying to figure out
how to make things work on Windows some days.

Alternatively, if you're having trouble with the lein.bat, you could try
lein.ps1. (<https://gist.github.com/395038>) I believe that lein.sh is meant
to work pretty well on cygwin now, though.

~~~
preek
At work, I'm even doing it the other way around: Windows runs as a guest in
Linux. Nothing get's done in Windows unless it's more work to do it in Linux.
Interestingly, for me that's only two things: VPNs and Citrix Metaframe to
connect to clients. That's it.

I can't stress how much more productive you'll be. And we're a shop selling
Windows software to Banks and bigger corporations.

------
pmjordan
I'm currently using a bunch of these; I'm not using enlive for templating as
such, just modifying existing markup after it's been generated. For classical
templates I've found that freemarker, a Java templating system, works
perfectly with the Clojure types.

clj-record shows promise but is still rather rough around the edges. I'm
hoping to contribute some patches.

I'm still trying to get to grips with Leiningen: one thing I haven't figured
out is what the best way to use local jar files for Java libs. Also, using
locally modified versions of libraries which are already in the leiningen
system doesn't seem an intended use case.

------
orky7
as clojure runs on JVM so is there is any string attached to the language
whose other end is with the Oracle in any crazy manner imaginable? after the
google vs oracle patent case i am really afraid of java. what is the point of
open source java if there are patent issue which can come and get you.

~~~
pavelludiq
IANAL, but i believe that as long as you don't try to implement your own JVM,
you're safe from lawsuits. Imagine that Microsoft sues some Linux company
because of some windows patents(didn't they actually do that?), would that
stop you from using either Linux or Windows?

------
swah
I removed the routing layer (Compojure) and my code is now clearer and
shorter, by resolving URIs directly to functions. At least for developing this
is great. Lets see where this will take me.

------
mark_l_watson
App Engine Magic looks cool, I hadn't seen that before, but trying it right
now. I am most interested if AOT helps reduce loading request times.

