Nick's .NET Travels

Continually looking for the yellow brick road so I can catch me a wizard....

Australian Developers are "shallow" and "sloppy"

Over the weekend the co-author of our recently published book, Professional Visual Studio 2005, contacted me to point out a fantastic review of on Amazon.  Well, it was fantastically funny and as Andrew points out it would be great if anyone else who has read the book could post a review ;-).

Unfortunately the actual review has been pulled from the Amazon website, but in summary it makes the following claim:

So the next thing i did was to find out who were the authors, and there you are: two experienced/accomplished but "Australian" developers. In my albeit limited experience, the majority of Australian developers were shallow in their understanding of highly complexy technical stuff, and they write code in an exremely sloppy fashion. But these two guys are supposed to be the creme de la creme of .NET developers in that country, or maybe not?

Does this apply to New Zealand developers or are we all too busy farming sheep and making award winning films?

Windows Mobile Device Center

For those working with Vista and are armed with a Windows Mobile device you should check out the beta version of the Windows Mobile Device Center which extends Vista RC1.  If you aren't already aware Vista will ship with a cut down WMDC which simply allows you to connect to your device.  In order to partner with your device you need to download this update.  AFAIK the plan is to make this an update that will appear in Windows Update when you have a device plugged in.  IMHO this sux and is again another black mark against mobility.  In the same way that the Windows Mobile 5 sdks should have shipped with Visual Studio 2005 (instead of just WM2003SE), the full WMDC should ship with Vista!

Database roles

Brian Madsen wrote an interesting post following Greg Linwood's presentation at my home user group, the Perth .NET Community of Practice.  I would like to make a follow up comment on this as I have a slightly different opinion to Brian:

When it comes to an application that uses a database there are a number of roles associated with building that application.  I don't want to get into the nitty gritty of what the roles are called but essentially they fall into a couple of broad categories IMHO.

  • Interaction Designer:  This role is primarily responsible for building the front end application such that it is usable, presents the information in an appropriate format and will get good user adoption.  NB: This function is actually where a LOT of applications fail!
  • Developer: This role is responsible for coding the business logic for the system - extracting and manipulating data into a format that can easily be consumed by the user interface.  Quite often this role is merged with the Interaction Designer role but in large projects there are quite often coding tasks that just require manpower to get classes written that serve a particular function.  NB: Most of the code this role rights should be easily tested using Unit testing.  This role should NOT be concerned with how indexes are structured etc, rather they need to define what data they need to retrieve and update.
  • Database Designer: This role is the only role that should be concerned with what indexes are on the database.  If an application is performing badly (at the data tier), it is NOT the responsibility of the developer to reindex the database.  Through collaboration with the developer (ie the user of the data) the database designer is responsibile for structuring the database such that the developer can work with the data.
  • Database Administrator: IMHO this is an operational role and if an application has a good SLDC then the database administrator should NOT be reindexing.  Any changes to the index should be applied as a new version of the application.  Of course, this doesn't hold where a database is being used by multiple applications and is not being versioned in line with the application.  Regardless, there should be some lifecycle management around any changes that are applied.

There may be other roles/points that I haven't considered, so please feel free to add your 2 cents worth ;-)

Building Cross Platform Applications with The Microsoft Developer Show

The next show has just been published where I chat with Jeff Arnett, Windows Embedded MVP, about building applications that work across multiple platforms.  As a fellow mobility MVP I can associate with the difficulties faced by developers wanting to port code between different platforms.  In my previous role at AutumnCare we spent a lot of time maintaining a common code base, and now at Intilecta we are having to do the same process.  Check out the latest show to here more!

MS Student Partners

Franks has just pointed out that the MS Student Partners are now (infrequently) blogging.  There is also a cool website where you can view where the Student Partners are based.  My only complaint with this page is that it breaks the mouse-scroller - by default this should scroll the page NOT zoom in/out on the map!!!

It would be great to have this functionality for "Meet the MS Team" - although I guess they are travelling so much that it is difficult to indicate a location.  Perhaps you need a "Where are they currently" or a "Where have they been" functionality.

Debugging code using UnitTests

James Avery makes a great point in his post about multiple assertions in unit tests.  I really like the concept of being able to run multiple asserts within a given testcase and having them all run, even if one fails. However, I would like an additional argument (boolean - "exitOnFailure") for the Assert methods so that I can elect to abort a test if the assert fails

Using multiple asserts in this manner would really extend the concept of UnitTests, making it easier to trace what was the likely cause of a test failure.  Instead of looking at all the tests that failed to try and pinpoint the root cause (in a similar way to looking at all the compile errors to try to identify the single error that is causing them all), you could look at a test case and analyse the assertions to narrow down the cause.

Great idea James!

Visual Studio Productivity

As Brian Madsen pointed out, Mitch Wheat did a great post on improving productivity using Visual Studio.  However, I would utter a word of caution, these short cuts DO NOT work for all profiles.  When you first install VS 2005 you will be prompted to select a profile (eg VB, C#, General...) which will configure VS to the type of developer you are.  As a VB.NET developer I was tempted to go with the VB profile until I realised that it has mapped the keyboard shortcuts to reflect what they were in VB6, which quite frankly sux.  Instead I go with the General Developer profile which seems to work for me (oh, and Mitch's shortcuts all seem to work in that profile!)

A couple of other VS related things:

  • I would also like to reference the announcment that VS 2005 SP1 Beta is now available, as per Somasegar's blog


  • <shameless plug>I can't miss this opportunity to point to the book entitled "Professional Visual Studio 2005" that Andrew Parsons and myself wrote, and is now available from Amazon.</shameless plug>

New York Times Reader - technology sampler?

Yesterday Intilecta's Chief Architect, Dave Gardner pointed me to the New York Times Reader beta which has been made available for download. Of course having done a bit of work with the .NET Framework v3 I thought it would be worth downloading the beta and taking a look at the technology sampler.  Here are some initial comments:

  • Installer: Take your hat off to the guys who put this together the installation process was so simple.  The only way it could have been improved IMHO is for the application to be ClickOnce deployed - I'm sure they had their reasons, but was a little surprised when I had to download the installer. Despite not having v3 of the .NET Framework installed it installed without a glitch, although it took significantly longer as it had to download and install the framework.


  • Look and Feel: The application looks great; very simple design with minimal menu or toolbar clutter.  The white colour scheme really works and the interface is very intuitive. As with all good Avalon (aka Windows Presentation Foundation) applications it has the ability to zoom in and out.  This makes perfect sense when reading newspaper-like articles as I can zoom in and out on the articles depending on whether I'm "reading" or "skimming" the paper.


  • Performance: I must say that I was a little disappointed at the performance of the application both at startup and navigating around the application.  I'm running a Dell dual core machine with 2Gb RAM so I would have thought it would perform exceptionally well.  The load time for downloading the articles was much slower than expected.  Ok, so I'm using a Woosh connection atm which is barely more than dial-up speed but I would have thought that most of the articles are 90+% text and could be quickly downloaded. I guess there is a download bottleneck due to the rather large ads that are strategically placed - can't these download AFTER the articles have finished so that I can start reading while they are finishing?


  • Overall: Other than the ability to easily zoom in and out, there is not a huge number of features that would convince me to migrate to using v3 of the .NET Framework.  Lets look at the cons associated with doing v3 development now:
    • It's in beta - which means that if I'm looking to deploy I have to either deploy with the RC or wait for RTM
    • It's in beta - so I might have to change the application when it RTMs
    • It's another version of the framework that needs to be deployed
    • I need to learn a whole different skill set for Avalon, Indigo and WF.

Now, asked the question as to whether I think that v3 of the .NET Framework is worth migrating to? I would have to answer yes but you need to be certain that they are going to give you a positive value proposition. The old saying "If it ain't broken, don't fix it" applies here.  If you have an application that works fine using Windows Forms, then you don't need to migrate the whole application.  You can use Crossbow to interop!


Office 2007 System

The most recent ARCast hosted by Ron Jacobs is part 1 on the Office 2007 System.  This show is a great overview of the range of new features available in this product release.  Some of the main points I took from this session were:

  • Results Gap - another term for the difference between the expected ROI of a product/technology and the actual adoption it receives.  In light of the Office 2007 System, where application developers can really leaverage the functionality within the Office suite, this gap can be significantly reduced by building an interface into an existing product.  This is of course one of the reasons Intilecta has chosen Outlook as one of its primary user interfaces.


  • PDF Support - Pulled, but not forgotten.  What I hadn't realised with regards to PDF support being pulled from the Office 2007 release is that it will be available as a download from the Microsoft website.  Very cool for businesses wishing to use the new functionality of Office 2007 to generate documents for general distribution. Update: Found it Here


  • Business Data Catalog - "Business Data Catalog, a new feature introduced in Microsoft Office SharePoint Server 2007, provides an easy way to integrate business data from back-end server applications, such as SAP or Siebel, within Office SharePoint Server 2007 without writing any code." [MSDN website] This feature sounds way cool and looks like a great technology for bring together disparate data stores for integration into front end (web and rich client) applications.  Of course, now all we need is a way to access this data when we're not connected to the corporate network.

VB 2005 Power Packs

At TechEd Chuck gave a session on the yet to be released VB 2005 Power Packs.  This is a change in the attitude towards legacy VB6 applications.  Instead of saying "sure, we can upgrade your 10 million lines of code application to .NET - it will only require you to re-write 80% of it" we now have an incremental approach to migrating to .NET.  With the Microsoft Interop Forms Toolkit you can extend your existing VB6 application by adding .NET functionality.  In addition the Microsoft PrintForm Component gives you some nice printing goodness... check it out Here!

Hey, where did my assembly go

Over the last couple of days I have been trying to improve the application I have been working on at Intilecta. The application dynamically loads assemblies to provide specific functionality.  At the moment this is done from the file system, but we want to change the deployment model so that the assemblies can be loaded from a byte array or even a stream of some description.  This can easily be achieved using the Assembly.Load method.  However, we started to run into issues when the assemblies we were loading had dependencies. 

I spent a few minutes trying to understand what was going on and tracked it down to an issue relating to the way that assemblies are resolved. An article on GotDotNet really summarised this quite nicely and definitely worth a read if you are doing any dynamic assembly loading.  I would imagine that there are some differences with v2 of the .NET Framework but would guess that the majority of this article still holds.

Certification exams

Yesterday I sat the beta exam 071-540 Windows Mobile Application Development. I provided feedback on a number of questions but I think that the whole exam process is fundamentally flawed. Most of the questions were of the format "select one of the following code snippets that addresses this scenario...". Some of these were quite well put together, for example performance around creating webservice instances. A lot of the questons were almost "which spelling is correct". Hello, most developers dont worry about the spelling any more as we have intellisence. In the worst case where intellisense isn't available we have well documented help system. Questions that test developers recall of a specific API or method overload are just a waste. They achieve nothing as the only people who will get them are geeks who have nothing better to do than study for an exam.

At TechEd Australia I was chatting with Rob Farley who is a big advocate for exams and certification. He is encouraging as many people as possible to take the beta exams (which are typically free) without studying. This is an interesting test as exams should distinguish the good from the bad, those that can from those that can, but most importantly those who understand from those that don't. For example, someone who has been building mobile apps for 3 years, understand the limitations and unique design criteria, should be able to pass the mobile exam without studying. However the exam still needs to filter out those people who have just RTFM and expect to be able to pass the exam.  This is an interesting dilema that needs to be addressed as certification as it stands is far from a good indicator of ability!

Trawling the Web...

For some reason this morning I decide that I would Google my name - hey hasn't everyone done this at some stage.  Well the good news is that my name doesn't appear to be the alias of a porn star. It did however point me to a url where I managed to locate the paper I wrote for my honours thesis at Uni, entitled "A Generalised Spreadsheet Verification Methodology".  It's well worth a read (although it uses dated technology) as it has some scary statistics regarding the usage of spreadsheet in organisations. 

Groove 1 : Nick 0

Over the last couple of weeks I have been getting to know the ins and outs of Groove 2007, which is part of the Office 2007 product suite.  Like most good smart client applications, Groove allows you to take your communications with you and work offline.  This of course means that there is some sort of synchronisation process going on in the background.  Anyhow, I was waiting for a document to appear in the Files view of a workspace I was working on and got pocking around in the menu system.  Nowhere could I find either a sync status or a way to force a sync.  I'm sure it's there somewhere, so if anyone has seen it, please let me know......