Development Practices

Expression Studio now included with MSDN Subscriptions

Microsoft have just announced that Expression Web and Expression Blend will now be available at no extra charge to all MSDN Premium Subscribers (this includes customers with the "VS Professional with MSDN Premium" subscription). This means many more developers will have these design tools for building ASP.NET, WPF and "WPF/E" solutions.

http://blogs.msdn.com/somasegar/archive/2007/04/03/listening-to-your-fee...

Steve McConnell's latest book

Anyone who has read "Rapid Development" or "Code Complete" by Steve McConnell will know he is an excellent author and writes from a lot of experience in the computer industry.

His latest book is "Software Estimation: Demystifying the Black Art" and is a great read, full of important insights and ideas. McConnell argues that whilst the average software organization can struggle with project costs that run double their original estimates, some of the more sophisticated organizations achieve results with estimation errors as low as 5-10%. However these best-in-class organizations use scientific techniques that are not cost-effective for most software development organizations.

IE6 and IE7 on the same machine

Microsoft has released a pre-activated VPN image of windows xp with IE6 installed so you can test for IE6 compatibility with IE 7 installed on the same machine.

link from IEBlog: http://blogs.msdn.com/ie/archive/2006/11/30/ie6-and-ie7-running-on-a-single-machine.aspx

The Fallacy of Premature Optimization

I came accross this article, which goes into one of the major software design misconceptions out there. I've heard this echoed many times: XML doesn't have to be compact, the network will get faster; Java doesn't have to be fast computers will get faster, etc.

I've also seen many systems bogged down with fundamental designs enforcing poor performance. Most of the time the problem is designers that don't understand the impact of shared resources on a web server. They worry about CPU cycles on individual requests when they use a property heavy remote object, or abuse a database with multiple small requests in a transaction.

ATLAS control test harness

One of my major frustrations with web development has been the lack of good testing tools for the user interface. Back at Dell I worked on one tool which we developed using the .net httpRequest objects and some scripts to check the html and step through some pages, but writing tests was entirely too tedious and broke often. Plus it didn't handle client side well.

My next approach was to wrap the DOM in an XPathNavigator. This made the process less error prone since you could do things like //a[text='next'] or //div[@id='contnet'] however the COM overhead made the searches too slow and you ended up adding hints into the document layout to speed up the searches. The advantage with this approach was that you could find and test just about anything on the DOM including javascript events, etc.

VBA Signing Certificate Available and another way I can help you

Do you use controls or write code to run in Office files? The Law Department does both with the License Agreement to screen that the form is properly filled in. The TradeMark Buttons on the Word/PowerPoint/Excel toolbars that fix up iMIS and other trademarks also use macros. However, when you open a document with macros or controls, you get a warning message that a virus may be hidden within. However, an author (like ASI) can be added to a trusted publisher list and once the publisher is trusted, the warning never appears. So, if you need a macro or control signed for a document, just send it to the Law Department and I will sign it for ASI.
More help:

Programming style

I've been using Framework Design Guidelines for a couple of months now, and reading Brad Abrams blog for longer. It's a great book BTW. Not only does it go beyond the usual naming convention standards, it let's you know what to expect from the .net framework and how to write code that works well with it.

One of the suggestions and also one of my pet peeves has to do with returning collections. You should always return a collection even if it is empty and never return null. Null doesn't add any information to the caller and just forces them to write extra code which has no real meaning other then handling an edge case.

New Linq CTP released

There have been a few posts about the new ATLAS framework for ASP.net and all the usability enhancements it enables on the front end. I think LINQ/DLINQ is just as cool for the back end.

It's a functional style syntax for doing queries over objects, xml and databases in C# code. It allows you to take a loop over a collection of objects with the nested if statement as a filter and replace it with a more SQL type syntax where you just loop over a filtered result.

History of single-sourcing Doc and Training in InfoDev

Just wrote this up for a presentation proposal for the Austin ASTD conference, so I thought I'd share it for the record:

For a decade now, our small Information Development group has worked toward the goal of single-sourcing content between user guides and technical training materials. Without content reuse, we found that huge disparities developed between these outputs: procedures would be updated and expanded for training that would never make it back to the documentation, and information would actually conflict, leaving the student to sort it out. Separate doc/training source generated double the work and a maintenance nightmare, and we were charged to solve it – affordably.

Code analysis - FxCop vs. Visual Studio Team Edition

Overview

The external FxCop utility is used to perform code analysis. For .NET 2.0, version 1.35 is the release candidate to use for this purpose. Visual Studio 2003 can be configured to run this tool from within its IDE. However, Visual Studio 2005 Team Edition for Software Developers embeds a version of FxCop directly into the IDE.