Ioke at Chicago and Iowa Code Camp

This saturday, May 1st, I will be talking at both the Chicago Code Camp and the Iowa Code Camp. I will be giving an introduction to Ioke at both code camps, and I will actually have slightly more time than I usually do – so hopefully this introduction will be the best intro to Ioke ever. I’ve also hacked on some fun stuff for Ioke lately that hopefully will be done by Saturday, so I might show some of that.

Hope to see many of you there!

RubyConf India was a great success!

This weekend ThoughtWorks in collaboration with RubyCentral and several sponsors arranged the first ever RubyConf India. I was there as a keynote speaker and wanted to take a few minutes to tell you about the experience, since I think this was an event that showed how much pent up interest there really is for Ruby in India.

When planning the conference we aimed for about 150 delegates – but that sold out in a few days so we rearranged the event to accomodate about 400 people, and we managed to fill that. At the end of the day, there was about 420 people there, including both delegates and speakers.

Unfortunately there had been some problems with visas for Chad Fowler and Ivan Porto Carrero. We solved that by having Ivan present over Skype, and rearrange some of the talks and give Brian Guthrie a last minute spot.

The conference started out with Roy Singham, the founder and chairman of ThoughtWorks, setting the tone for the rest of the conference by getting people to think about how India can start innovate for real using technologies such as Ruby.

After that I did a keynote about programming languages, quite similar to what I did at RailsWayCon in Berlin last year. Hopefully people thought it was interesting. I tried to first discuss why we need different languages, where some Ruby language features comes from, a small taxonomy of languages, and some ideas about what might happen in the future.

Obie Fernandez was next up with a controversial keynote called Blood, Sweat and Rails. The basics of the keynote was a description of different lessons Obie has learned from running HashRocket. The controversial bit was based around two different factors, the first being Obie’s heavy use of profanity. (Heavy enough that one of the organizers went up on stage halfway through the presentation and asked him to tone it down). The other controversial part was that Obie used his keynote spot to spend quite a lot of time promoting HashRocket. Later in the day, a representative from ThoughtWorks, and one representative from Castle Rock (another sponsor) went on stage, mentioning that the point of sponsorship was not to push their respective companies but push Ruby in India.

After Obie’s keynote it was lunch time. I was tired and jetlagged so I walked around in a bit of a daze after my keynote was done. I did catch some of Aman’s talk about Ruby OO with objects instead of classes. What I saw sounded intruiging, but I didn’t get the full picture since I walked in and out of the presentation.

The highlight of the day was definitely Matz keynote, where he called in using Skype and did a presentation and some Q&A. Matz talked a bit about the history of Ruby and then started mentioning some things about the future of Ruby. The most interesting concrete information was that 1.9.2 will come this summer, and after that they will start work on 2.0. This version will also make some heavier changes, some of them which I’m not sure I like (such as requiring parenthesis for invocation).

The second day started out with Nick Sieger from EngineYard talking about the next version of Rails. Lots of useful information about what we can expect from the next major revision. Compared to mine and Obie’s keynotes, this was shock full with technical information instead of high level concepts. Good stuff.

After that, Pradeep Elankumaran from Intridea doing a very interesting session about startups. His talk ended up being a long discussion with most of the audience about startups. This discussion kept most people in the audience interested enough to stay long into lunch time. Very good session.

After lunch I had a major conflict of interest. Both colleagues of mine had interesting sessions going. Sarah Taraporewalla talking about Ruby view technology and Sidu Ponnappa and Niranjan Paranjape talking about entropy in long running Ruby projects. I ended up choosing Sarah’s talk – which was brilliant. She did a great job explaining why the current view technologies are generally too permissive and make it harder to test the behavior of your view correctly.

Of course, Sidu and Niranjan got good reviews – and I heard lots of things that sounded like it was a session full of controversial ideas. Sounds like fun – wish I’d been there too.

The next session was about building a Ruby Application Server. Sadly, I’d kinda misunderstood what this session was about, since I was assuming that “Application Server” was meant in the Java environment meaning. This was not the case – instead it was about implementing a Ruby web server. I kinda lost interest quite quickly and ended up doing some work instead.

Brian Guthrie’s replacement session was called “Advanced Ruby Idoms so clean you can eat off of them”, and was both hilarious and very on point. The room was standing room full and Brian’s presentation sparked lots of debate. The gist of it was that basically there is no such thing as magic in programming. Everything is a function of your understanding of what’s going on in the language. You can have good code or bad code. Clean code and dirty code. But magic code just means you don’t understand the language, and is not really something you should use as an argument for or against an implementation. Brian expanded on this by giving loads of tips and tricks on what to do and what not to do.

I didn’t catch the final session, since I was very tired at that point. After the final session, Roy Singham came back with a keynote about a number of different things. He talked about the current state of agile in the world, the Ruby and Rails culture in the US, and how that should inform the Ruby culture in India, what things Unicef has been doing lately with Rails and other technology, and how we can use new technology to start being more socially responsible. The keynote sparked a lot of debate, and as usual Roy made quite a large amount of controversial statements in soundbite form. Take a look at my twitter stream for this weekend to get some quotes.

All in all, I think this was a total success. Lots of interesting talks, fantastic networking opportunities and a great vibe in the air. Looking at the tweets from the conference, RubyConf India seems to have been very appreciated by a large majority of all attendees. Here’s hoping for an even better next year!

A week at Øredev

I just came back from 10 days in Malmö, Sweden, for the Øredev conference. I’ve had a great time. Part of that was because I had Stella with me, and she got to meet all my conference-friends, so that was nice.

But a big part of it is basically just the fact that Øredev is an outstanding conference.

Some of my impressions, things I learned and did in no specific order:

  • Hadoop is really cool and I wish I had time to learn more about it. Alex Loddengaard from Cloudera did a very good job introducing this technology in his tutorial. We got to do way fun stuff!
  • People liked my talk about Ioke – and I was very happy with how it went too.
  • Stuart Halloway is really good at introducing Clojure – I’m looking forward to his talk at QCon SF even more now.
  • Me, Tyler Jennings, Neal Ford, Dan North and Stuart Halloway spent several hours of BoF time to create a new BDD framework for Clojure – this was way fun hacking, interesting from a group management and design perspective and just plain fun. There is a distinct possibility that me and Neal will give a talk at the TW US Away Day about this, if anyone is interested.
  • Ze Frank is amazing. Really great evening keynote/entertainment.
  • Niclas Nilsson and Hans Brattberg did a very accurate depiction of common problems and failure modes of pair programming. Good stuff.
  • Tyler Jennings gave an introduction to Software Craftsmanship. Glad I didn’t miss this presentation. Very nicely done.
  • Kevlin Henney did a great presentation about agile modeling. I enjoyed it a lot.
  • We did a very fun closing panel that was basically just six geeks disagreeing about lots of stuff. I hope everyone else enjoyed it as much as the panel members.

Conclusion: Øredev was a great conference, I was honored to get the chance to speak there and I’ll definitely try to go back next year.

JAOO – A great week in Århus

Late this Saturday I came home from a hard week in Århus, Denmark. Of course, it’s been a great week but it is definitely a change coming back home after it.

JAOO this year was great, just as you can always expect. What makes JAOO so fantastic is the combination of extraordinary presentations of all kinds, together with the socializing with all the fantastic speakers, and hanging out with the JAOO crew. All in all it’s a lovely time, and I never get enough sleep for some reason.

This year ThoughtWorks was there in force – we had about 12-14 people there, and 8 of us presenting. It’s always fun to be surrounded with TW people.

I’ll not go through the whole schedule, but I do want to share some of my favorites.

Rich Hickey was there, presenting about different aspects relating to Clojure and concurrency. As usual he was excellent, and I heard many good comments about both his presentations.

Intentional Software presented their Language Workbench, which I’ve been playing around with for some time. The presentation generated substantial shock-and-awe from the audience, which was fun to see.

The Tuesday featured the concurrency track, where I spent most my time. The whole track was very good, but it was capped off by Simon Peyton-Jones excellent talk about Nested Data Parallelism in Haskell, a very good presentation that meshed well with my interests. Simon is also a highly entertaining presenter. All in all, that presentation was definitely my favorite one this year.

On Wednesday the two presentations that stands out in my mind was Aino’s about design patterns – interspersed with dating design patterns. Very funny. And the other was by my colleague Richard Durnall, talking about lean.

Very nice stuff, all in all. Martin Fowler, Neal Ford and Rebecca Parsons gave another version of their DSL tutorial the following day. It’s amazing how much this tutorial have evolved since I first saw it.

On the Friday I saw parts of Sam Aaron’s Advanced Ruby tutorial; it’s good. I also gave my tutorial, which went fairly well too.

And that’s JAOO in a nutshell. A great week. It’s weird to come back after such an intense time.

Upcoming talks

There hasn’t been much interesting happening this summer, but the fall is shaping up to be pretty busy. I will be talking at several different conferences, and thought I’d mention when and where I will be appearing.

First, this week I’m presenting at JavaZone in Oslo. I will present at 11:45 tomorrow, talking about Ioke.

Next week is the JVM Language Summit in Santa Clara. It is shaping up to be a great collection of people with many interesting discussions and talks. Take a look at the details for the talks. The people there are some of the most experienced language developers and implementors in the world. It should be a blast. I will do a talk about Ioke, and also a workshop about the challenges of improving Ioke’s performance.

After that I will attend RubyFoo in London, Oct 2-3, where I will talk about JRuby. RubyFoo will feature Matz, Sam Aaron, Aslak Hellesøy, Adam Wiggins and me. It should be great fun!

At JAOO this year (Oct 4-9 in Aarhus, Denmark) I will do a tutorial about testing Java code with JRuby. This conference also looks like it will be great. Many interesting talks and speakers. And of course, JAOO is generally the best conference I’ve ever been to.

At Øredev in Malmö, Sweden (Nov 2-6), I will be talking about Ioke.

And finally, at QCon SF in San Francisco (Nov 16-20) I will be hosting a track on emerging languages. After JAOO, QCon is my favorite conference, so I think it will be very nice too.

So, several interesting conferences coming up. Hope to see many of you there!

Videos from the Chicago ACM Ioke talk

This Wednesday I gave a talk about Ioke at the Chicago ACM. This was actually great fun and I’m fairly happy with the presentation. This is without doubt the best quality Ioke presentation available so far.

You can see it here:

And here:

The Clojure meetup and general geekiness

The Bay Area Clojure user group threw a special JavaOne special, with Rich Hickey as special guest on Wednesday afternoon. I went there and it turned out to be a large collection of former and current ThoughtWorkers there, among all the other Clojure enthusiasts. The model was lightning talks for a while and then general town hall with Rich answering questions. The reality turned out to be a bit different – firstly because people spent quite long on their talks, and people asked many questions and so on. The second problem was that the projector in the place had some serious problems – which basically ended up resulting in everyone projecting pink tinted presentations.

There were several interesting talks. The first one took a look at what the Clojure compiler actually generates. This turned a bit funny when Rich chimed in and basically said “that doesn’t look right” – the presenter had simplified some of what was happening. I don’t envy the presenter in this case, but it all turned into good fun, and I think we all learned a bit about what Clojure does during compilation.

There was a longer talk about something called Swarmli, which was a very small distributed computing network, written in about 300 lines of code. I defocused during that talk since I had to hack some stuff in Ioke.

After that, one of the JetBrains guys showed up the new IntelliJ Clojure plugin. It seems to be quite early days for it still, but there is potential to get good cross language refactoring, joint compilation and other goodies there.

Finally, my colleague Bradford Cross did a very cool talk about some of the work he’s currently doing at a startup. The work seems to be perfectly suited for Clojure, and the code shown was very clear and simple. Very cool stuff, really. ThoughtWorks – actually using Clojure at client projects. Glad to see that.

After that it was time for Rich Hickey. Rich decided to give a lightning talk himself – about chunked sequences. Very cool in concept, but actually one of those ideas that seem very simple and evident after the fact. Chunked sequences really seems to promise even better Clojure performance in many cases – without even requiring changes to client code.

After that there was a general Q&A session, where questions ranged all over the map, from personal to professional. One of the more conentious things said was about Rich’s attitude to testing. This caused lots of discussions later in the evening.

All in all, this was really a great event. We ended up at a nearby bar/restaurant afterwards and had long discussions about programming languages. A great evening.

Second day of JavaOne

The second day of JavaOne ended up being not as draining as the first one, although I had lots of interesting times this day too. I’ve divided it into two blog posts – this is about what happened at JavaOne, and the next one will be about the Clojure meetup.

The first session of the day was Nick Siegers talk about using JRuby in production at Kenai. An interesting talk about some of the things that worked, and some of the things that didn’t work. A surprising number of decisions were given as fiat since they needed to use Sun products for many things.

After that Neal Ford gave a comparison between JRuby and Groovy. I don’t have much to say about this talk except it seemed that some of the things seemed to be a bit more complicated to achieve in Groovy, than in Ruby.

As it turns out, the next talk was my final talk of the day. This was Bob Lee (crazy bob) talking about references and garbage collection on the JVM. A very good talk, and I learned about how the Google Collections MapMaker actually solves some of my Ioke problems. I ended up integrating it during the evening and it works great.

The second day had fewer talks for me – but I still had a very good time and even learned some stuff. Nice.

First days of JavaOne and CommunityOne

I’ve been spending the last few days in San Francisco, attending CommunityOne and JavaOne. We are right now up to the second day of JavaOne, so I felt it would be a good idea to take a look at what’s been going on during the first two days.

I will not talk about the general sessions here since I as a rule avoid going to them. So, I started out CommmunityOne seeing Guilloume talk about what is new in Groovy 1.6. Pretty interesting stuff, and many useful things. Although, one of the things I noted was that many of the default usages of AST transformations actually just make up for the lack of class body code. Things like “@Singleton” that neeeds an AST transformation in Groovy, is a very simple thing to do by executing code in the class body in Ruby.

After that I saw John Rose talk about the Da Vinci machine project. Pretty nice stuff going on there, really. The JVM will really improve with this technology.

Charles Nutter did a reprise of his Beyond Impossible JRuby talk. It’s a really good talk that focuses on the things that you really wouldn’t think possible to do on the JVM, that we’ve had to do to get JRuby working well.

Guido talked about Python 3000 – much of that was really a look at the history of Python, and as such was really interesting. Unfortunately, my jetlag started to get the better of me at that point, so my focus could have been better.

For me, the first day of JavaOne started out with the Script Bowl. This year the languages represented was Jython, Groovy, Clojure, Scala and JRuby. I think they all did a pretty good job of showcasing the languages, although it’s very hard to do that in such a small timeframe. I think I sympathized the most with Rich Hickey (creator of Clojure) – the reason being that the Clojure model is the most dissimilar from the rest of the languages. But this dissimilarity is actually the key to understanding why Clojure is so powerful, so if you don’t understand it, you’re just going to be turned of by Clojure’s weird surface semantics. (Hint: they are not weird, they are necessary and powerful and really cool). Rich did a valiant effort to conveying this by talking a lot about the data structures that is Clojure, but I’m unsure how much of it actually penetrated.

Tom did a great job with the JRuby demos – he had a good flash 3d game running using a JRuby DSL, and then some slides showcasing how much benefit JRuby gets from the Ruby community. Good stuff.

After that I went to Rich’s Clojure talk. I’ve seen him give similar talks several times, but I don’t get tired of seeing this. As usual, Rich did a good job of giving a whirlwind tour of the language.

After lunch I went to the talk by Konstantin about JetBrains MPS. I was curious about MPS since I’ve been spending time with Intentional lately. I came away from the talk with a pretty different view of MPS compared to going in, actually. My initial reaction is that MPS seems to be pretty limited to what you can do with Intentional.

Then it was time to see Yehuda Katz talk about Ruby – this was a great intro to Ruby and I think the audience learned a lot there.

The first evening of JavaOne was really crazy, actually. I ended up first going to Brian Goetz and John Rose’s talk about building a Renaissance VM. This was a bit of an expansion of John’s CommunityOne talk, and gave a good overview of the different pieces we’re looking at in JSR 292, and also other things that should be in the JDK in some way to make a multi-language future possible.

Tobias Ivarsson gave a BOF about language interoperability on the JVM. This ended up being more about the interface injection feature that Tobias has been hacking on. We had some pretty good discussion, and I think we ended up with a feeling that we need to discuss this a bit more – especially if the API should be push or pull based. Good session by Tobias, though.

And then it was finally time for my BOF, called Hacking JRuby. This was actually a pretty mixed things, containing lots of funny small pieces of JRuby knowledge that can be useful if you want to do some weired things with JRuby. The slides can be found here: I think the talk went pretty well, although it was in a late slot so not many people showed up.

The final session of the day was a BOF called JRuby Experiences in the Real World. This ended up being a conversation between about 10-12 people about their JRuby experiences. Very interesting.

After that I was totally beat, and ended up going home and crashing. So that was my first day at JavaOne.

Google I/O

Currently sitting in a session on day two of the Google I/O conference. The morning opened up with the keynote and announcement of Google Wave, which is something that seems very cool and has a lot of potential. Very cool start of the day.

After that I watched Ben and Dion talk about Bespin. I hadn’t seen Bespin before – it was definitely interesting, although I will be hard pressed to give up Emacs any day soon.

During lunch I came up with a fun idea, but it required something extra. I talked to Jon Tirsen, a Swedish friend from his ThoughtWorks days, who is on the Google Wave team – and he managed to get me an early access account for Google Wave. So I spent the next few hours hacking – and was able to unveil an Ioke Wave Robot during my talk. It is basically only a hello world thing, but it is almost certainly the first third-party Google Wave code… You can find it at It is deployed as so when you have your Wave account you can add it to any waves. Very cool. I do believe there is a real potential for scripting languages to handle these tasks. Since most of it is about gluing services together, dynamic languages should be perfectly suited for it.

Finally I did my talk about JRuby and Ioke – that went quite well too. The video should be up on Google sooner or later.

And that was basically my Google I/O experience. Very nice conference and lots of interesting people.