Talking SQL Server CE with Ron Jacobs on Arcast

Talking SQL Server CE with Ron Jacobs on Arcast

Earlier this year at TechEd Australia I sat down with Ron Jacobs to record a show for Arcast.  SQL Server CE was still called SQL Everywhere back then but don’t be confused this is still great technology.  Head to Channel 9 and have a listen to what we are doing here at Intilecta and what I did at AutumnCare on building occasionally connected applications.

OneCare "appears" to fail as first line of defence

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.

WebCast: Offline Data Synchronization and Caching for Smart Clients

WebCast: Offline Data Synchronization and Caching for Smart Clients

Steve Lasker is going to be covering the new synchronisation framework that will be released in the next version of SQL Server CE.  Register here as you don’t have much time as it is scheduled for tomorrow morning (really, really early Australian time, luckily I’m here in NZ where it is an acceptable 6am call)!

My privacy has just walked out the door….

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.

BlogMailr

BlogMailr


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

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

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

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

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

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)

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.

SQL Server Compact Edition RC1 released

SQL Server Compact Edition RC1 released

Over at the SQL Server Compact Edition blog they have the announced that RC1 of SQL Server 2005 CE is now available for download.  With the recent name changes the RTM release of this product has been delayed but you can expect that this RC will be pretty close, if not exactly, what will ship in the RTM build.  For more information spend some time hanging out at the SQL Server Compact Edition Forum

IE7 and a little feature to make your UMPC play nice

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

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…

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:

Side by Side assembly versioning

Side by Side assembly versioning

Maurice de Beijer provides a great summary of how assemblies are loaded by the .NET runtime. Towards the end he makes the point that “only the GAC allows for side by side installation of multiple versions”.  This is not 100% true – the .NET runtime is capable of loading multiple versions of assemblies regardless of where they come from.  In fact this is one of the strategies that Intilecta uses to dynamically render page content.  While the application is running new content can be downloaded across the wire and dynamically loaded.  Where content changes all we have to do is version the appropriate assembly and the application can load the new content without having to shut down. 

The other point to make is that you don’t even need to persist assemblies to disk as the .NET runtime is capable of dynamically loading assemblies from a byte array or a stream.  This is particularly useful where assemblies are being streamed across the wire.

A learning experience with SQL Server CE

A learning experience with SQL Server CE

Yesterday I encountered two things while working with SQL Server Everywhere (yes, I know it has been rebranded, but I was working with the CTP which still has the SQL/e branding).  The first thing was that apparently you can’t create a SQL Server CE database (in code) on a storage card in the emulator.  Ok, so this sucks for a number of reasons, the obvious one is how do you debug your application if you don’t have a real device and your database is larger that the available memory in the emulator (or you just want to test that your application works with saving data to the storage card)?

The next thing was a case of Microsoft errors that drive us insane or make us laugh: “A read operation from the Internet returned an invalid number of bytes”.  Well no kidding, its not like you can do:

Dim iReader as new InternetReader(ReadOptions.TheLot)
While iRead.Read
    …… Process the internet
End While

Who ever came up with that error message either thought that it would never get called or had a very limited imagination.  For anyone who has worked with Merge Replication or SQL Server CE you will completely understand the world of pain that is associated with debugging errors that frequently arise for no particular reason.  The documentation is by far the worst I have ever seen from a Microsoft product and despite the best efforts to improve it, still provides little or no guidance around fixing replication related issues.  What I would like to see is a well documented list of all the possible errors/exceptions that can be emitted, complete with a list of what causes those errors and the resolution options.  Clearly attaching a debugger at a client site is not an option.

Skylook v2 – The ultimate Outlook to Skype connector

Skylook v2 – The ultimate Outlook to Skype connector

Have you ever:

– wanted to call someone using skype directly from within Outlook

– wanted to record a skype call

– wanted to setup skype as an answering machine and for it to store the messages in outlook

– wanted a reminder service that will SMS or CALL you if you are about to miss a meeting

– wanted an alert if an important email arrives while you are away from your desk

Well, look no further, Skylook v2 has it all.  I was introduced to Skylook about a month or so ago when I took over hosting The Microsoft Developer Show and have found it to be an invaluable tool.  In this post I hope to show you a quick overview of the product.

Firstly, after installation the first time you go into Outlook you will be prompted to activate the product.  The product will operate fully for a short time period without activation, after which some of the features are restricted until you do activate the product.  After the activation prompt, you will be prompted to configure Skylook.  This process is relatively painless and it pays to go through this process as it does provide a mini-tour of the feature set.

After initially configuring the product the Outlook toolbar will appear as follows (this is illustrated in Outlook 2007).  Note that the names in the toolbar are fictitious and the names depend on what matches the addin can make within the currently selected item.  The drop down against each name allows you to call them on Skype, use Skype out to call a real phone number, chat with them or send them an SMS. 

 

 If you select to call someone from the toolbar Skylook will open Skype and automatically call the number/contact you have selected.  Depending on the options you have selected it will also launch the recording window, as shown below.  This window will also be launched when you instantiate a call from within Skype.  As you can see the recording window provide an easy to use interface that allows you to monitor the call and recording progress.

The Advanced tab gives you more information about the status of the call recorder.  At the time of writing the file size indicator doesn’t do a very good job of indicating the size of the recording.  In contrast the other indicators, in particular the Buffer % Full, lets you monitor the reliability of the recording.  For example if either the Buffer % Full reaches 100% or the Seconds Dropped increases from 0, you are likely to have noticable audio degradation on the recording.  In the case of a slow computer you may need to adjust the recording format to decrease the sampling rate.

From the Tools icon on the Toolbar you can open the Options window, on which there are five tabs.  The General tab, shown below, lets you adjust settings that are specific to the whole application such as the default country code and where to save recorded conversations.

The Answering tab lets you enable the Answering Machine functionality within Skylook.  Skype already has a built in answering service (ie VoiceMail) so this feature isn’t a particularly good reason alone to go out and purchase Skylook.

The Toolbar tab allows you to configure how many contacts are displayed and whether captions are visible for toolbar buttons.  This is particularly useful if you have a number of Toolbars open in Outlook

 

The Recording tab allows you to configure the audio format of the recordings and which voices are record.  In the case where you are having issues with the recording process you can select “Store raw audio….” which is useful if you need to work out where any issues may be.  While trialling this version of Skylook I was also using the beta version of Skyle 2.6.  Unfortunately these two versions did not play well together and resulted in distorted audio.  By looking at the raw audio it was evident that the voice being recorded through Skype (ie the remote party) was being corrupted which led me to try version 2.5 of Skype, which works great.

The last tab is Alerts which allows you to configure a number of basic alerts, or to go into the advanced alerts where you can configure an alert based on your parameters.  An alert can be used to SMS, Call or forward messages to your mobile, making use of your Skype Out credits.

I hope this summary proves useful as this truly is one of the simplest yet most useful applications I have come across in the past couple of months.