Nick's .NET Travels

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

You know you are a Beta junkie when.....

After numerous woes with my upgraded Vista machine (IBM T43 laptop which I upgraded from RC2 to RTM) I decided last night to commit and rebuild my machine. The good news is that installation went without a hitch and that it found drivers for all the hardware (of course this doesn’t include any of the IBM software to drive the hardware buttons etc but then again I don’t have the overhead of poorly coded, often bloated vendor software). The bad news is that despite my best intentions to only install rtm'd products I once again found myself installing non-supported or beta software. The list of applications/versions I'm waiting on are


VS2005 SP1 (although VS2005 will run there are issues with UAC - which I am determined to leave on this time)

Live Mail Desktop (I need this as it seems to be the only RSS product that uses the IE7 common feeds store, doesn’t break Outlook2007 and has an unread items view – don’t ask me why IE7 doesn’t have this)

Virtual PC 2007 (for doing presentations and installing beta software ;-)

OneCare (maybe - atm i have AVG installed and that works a treat. Why if i'm only using the computer for personal stuff would i pay for a OneCare subscription?)

VS2005 extensions for WPF, WF (to do work with .NET Framework v3)

SQL Server 2005 CE

Windows Mobile Device Center (so I can’t connect and establish partnerships from my WM device to Vista – replaces ActiveSync)


I must admit although this looks bad you have to remember that Vista is technically not shipping until early next year to retail customers.  Whilst I’m sure that there will still be some teething problems I would suggest that most of these products will have shipped by then.  The Test pass for a new operating system is much longer than for any of these standalone applications which means that their release cycle can be significantly shorter.  This also means that Vista could be RTM’d without being delayed for these products to RTM.


One last comment on this matter.  The reason that I try to avoid installing Beta software on my production machine is that MOST software vendors (including Microsoft) can’t write a good installer to save their lives.  A good installer will not only correctly install the product it will uninstall the product and any traces that the product exists.  If there are local data files that the application creates when it is run, there should be prompt in the uninstall process that allows the user to decide if they want to include those files in the uninstall process.  There should be no registry traces of the application and the uninstall process should replace any files that were overwritten as part of the install process.  Unfortunately for most companies the installer is the last thing to get built and is seldom tested with the same rigour as the product itself.

Why Sale/Buy when you can Lend/Borrow?

I was reading Peter’s comments about New Zealand company TradeMe this morning and I must admit I have had mixed experiences. In one case the seller didn't get back to me in a timely manner so I cancelled the trade, he then proceeded to black mark me. The other couple of times I have used the site it has been very efficient for buying items.


This also reminded me that a local group have been using Ruby on Rails to build a site where you can borrow or lend items, called LetUseIt. It works on a similar principle to TradeMe as it generates revenue as a percentage of the lending fee but also includes tracking assets for insurance purposes. Having only recently gone live it will be interesting to see this site grow. 

Honey I shrunk the framework (again)

Just when you thought there were enough versions of .NET Framework (v1, v1.1, v2, v3, v3.5 + .NET CF v1, v2) the clever guys at Microsoft have announced another version entitled the .NET Micro Framework.  As Daniel Moth points out they have just released a product sheet.  They have also just released a webcast which you can view here and for a limited number of participant there is a beta program available via (listen to the webcast for more information on how to get involved).  As I mentioned in my previous post the Vista SideShow is powered by the .NET Micro Framework so this is a great opportunity to jump the gun and start building really cool gadgets.

Gadgets, Gadgets, get your Gadgets here....

So you have probably heard about Live gadgets and if you have been playing with Vista you will have see the SideBar Gadgets but what you may not have seen are SideShow gadgets.  What's a SideShow, well it is the small display on the outside (typically) of a laptop that could show things like the time or information about the song that is currently playing.  It is very similar to the reduced display that some mobile phones have on the outside.  Well the great news is that it is going to be possible to build gadgets for the SideShow.  Without steeling his thunder I suggest you check out Daniel Moth's blog and the the SideShow blog for more information.  If you are interested, you should also keep tabs on the new .NET Micro Framework.

Microsoft Sync Services

On Wednesday morning Steve Lasker delivered his second public webcast (the first is available for viewing here) on the up and coming Microsoft Sync Services. For anyone who has worked with sql mobile, now sql server ce again, one of the biggest issues is how to replicate data  between a central server. Whilst there are all sorts of ways that a custom solution can be written (for example datasets across webservices or an Xml blob via a raw http request) there are current two mechanisma that are built into the platform to support syncing with sql server, RDA and Merge replication. RDA is essentially a client configurable set of queries that can be used to pull down a specific set, or subset, of the server data. Merge replication is a server configurable publication to which the client can subscribe. Both of these mechanisms work via an IIS virtual directory making it possible to sync across the web. This also leads itself quite nicely to securing the data as SSL can simply be applied to the webserver.


There are significant limitations to both RDA and Merge. Which is where  MSS comes into play.  Instead of being just a client or server technology, MSS appears to have both client and server code that is written by the application developer to control how the sync process behaves.  This includes whether the sync will be done directly (which would be the preference on a LAN) or indirectly (ie via a webservice proxy).  It also includes hooks so that the application can handle conflicts and get access to updates before they are applied.  This looks an exciting product and I can’t wait to see the CTPs.


Also, it is worth pointing out that a fellow MVP, Bill Vaughn, has released his first eBook on SQL Server CE.  Check it out at

OneCare "appears" to fail as first line of defence

This morning I was in the middle of listening to a webcast when OneCare pops up and declares that it is going to apply an update.  I'm getting used to the annoying bubbles that keep popping up to indicate the OneCare is yet again update (probably my fault for not disabling them) but this time the update notification took the form of a dialog that needed to be dismissed and looked like the following:

Now I'm no security guru, but the fact that "OneCare will not be available" while it is doing the update leads me to believe that my computer is exposed to viruses, hackers etc.  In actual fact I suspect hope that this is just the wording of the dialog and that in fact OneCare is still functioning as my virus protection and firewall while the update is being applied.  Perhaps this wording needs to be improved to encourage users that their computer is still in fact safe.

My privacy has just walked out the door....

Earlier this morning I was enquiring about the Scitech .NET Memory Profiler so I sent them an email to their support email address.  As their website indicates they use FogBugz and have clearly put in place an automated system that takes your support request and adds it into FogBugz VERBATIM.  The following screenshot indicates that not only have they included all the header information (including my email address, which I have removed from the image) it also includes any attachments, which in this case is my vcf (which has all my information such as mobile phone, email, im address etc).  This information is available to anyone without a login!!!! Where's my privacy.  As you can see from my follow up email I was a little less than happy.


Following Mitch’s lead I thought that I would try out BlogMailr.  Like a lot of people I know, outside of Visual Studio, I spend a large proportion of my time in Outlook.  Prior to using BlogMailr I was using the beta of Windows Live Writer which was quite nice, but yet another application I need to ALT-Tab between.  Now I'm able to write and submit blog posts ust by sending an email to the BlogMailr server.  It takes care of posting the item to my blog that I've configured via their website.  If you have multiple blogs, you get a different email address to send the items to (great idea for multi-posting!).

A couple of great points about BlogMailr is that not only does their website use Community Server, it is also free for personal use!!! 

WPF/E is not a Me Too technology

According to Joe Stegman WPF/E is not a "me too" technology that follows in the path of Flash and other rich media technologies.  While there are many aspects of this proposed technology that would appear to indicate it is following this road, the biggest distinction is that it is designed with Microsoft developers in mind.  This means (hopefully) a reduction in the use of Javascript and an increase in the amount of managed code we have to write for a rich web experience. I must admit at this point I can't wait to see the CTPs as I think that the "proof is in the pudding".

Using the Using Statement

Rory shows us a couple of examples of how to use the C# using statement.  Thankfully VB 2005 also includes this statement so that VB.NET coders can write:

Using ts As New Data.SqlClient.SqlConnection, _
          ts2 As New Data.SqlClient.SqlConnection
      'Do stuff...
End Using

What I would like to see is a compiler that is intilligent enough so that if I declare an IDisposable object on the stack (ie as a method variable) it will automatically call dispose when the method exits.  This would mostly negate the need for the using statement.  Oh, wait doesn't the Managed C++/CLI compiler do this....

Email practices: When to use the Important flag

This morning I received an email from the Customer Service Coordinator of a 3rd party control library vendor which was marked as Important.  My eyes picked up that email and I immediately opened it, only to find out that they were only soliciting feedback on the control library we have recently purchased.  What, this isn't important; well, it isn't important to me! This raised the question, when should you use the important flag?  In my mind the Important flag is used for just that Important emails, for example:

  • Information about "dangerous" bugs/fixes (ie security related issues that should really be fixed immediately)
  • Information that is important to the recipient of the email (this includes the previous point) such as a server outage or overdue invoices etc
  • Time limited information/tasks - for example I participate in a number of beta programs that require feedback by a given date.  If I haven't provided feedback prior to that date, I would find it acceptable to be emailed with an "Important" reminder.  Similarly offers that are only available for a limited time (assuming I have subscribed for notification) would also be acceptable.

Ok, so it's kind of hard to encapsulate usage of the Important flag into a one-size-fits-all rule.  I guess point 2 really highlights where I'm coming from in that the email should be Important to the recipient of the email, after all if the email wasn't important to the sender, they wouldn't have sent it ;-)

The other area where this point is relevant is when posting to a newsgroup/email list with the Important flag and/or URGENT in the subject line.  Here the unwritten rule is NEVER do it (unless it is a vendor help group/list, in which case feel free to use as many flags or keywords as you like - after all it is really a race to see who can get a response first).  Most groups/lists are driven by the community with everyone contributing voluntarily.  To say that your question is Important/Urgent is the equivalent of saying "my question is more important that anything else that has gone before, or is to occur after, this message", which is clearly not the case and is offensive to everyone else on the group/list.

Another short rule: Be curtious and think of the reader of you email/message!

(PS: Another couple of irritations are where images are included in emails (thankfully my email client strips those off - thanks Microsoft!).  Where this is really irritating is where the images include content and there is no text alternative)

Comparing SQL Server Express with SQL Server Compact Edition

Steve Lasker has posted a great whitepaper that describes the differences between SQL/e and SSCE.  The document goes into quite a bit of detail on how the two solutions differ from an operations point of view (one runs as in-process, the other as a service etc).  I think it stops short of providing any real guidance as it doesn't give any good scenarios or examples of using either technology. 

In addition it would be great to see more detail regarding the table of differences. One of the concepts that is referenced in this table is the ADO.NET Sync Framework.  More information on this can also be found on Steve's blog.

Q4Tech Mobile Updater Application Block released

Following my post yesterday I am please to announce that the first release of the updater block is now available for download via CodePlex. We are still working out the details of how this application block will be integrated into the Mobile Blocks CodePlex project but hopefully we will be able to adopt a model where the community can contribute to the ongoing development of this, and other, application blocks for mobile developers.

Updater Application Block for Windows Mobile (almost)

Some of the developers that worked with the Patterns and Practices team at Microsoft to build the Mobile Client Software Factory have been hard at work on a port of the Updater Application Block.  The guys from Q4Tech are almost at a point where they are going to release the application block into the wild so keep an eye on the Mobile Blocks project (see releases) across at CodePlex for more information.