Monday, April 28, 2008

Spec# Needs a lot of Love form Microsoft

I was disappointed at how little $$ was being thrown at something as good as Spec# by Microsoft. Considering the millions that have been flushed down the toilet trying to make drag and drop do what it was not meant to do, it's a crying shame. Hopefully the tide is slowly turning and great endeavors like this will be supported properly by Microsoft in the future.

As a token, I'm adding a little I <3 Spec# on my blog.

Do check out spec#!

Sunday, April 27, 2008

Graphical vs Textual DSLs

At ALT.NET there was a good talk about the merits of graphical DSLs. BizTalk and SSIS come to mind when talking about this. Say we have some data work to do and we do it in SSIS. Once we have constructed our migration or data manipulation, we can save the project.

What we have done in actual fact is saved the graphical representation of what we made. Once this solution is checked into our source repository, it is saved in a non-deterministic fashion. If we modify our solution and commit our changes again, there is no guarantee that everything that was not changed will be in the same place.

To see this directly, you can do a diff on the two versions. Since there is no way to visualize the differences, this information does not tell you anything. One is forced to probe over the details of each property to see what has changed. The best hope is that the person that made the modifications had left some good comments to go on.

So it seems like textual DSLs are the way to go. Once we have changed what we want, the diff between two versions will be very easy to analyze. This is good, but I believe there is a point in between. This is a hybrid solution that will use a textual DSL and a visualization tool to make a graph of what the text describes.

How this can work is the way Visio can make a class diagram for you. If you use the reverse engineering tool to do this, it will place classes in places it's algorithm thinks is best. This of course will not be the ideal most of the time. One will want to move things around so that the information is better conveyed.

These adjustments are what can be cast aside into a secondary file. One would not care what changes this file went through in the repository. The real information is still stored in the textual representation. Hopefully, with more attention to the preference file (storing changes only in an additive way) can help version this too.

A quick analogy can be drawn up to the .suo files that Visual Studio creates. Your solution has the same projects and settings. But the windows that you had open and a number of other preferences are stored in the suo file. These generally do not make it to the source repository.

If there was a way to use a textual DSL to describe your SSIS work, a lot of responsible programmers would be happy. Maintaining an SSIS project would be far easier - or any other drag and drop ridden solution.


Wednesday, April 23, 2008

Tuesday, April 22, 2008

Back from the dead - and back from ALT.NET Seattle!

I'm finally getting the nerve to blog again. This is probably due to how immersed in work I have been lately. The work I'm doing now is not the same old contract stuff - it's new and therefore exciting. Part of the challenge is seeing how Agile, Scrum and XP play a role in DDD, Messaging Architectures etc.

The tipping point was ALT.NET Seattle. My head is now sufficiently filled to nearly overflowing with information. Not putting "pen to paper" would be a great loss to me. If this helps others along the way then great! But the company at ALT.NET Seattle eclipses most of what I will say. I'll have to update my blog roll soon.

The Conference

The format was open spaces. This was a new experience for me. I was very pleased with it. The participation is something that is missing from the traditional format. There was a lot of video taken. David Laribee posted some as did Jeffery Palermo.

I had a good chat with Scott Hanselman and Martin Fowler in between sessions about being a polyglot programmer. Scott was making the point that "if you want to learn French you start reading books written in French" to draw a parallel of learning a new programming language. Unfortunately the real analogy in the ALT.Net space for some things such as NHibernate and the Castle implementation of Active Record which does your XML mapping via attributes, the analogy is more along the lines of "if you want to learn Rumantsch you should read books written in Rumantsch". I'm not sure if you'll find one in your library. The full discussion is on David Laribee's blog linked above.

At other points I had discussed using GIT instead of SVN, the intricacies of moving to message based architecture, new things coming out of Microsoft Research like Spec# and many other things. I'll leave these things for posts in the very near future. There were many really smart part people there and I was very happy to be a part of the event.

A special thanks goes out to Scott Bellware for pushing this forward from day one of the idea of an "ALT.NET"