is pretty dang cool

I recently had the opportunity to (read ‘curse of’) build a fancy modern website from the ground up. The client didn’t want the site to DO anything special, per-so, but it needed to look slick as shit and be highly maintainable in that enterprise kinda way.

To me this meant a backend that exposed API endpoints, and a completely disconnected front end. I’m a java dude, so – spring rest, some controllers, no jsp…etc. Simple, straightforward, testable, easy.

On the front end, I had used the javascript module pattern on a few projects. It was straightforward, but not terribly maintainable on an enterprise scale. So, I took a deep dive into the state of modern javascript frameworks.

Holy crap-in-my-eyes, they are like bunny rabbits. The last time I looked there was Dojo and YUI and this new kid jQuery that was up and coming. Sure I’ve used jQuery on a bunch of projects lately, but the last time I really did an ANALYSIS, this is what it was. I’ve used Dojo and YUI, in their old world forms, and they were OK enough.

So I started digging…and digging…and digging. I don’t think I’ve had this kind of analysis paralysis since trying to decide whether freemarker or velocity was better. My god so many of them are really good, in different ways. So many are pretty lame. Most have a few really bright spots and a lot of brown spots. There’s these new ways of thinking about JS, like the AMD pattern, dependency injection – WHAT?! DI for JS? Crazy.

I studied up on EmberJS, Backbone, Backbone-Marionette, AngularJS, CanJS, Knockout.js. On another front I looked into jQueryUI, Twitter Bootstrap, modern YUI, modern Dojo, myriad other jQuery plugins, bootstrap plugins. Dart. Closure. Clojure. (WTF?!)

On another front I read up on Underscore templates, Handlebars (already used and enjoyed mustache), Soy (Google Closure) templates. And on it went. Something of a disaster really. After a couple weeks of prototyping, testing, configuring, tinkering, debugging, mix n matching, one is left simply drooling and praying for 1999 to come back.

Anyway the point of this entirely lame rant is that I stumbled across something which, while it doesn’t tackle all of the tools/frameworks/template type above, it does a bang up job of hitting the high points and actually providing a reference implementation of the same app across many frameworks. I can’t take credit for it. I just think it’s cool.