Saturday, December 10, 2011

A day at Clojurex

Hello again and sorry for not coming back on a more regular base.

I guess next time I will have to pull some of my exercises from SICP studies or Euler project exploration in order to expose new code. Cross my heart I will try to produce one more code block before the end of the year.

As a matter of fact these things take time, so we have a small blog black out issue.
In order to have a cool break I decided to try a third exploration like going to a Skillsmater exchange on Clojure. Maybe this was the best idea of the year.

The Clojurex event happened on December 1st. Before having forgotten everything let's talk about that No code. Just talk (not too long, I swear)

London's calling

I went twice to London in forty years, once when I was twelve and another time for Clojurex. I won't wait so long as I registered for Scala days in April.

London has changed of course and from a more adult point of view I really felt like home. First of all, I found welcoming and smiling people everywhere. Undoubtedly,
sharing a little of their lives two day was a joy, a hundred of times more pleasant than sharing the lives of french people.

This reinforced my wish to work over there.

At Skillsmatter

The skillsmatter staff is awesome. I cannot find any other words in order to describe the organisation and the welcoming.

They did manage to change the organisation of the event after Uncle Bob misadventure with custom officers and shame on me for hesitating one single second when this happened.

Special thanks to the kind lady who managed to catch a cab so I could get my Eurostar just an hour before departure: perfect timing.

I could not summarize all the locations where the attendees were coming from, but in essence, there was a real community spirit of curious open minded people, from older experienced Lispers to young fascinating skilled people, practicing Java, Scala and alternate languages.

My friend won't understand (:)) but I chose to remain quiet and listen the different conversations taking benefit from the everyday experience of every one. When I was near a group, people naturally included me as if I were a longtime friend. Thanks to all of them.

The presentations

Leaving about 3pm, I watched the morning presentations, unfortunately missing the afternoon brain storming and Uncle Bob Skype conference (yes he finally made it via internet). I will not detail the presentations advocating more the reader to both check the matching podcasts and then check each library/framework web site in order to try the stuff. My involuntary freedom in January will give me some time to try each of them and feedback when possible.

Knowing my reluctance to use frameworks in favor of patterns and algorithms application, why the hell did I attend framework presentations? Because the creators were there in order to discuss the purpose of tools, advocating more for better knowledge of Clojure and how to carefully depends on libraries without breaking language idioms.

Obviously nobody attended the presentation in order to critic other languages or promote this or that technology like we often read or hear from some Java framework extremists (guess who am I talking about). The collective spirit was turned to better programming, paradigm adoption, and use of one's brain rather than to framework propaganda and dumb assembly of bricks.

For that thanks again pals :)

Bruce Durling presented Incanter,a platform for statistical computing (including inter alia as committersDavid Edgar Liebke, Bradford Cross, Michael Fogus, Mark Fredrickson,...). The online presentation, available on line - like all the others - is very impressive as Bruce cleary demonstrated that developers committing into data driven application could find in Incanter a valuable asset, very respectful of Clojure idioms in its DSL forms and expressions target data sets manipulation. I personally was impressed by the ease of use of higher order operations like joining, filtering, grouping by columns and other similar facilities. And guess what, there is also a plotter :)

Robert Rees like some of us tried to get Clojure into a live environment having it stay there. He succeeded proceeding carefully, starting with tasks which simplicity could easily reveal the strength of Clojure power, incrementally increasing the space of the language, baby steps by baby steps. So Clojure can be used in production with no harm, on the contrary.

Another data flow oriented category of applications is the web applications. I gave up on pure web development years ago because of my ignorance of functional programming, as not being a genuine computer scientist. I was always frustrated by the complexity of setting up suitable patterns matching both my domain and business problems. From time to time the OOP model did not fit. Specifically when dealing only with flow of data to be handed, filtered and manipulated with basic business rules.

Like Lift in Scala, Webnoir (written by Chris Granger) and introduced here by John Stevenson allows you to rapidly develop websites in Clojure using a pure functional oriented approach. Looking at the presentation, I could not help thinking of two or three projects I have been working on years ago, and how much this non MVC approach would have answered myriads of problems we had to face.

I enjoy adopting the MVC approach, but from time to time, MVC does not fit. Functional programming does, ergo webnoir does too. I will try Webnoir as I will try Lift or Play! . And why not coming back to web application ? :)

As I started working with early versions of Swing years ago , Stathis Sideris presentation about Clarity, a new Clojure framework addressing some aspects of GUI programming, specifically shook me. It is possible indeed to (very) easily create Swing application from Clojure thanks to the Clarity layer. I foresee possibilities in this product for a good GUI testing environment. The fluency of the DSL Stathis developed could favor the emergence of very efficient and idiomatic testing API, like UISpec4J in Java. Exploring all the available forms interfacing Clojure with Java, like reification and protocols, Clarity allows for a declarative way of building up GUI (smartly proposing a stylesheet like functionality). No need to explore the code in order to understand the shape or the purpose of a pane or frame. The whole code layout clearly expresses the intents.

Being very quiet during the whole day was not a good strategy to find a freelance contract in UK :). I am sorry for that but frankly not going to Clojurex would have been a big mistake. I got richer in knowledge and had the opportunity to cross the path of a bunch of cool passionate guys. I earned some followers on Twitter and started following others my self, gaining access to a rich set of technical information since then.

If fate does not behave badly next year I will come back to another Clojurex session, the early bird having already ordered a seat for 2012 December 6th.