Monday, 25 July 2011

Jumping into the Scala fray

It has been a rough plan of mine since around April that I would use Scala as the foundations for my typestate research. I had not intended, however, to get quite so involved in the community as I now have. Scalathon was what changed my mind.

Some recent history: the original plan for my summer was to go work for Google, however they were unable to find a place for me and have instead now offered me a fall internship. Prior to securing the fall internship I was concerned that after all the effort expended with interviews for both Google and Microsoft Research, that I was going to be left with nothing. At the last minute I was made aware of some potential funding to visit a foreign academic institution of my choice, so I applied for this with the intention of travelling to Carnegie Mellon University to collaborate with Jonathan Aldrich and his PhD students. I succeeded in getting this funding, much to my delight, and then soon after was notified by Google that they had found a placement for me for the fall. All of a sudden, instead of one awesome three month trip to the USA, I had two placements back to back totalling over 7 months of foreign travel. Logistical nightmares aside, it was an amazing opportunity.

Since I now knew I was going to be in Pittsburgh for the summer, I had heard about Scalathon and decided to go, despite still being a relative Scala novice, just to see what the buzz was like and hopefully meet some cool people. Up until this point I had been a lurker in the community. I've been involved with a number of open source communities in the past, enough to know that often they are very ego driven and unless you have the energy and patience to deal with this, you're not going to get very far. So I had watched the Scala community from afar, and had of course heard the rumours circulating that the culture was somewhat toxic, with strong personalities and people who like to wield category theory and advanced functional programming concepts in an effort to educate you, the great unwashed, whether you wanted to learn or not.

To my delight, I discovered that its really nothing like that. Sure, there are some on the mailing lists who still seem to revel in intellectual jousting matches. However, all the people I have met face to face in the North East are a very likeable bunch of incredibly smart, motivated people. It was humbling to meet people like Daniel Spiewak - during Scalathon I was playing with parser combinators to create a better parser for links in Scaladoc. Being incredibly new both to the concept and the specifics in Scala, I had a quick Google and found a blog post on the topic. Pedro Furlanetto, who was sitting next to me as I was doing this, then said "you realise that page you're reading was written by the guy sitting across the table from you?" (referring to Daniel). That was a somewhat surreal moment. What was even better, as I got deeper into the topic and had a question which couldn't be answered readily by Googling, I asked Daniel for a little bit of help and he readily obliged.

Others were also happy to help:


  • Daniel Sobral, who apparently has more points on Stack Overflow than any other Scala community member (mostly through answering a ridiculous amount of questions on Scala with very detailed, thorough responses)
  • Mark Harrah, of sbt fame, was happy to help Pedro and I with a class loading issue when trying to run some of the scaladoc code from within an SBT launched REPL.
  • Paul Phillips, scalac Rockstar, humoured me by answering a rather trivial git related question that I immediately regretted asking as I felt like I was completely wasting his time.
  • Josh Suereth, author of Scala in Depth, was more than happy to answer dumb questions about Scala style. He also lives near Pittsburgh, and invited me in to visit the office before he left for Typesafe.
After this universal display of kindness, I felt that I really should get more involved and start "paying it forward" in the community. I'm still not really in a position where I feel comfortable committing serious code to the Scala codebase, however there was one other area that it became apparent could make use of a grad student with a very flexible schedule: documentation. The first day of scala included a documentation spree, which was an immensely positive experience and some of the most fun collaborative work I've done in a long time. So, I felt I should try and push this idea forward and try and organise "docsprees" as a monthly event. After all, it doesn't take that much time to do, it just requires someone with the will to think through the logistics, rally the troops and get it moving. This is what I have now done, and I hope it will be a success. This probably wouldn't have happened without the encouragement of Yuvi Masory and Heather Miller to just get stuck in and make some noise. No doubt there are many who are currently saying "who the f**k is Iain?" (perhaps even to the Eagles tune), but based on my experience of interacting with the Scala community so far they're probably just glad that someone is taking the time and effort to rally the community around documentation.

At this point, I think I've made my decision about which language I'd like to use for the next decade. I might as well try to help make it the best, most accessible language it can be.