It was a great first full day at CodeMash v126.96.36.199.
Neal Ford did the opening keynote: Software Engineering and Polyglot Programming. The presentation was an extended comparison of bridge engineering and "software engineering". My biggest takeaway from the metaphor is that classic engineers (i.e. bridge engineers) produce paper. The paper design is their final product. They have no part in producing the bridge; their work ends at the design. In "software engineering", the design is our source code. Languages are our design tools. What we typically call design is actually only the highest level of design. He also compared the compilation and deployment process to the process of producing a bridge. In classic engineering, the construction process is very costly, while in software engineering the construction process has an extremely low cost. Another statement that resonated with me is that testing is the true engineering underpinning of software engineering and has parallels in classic engineering where testing is used to verify designs that cannon be verified mathematically. My last takeaway from his presentation was his thought that the future is combining multiple languages on the same platform, i.e. .NET or Java virtual machines.
After the keynote, the first session I attended was Introducing Building Facebook Applications by Matt Pizzimenti, the originator of RFacebook, which is a Ruby interface to the Facebook API. I had never looked at Facebook development and this was the perfect introductory session for me. The most surprising part of the presentation was his description of FQL (Facebook Query Language) which is a SQL-like query syntax to allow you to query Facebook date. Very cool! I'm not likely to go out and write any Facebook applications tomorrow, but I think I'd know how to approach it if I wanted to. It also gets my wheels turning about how to integrate Facebook and other social applications into my business applications.
The second session I attended in the morning was RIA's: Beyond the Buzz by James Ward. I haven't researched much about Flex, so this I enjoyed this introductory session, although I would have liked a little more technical discussion and a little less high level hand waving. Like Facebook, I don't know that I'll be using Flex anytime soon, but it was good to get a look.
Scott Hanselman did the keynote after lunch. The first part of his presentation had the whole room roaring in laughter; I won't even try to describe it. (Yet another reason you should have been here to see it yourself). After the crowd was warmed up, he talked about IIS 7. He demonstrated some capabilities that I didn't know existed. He started with a PHP application and added authentication via the ASP.NET membership provider, URL rewriting, and caching all without touching the PHP code. I'm looking forward to using IIS 7. And I definitely recommend that you hear him speak if you have the chance.
My afternoon was devoted to .NET topics. First, I saw Bill Wagner talk about LinqTo<T>: Implementing IQueryProvider. He talked about implementing the IQueryProvider to make your custom data source available in LINQ. I would summarize this session simply. Don't do it. Don't ever do it. If you ever even think about doing it, remember this post and don't do it. It's a remarkably complex process. As I expected, I did get some tips about how LINQ works.
The final session of the day was Dustin Campbell on Putting the Fun into Functional with F#. As always I enjoyed hearing Dustin. I do wish it would have been earlier in the day; it borders on cruel an unusual punishment to make people bend their minds to understand functional programming as the last session of the day. There were a couple times I had flashbacks to my looks at Prolog many years ago. He explained currying and closures very simply and demonstrated many simple F# capabilities. It was a great end of the day.
Or almost the end of the day. The party sponsored by Quick Solutions was a good opportunity to relax and chat with my follow CodeMashers and watching a parade of geeks playing Rock Band. It was a good day and I need to end this post so I can sleep and get ready for tomorrow (okay, today).