Concurrency: Past and Present
Brian's keynote on the challenges of concurrent programming was very interesting. Brian was the most intense of the three keynote speakers.
Shared, mutable state is the root of all evil when it comes to concurrency. Languages like Erlang solve this problem by not supporting mutable data structures. Erlang's syntax, however, is cryptic and not very readable. Object/functional hybrid languages like Scala and F# try to give the best of both worlds.
In C# or Java, you can make your code more concurrent by designing immutable objects whenever possible.
Introducing Behaviour-Driven Development
Andy masterfully engaged the audience in his session. He started off with an intro to jbehave. If you're a .Net developer, nbehave is the C# equivalent. He then moved on to easyb, a story driven development framework that Andy is building.
Amazon.com Code Ninja Challenge Part 2
The second challenge was coded in Java, so it was easier for me to follow than the first. The function recursively calculated the greatest common factor (GCF) for two numbers. I could describe what the function was doing, but I couldn't remember that it was called GCF. After going back and forth for 10 minutes, the Amazon.com guys guided me towards the answer. They gave me an "A" for effort and I received my second Code Ninja badge.
Jim Weirich apparently solved the problem in 20 seconds!
DSLs in Static and Dynamic Languages
My ninja training caused me to miss the beginning of Neal's presentation. When I walked in, he was demonstrating how to develop an internal DSL using Java. He then implemented the same DSL in Groovy, and then in Ruby. You could see the line noise decrease as he changed languages. Neal is a huge Ruby fan. He believes Ruby is the best language out there for creating an internal DSL (internal vs. external dsl courtesy of Martin Fowler).
RESTful Web Services
Dave was a decent presenter. The session, however, was geared towards REST newbies. I've been playing with RESTful services for a few months now and I'm pretty comfortable with the basics. Dave also spent a little too much time on HTTP and SOAP basics and not enough time on REST. For those who are new to Web Services, however, the intro to HTTP and SOAP may have been just right.
This was the last session I planned on staying for. I decided to leave early and start the 250 mile drive home.
CodeMash 2008 was totally worth it. I made a few new friends and I've got two areas to focus on in 2008
- Improve my TDD discipline
- Learn more about Scala or F# (haven't decided which one yet)
I absolutely plan on attending CodeMash 2009!