“OMG Drones” The London Clojure Exchange

By Ben Rogan | Oxford Knight

Last week I went along to the LCE (London Clojure Exchange), not to be confused with the London Camera Exchange or the Airport in Honduras. Laden with the Black Death / SmallPox, I wasn’t at the top of my game, so if any of London’s Clojurians are sick, I can only apologise. We can at least refer to #ClojureX as ground zero for the end of the world.

*Edit* Bubonic plague discovered in Madagascar – not my fault.

The Quick Overview:

The London Clojure Exchange, hosted by SkillsMatter is meant to be a collection of some of the most exciting and interesting ideas the London Clojurians and @Otftom can put together.

For the Non-Technical/Uninitiated:

Clojure is a dialect/sub language of the Lisp variety. Originally created by Rich Hickey, Clojure is a general FP language that runs on the JVM, CLR and JS engines, it compiles directly to JVM bytecode, yet remains completely dynamic as every feature supported by Clojure is supported at runtime!

Clojure has a strong focus on programming with immutable values (although there is a little mutable state) and is particularly good for developing multithreaded systems. It hasn’t grown with the academic rigor of Scala per se, but it has been able to incorporate some of the best elements of a number of languages. In addition to this, because Clojure is a dialect of Lisp and shares with Lisp the code-as-data philosophy, it has a powerful macro system to boot.

For those who haven’t tried Clojure, and want to give it a try, take a look at: http://tryclj.com/ or attack some problems at http://www.4clojure.com/problems.

The Clojure Exchange:

Learning to talk to machines with speech acts – a shipwreck adventure, by Carin Meyer

As a good author, I caught you with the title. Now I can explain. The LCE was opened by Carin Meyer:http://gigasquidsoftware.com/  flying a Parrot AR drone around the room to save her from the theoretical desert island she is stranded on.

The talk was awesome, as was the drone, especially as it lacked the venom of the USAF, and it bobbed happily to some music later in the day as well.  Carin’s talk covered speech acts, the philosophy of language and building a language with Clojure and Instaparse, not to mention some McCarthy AI papers, which managed to captivate the crowd.

Credit – Photo by Anna Pawlicka

You can watch the lecture here: http://skillsmatter.com/podcast/home/carin-meier but to be honest. Drones. Come on people. Do I need to sell it any more

Rob Rees, on Reiman

Rob followed Carin, not an easy task. Especially as he lacked drones. Rob is one of the lead developers at the Guardian and has been pushing the Clojure Dojos along at Thoughtworks, he actually helped me crack my first few lines of code. Rob gave an interesting talk on Reiman and complex event processing.

Rob gave us the run down on how Riemann works and why it might be a good idea to rub your metrics through it, and ran us through writing a stream processor. For those who aren’t familiar, Riemann aggregates events from your servers and applications with a powerful stream processing language.

Scala Vs Clojure, by David Pollak

Just a quick FYI on this section – David and I are bound to cause some controversy, Clojure Vs Scala. We all know the obvious choice is *coughs* but here is a quick summary of what happened, and the debate at the moment.

Dave was, and remains to a certain extent a big contributor to the Scala World, I think he is still one of the primary contributors to Lift, something he gave a little talk about at ScalaX earlier in the week.

Lift itself has caused some controversy, the security, ease of use and philosophy have had positive feedback. Lift competes pretty heavily with Play on the web framework front, and from a recruitment perspective, places like Morgan Stanley, Various Gaming Companies or Trafigura tend to look for Play over Lift; I believe FourSquare are using lift at the moment, but I haven’t seen it anywhere else, as of yet.

David has some pretty interesting thoughts on Scala, and he has been using it professionally at Brick Alloy for a while now.

Scala, has a more academic background, as a result has good documentation. Odersky is after all an academic, so publishing has been driving Scala’s growth. It was initially designed as a better Java, with stronger theoretical underpinnings, and designed by guys who are supposedly smarter.

The tooling in Scala leaves a lot to be desired, Eclipse has spent the last 7 years not working http://scala-ide.org/docs/current-user-doc/faq/known-issues.html, but Intellij is pretty good (now, and if you have a 2gb heap). If you were going to take an aggressive look at Scala, a beautiful language, there are those who would argue that there is extensive version fragility and that the language and the library are instable and problems in pattern matching data-structures have only just been remedied, not to mention the compile time…

All that being said, these are the thoughts of someone who still uses Scala professionally, and runs their own Scala consultancy and recognises that Scala is still great for refactoring codebases and viewing complex data.

On the flip side to all this ranty-ness, are some pretty exciting times for Clojure. It is a community that has a certain maturity about it and isn’t weighed down by the academic rigour.  The academic rigour which, as I can say after two degrees, doesn’t necessarily always help.

Clojure is great for shipping, and on top of that you can work in the REPL, building or growing the program line by line, leaf by leaf, “gluing tiny bits of excellence together”. Clojure has been very reactive to other languages, and with a community of polyglots, hasn’t put itself above stealing the best bits of other languages, meaning it is simple, easy to read and understandable, as the ideas are intentionally less complex. But there are a lot of parentheses.

This is a bit biased, I am learning Clojure and feel a little affinity for it, but there is some truth to the statement that the libraries just work, it is relatively stable – ish and the REPL development is excellent.

*I’d be keen to hear some feedback on this section, it is leaning towards the more technical of the things I have written recently, and I don’t want to step on any toes! But I don’t want to pull any punches either. Good writing is good opinionated research.

Mining Social Data with Cascalog, Tom O’Brien

Mining twitter seems to be a pretty interesting trend at the moment, there is a lot you can do with the data, irrespective of the language behind it. You only have to look at the recent purchase of Topsy:http://www.theguardian.com/technology/2013/dec/02/apple-buys-topsy-twitter-analytics-report-200m to see exactly what is happening.

You can find a pretty rudimentary (but fun sentiment analysis tool here: http://www.sentiment140.com/search?query=jackwills&hl=en)

Tom gave an interesting talk on using Cascalog2 to determine groups of similar twitter users, which probably have some overlap with the day job at Likely Ltd. FYI, Cassalog is a Clojure library for writing Hadoop jobs using a declarative syntax. If you have 40 minutes spare – take a peek at the lecture here:http://skillsmatter.com/podcast/home/mining-social-data-with-cascalog

Sam Aaron – Algo Raves & Overtones

Sam gave us another, completely different talk on Clojure, and programming in general. He opened by positing some pretty interesting questions including; what would coding be if it wasn’t classified as Engineering? Could it be an Art? Especially if you think, like with Clojure, you take a program and grow it, rather than fit the pieces together. He also pointed out that the general perception of software development really is so perverted.

Sam was trying to argue that coding can be considered a form of expression, beyond some cheap hacking shot on Saturday night TV.

Then he set out to shatter some illusions, trying to communicate to us what coding really could be. When he wasn’t trying to fall off the stage, putting together some live coding, turning code to music, I can’t really give you an idea of what it sounds like, (I have the musical talent of a gofer) but I’d recommend you take a look at a few of the links below:

Making Music with Overtone: http://jvns.ca/blog/2013/11/19/day-30-making-music-in-clojure-with-overtone/. You can find a pretty simple overtone tutorial here: http://vimeo.com/22798433

Overtone: http://overtone.github.io/ & Algo Rave: http://algorave.com/

Summary:

The London Clojure community might still be small, but as we saw from ScalaX, it doesn’t exactly take long for a language to take off. Just look at the amount of funding Typesafe have! And the language is already being picked up by some key players, Banks, Hedge Funds, Consultancies, Big Data Analytics and Social Media and all getting their hands dirty with Clojure.

I’d love to hear your thoughts, especially on Drones or Overtone, but anything Clojure/Tech related is welcome. And just because its it is nearly Christmas; take a look at this: http://www.kaggle.com/c/packing-santas-sleigh

So, at this point I’ve run out of things to say, so I’ll sign off. Always open to opinions – constructive and polite, I’m still a relative beginner, to both Clojure and Scala so I’d love to hear your thoughts.

 

 

 

More information

Get in touch using the contact form below or give us a ring at +44 (0)20 3137 9570 or +1 646 7129 405. We'd love to speak with you about what we can offer.