I know I'm a little late on this, but better late than never.
Brian Goetz gave the morning keynote regarding concurrency in Java (but most of what he talked about applied to .NET also). Much of the talk was a well presented and organized review of the existing problems with threading in Java and all of the work a programmer must to to properly handle concurrency, including all of the ways it can go wrong. He started out the talk saying that he didn't have any answers, and he delivered on that promise <g>. At the end of the presentation he talked about a couple different approaches to handling concurrency including languages such as F# or Scala which combine object oriented and functional programming. With all of the multi-core processors in our future, the problem of splitting work to multiple concurrent work loads will be a common problem for all of us.
The first session I attended after the keynote was Andrew Glover from Stelligent talking about Behavior Driven Development. I've started to see more talk about BDD recently, but have not really looked at it, so this introductory session worked well for me. BDD is an evolution of TDD (Test Driven Development) that focuses on the the desired behavior of the system thus bringing it closer to the users requirements and domain driven design. Using BDD, the "tests" are written as specifications describing the desired behavior of the system, which does seem more natural than TDD tests (check out the NBehave site for an example.) One unfortunate thing is that the tools to support BDD in the Java world seem to be much further along than the .NET world. In particular, Andrew talked about easyb which is a Java framework to support behavior driven development and is built on top of Groovy. There is no corresponding product in the .NET world, but there is NBehave, which I intend to look at more closely.
During the next time slot, I attended an open space session on SPEAK.NET which is a recently initiated Google group devoted to discussion of how to better spread and teach best practices to the developer community. We had a good discussion of our collective experience speaking at user groups meetings and issues with presentations and how we individually address them. It was the only open space I attended and it was well worth the time.
After lunch, I attended the vendor session of Cardinal Solutions where Leon Gersing did a presentation on using LINQ to combine data from Facebook, Twitter, and I can't remember what else. I'm hoping he'll do the presentation for the Dayton .NET Developers Group some time soon.
I next saw Dave Donaldson talk about RESTful web services. He gave a solid overview of the difference between RESTful web services and the more common (at least in .NET) SOAP web services. I found the questions to be the most entertaining part of the session. People want to use RESTful services because they are lightweight, but then they ask questions like they want to have a big bunch of standards in RESTful services. I do think the biggest issue with using RESTful services is the lack of standards. If you are controlling both the client and service, it's not as much of a problem. Later in the day I asked Dave if he had looked at the new capability in WCF to expose RESTful endpoints. He had not looked at it yet, and neither have I, but it's on my list of things to look at. I'm definitely fond of the ability in WCF to expose services via many different endpoint technologies, including REST.
The last CodeMash session I attended was Brain Sam-Bodden talking about some of the meta-programming capabilities of Ruby that make Rails possible. Every time I see someone talk about Ruby, I tell myself I'm going to find some way to start using Ruby and this was no exception. It is amazing the kinds of things you can do in Ruby to change the language on the fly and I understand the great power that comes as a result of that. Makes me want to use Ruby. Wish Microsoft would hurry up with the DLR already...
And the last part of day two was devoted to drawing for swag, which I've blogged about elsewhere.