Clojure Gazette 1.44
Back from Lambda Jam
Clojure Gazette
Issue 1.44 --- July 18, 2013
Lambda Jam
Editorial
Last week, I went to Chicago to attend Lambda Jam. It was an amazing conference. The venue was beautiful and well-located, the weather was fantastic, and the speakers were great. But more importantly, the conference was much more social than any other I have been to. **
It's not that people aren't generally friendly at conferences, but Lambda Jam was exceptional. I went with the intention of attending the "hallway track", but that was quickly thwarted by the empty, cavernous corridors of the Intercontinental Hotel. I did wind up attending talks. What was different about Lambda Jam were the workshops and particularly the Jams, where people would huddle together around laptops working on problems.
I think that those three-hour jam sessions with strangers opened people up socially. The result was much more cohesion. The daily keynotes were also great, especially since the speakers were right there, in the midst of it all, collaborating and participating. I was not expecting to be able to talk to Gerald Sussman, for instance.
I would attend again, though I'd skip the deep-dish pizza.
Sincerely,
Eric Normand __
** Full disclosure: This is an honest assessment, though Lambda Jam did sponsor my LispCast videos. Check the tweets if you want other opinions.
P.S. Feel free to email me any time. I love hearing from readers.
Reading
Pedestal-app Tutorial
If you want to know the future of web applications, Pedestal would not be a bad guess. Brought to the wider world by Relevance , Pedestal is a web application framework for building real-time web apps. It is a framework, not a library. It will significantly shape your application.
But that shape might be better than what you might do yourself. I have been working through this tutorial and there is some serious engineering going on. Several themes are very apparent. Decomposition of problems into atomic subproblems. Repeatability of execution. Testability and convenience.
One of the coolest things I saw in the tutorial (which I have not yet finished) is the ability to record user input and step through it forwards and backwards. The tutorial instructed me to hit <Shift-Alt-R>, click a button a few times, then hit <Shift-Alt-R> again. I named the recording and it was stored for me to play back with a single click. I clicked "Step" mode, which let me step through it one message at a time. I then changed the code, reloaded the browser, and played the same input back again, watching for the thing I just changed.
The recording/playback feature seemed like magic to me, but it actually fell neatly out of the solid software engineering principles that permeate the entire framework. When software is built from small, composable parts, the space of possible compositions, though large, is easy to explore.
I am looking forward to continuing with the tutorial. I will probably use Pedestal in my next web project.
via @puredanger
Communicating Sequential Processes
At Lambda Jam, there was a lot of talk about core.async , especially since David Nolen was talking about it. I believe (and I am not the first to say it) that core.async will be a game changer for ClojureScript in particular. Nolen explains in this article that core.async channels let you create many local event loops (with local scope and control flow) where Javascript gives you only one, global event loop. Javascript has a single thread, so being able to run anything asynchronously is a huge win. The article shows several interactive examples.
An introduction to deep code-walking macros with Clojure
Fogus shows how code-walking macros can be written to transform code without fuss. He uses the clojure.walk namespace to good effect. Code-walking macros are what makes core.async possible.
Listening
Rich Hickey and core.async
Rich Hickey introduces core.async in the ThinkRelevance podcast. He talks about what it does, how it works, and why some of the choices were made.
Papers
The Next 700 Programming Languages (pdf)
P. J. Landin published this gem back in 1966. He analyzes the problem of defining a computer language and keenly dissects the issues with an inspiring clarity. He separates out syntax from the syntax tree, shows how they relate, and asserts the principle that the value of an expression should be based only on its subexpressions. This paper also argues that expression equivalencies should be considered vital. And as a sidenote, he invents significant whitespace. The paper is old, but still contains many insights that are not commonly heard.
Conferences
EuroClojure CFP
Clojure has a bright and vibrant community in Europe. The talks from EuroClojure 2012 were great. The conference is October 14-15 in Berlin. Consider submitting a talk proposal.
Watching
Distilling Java Libraries
Zach Tellman gave this talk at Clojure/West 2012. It talks about the difficulties of wrapping Java libraries to make them more palatable to Clojure programmers. It is nice listening to smart people talk.
via @mrb_bk