Tag Archives: microsoft

Browser wars heat up as Firefox 4 arrives

Just one week after the final release of Microsoft’s Internet Explorer 9, and here comes another major browser, Mozilla Firefox 4.

What’s new in Firefox? Performance, for one thing. There is a new JavaScript engine called JägerMonkey which is more effective than the old TraceMonkey – though TraceMonkey is still there – and there is hardware-accelerated graphics on Windows Vista and Windows 7 using Direct2D, and on Windows and Mac Direct3D or OpenGL are used to speed page composition.

On the appearance side, Mozilla has streamlined the user interface with tabs above the address bar, sorry Awesome Bar, and reduced the number of buttons. By default there are no menus visible, and you are meant to use the Firefox button at top left:

image

I was disconcerted not to find the Tools menu here and one of the first things I did was to show the menu bar, though it does spoil the new UI design.

Firefox is also coming to Android and Maemo devices, and a great feature called Sync will synchronize bookmarks, tabs, passwords and history across all the devices you use.

There is also a new privacy feature called Do not track. This is a way of telling websites that you do not wish to be tracked. Tracking is used by web advertisers to send ads based on your browsing history as seen by that advertiser. Since many websites have scripts served by the same ad agency, this can be considerable. The feature does not block tracking, but only requests not to be tracked. It is off by default and buried in Advanced options, so will probably not be very effective.

image

Firefox is an excellent browser, with many more features than I have mentioned above. A few observations though.

The new features in Firefox 4 echo many of the few features in Internet Explorer 9, which in turn echoes some of the themes in Chrome. However on my system IE9 seems to be a little faster than Firefox 4, the user interface is more polished in my opinion, and the tracking protection in IE9 is more effective since it does actually block tracking.

Then again, there are Firefox add-ons that also block tracking; and in general Firefox seems to have the best range of available add-ons, which could well be the deciding factor for many users.

Firefox 4 still has a separate search box, and in principle I like this. I find it annoying that IE9 and Chrome intermingle searches and URLs in one box. I suspect though that I am in a minority of users. If you switch between browsers, you can find yourself typing searches in the Awesome Bar anyway, though habit, so I am guessing Mozilla will cave in and combine them eventually.

Mozilla is a non-profit organisation with a strong open source and community ethos and that also may be enough reason to use Firefox.

It does face intense competition now though, and it must be a concern that its income comes largely from:

search functionality included in our Firefox product through all major search partners including Google, Yahoo, Yandex, Amazon, Ebay and others.

which in practice is mostly from Google, which has a competing browser.

Personally I think Mozilla will struggle to maintain market share for Firefox; though version 4 is having a good launch complete with a delightful Twitter party

image

and a pretty download stats counter which is currently on 2.75 million and climbing fast.

image

Disappearing items in Outlook and Exchange

I came across what looks to me like an unusual bug, most likely in Microsoft Outlook. Background: I have used the Notes folder in my Exchange mailbox for all sorts of information going back several years. This morning, I looked at the folder and found it empty, except for one solitary item. Normally there are over 1000. The surviving item was the result of my last search in that folder.

image

Now, the Exchange database is robust in my experience; and most often when items disappear it is not a bug but a result of Outlook working as designed but catching the user out in some way. Here are some common reasons:

  1. The items got auto-archived. Archives can be present on any machine on which you run Outlook. The default location for the archive folder is in a hidden location such as C:\Users\[USERNAME]\AppData\Local\Microsoft\Outlook\archive1.pst, where [USERNAME] is your Windows username. It really is hard for users to find this without expert help. How can the popular corporate mail client have usability like this? But I digress. The solution is to open the archive in Outlook and drag items back where they are wanted.
  2. The items are present, but filtered out by the view. Views in Outlook can be filtered to restrict the items on display, for example to unread items only. The user set the filter by clicking something in Outlook’s labyrinthine user interface, but does not realise it is still set. The effect is that items disappear. The solution is to reset the filter.
  3. The user accidentally dragged a folder inside another folder. This is easily done, as Outlook does not prompt you when you do this; it just moves the folder. The symptom is that a little expand symbol appears in the target folder, if it does not already have subfolders. The solution is to drag it back.
  4. The user accidentally deleted the items or folder. Outlook does not prompt when you delete items. In this case, however, the items end up in the Deleted Items folder. The solution is to drag them back where you want them.

Even if the user has subsequently emptied the deleted items folder, there is hope. Outlook has a little-known feature called Recover Deleted Items. Items go into a kind of hidden deleted items folder for a period after they get removed from the visible deleted items folder, or if they are removed with Shift-Delete. Recover Deleted Items, which is on the Folder tab in Outlook 2010 and on the Tools menu in earlier versions, will let you get them back.

My disappeared notes were nowhere to be found. Further, the evidence is that I had not deleted them, since the surviving item was the result of a search. There is no command that I know of to delete all items in a folder other than the result of a search.

Still, I wanted to get them back if possible; and preferably without restoring Exchange to an earlier date, this being a fairly slow and painful operation. I checked my laptop without connecting it to the network, to see if this had an offline copy. My laptop runs Outlook 2007. There was no offline copy, since it had synchronised subsequent to the items disappearing.

Incidentally, this is why synchronisation and redundancy are not the same as backup.

I had one more go at Recover Deleted Items. Curiously, Outlook 2007 does have a Recover Deleted Items option for the Notes folder, whereas Outlook 2010 does not. Note though that the deleted items live not in the local offline store, but in Exchange.

To my surprise, all my old notes were there. I selected them all in the Recover Deleted Items window and clicked to undelete. Now I am back where I was, except that all my old notes now have a “Created” date of today. A nuisance, but a good outcome nonetheless.

But what happened? I have two questions about this. One is how the items got deleted in the first place. The second is how they ended up in Recover Deleted Items. The documentation for Recover Deleted Items will make your head spin. It is an Exchange feature, but apparently controlled by Outlook. This knowledgebase article says it only works on the Deleted items folder, unless you are using Outlook 2007 when it works on all the folders.

Does that suggest that is was Outlook 2007 that deleted my items? But how could Outlook 2007 on one machine delete all the items except the result of a search in Outlook 2010 on another machine? It does not make sense.

My view is that Outlook has become so obscure and intricate in its inner workings that anything is possible. I think Microsoft should build a new Exchange client.

The future of Google Apps: social features, high performance spreadsheets, working offline

Yesterday I spoke to Google’s Global Product Management Director for Google Enterprise (whew!) Matthew Glotzbach, at a press briefing for Google Apps which included the announcement of Google Docs Discussions, as covered here.

image_thumb

One of the issues discussed in the briefing was Cloud Connect, which I reported on here. Cloud Connect automatically copies and synchronises Microsoft Office documents with Google’s cloud storage. There are some performance and usability issues, but the biggest problem is that you cannot edit the documents in the browser; or rather, if you do, Google makes a second copy leading to versioning issues.

Google says this is a file format issue. The online Google Docs applications cannot edit documents in Microsoft Office formats – “the document models are completely different” says Glotzbach – though it can import and export those formats. Could Google develop the ability to edit Office documents online? “It is a technical challenge, something we haven’t built yet,” he added.

It is an interesting point. Microsoft’s Office Web Apps have flaws, but they do let you maintain the same document whether edited in the browser or in the Office desktop applications. It is an example of friction if you try to live partly in Microsoft Office, and partly in Google’s cloud. It may be better to stick with one or the other.

What about offline capability, something I hear a lot as counting against Google Docs. Google had a solution for this based on its Gears add-on, but then withdrew it.

We are actively working on offline. It is extremely important. Gears was a precursor. A lot of the ideas embedded in Gears have become part of HTML5.

says Glotzbach. I asked whether this will extend to the Chrome OS netbook operating system, and he said that it will:

Chrome, as the most modern browser based on HTML 5, has the capabilities built into its core. Chrome OS as a derivative of that has those offline capabilities baked into it, so it is a matter of having applications take advantage of that.

We also talked about the new discussions feature. I observed that it seems to be just one part of a bigger story. What about discussions spanning multiple documents? What about discussions without documents? Is there any way of doing that?

“Yes, email,” he said, chuckling. Clearly Google has taken to heart that email remains the de facto mechanism for most corporate collaboration. “We’ve also got Google groups. Obviously the manifestation of a group for many users is email, that’s how they interact with it, but there is also a destination site or page for that group.”

Might Google develop its own equivalent to Salesforce.com Chatter, for Twitter-like enterprise messaging?

The idea of eventually being able to pull in other streams, the idea of social media inside the enterprise Is a powerful idea. I think Chatter is a good example of that, and others such as Yammer. I think those ideas will likely find their way into businesses. It is not clear to me that social will be a destination within an Enterprise. Rather I see it as, features will emerge in various products that leverage those social capabilities. Discussions is influenced heavily by a lot of those social media ideas, and so you can see that evolving into more integrated social capabilities across the app suite.

What about Google spreadsheets, which seem great for simple tasks and collaboration, but suffer performance and scalability issues when used with large data collections that work fine in Excel?

There’s always work to do. We have today some limitations in terms of spreadsheet size. Those are things we are actively working on. With browser technologies I actually think we have an advantage over desktop applications. If I told you I had a spreadsheet that had 5 million columns and a billion rows, there’s no desktop spreadsheet in the world that can handle that kind of volume, but because we have in essence supercomputers on the back end processing that, what you display is just a window of that large data. So we’re using clever technologies like pre-fetching the rows and columns that are just off the edge of the page, similar to some of the technologies we use with Google Maps.

But it’s an example where we have some artificial limitations that we are working to remove. Imagine doing really sophisticated non-linear calculations in a spreadsheet. We’ve got a supercomputer on the back end that can do that for you in seconds.

Microsoft’s code-first Entity Framework 4.1 nearly done

Microsoft has announced the release candidate of Entity Framework 4.1, the data persistence library for .NET, with a go-live licence. The final release to the web is expected in around one month’s time.

The big new feature is code-first, where you do not need to define a database schema or even a database model. You simply write classes that define objects you want to store, and the framework handles the work of defining the database for you.

Note that according to this article on MSDN:

The Entity Framework is Microsoft’s recommended data access technology for most types of applications.

Of course Microsoft has a long history of data access APIs and keeping up with the latest recommendation over the years has been a challenge. That said, the low-level ADO.NET data API has been in place since the first release of the .NET framework and has evolved rather than been replaced. There has been some confusion over LINQ to SQL versus Entity Framework; but note that LINQ (Language Integrated Query) works with Entity Framework as well.

So what is code-first? A good starting point is VP Scott Guthrie’s post from July last year, where he walks through a complete example using his Nerd Dinner theme. He writes classes to define two entities, Dinner and RSVP. Then he writes the following code:

image

Having defined this NerdDinners class inheriting from DbContext, he can go ahead and write a complete database application.

At this point there is still no database. In the simplest case though, you can just add a database connection to the project with the same name as the DbContext class – in this case, “NerdDinners”. The Entity Framework will use this connection, define a database schema for you, and save and retrieve objects accordingly.

The magic under the hood is an example of convention over configuration. That is, the framework will generate code and schema according to assumptions it makes based on the names used in your classes. For example, it picks up the field named DinnerID and makes it a primary key; and seeing a collection of RSVP objects called RSVPs in the Dinner class, the framework creates a relationship between the two generated tables. You can override the default behaviour with code mapping rules. There is also provision for updating the schema if you need to add or modify the fields, though this is a point of uncertainty in Guthrie’s post.

It looks fantastic; though there are a few caveats. One is that Microsoft tends to assume use of its own database managers, SQL Server or for simple cases, SQL Server CE. That said, there are drivers for other databases; for example devart has code-first drivers for Oracle, MySQL, PostgreSQL and SQLite.

Another point is that there is a trade-off when working at such a high level of abstraction. There is less code for you to write, but a large amount of generated code, which can make debugging or optimizing an application harder. This is a familiar trade-off though; and you could say that hand-rolled SQL is no different in principle from hand-rolled assembly code; you can get fantastic results but the amount of effort and skill required is greater, as is the risk of errors if you get it slightly wrong.

The Mono team has said that it does not intend to implement Entity Framework currently; there is a summary of work needed here. If you want to write .NET code that ports easily to Mono it is best avoided.

Are you using Entity Framework in new .NET projects? I would be interested to hear from .NET developers what approach you take to data persistence.

Microsoft’s stumbling Windows Phone 7 launch – from a fan

Danny Tuppeny’s post on Why I’m Close to Giving Up on Windows Phone 7, as a User and a Developer is worth a read. He describes his experience as a Microsoft-platform developer who is a natural enthusiast for Windows Phone, except that he has been unimpressed with how its launch has been handled.

The first thing he noticed was its lack of visibility on the high street – something I have also observed:

I popped into a Carphone Warehouse over the road from the office where I work on launch day. The staff knew nothing about WP7. I called all the local Orange stores, hoping for a HTC Mozart. Nobody knew when, or if, they would be getting any Windows Phone 7 devices. Wow.

That was not necessarily Microsoft’s fault. It had to convince its operator partners to promote the phone, and they had to convince retailers. All difficult with a launch device, in a market all-but sewn up by Apple and Android between them.

Over to Microsoft then, to convince the world of the value of its device. What would it take? Microsoft needed a start-up mentality. Total commitment to its mobile platform. Regular updates and bug-fixes. Responsive support.

As time went on, cracks started to show. There were bugs. Many bugs. At one point, the SMS message store for my wife got corrupt, which meant I couldn’t send, or read, text messages to/from her. I got in touch with the UK WP7 developer advocate that had sorted out the developer phone for my company, and explained the issue. After many emails going back and forth I was told that there may be logs on my phone that would help Microsoft track down this issue but security procedures do not allow them to share a tool to get the logs off my device. I was instead, told to try a factory reset. This fixed the issue, but Microsoft were no closer to finding/fixing the bug.

So what Tuppeny experienced was the opposite of start-up mentality; rather, the frustration of dealing with a huge corporation.

Next, he was disappointed by delays to the Windows Phone 7 update, promised at launch, that would add copy and paste to the operating system:

The update was delayed. And delayed. There was zero transparency from Microsoft. Despite the rest of the company making huge strides in this area over the previous few years, Windows Phone 7 is a quiet, closed box. Nobody knew what was happening with the update, and more importantly, the bug fixes.

He is not giving up:

I’m not giving up, just yet. I truly believe Windows Phone 7 can be something brilliant, but there are definitely issues that need addressing. To show how seriously I believe Microsoft could make this work, I’ve applied to go and work for the Windows Phone team.

My own perspective on this is that Microsoft as a whole does not convey commitment to its mobile platform. How can this be, when CEO Steve Ballmer makes a point of hyping the phone at events like CES and Mobile World Congress? Well, I ask myself why Microsoft has refused to use the Windows Phone 7 OS in a tablet form factor, for which it seems well suited; and I ask myself how the phone OS can survive if Windows 8 is launched on a multitude of different form factors and device types. Paul Thurrott says it:

I can and have speculated that Sinofsky, as the dominant sub-CEO executive at Microsoft now, will simply swoop in and dismantle WP when Windows 8 is ready, but that is just an uneducated outside opinion, nothing more.

That may well not be the case; but the mere fact that some signs point towards it undermines the platform.

If I were Nokia this would worry me; except that Nokia may also in fact plan to embrace some new Windows 8 thing when the time comes, and one presumes that Microsoft has shared more of its future plans with Nokia’s executives than it has with the rest of us.

What’s the story with IE9 and embedded Internet Explorer?

There is a certain amount of fuss over the fact that Apple’s latest mobile Safari does not give full performance when either embedded in another application, or pinned to the home screen.

It would help if Apple were more forthcoming on the issue; but in general you cannot assume that embedded browser components will behave the same way as the full browser, even when they share common libraries.

I did some quick experimentation with the released Internet Explorer 9 and the .NET Webbrowser control. First, I tried the SunSpider JavaScript benchmark. I had to use version 0.9 since the latest one gives an error in the Webbrowser control. No great surprise: the embedded version was substantially slower. I ran the tests separately, and for the .NET application I ran in release mode outside Visual Studio. IE9 completed in 314.6ms, the Webbrowser control in 578.2ms.

image

While that may seem a bad result for embedded IE, it could be much worse. Unfortunately I did not think to run this test before installing IE9, so I dual-booted into a Windows install that still has IE8 and ran the exact same application. At 6175ms it was more than ten times slower. It was slightly quicker in standalone IE8, but not by much.

image

Next I tried the Fish Tank demo, which tests hardware graphic acceleration.

image

There were two notable facts about my result here. First, the Webbrowser control reports itself as Internet Explorer 7. Second, the frame rate for the two instances was nearly identical. In practice it varied slightly and some of the time the standalone IE9 was fractionally faster, but still close. By way of reference, Apple’s Safari was around 10 times slower.

Update: embedded IE is slower on the Fish Tank than I first realised. 60fps is a kind of maximum for the demo. Embedded IE9 slows to 45fps with 50 fish, whereas full IE9 does not drop below 60fps until 500 fish on my system. It does makes the fans whir though!

My guess is that Microsoft is more concerned about compatibility than performance, when it comes to embedded IE. However, clearly there is significant benefit from IE9 even when embedded.

How can you get embedded IE not to report itself as IE7 and to use full standards mode by default? If it is like IE8, this can only be done on a per-application basis via setting a registry key. That is awkward for developers, who would prefer an API call to set this. I am not sure if there is any change for IE9.

Poor usability in Microsoft’s Xbox Live billing and support

Leaving aside the defective hardware in its first release, Microsoft’s Xbox console is generally easy to use. I am not so impressed with the way Xbox Live purchases and accounts are handled though.

image

Today’s story begins when I followed a link on the XBox 360 dashboard to upgrade my Live Account to Gold and get a free game: one of Kinect Sports, Kinectimals, Fable 3, or Halo Reach.

I followed the link and tried to pay. I got error 80190848. That’s right, just the number.

Of course I googled it. It seems that it indicates a problem authorising the credit card. Fair enough; the card on file was out of date. But what is wrong with a message that says “We could not authorise your payment; please check your card details”? This is poor usability.

Next, I found I could not delete the old card from my account. To do this you have to go to the Xbox Live website on your PC. However, you cannot take advantage of the special offer from the Xbox Live website. No, you have to use the dashboard, otherwise it does not apply.

OK, I left the dud card there for the moment, added a new card, and made the purchase.

That went through OK, but what about the free game? Nothing. No on-screen information. No message. No email.

OK, so I contacted support. This isn’t too good either. You go to the support page and have to find the tiny contact us link at the bottom of the page. At least that one works. Some paths through the site just don’t work at all. For example, go to My Xbox – Accounts – View Billing History. On the Billing account overview, click Contact support. You get this:

image

Lovely. Note that for Xbox, it says go to to the Xbox Live Accounts and Billing page. Yes, that was where I just came from. I click it anyway:

image

Nice.

Apparently Microsoft has lost a significant amount of money because of weak cryptography in its Xbox Live Points scheme. I wonder how much more it has lost thanks to annoyed or frustrated would-be customers?

Microsoft remakes WCF for REST and the web

WCF is Windows Communication Foundation, the part of Microsoft’s .NET framework that handles service-oriented architecture. When WCF was first designed Microsoft was betting on SOAP web services. SOAP is still widely used but since then the trend has been towards more web-friendly services based on REST (Representational State Transfer) and JSON (JavaScript Object Notation). Microsoft has always argued that WCF is flexible enough to support such alternatives.

That said, a project which I have become aware of here at QCon London is the WCF Web APIs, presented here by Microsoft’s Glenn Block. WCF Web APIs focus on support for REST, JQuery clients, and programming model simplicity for a variety of other clients such as Silverlight and Windows Phone. The bit that surprised me is that WCF Web APIs are not just another wrapper for WCF; it is a completely new library that does not build on the old WCF Service Model. The fact that it is called WCF at all is confusing, though of course it belongs in that space within the overall .NET Framework.

I have not had time to look in detail at the WCF Web APIs, but from what I have seen and heard they are well worth exploring, even if you have found the old WCF somewhat impenetrable.

Windows 7 Service Pack 1 install failures common?

There are reports coming in of Windows 7 install failures causing problems for users. There will always be some failures, but normally there is an easy way to rollback; unfortunately SP1 is making machines unbootable in a number of cases:

I have about 10pc’s in my company. They all failed this morning after the service pack 1 for windows 7 x64 systems.

I wonder on a global scale what financial damage this service pack caused. Isn’t a service pack made for fixing issues instead of creating new ones.

So now what? Tomorrow windows installs it again and the company stops working again? Is there a fixed update in the making???

A typical issue is “fatal error c0000034 applying update operation”.

If this happens to you, there are some emergency fixes suggested in the thread referenced above.

Mono project: no plans for cross-platform WPF

Miguel de Icaza’s report from the Game Developer Conference is upbeat, rightly so in my view as usage of Mono is continuing to build, not only in game development with Unity, a development tool that uses Mono as its scripting engine, but also for mobile development for Apple’s iOS with Monotouch and for Android with Monodroid. These mobile toolkits also give Mono a stronger business model; many sites use Mono for serving ASP.NET applications on Linux, but without paying or contributing back to the project.

Mono is an open source implementation of C# and Microsoft’s .NET Framework.

That said, it is interesting that Mono is still struggling with an issue that has been a problem since its first days: how to implement Microsoft’s GUI (Graphical User Interface) framework on other platforms. Mono does have Gtk# for Windows, Mac and Linux, but this does not meet the goal of letting developers easily port their Visual Studio client projects to Mono. There is also an implementation of Windows.Forms, but de Icaza mentions that “our Windows.Forms is not actively developed.”

Apparently many tools vendors asked the Mono team at GDC when Windows Presentation Foundation (WPF) would be implemented for Mono. WPF is the current presentation framework for Microsoft.NET, though there is some uncertainty about where Microsoft intends to take it. I remember asking de Icaza about this back in 2003, when the WPF framework was first announced (then called Avalon); he said it was too complex and that he did not plan to implement it.

This is still the case:

We have no plans on building WPF. We just do not have the man power to build an implementation in any reasonable time-frame.

That said, Mono has implemented Silverlight, which is based on WPF, and there are some signs that Microsoft might merge WPF and Silverlight. What would the Mono team do then?

Miguel de Icaza says:

Silverlight runs on a sandbox, so you can not really P/Invoke into native libraries, or host DirectX/Win32 content inside of it.
There are other things missing, like menubar integration and things like that.

Of course, this is no longer true on Windows: Platform Invoke is coming in Silverlight 5.

Perhaps the Mono team will knuckle down and implement Silverlight with desktop integration, which would be good for cross-platform Silverlight and compatibility with Microsoft .NET.

Then again, it seems to me that Mono is increasingly divergent from Microsoft .NET, focusing on implementing C# in places that Microsoft does not touch, such as the mobile platforms from Apple and Google.

That is actually a sign of health; and you can understand why the Mono team may be reluctant to shadow Microsoft’s every move with Silverlight and WPF.