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…
- No bagpipes (yet…).
All in all, a very good first day.
After almost 7 years, today was my last day at IBM. And starting Monday, I will start my new job as a Senior Software Developer at Wireless Generation, an educational software company opening a new office down here in Durham (this transition is my excuse for not blogging much recently). I enjoyed working at IBM (well, most of the time), and wish the best of luck to my former co-workers and IBM in general, but I am also very excited to start this new chapter in my career.
Ok, time to finally review the talks I attended at last month’s Strange Loop conference in St Louis. The last two weeks were a tad bit busy (a bit more on that later), so this post was delayed a bit. But lets start with the sessions on big data, starting with the first keynote of the conference. Data was a common theme at the conference and was one of the conference’s dedicated tracks. That shouldn’t be much of a surprise to anyone following the software industry these days, as the need to analyze huge amounts of data is becoming more essential for businesses. So Erik Meijer (architect at Microsoft) kicked things off with his talk, “Category Theory, Monads, and Duality in (Big) Data.” I can’t find a link to the slides of the talk, but here is the paper it is based on.
Even though the title contained references to category theory and monads, you didn’t need a PhD in Mathematics to get what Erik Meijer was getting at. And that was a very good thing, since his talk was very useful. The essence of it was a comparison between traditional table-based SQL databases and the new breed of so-called NoSQL object databases, specifically that they are not as different as we tend to think. In fact, he proposes replacing the ambiguous term NoSQL with CoSQL, to show how the two have a mathematical duality between them. Basically in table based databases, you have entities (each of which can stand on their own) using foreign-primary key relationships to point to their parents. Meanwhile in object based CoSQL databases, you have parent entities pointing to their children, who really have no context outside of their parents.
It was a really interesting talk, and not just because it had a lot of abstract math in it (I guess that may be an odd phrase for most of the world to hear). He finished with a plea for developers to make their design decisions not on emotion or on what appears hot today, but on which design better modeled their data. Both have advantages. While object based CoSQL databases are more open and composable and tend to horizontally scalable, the rigidity of table based SQL databases offer plenty of advantages as well, when the problem domain calls for it.
I just returned from the Strange Loop conference earlier tonight. I don’t really have time to get into too much detail of what I saw (I do have to get back on Eastern Standard Time), but let me say it was a great conference. Some of the standouts were Rich Hickey’s keynote (if you’ve never heard him speak before, watch either Are We There Yet or Hammock Driven Development from last years Clojure Conj while waiting for the Strange Loop recording to be made available), Nathan Marz’s talk on Storm (I’m really going to have to start searching for a problem to use this for), the language panel (even though it was accidentally cut short), Erik Meijer’s keynote on Big Data, and Blake Mizerany’s talk on Doozer. And the part of Sussman’s speech I was able to understand before my brain started to short out was great too. Unfortunately there were a lot of talks I missed which I will have to wait for the recordings to come out. That might have been the biggest problem with the conference (well, other than the elevator fiasco), there arguably were too many tracks with competing talks at the same time (most blocks had 7 talks to choose between). Of course there were a lot of talks scheduled and only a limited amount of time to give them in, but perhaps it would have been possible to fit in more time slots by varying the times a bit more. While some talks definitely required the 50 minute slot and in fact often went over, others had less information to present and could had made do with a shorter, maybe 15 minutes to half hour block “lighting” talks. Then a couple of extra time slots could have been made by splitting a few hours up. But all in all, it was a great conference (again, except for the elevators). I’ll post my notes and reactions to the speeches I saw in the days to come…
Also as a note, the Clojure Conj has posted their schedule, and it looks like a great lineup as well (including several speakers I just saw this week). Its local, so it will be easier to attend, assuming I can manage to take some more time off…
So today was, lets say Day 0 of Strange Loop. Aside from some hiccups on the plane to St Louis regarding a very important part of the plane (we were delayed for half an hour while they fixed the flushing mechanism in the lavatory), things have gone well. The actual conference begins tomorrow, but today were the optional workshops and, of course, was the day most people arrived for the conference proper. Let me preface this post by stating that the rooftop bar is very nice. Where else can you drink Scotch while discussing the uptake of Clojure within business software companies with some of the smartest people in the industry? But as a warning, that might impact the quality of this post…
Anyway, I had signed up for only one workshop, Nathan Marz’s Cascalog workshop. Cascalog is a Clojure based library for data processing with Hadoop. Think SQL on steroids. I have interests in both Clojure and Hadoop, and yet don’t have too much experience with databases, so it was an obvious session for me to sign up for. It was a three hour workshop, but at the start Nathan warned he was used to giving similar workshops for around 9 hours so this one might be a little rushed. I had initially laughed, thinking 3 hours sounded like a long time, but it definitely was rushed. Yet we learned quite a lot. Cascalog definitely is a powerful library which I will certainly play around with later. I was very impressed with the quality of the queries that could be made with what seemed very intuitive Clojure code, not the convoluted nonsense many SQL queries end up as.
Tomorrow comes the hard part though, choosing between several very different, yet very interesting talks that are scheduled at the same time. In fairness to the conference planners, with the number of talks that look interesting it would have been mathematically impossible for them to schedule everything so I could attend everything that I wanted. But still, as Alan Dipert of Relevance said, the thing I am least looking forward to is having to choose between talks. I just hope enough will be recorded that I will be able to watch the ones I miss later.