nrgb

Random thoughts on normal things.

ClojureX 2016

Earlier this month I had the good fortune to attend Clojure eXchange 2016 run by Skillsmatter and the London Clojurians at CodeNode, London, with Rickesh Bedia.

The conference was run over two days and it was simply fantastic! The CodeNode venue is large, spacious, bright and with its Bar, table-tennis and background music, it looks very much like a modern trendy Students Union building.

I had the opportunity to learn about some interesting developments in the world of Clojure, drink lots of coffee, consume beer & pizza and meet some very interesting people.

The two days were packed full of presentations. These presentations were moreorless split into three types:

  1. Applications and Frameworks
  2. Libraries, and
  3. New intellectually stimulating ideas.

You can view them via Skillscast. Here are my brief thoughts on some of the presentations. Please note: if I don’t mention a particular presentation then its because I was too busy enjoying it:

Angular must die by Kris Jenkins. Kris spoke about Angular but what struck a chord with me was his opinion that Data Modelling must come first. Hence, processes like TDD focus too much on Behaviour and not as much on Data definition.

Solving the Rubik’s Cube with Clojure by Daan van Berkel. By using a simplified double-ringed colour wheel, Daan presented how a mathematical proof can be encapsulated in Clojure to check whether a state is solvable or not. He also highlighted the use of Klipse, an in-page Clojurescript REPL.

Introducing Streaming Processing with Kafka and Onyx Platform by Jason Bell. This was an impressive talk which covered the Onyx platform notable for it’s Distributed Computing Architecture using: Zookeeper, Clojure, Docker, “Master-less” control, fixed/sliding windows, flow conditions and plugins for inputs/outputs. The architecture could scale up to process terabytes of data.

Deeply nested data structures by Andy Dwelly: Andy talked about Hydra, a library to traverse…deeply nested data structures (ta-dah!). Hydra is very similar to the LocateNodes feature Tom and I have on our Inq language. I told Andy all about our inspiration: XPath.

Quil It by Gaivile Vezeviciute: A feature rich library for drawing and animations. I have a few ideas for this. Watch this space!

Klipse by Yehonathan Sharvit: As mentioned above, Klipse is a client-side REPL which literally bring your pages to life!

Machine Learning by Henry Garner: Data Science is Big Business and Clojure’s ability to cleanly separate Data from Functions lends itself easily to processing data. Henry gave a fantastic talk on new developments in his kixi.stats library. I will be looking into this further.

Mathematical Modelling by Sunny Townsend: Another riveting presentation on how to use Clojure for mathematical modelling. I was so busy listening that I hardly took any notes.

Immutable back to front by Christian Blunden: A really good insight how uSwitch.com leverage Clojure effectively for their business. I was especially interested in their use of re-frame library to build reactive front-ends.

Mutants by Jan Stępień: This was a very interesting talk about testing. How do you know if your tests are adequate? Easy. In Clojure, even the code is data hence open for manipulation. Jan’s idea was to mutate the application code subtly until the tests no longer passed. If a mutated code continued to pass then it showed a lack of adequate testing. What a cool idea!

Arachne by Luke Vanderhart: Arachne is new framework funded by kickstarter to help rapidly build front-to-back web applications. To paraphrase Luke: You call a library, a framework calls you. Arachne is based on defining data which configures the application. In other words, a DSL. What was interesting for me is that Luke was a diehard Java/Ruby developer who has also now become a fulltime Clojure developer.

Asynchronous Ring by James Reeves: Ring is a popular library to handle http requests. It forms the basis of many other libraries such as Compojure for routing web requests. James’ presentation described the trade-offs he made to allow Ring to process requests asynchronously. I’ll be using this in earnest.

CIDER Inside the Brewery by Bozhidar Batsov: CIDER is an Emacs library for Clojure development. I don’t use Emacs but Bozhidar was very very funny and for that reason alone his presentation is highly recommended.

Cljs on Electron by Riccardo Cambiassi: Riccardo covered Desktop Applications using Re-frame, Reagent and ClojureScript. This is a presentation that I need to watch again as there was a lot of useful info.

Territorial Prisoner’s Dilemma by Peter Westmascott: A fascinating account of explaining Game Theory through Clojure-based visualisation.

Stateful Streaming with Kafka Stream by William Hamilton: Another impressive real-world story of how businesses like Funding Circle are switching over to Clojure.

Speculative Development using clojure.spec by Andrew McVeigh: Clojure.spec is the new way to denote types in Clojure. Another presentation which I need to rewatch for maximum utility.

Living Clojure by Jon Pither: Jon gave his honest, open and entertaining lessons learned about Clojure:

  • Technology Matters
  • Introduce Clojure piecemeal
  • Keep it small, keep it tidy
  • Keep learning!
  • Hiring needs attention
  • Being Smart != Getting Things Done
  • Software is not a Democracy (sometimes you have to dictate what tech to use).
  • Companies need to change (their IT development process).

As I mentioned above these are the presentations where I managed to take some notes however all the presentations where very good.

In conclusion, I have already bought tickets for ClojureX 2017.

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: