ClojureScript - the Hard Truth - London Clojurians March 2012 Dojo

The March edition of the London Clojurians coding dojo all the suggested dojo challenges were to be carried out with ClojureScript. After a long list of ideas we voted to do either Conway’s Game of Life or Monty Carlo graphics.

Getting started with ClojureScript seemed reminiscent of the challenge the group faced a couple of years ago when first trying out Clojure. Although getting started with Clojure itself is pretty easy these days, it feels like ClojureScript still has a way to go in terms of a great developer experience.

I looked at ClojureScript One and was put off a little by the amount of git projects it was downloading as part of its bootstrap process. I am sure its a great project, but seemed too much for the dojo and my netbook!

We settled on lein-cljsbuild project and used the simple example that comes with it. We fired the example up okay and had a working webserver thanks to some Ring Clojure magic and a tiny bit of JavaScript.

lein deps
lein ring server-headless 3000

Whilst we could display text in a web page and a JavaScript popup, we could not do anything that required working with the DOM - specifically setting up a graphic area or adding buttons.

In hindsight, perhaps we should have looked at the advanced example that came with lein-cljsbuild, although we would probably have also run out of time with that too…

Perhaps if we had spent a bit of time before the dojo with the basics things would have gone better, however it was good to discover as a group the level of challenge involved and it made it easier to get started as we could draw from a range of experiences.

So what else did I learn?

You need a JavaScript resource

I started to become a bit weary when it was mentioned that we should have someone in the team with JavaScript experience. Even though we had someone with experience we still had lots of challenges.

Google Closure libraries

The Closure Library is a JavaScript library that provides cross-browser functions for DOM manipulations and events, AJAX and JSON, as well as more high-level objects such as User Interface widgets and controls.

The Google Closure library looks really great, but there seems to be a few challenges to get it to work with ClojureScript. Again this is down to our limited time to get to grips with several APIs, so we had little luck finding something that worked.

Where’s my DOM

Our group got stuck on trying to find elements in the DOM via ClojureScript, repeatedly getting nil when asking for elements in the DOM. We postulated that is was a timing problem, but were not able to code around the problem.

We fired up the Chrome browser developer tools to see the errors, but couldn’t get any of the many fixes we found on Google to work.

Using jQuery to load things up

By the end of the night I had a strong impression that you cant do ClojureScript without knowing a lot of JavaScript. This goes against what I thought was possible, to write a Clojure style syntax that you could run inside a JavaScript engine. Yes, I expected quite a bit of interop, having lots of doto calls to chain some JavaScript calls, but didnt figure on jQuery being there or so essential.

Find an example that works

Find an example ClojureScript project that works and is easy enough to understand - without having to spend an hour setting up Leiningen plugins and dependencies or having to download lots of things from the Internet. This was tricky to find in the time we had.

Some blogs to and projects to review

In Summary

So first impressions of the experience suggest I need to read some good tutorials on the subject and review code of some more projects. I plan on doing some more projects around Noir, so I’ll try and see where the advantages of using ClojureScript are when using a set of Clojure web frameworks.

I am still excited about ClojureScript, but its one of those things where I need to find more time than I have to get to grips with it. If anyone has any other blog or project recomendations, please let me know.

Thank you.
@jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License

QCon London 2012 Aftermath - the Return of Dan North?

Talks at technical conferences can give a very detailed insight into new innovations, they be a great source of inspiration and motivation. Sometimes they even make you giggle.

At QCon London I got large doses of all of the above, thanks to Rich Hickey, Dan North (DWZ Trading), Colin Humpreys (Carrenza), Ade Oshineye (Google) and Patrick Debois (father of DevOps, working with Atlassian). Here is a summary of my experiences.

Read More

Developers Party Time at QCon London 2012

Talks at technical conferences can give a very detailed insight into new innovations, they be a great source of inspiration and motivation. Sometimes they even make you giggle.

At QCon London I got large doses of all of the above, thanks to Rich Hickey, Dan North (DWZ Trading), Colin Humpreys (Carrenza), Ade Oshineye (Google) and Patrick Debois (father of DevOps, working with Atlassian).As I didnt make the training days this year, I was sad to miss out on the tutorials by Simon Brown, Russ Miles and Rachel Davies which all looked great.

My favourite talk was definitely the “Cloud… so much more than a tool“ by Patrick Debois. Not only was it an interesting experience report on the realities of using Cloudy technology to build a highly scalable video broadcasting service, it was also the best use of LolCats I have ever seen… ever…

@jr0cket: @patrickdebois has the best cat based slides ever - even better than @swardley which is saying something #qconlondon

Dan North was a cheeky a rascal as ever, actually making the audience think! At a conference! Oh, the humanity! Colin Humphrey from UK Atlassian partner Carrenza gave an overview of the fantastic build pipeline they create for their customers, along with insight into the business drivers of using such a build pipeline with respect to IaaS, PaaS and SaaS solutions.

jr0cket Adoption of continuous delivery is becoming ubiquitous, companies asking @Carrenza to deliver this via Platform as a Service @hatofmonkeys #qconlondon

I had the pleasure of listening to Ade Oshineye sharing his experiences when developing Google Buzz & Google plus and how understanding how someone is going to use your code is very important when developing a public API, you cant just expect them to know everything you know.

Atlassian also realised the importance of the developer experience as it helps engage with the wider community of developers as well as our own teams, enabling them to start developing amazing plug-ins quickly. The last year has seen some real usability improvements to the Atlassian SDK and our Atlassian Developers website and with JIRA 5.0 we have a stable API that is guaranteed future proof for all future 5.x versions.

Everyone had great fun at the Atlassian party on the Wednesday night and very large Cenral Hall building was bursting at the seams.

Organising the Atlassian party was a nice little challenge as the hall was massive and I had very welcome help from our UK partners: Gareth Wilson (Adaptavist) and Matthew Buckland (Clearvision).

There was a great spread of food, although we did tease people a little by it coming out in stages! There was also a great selection of beers, not just bottled larger. There was everything from Newcastle Brown, John Smiths, Spitfire, a nice range of largers and even some wine at the request of Trisha Gee.

QCon London 2012 - Pictures from the Atlassian Party

Find out other great events and party’s Atlassian are involved with on our Events List.

Thank you
@jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License