They say if you do something three times, it becomes a habit. This is the second post in a series highlighting what I gleaned from the sharp minds in the ALT.NET scene over last week.
Early in the week, Harry McIntyre from London shared his process and custom code for managing change to DBML files, the XML that defines your classes in Linq to SQL. Folks using Linq to SQL know the pain of managing change to these files. You cannot regenerate them from your database without wiping out any customizations that you made. The Linq to SQL designer is pretty good about capturing most of the idiosyncrasies of your tables, but you inevitably have to customize the generated DBML to cover the corner cases, such as having a default value on a non-nullable CreatedOn column.
Harry's project is called Linq to DBML Runner, and he has a post about the process he uses. It's dependent on a couple of other projects, including Linq to XSD and in yet another case of trickle-down technology from Ruby: Migrator.NET. If you're committed to effectively managing change to your DBML files, and you will be if you use it on greenfield projects involving more than a couple of developers, check out Linq to DBML Runner.
There was a lot of talk about MVC and MVP, along with specializations formalized by Fowler including Passive View. A few astute alt.netters shared some exposition on the venerable MVC pattern as it was first conceived and developed in Smalltalk. Among these posts, Derek Greer's extensive exposition of these patterns was linked up. This is a fantastic, thorough, and cogent examination of the patterns and the origin, highly recommended.
You can also add another implementation to your MVP list: MVC#. This looks very interesting, but I haven't had a chance to delve into it.
Also in the rich-client/WPF world, I heard the first rumblings about Prism this week. Glenn Block has been a frequent poster to the mailing list in the past. He's the Technical Product Planner for the Client User Experience (UX) program in Microsoft's Patterns & Practices (PnP) team. Glenn posted about a code drop of a Prism reference implementation. This is essentially an application that will bake-in all the concepts that will eventually be extracted, formalized, and generalized into the Prism framework for composite applications. This is cool stuff, and it will be good to see a lot of the disparate PnP frameworks rolled up.
One ActionScript developer (now that is ALT) asked about dealing with nested asynchronous web service calls. Two suggestions were given: Flow-based programming and continuation passing style. The latter is familiar, I would imagine, to most developers, at least those with some exposure to functional programming, and it is now very easy to accomplish with C# and lambda expressions. The former, Flow-based programming, is an unfamiliar programming style to me, but at first blush it appears to fit in very well with the current interest in SOA.
Our final topic is an appropriate one to this column, namely, how do we process all the technology out there? Asked by J.P. Hamilton on the list, the most interesting response was from Oren:
I don't. I read some interesting blogs, but I don't go into technology unless I have a need for it. I try to keep an eye for new ideas, but technology itself is not something that I even try to keep up. I find that knowing he fundamentals helps immensely when you learn new stuff, so focusing on that is never a bad idea.
Have a great week!