MS Student Partners

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

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

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?

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

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

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

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

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…

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

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……

.NET CF Type Load Exception

.NET CF Type Load Exception

I received confirmation this morning that an exception I was getting in the application we are building was not a result of our achitecture, but rather a bug in the .NET CF type loader.  Get this though – in order to recreate the exception you have to write some pretty obscure:

Assembly A:

class Foo {}

class Bar<T> {

    T field;

}

Assembly B:

struct MyValueType{} //has to be user-defined valuetype i.e. struct, enum…

class Child : Foo {}

class MyClass {

    Child c;

    Bar<MyValueType> b;

}

“.NetCF will fail to load MyClass if MyValueType hasn’t been preloaded. The workaround is to pre-load the valuetype  (i..e. use it somewhere in the code before MyClass is first referenced).

The problem exists in the .NetCF v2 SP1. We fixed it for the next version of the .NetCF, the fix may also be rolled into next service release of .NetCF v2.”  [taken from an email from Roman Batourkov]

Why AJAX is painful?

Why AJAX is painful?

For those who have spent any time with me you will know that I’m fairly passionate about two subjects – VB.NET and building Occasionally Connected applications (ie applications for desktop or mobile devices that don’t require a connetion 100% of the time).  I was catching up on a few of the older ARCast shows and came across an interview with Israel Kehat that talks about streaming/editting video using AJAX (show is entitled “ARCast – The Adventures of Israel Kehat and Friends in the Strange Land of Streaming Video and AJAX clients”). In this interview they talk about how AJAX has been used to provide a rich user experience coupled with the zero cost of deployment. 

While I agree with a lot of the discussion the point I want to focus on is about debugging.  Ron asks the question about whether debugging Javascript has got any better.  The short answer was No, but Israel then goes on to claim that modern debuggers haven’t really improved when it comes to debugging distributed, multi-threaded applications.  This to me sounds like Israel has falled under the web developers delusion that building web applications using a mix of javascript and .NET is easy???  Debugging multi-threaded, distributed windows applications is now infinitely easier using VS2005 than it was with earlier versions of Visual Studio.  For example you can access all the currently running threads, pause threads and even continue to debug your system across network and application bounds – All without leaving VS!

What kind of a sadistic world are we living in that we have to write sophisticated applications in javascript anyway.  It reminds me of all those people who claim that VB.NET is for “soft” programmers who don’t understand OO and don’t want a strongly-typed programming language.  And what is worse, the dependency on javascript is getting worse.

Ok, to finish on a positive note.  I must admit when Tatham Oddie delivered his Atlas session to the Wellington .NET User Group I was pretty impressed with the level of integration with ASP.NET. 

Go mobile with WCF

Go mobile with WCF

On the way to work this morning I was listening to an ARCast show hosted by Ron Jacobs who was interviewing Marc Mercuri about WF, WCF and Cardspace.  This session doesn’t really talk about anything revolutionary, but it does highlight some of the features available in both the .NET v2 & v3 frameworks.  In particular they talk about the consumption of Windows Communication Foundation (WCF) by .NET Compact Framework applications.  Since v1 the .NET CF has been able to consume web services.  This means that by exposing a WCF service using the basic profile it can be consumed by a mobile application.

This raises an interesting point about working with WCF when building occasionally connected applications.  The spin from Microsoft focuses on the developer specifying the “C” (ie Contract) of WCF, leaving the “A” & “B” (ie Address and Binding) to be configured on deployment.  This approach is great, but the developer needs to consider network performance and availability in determining which binding should be used. This comes back to building applications where the user doesn’t care if it’s on or offline. 

LeadTek WinFast USB II Deluxe != MCE Compatibility

LeadTek WinFast USB II Deluxe != MCE Compatibility

Over the last couple of days I have been experiencing Consumer Electronics Anachy where I can’t seem to get anything purchased to work properly.  First there was a case of user error where I purchase the Belkin Universal Microphone Adapter for my iPod, only to discover the new video iPods are not supported.  Thankfully Dick Smith Electronics here in NZ were very understanding and refunded the money with no questions asked – VERY IMPRESSED!!!

My next purchase was the LeadTek WinFast USB II Deluxe which I purchased online from Ascent.  By the way, Ascent rock when it comes to purchasing electronics online.  If you order before midday the goods normally arrive early the following day.  All excited that I would be able to use this device to enable TV and Radio through Media Center I rushed home, pulled everything out of the box and put all the pieces together.

At this point I was running the Pre-RC1 version of Vista (Build 5536), which I had only installed last friday.  Vista immediately noticed that a device had been plugged in and prompted to install drivers.  Following the instructions (not wanting to be blamed for not RTFM) I installed the drivers and software that was packaged with the device.  Everything seemed to be going as planned. 

After the requested reboot at the end of the installation process (I thought that reboot were supposed to be a thing of the past since WinXP – why do we still need to do this in Vista??) I went to run the software.  Again I followed the instructions to configure the device to lock to NZ channels.  The channels came up clearly, but alas no sound.  I tried a few things, but figured it was probably an incompatibility with Vista.  I also ran up Media Center only to discover that it couldn’t see either the radio or tv tuner.

I decided that I wouldn’t reject the device as it might well have been an issue running on Vista.  So, 2 hours later I had a fresh installation of WinXP Media Center (I had forgotten how painful that is to do).  I again went through the installation process of the drivers and software.  This time I had a clear picture AND sounds.  Unfortunately that was the end of my luck – Media Center was still not able to see the radio or tv tuner. 

A few hours later (midnight) I gave up, packed up the box and this morning sent it back to Ascent.  Tomorrow I should get a Hauppauge WinTV-PCR tuner which will hopefully (given the “Plug and play TV tuner suppport for Windows XP Media Center Edition” they claim) work with Media Center.

Oh, and if you read my previous blog post you will realise I have no just installed the RC1 version of Vista – looking forward to tomorrow 😉

Vista’ized again

Vista’ized again

Thanks to a proactive Craig Pringle, who came to my rescue with a copy of Vista RC1 (so that I didn’t have to download it on my incredibly SLOW Woosh connection), I am now back running Vista.  Actually my setup is a little backwards as I have a desktop machine running Win2K3 R2, while my laptop is running Vista.  Why is this backwards, well one of the reasons I wanted to be running Vista is to use the new ultra slick version of Windows Media Center that is built into the Ultimate version of Vista. 

Over the last day and a bit I have installed both WinXP and Vista on my IBM ThinkPad T43.  The Vista installation was infinitely less painful.  Even the drivers (with the exception of the IBM display driver) installed ok in compatibility mode.  So two hours later I am playing music and displaying my photo album on my living room TV – very cool.