Now that I have (somewhat) recovered from the 2011 Clojure Conj, I can finish up my reflections.
Starting with Rich’s keynote (which was on Day 2, but I didn’t have time to respond to then), as I said earlier it was more of a technical talk than the philosophical keynotes he gave at both StrangeLoop and last year’s Conj. This may have disappointed some people (his philosophical rants have become quite popular it seems), but it was still a good talk. He mainly discussed places for Clojure to move forward, not in so much as a timeline of new features but more of a nice to have list. The two points that stuck with me were making a leaner version of Clojure for restricted build environments (such as Android), and adding extensional types to values. The example he gave was date formats; different people may want to have different representations of a data object. But as long as the date that is read in is annotated in some way its type (to show that it is a long representing the ms since the Unix epoch, for example), the reader could convert it when it is read to whatever your preferred type is (smells a bit like implicits in Scala). This could make Clojure values a much more attractive general purpose transfer format like XML (except without the suck XML tends to drag in). In terms of syntax, I may be missing something, but couldn’t that be handled today with metadata? There would have to be some agreed upon conventions (and the reader would need to be able to recognize it), but I wouldn’t think a new syntactical form would be needed. I would also worry that this could result in Clojure values becoming too big, though this would of course be optional.
On to Saturday’s talks. It opened up with Nathan Marz’s Cascalog talk. At StrangeLoop I attended his Cascalog workshop, so I already am a bit familiar with it, but it looks like a great library if you are working with Hadoop and HBase tables. That was followed by an interesting talk by an overly caffeinated Daniel Spiewak on immutable persistent data structures. He is a member of the Scala community (which Neal Ford reminded everyone is not the enemy), so that is what the talk focused on, but for the most part it was applicable to both languages. It might say something about the Clojure community that we find talks on data structures interesting regardless of the language its in, though. And on the subject of talks that cross language boundaries, Craig Andera’s talk on debugging performance problems involved almost no Clojure at all, though that’s a good thing since it turned out Clojure itself wasn’t responsible for the performance problems he saw in this case study (those were the database (of course) and logging). When that talk makes it on video, I would recommend it for anyone interested in performance analysis, which hopefully is every software engineer out there.
There were a few other good ones throughout the day. Fogus gave a talk on macros, and there were a few interesting lightning talks. Out of those, the one that stuck with me the most was Chris Granger’s demo of Korma, a library for working with SQL (relational databases, how old school is that?).
But the conference ended with a bang with Sam Aaron showing off Overtone, described as “a Clojure front-end to the state-of-the-art realtime sound synthesis engine SuperCollider”. But honestly, you need to see (or rather hear) it for yourself to understand it. Writing software to literally make music is an intriguing (if not beyond my talent level, when I last played with Overtone I spent most of my time trying to figure out why it wasn’t making any noise, until I realized my sound was off) idea.
It was a great conference, and I learned a lot and took away a lot of ideas to play with.