Taking a walk on the wild side

UPDATE: I’ve moved my blog away from WordPress. This post is available on my new blog at: http://www.dreweaster.com/blog/2013/03/16/taking-a-walk-on-the-wild-side/


Having spent nearly 10 years doing my best to avoid wrestling with the client-side web, the necessity to better prepare myself for a new future (think tech startup) means I’ve begun some serious dabbling on “the wild side”.

At first it was just a case of some casual flirting, but that has now extended as far as a proper first date.

I’ve long been coming round to the idea that, in order to build a rich application experience in the browser, Java does not have the answer – for me, the Java component based framework experiments have failed (ThoughtWorks agreed with me in October 2012).  I feel sad to say this because, whilst I despised JSF right from the start, I kinda liked Wicket and Tapestry. Without wanting to get too heretical, the Java Swing programming model is grounded in some pretty solid coding patterns and, as close as Wicket comes to realising a similar approach on the web, you just can’t get away from the fact that the web just ain’t really built for that stuff.

So, that date I was referring to was with a cute little beast called AngularJS. After initially being slightly sick in my mouth at the thought of a journey beyond statically typed languages, I’ve begun to come round to the idea that JavaScript needn’t be so bad as long as you play by the rules, and you couple your exploration with a neat framework like AngularJS. With AngularJS, I’m once again playing with a component-ish framework that is not trying to exist on top of an unsuitable protocol – the rich interactions live in the browser where they feel most at home.

One of the coolest things about AngularJS is that I can even apply some of my most loyal of server-side patterns (I’m thinking dependency injection) when hacking client code. And, even more importantly, I still get my server-side fix through building predictable, testable, stateless APIs for the stateful client to consume.

I definitely see this going to a second date, and beyond.

On a final note, I do feel that Twitter Bootstrap deserves a special mention here as well. There’s no doubt that I suck at CSS, and I truly mean that. But, with Bootstrap, no longer must server-side developers walk naked and exposed in the presentational side of the web. I don’t care for CSS – I don’t think I ever will – but with Bootstrap I’ve now got half a chance of making web apps that don’t only work good, but look good at the same time.