Friday, February 11, 2011

.NET Dynamic Data

Not sure how many out there have played around with .NET Dynamic Data, but I found it to be a thought-provoking approach. If you’ve built your relational database well, it allows for RAD in the beginning. I haven’t quite figured out yet what you’d do in the case of a data schema change…rebuild it maybe? I also like the built-in routing feature, and the UI consistency across all object CRUD operations is nice. I’m not sold though on this being the sole development model for an enterprise site, but if mixed in with classic web forms or MVC one might experience the best of all worlds.

If you want to build a sample site, following the example you’ll need the Adventure Works DB if you don’t already have it:

Thursday, February 10, 2011

Dry, but still worth reading

I just finished reading "Design of Design" by Frederick P. Brooks Jr. It was at times an interesting topical read, but for the most part I found myself often disengaged.  I don't at all question the author's experience, nor do I doubt he's a seasoned and well-respected professional in the computer science field.  I personally just found it difficult to submerse myself into the content.  That's the least for me.   

Now the up-side.  Despite it being dry, overall I was better off for having read it and learned a few things from it.  I agreed with the chapter on the computing field's need for more exemplars, and the chapter that pointed out our lack of standardization and common design practices echoed in print what I've been telling others in my field for years now.  Also, I enjoy good quotes that history's great minds have left us, and this book contained a good number of them that really jumped out at me.  I'll close this post with one of them...

"The besetting mistake of expert designers is not designing the thing wrong, but designing the wrong thing."

Wednesday, February 02, 2011

No free lunch

Someone recently sent me this link and expressed their disdain with the approach that Red Gate has taken with the new pricing model of the .NET Reflector tool.  The public announcement is listed below...

Red Gate has announced that it will charge $35 for version 7 of .NET Reflector upon its release in early March. Version 7 will be sold as a perpetual license, with no time bomb or forced updates.

As many of you know, our original intention was to maintain .NET Reflector as a free tool. But, after two-and-a-half years of providing it without charge, we realized that we could not make the free model work. We know that this will cause pain for some people in the .NET community, and we apologize for the change in policy.

As a commercial company, we need to charge at least a nominal amount to keep .NET Reflector up-to-date and relevant. Without revenue coming in, we cannot dedicate a team of developers to ensure that Reflector remains a valuable part of .NET developers' toolboxes.

As always, your feedback is important to Red Gate, so please contribute any thoughts on this subject to our .NET Reflector forum.
I really don't have a problem with this though.  After all, the business model of offering a product for free until you have a large user base and then finally charging for it is really nothing new.  Support and maintenance for any decent product comes at a price.  Of course if it's the intellectual property of a brick-and-mortar software company, why shouldn't they have the write to charge a nominal price for their product?  It appears that the laws of Supply and Demand for this product have worked in Red Gate's favor.  Good for them.

Rationalism vs Empiricism

I'm currently reading "The Design of Design" by Frederick P. Brooks, Jr. and found one of those nuggets in Chapter 8.  Mr. Brooks provides his software engineering angle on the difference between Rationalism and Empiricism.  It's so good that I've got to share it.  He says the following...

"The rationalist believes that man is inherently sound (and good), subject to mistakes, and perfectible by education.  After right education, maturing experience, and sufficient careful-enough thought, a designer can make a flawless design."

"The empiricist believes that man is inherently flawed, and subject repeatedly to temptation and error.  Anything he makes will be flawed.  The design methodology task, therefore, is to learn how to determine the flaws by experiment, so that one can iterate on the design."

Mr. Brooks acknowledges the fact that he's a die hard empiricist.  He goes on to say...

"A program is a pure mathematical object and in principle can be designed perfectly by correct thought.  The difficulty is not with the design medium but with the designers."

"This firm faith in fallibility prescribes a design methodology that includes design, early prototypes, early user testing, iterative incremental implementation, testing on a rich bank of test cases, and regression testing after changes."

This last sentence describes the implementation approach to Agile Software Development.  I don't see how anyone that would put themselves in the empiricist camp would favor the waterfall approach to creative software engineering.