Microsoft talks about their first WP7 software update and why they need to do better

Microsoft has posted a brief note on how their first update is going plus some Q&A.  I for one am glad that Microsoft is taking a very transparent approach to the reported problems as that’s a good way to defuse any potential situation.  The meat of the post talks about their success rate so far.

Contrary to some of the gloomy headlines out there, our preliminary internal data paint a very different picture about update progress:

  • 90 percent of people who’ve received an update notification have installed the new software patch successfully. (So when your turn to download it arrives, chances are good this will be a non-event.)
  • Of the 10 percent who did experience a problem, nearly half failed for two basic reasons—a bad Internet connection or insufficient computer storage space. Luckily, both are easy to fix.

For me personally, I don’t have a problem with update problems (mainly because I haven’t been able to update nor did the update brick my phone), missing features, and bugs that need to be worked out.  Sure it’s irritating that my app can’t be found due to marketplace keyword search problems.  But it’s all part of being an early adopter.  However, from a consumer perspective I think it’s a tougher sell.

Apple received a good bit of leeway (and press worship for that matter) on any of the issues surrounding their first release.  Of course, the iPhone was a huge game changer for phones and consumers, there weren’t any good competitors at the time and they adjusted quickly (not to mention their powerful PR engine).

The landscape just isn’t the same for Microsoft.  Microsoft’s Windows Phone 7 OS may offer a different flavor than Apple or Android but I don’t think anyone can reasonably argue that WP7 is a game changer in the same way that the iPhone was when it first released.  Microsoft is late to the game and every update problem, defect or missing feature that consumers encounter is just one more reason for the consumer to switch to any of Microsoft’s competitors or steer clear of WP7 all together.

Consumer perception is the reality here and for a company that already has trouble building mindshare, Microsoft simply can’t afford to be just okay or even above average if they want to take back meaningful market share.  They need to be great at all aspects of their phone business…from marketing to simple things like the execution of updates.  I absolutely believe Microsoft has it in them, I only hope they are able to show the consumer before the consumer loses interest.

WCF Data Services – Entity Set Access Rules

WCF Data Services provides easy set up for your services.  An example of this is how easy it is to configure allowed operations on entity sets.  For this example, we have the following entity model:

image

* Note that I am not a fan of capturing and storing username and passwords.  I’d rather let someone else do this so I don’t have to.  I’ll post something on this topic in the coming weeks. *

If you generate a WCF Data Service, you’ll end up with:

public class UserService : DataService<coreentities>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

So what does this service do?  Nothing really?  By default, WCF Data Services locks down all entities so since we haven’t explicitly set what operations are allowed on the entities then we can’t do anything.  However, adding the common line

config.SetEntitySetAccessRule("Users", EntitySetRights.All);

changes this picture so that any operation (CRUD for instance) is now allowed.  However, there’s pretty granular control available.  Changing the line above to

config.SetEntitySetAccessRule("Users", EntitySetRights.ReadSingle
    | EntitySetRights.WriteAppend
    | EntitySetRights.WriteMerge
    | EntitySetRights.WriteReplace);

now allows retrieving a single user, creating a new user, and updating an existing user.  Retrieving multiple users is not allowed.  Combine this with QueryInterceptors and ChangeInterceptors and it becomes very easy to return only the logged in users user record and limits them to only update their own record. 

[QueryInterceptor("Users")]
public Expression<func><user , Boolean>&gt; OnQueryTasks()
{
    return result =&gt; result.Username.Equals(HttpContext.Current.User.Identity.Name);
}

There are a lot of different options available and thankfully the configuration model has been greatly simplified.  The days of configuring pure WCF will not be missed…at all.

At Long Last – Kinect SDK Announced

Okay, the wait hasn’t been that long but I’ve been excited about the prospect of using a Kinect on Windows.  I mean how can you not get excited about controlling your media center from the couch just by waving your hand at the TV?  What’s really exciting about an SDK for the Kinect isn’t what we already know we can do with it, but rather what no one has yet thought of.  That’s the real beauty and power of Microsoft’s announcement…changing the way we interact with technology.

Anyway, my wife has been prepped that a Kinect purchase is on the way.  Sometime in early spring should make for an exciting day…and I don’t mean our new baby’s birth either (I’ve already set up the couch in preparation of making that statement).

Here’s the Corporate Announcement of the SDK and a good post by Craig Mundie on “Imagining a NUI future.”

WP7 – Pre “No-Do” Update

Today, Microsoft mentioned that the first update for WP7 would start rolling out soon.  While not the “No-Do” update with Copy & Paste, performance improvements (the better of the two in my opinion) and things like Marketplace (definitely be nice to be able to actually find my app), it’s still a step in the right direction. 

So what’s the update?  An update to the update process of course.  All paving the way for things to come.  And as a nice touch, there’s also an update page available now.

I connected both of my phones (one for personal use and the other a test device) and sadly neither has any updates available.  Once it’s available, I’ll provide some details of how it went.

* UPDATE 2/23/2011 *

According to Mary Jo Foley, Microsoft has pulled the update for Samsung phones so it’s not looking good for getting the update on my Samsung Focus.  Sadly, still no update for my LG device.

* UPDATE 3/2/2011 *

And the pre-update finally hit my LG phone.  The walkthrough is here.  Still nothing for my Samsung Focus.

WCF Data Services – Poorly Optimized Updates

As part of the next round of features for one of my apps, I needed to enable a synchronization / cloud scenario.  I was really loathe to head down the path of creating explicit methods for every type of access I needed so I thought it would be a good time to look into WCF Data Services.  After reading up on it and setting up some of the basics, I started trying to identify a more optimized approach to the updates. 

One of the scenarios I wanted to support was updating an entity that hadn’t just been retrieved from a query.  Just like EF, WCF Data Services has an Attach method that is geared towards attaching an existing entity.  My example entity is:

image

The simplified example looks like:

Category category = new Category
{
    // Created an entity with
    // the primary key and
    // referential key.
    Id = 1,
    UserId = 1,
};

category.Name = "Updated Name";

// context is the generated proxy for my WCF
// Data Services.
context.AttachTo("Categories", category);
context.UpdateObject(category);

context.SaveChanges();

This saves (concurrency is disabled here for simplicity).  However, the save overwrites all of the other properties.  So while Name is correct, DisplayOrder, CreatedOn, ModifiedOn, and Version have all been set to their default .NET values.  As this was my first foray into WCF Data Services, this was definitely not the behavior I expected.

I dug into this further and it looks like WCF Data Services does not respect the change tracking that the underlying entity does on the client side.  The UpdateObject method marks the entire entity as modified but the SaveChanges appears to disregard the actually changes that have been specified on the entity.  I of course can get it to work correctly by either querying the entity and then modifying it or populating it from storage based on a previous query.  However, the concern here isn’t just functionality it’s bandwidth.  For large entities or a large number of entities (such as a synchronization scenario), this can lead to a lot of unnecessary traffic which is going to be problematic for mobile clients.

I found a blog post that covered this problem and a potential work-around.  To be honest though, I’m a little surprised that there isn’t support for optimizing bandwidth consumption (especially given the mobile world).  I’ve reached out to Microsoft in hopes that my findings and the alternative suggested in the post is not the entire picture here.  I’ll update this post if I hear something back.

WP7 – Marketplace Keyword Search Problems

I recently updated Tasks Anywhere to version 1.5.  I successfully published it to the Marketplace and was able to navigate to it under the Productivity category.  However, I was not able to find it when searching for any of the keywords that I had submitted with it.  I searched the forums and found a few support folks mention that it could take several hours to a few days to start showing up in the search results.  I seem to recall hearing some rumor about patience being a virtue, so I waited…and waited…and waited.  After a few days had gone by (plus a few just to make sure) and not finding anything encouraging in the Forums, I sent an email to support.

A few more days go by, and I get a very polite response back from Microsoft support which goes something like this:

I just searched your app and I was able to locate it using some of the keywords used in your meta-data. You should be able to confirm this on your end as well.

I check and I’m still not able to see it by searching for any of the keywords (like Tasks – which should be an easy match given that it’s part of the app name).  Sure, I can find it if I search for Tasks Anywhere but that seems to defeat the purpose of a discoverable marketplace.  Um…okay…I check the Zune Marketplace. Sure enough, Tasks Anywhere shows up in the keyword search results.  I send a follow up email to support to verify that it shows up on the phone and not just Zune (I know, I’m picky like that).

The device itself doesn’t always sync with the results displayed on the Zune client. I would suggest re-submitting an app update. Let me know if the problem persists after the new submission is on the Marketplace.

I send another follow up asking if there’s something I need to do differently with my submission to make sure it doesn’t happen again.

Unfortunately at times there can be an error with the submission.

Who am I to judge?…I’ve certainly had a defect or two slip by testing.  It’s hard for me to think that this isn’t a problem with something in my submission given that the free version of the app also isn’t searchable but we’ll see what support says. 

The NoDo update is rumored to fix some of the Marketplace discoverability problems (including my problem…hopefully at any rate).  Unfortunately, the update appears to have slipped to early March.  The update can’t come soon enough for me as it would be great if consumers could actually find my app. 

* UPDATE 2/21/2011 *

After posting another round of updates, I experienced a similar set of problems and sent another email to support.  Microsoft’s response was:

We are actively looking for a resolution/workaround for your issue.  Updates will be provided as they become available.

Based on this, I’m guessing I’m not the only one experiencing this kind of problem.  Hopefully it has been fixed as part of the upcoming March release.  Hang in there if you’re having the same problems.

Tasks Anywhere – Free is now available in the marketplace

Despite some minor issues publishing Tasks Anywhere – Free, it is now in the Marketplace for download.  As I’ve mentioned before, this free version of the app is available for a limited time due to our mistake with the marketplace (let’s not speak of it again).

Tasks Anywhere – Free (1.4)

imageDue to a recent problem with the full version of Tasks Anywhere and the Marketplace, we are offering Tasks Anywhere 1.4 for free for a limited time. Tasks Anywhere makes it easy for you to keep track of what you need to do. You can easily organize your tasks by active, completed, due soon or by a custom category that you specify. Need to call some people as part of your task or take a look at a few websites? It’s easy with Tasks Anywhere because you can just click on the phone number or website directly within the description. No need to remember it later or write it down.

Some of the productivity enhancements in the app are:

  • Organize your tasks by priority so you can easily find your most important tasks.
  • Auto-correcting text fields so you don’t have to worry about spelling.
  • Just click on a phone number or website you’ve entered and the app will call or open the browser.
  • Overdue items are highlighted so you can easily see what you need to take care of ASAP.
  • Always want to see your tasks by category when you first open the app? Simply set it as your default view and the app will remember it for next time. Same with linking for phone numbers and websites.
  • Easy to use designed to get you in and out of the app as quickly as possible.
    This version is provided for a limited time only and may be removed from the marketplace at any time. Please purchase the full version of Tasks Anywhere.

Please leave some feedback to tell us what you think.

 8_Settings1_TasksActive2_TasksCategories3_TasksPriorities4_TasksComplete5_TasksDate6_TaskEdit7_TaskView

WP7 – When publishing your app…the dashboard is not your friend.

I ran into a problem recently when I attempted to publish the free version of Tasks Anywhere (free version available for a limited time due to my previous disaster).  I uploaded the free version of Tasks Anywhere and after it passed certification (on a side note, I did get a warning for the first time in 5 versions) I clicked Publish to Marketplace from the app dashboard (see below).

image

Up comes the confirmation prompt and I click Ok.

image

AppHub thinks about publishing my app for a while, but then finally decides against it.  No errors or anything else, but it doesn’t publish and it continues to show that it is just Ready to publish. 

While browsing the forums before, I had come across this problem.  Apparently, the link on the dashboard doesn’t actually work (I don’t know if this is always the case or just in certain situations).  Regardless, in my case it just doesn’t do anything.  Instead, I have to go to the details of the app and from the Action drop down, click Publish to marketplace.

image

After that, everything shows up as expected with my app published to the marketplace.

image

Don’t ask me how this made it past Quality Assurance…

WP7 – Developer Tools January 2011 Update Available Now

Well…really this was available on Friday the 4th, but given that I just got back from a mini-vacation and I just received the email from Microsoft it seems like a good time to post it.  In case you haven’t been following this update is really to prep developers for the upcoming release of the OS update.  In terms of new functionality and features, this release is definitely a little light.  The major new feature is the promised copy and paste (yes, you can paste as many times as you want).

More exciting in my opinion, is the improvements Microsoft has made to performance.  For instance, the game “de Blog” loads in nearly half the time it previously did.  This is something we will all benefit from on a daily basis, and performance is crucial if Microsoft wants to live up to the promise of getting you in and out of your phone as fast as possible.  Right now, it is faster to check Weather Channel on my iPhone than on my Windows Phone but I’m hoping this is one less problem we’ll have to deal with.  Anyway, the emulator reflects these new performance enhancements.

All that and some defect fixes and we’re on our way.  Most applications won’t have to re-compile / re-submit to take advantage of the enhancements so it’s a win for everyone.

Check out Brandon Watson’s post on the subject here or you can skip straight to the download.

Goodbye dasBlog…hello WordPress

dasBlog is no more…at least for me.  I originally started using it because Scott Hanselman’s mentioned it many times over the years and I’m a fan.  However, it hasn’t seen an update in almost two years.  So with that, goodbye dasBlog and hello WordPress.

Why WordPress instead of something like BlogEngine.net?  To be honest, I want and need to focus on my core competencies of which blogging is nowhere to be found.  WordPress provided a good fit as it’s an industry leader, relatively cheap upgrades, and has a good comment moderation system (which was one of the main things I was looking for).  Of course it’s PHP, but once I stifled the gag reflex I could see it had real merit.

All in all, pretty easy to get everything up and running (still waiting for my custom domain registration to go into effect).  My main beef is in the realm of including code in the posts.  I looked around a good bit and the best I found is adding the .  But seriously, this is the best we can do?  Here’s what I had before (which thanks to VS 2010 HTML Copy was as easy as copy and paste):

image

image

Of course, WordPress hates beautiful code and so refuses to display the same thing in any form of human readable code.  After adding the sourcecode tag, I get the following:

image

image

Sure, it’s better than a garbled mess but it’s nowhere near the beauty to which I’m accustomed.  Truthfully, it’s not terrible and is thankfully pretty easy to use but I expected more from an industry leader.

Follow

Get every new post delivered to your Inbox.