Nick's .NET Travels

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

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.

IE7 and a little feature to make your UMPC play nice

One of the issues that was discovered during the long beta phase of IE7 was that the new generation of mobile devices, the UMPCs, do not play nice straight out of the box.  By this I mean that the TIP doesn't work well with web forms that require text input.  This is a result of a language setting, as quoted from a source within Microsoft (see here for the full discussion):

We were able to reproduce this problem. Our initial investigation indicates that something is misconfiguring the Tablet OS by turning off support for advanced text insertion into all applications. This is completely unsupported on a Tablet PC and we're working to track down how this setting got turned off. In the meantime, I'd like to confirm that this is the entire cause of the problem you are seeing.

Please can you check this setting:

Control Panel -> Regional and Languages Options ->  Languages -> Details -> Advanced -> "Extend support of advanced text services to all programs"

This checkbox should always be checked on a Tablet PC. If it's not, please try checking it, rebooting and then see if the problem in IE7 evaporates.

For more information on IE7 make sure you pay our resident IE guru, Sandi Hardmeier, a visit.

Visual Studio Codename Orcas October CTP

In my previous post on the September CTP I mentioned that there was a new smart device wizard.  I'm not sure if the September CTP had this but I just noticed that in the October CTP, which you can download here, there is a .NET Compact Framework 3.5 option in the version dropdown:


Of course this is wishful thinking as the .NET CF v3.5 is not available in this download - selecting this option yields a project that references the v2 assemblies.

Wellington - I'm not really a coffee addict...

As the end of my stay here in Wellington draws to an end (Meg and I return to Perth, via Sydney, on the 14th December) it is time to review one of our on going dilemmas - where to get the best coffee?  This of course depends a lot on the day of the week, time of day and the area of town we are in.  Wellington for the most part is inundated with cafes.  Unfortunately this doesn't have a strong correlation to quality.  There are a large number of chains (Starbucks, Gloria Jeans to name just two) as well as a variety of coffee blends.  This combined with a large variation in the consistency of barristas has resulted in a lot of frustration on our behalf.  Anyhow, the short list of good cafes where we have consistently had good coffee.

- Liquidate (morning coffee en route to work)
- Astoria (where the Geekzone coffee group meets on Wednesday around 1:30pm)
- Meat (despite being a butcher serves great coffee)
- Cafe Lido (great food and coffee, day or night)
- Arbitrageur (watch out for the deserts as they are absolutely delicious and to date this has served the best coffee in town!)

I suppose I should also mention the Utopia cafe in Ohakune where Meg and I spend a number of cold, wet and miserable days huddling out of the weather unable to go snowboarding.  With just over a month to go, I'm sure that we will experiment with some more cafes but in the meantime I will leave you with this rather unusual (and a little worrying) picture of a flat white we were served today: