Archive for November, 2011

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.

Ok, so after 3 days of agile training followed by two full days of Clojure Conj, I am a bit ready for a rest. Too much coffee and convention food can make my stomach feel a tad off.

Anyway, yesterday started off ominously enough, with a Veterans Day parade shutting down a couple of streets, including the ones around the hotel, making getting to the hotel a bit difficult for those of us local who drive in each day. But I did make it in just in time to hear a very interesting (and perhaps a bit controversial) talk by Neil Ford on taking enterprise mindshare. He argued that Clojure can indeed plant itself inside enterprises, but that raises the question, should it? Should the goal be to make roads in large companies, or be a tool to compete with them (I think it was Paul Graham who said Lisp can be a startup’s secret weapon).

There were a few other interesting talks, though quite a few seemed to be on works in progress (in fairness, that can be expected from a young language). David Nolen spoke on predicate dispatch, a feature I can’t wait to make it in the language. And Daniel Gomez gave an intriguing talk on running Clojure on Android. There are still a few hurdles to cross, though the fact that Scala has made it on Android with very little overhead does give me hope. And the fact that I now have a Clojure REPL on my phone might result in me having one more thing to waste time on.

A few other notable talks included Chas Emerick’s talk on Bayesian networks and Clojure, something I am looking forward to playing with. That’s the problem with these conferences, I come up with long lists of things I want to work on. In fact you can to that list ClojureScript and Logs as data from yesterday’s talks as well.

The day finished up with Rich’s keynote. It was more of a technical talk, not a rant-style talk like his Simple talk at Strange Loop or the Hammock talk last year, but still interesting. I’ll go into it in more depth later since today’s talks are about to start.

The party was nice as well, though I wasn’t feeling well so I didn’t stay long. I still got to have some interesting talks with people (and free beer of course). Still no bagpipes though. I suppose my sneezing will have to be the loud annoying sound this year.

So a quick recap of the good and bad during the first day of the 2011 Clojure Conj.

Lets start with the good:

A fantastic talk by Arnoldo Muller-Molina on using Clojure in some very interesting bioinformatics problems.

Two very interesting talks on logic programming, one by Ambrose on Clojure’s core.logic, another less formal talk by William Byrd and Dan Friedman (two of the authors of the Reasoned Schemer, which I really need to read) on minikanren, which included writing a program to write 50 functions that return 6 (though I think it would have been more useful had it found functions that returned 42…).

I finally got my print copy of Clojure In Action (which I ordered as part of Manning’s early access program when the book was still in Beta… just over 18 months ago).

A great talk by the precocious Anthony Grimes on Clojail.

A lot of people I talked to are using Clojure not just for hobby development, but in their day jobs as well.

The Sheraton seems very capable of handling the size of the crowd.

But of course there were a few negatives as well.

Ragweed is in season and I really should have started taking allergy pills a few days ago. And by the sneezes I heard behind me, I wasn’t the only one.

Parking in the lot is a tad bit expensive for those of us not staying at the hotel (though of course I didn’t have to travel, so I can’t complain about cost too much).

Lunch was, well, less than inspired. I mean come on, make your own sandwiches? I can make those at home and bring it with me…