I just launched https://www.schoolseatingcharts.com , which might be of 
interest to this mailing list because it's constructed out of 100% Clojure 
and ClojureScript.  The codebase is about 60% Clojure (all running on the 
server) and 40% ClojureScript (all running on the client).  Altogether, it 
weighs in at a light 5,000 LOC, including comments, tests, and other 
administrivia (and also a pretty generic CRUD library that I haven't 
open-sourced yet).  It's running on Google App Engine, using 
appengine-magic, which has (so far) been a pleasure to work with 
(disclaimer: I work for Google, so I am biased).

By no means is School Seating Charts a marvel of engineering, but it did 
prove to me that it's possible to Get Shit Done in the web world with 
Clojure.  More importantly, it shows that ClojureScript can be used to 
solve practical problems in the real world, despite it being in its infancy.

I could go on and on about the specifics of building out the website (and 
maybe I will in a blog post sometime), but one anecdote stands out among 
the rest, so I'll mention it here.  Sharing code between the client and 
server is *awesome*.  I can't stress this enough.  Besides making the banal 
details easier (e.g. sharing configuration information, HTML element IDs, 
etc), it's great because it lets you jump in and write code without 
considering (too much) whether it should run on the client or server.

For example, I originally wrote the algorithm that shuffles students among 
seats (with certain constraints) on the client.  Eventually, I decided that 
I wanted to support IE8, but it just couldn't run the shuffle fast enough. 
 So, I spent *10 minutes* moving the shuffle code to the server.  It was 
absolutely trivial.  Now, this code isn't ridiculously complex, but it does 
have a lot of tricky corner cases -- enough that porting it from JavaScript 
to the server-side language would have really sucked.  With Clojure and 
ClojureScript, it was a non-issue.

Anyway, I've rambled on far too much already.  I just thought people might 
want to hear about a Clojure success story.  Technical success, that is... 
 Whether it's a commercial success remains to be seen.  :)

-Evan

-- 
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

Reply via email to