Windows 8, a failure on tablets too.

I’m not a big fan of Windows 8, but I’m not going to waste time on what I do and don’t like about it as a desktop OS; that ground has been covered to death elsewhere on the net.

What I do want to talk about are my many doubts about its future as a tablet operating system… I don’t see this schizophrenic bastardization doing well, even on pure tablet devices.

What Window 8 is up against:

Microsoft got caught off-guard by the explosion in mobile and tablet devices, which is a fine testament to the poor state of their management. Tablets are a critical market that will decimate the established consumer PC space during the next several years. Microsoft knows this, even if they appear clueless as to how to proceed with that knowledge.

Most people don’t need a full-featured, general-purpose computer at home. They just need something that can show movies, browse the web, play music, check messages, display books, and play games. They’ll gladly give up the complexity of today’s general purpose PCs and laptops in favor of highly portable, user friendly, and easy to manage tablets. The consumer power-user of the future is just someone with a dock and keyboard for their tablet.

Microsoft is also, probably, smart enough to recognize that a large chunk of the business market will turn to tablets. Most corporate users are information consumers, not content and data producers. Tablets are a better fit for those users for most of the same reasons –they are cheaper, more portable, and orders of magnitude easier to support and maintain.

So Windows 8 is aimed at giving Microsoft a competitive tablet before the PC market collapses on itself.

The tablet market today:

Apple and Google have had years to establish and define the tablet. Both companies have decided on, fundamentally, the same approach. They up-ported phone OSes that run sand-boxed apps purchased from centralized app stores. Those apps are full-screen affairs with a heavily touch-centric UI. Alternate inputs (stylus, keyboard, mouse, etc.) are marked off as unimportant and poorly supported legacy options.

More importantly, Apple and Google have grown large and rapidly maturing software ecosystems for their tablets. They have also established a positive mind-share among the general public. Apple in particular has a substantially mature product with a vast array of capable apps. Android is struggling a bit still, but is coming along at a breath-taking pace, with major new releases appearing every few months.

Windows 8 on ARM:

On ARM devices, Windows 8 will be running hardware that is fairly comparable to that used by Apple and Google tablets. While less powerful than traditional PCs, ARM hardware promises to run cooler, have longer battery life, and be powerful enough to smoothly run a single full-screen foreground app with a few background tasks.

The key thing about ARM hardware is that these are the devices cell phone carriers will be selling. Make no mistake; those carriers are the single most important factor for competing in the tablet market.

Carriers provide ubiquitous connectivity. WiFi may be good enough for the take-it-out, set-it-up, and use-it-hard laptop world, but it falls short with use-it-anywhere tablets. Having constant connectivity is a necessity for the rapid user adoption of tablets.

Carriers also heavily discount the up-front costs of the hardware in exchange for lucrative multi-year data contracts. This makes purchasing a tablet much more appealing for most users, and it will be the deciding factor that drives many people’s decision to give tablets a try.

Microsoft doesn’t have a particularly good relationship with cell carriers these days. Based on what we’ve seen from Windows Phone 7, Verizon doesn’t even return Microsoft’s calls. AT&T will sell just about anything, but they haven’t really been promoting Microsoft’s products. And, sadly, Sprint and T-Mobile just aren’t big enough to put a dent in the overall tablet market.

As for Windows 8 itself, on ARM it is limited to running only metro apps. The metro UI is actually quite good, especially for a version 1 OS. The WinRT platform that powers metro apps is fantastic, and the developer tools are light-years ahead of the competition. And, naturally, the core Windows kernel is still an impressive feat of engineering, especially after the internal refactoring that’s been done over the last 10 years or so (yes, I hear the Linux guys grinding their axes).

Metro is, in my opinion, where the heart of Windows 8’s pending tablet failure resides.

Metro is, fundamentally, the same approach to tablets that everyone else has taken. Sandboxed full-screen apps, obtained from a centralized app store, with a heavily touch biased UI. ARM devices can’t run traditional PC apps and has no traditional desktop. Basically, apps on Windows 8 ARM devices behave just like apps on every other tablet.

Since you can’t run any of your old Windows PC software on ARM hardware, you’ll have to buy all new apps and learn how to use them. You can’t even re-use your existing Windows skills, since Metro is completely new and quite different from the traditional Windows experience of the past. A Windows 8 tablet will be just as unfamiliar to Windows users as an iPad or Android tablet.

Add to that the fact that Microsoft has a horrible public image. Lots of people love Google and Apple, but public approval of Microsoft rivals only that of the U.S. congress; and even there it’s a neck and neck race to the bottom.

To sum it up… Windows 8 on ARM will be a new and untested OS that is completely alien in how it works. It is made by a company you haven’t enjoyed doing business with in the past. It will be running on a new and untried hardware platform. It will have a small number of quality apps, and you’ll have to buy your software all over again. You’ll have to learn how to use the new apps from scratch. You’ll have to buy them from a tightly controlled app market that you’ve never done business with before. And your cell provider is probably going to do their damnedest to talk you into getting an iPad instead.

Does that sound like a recipe for success to you?

Windows 8 on x86:

Windows on x86 tablet hardware is quite different from the ARM devices. It is on x86 where the schizophrenic nature of the operating system is most apparent.

Hardware for x86 tablets is, generally, the same stuff used in laptops today. The x86 hardware will tend to run hotter, be a bit bulkier, and have much less battery life. On the plus side, x86 hardware is much more powerful, especially for running multiple desktop applications, or for heavily multi-threaded apps.

To achieve even modest battery life in the small form-factor of a tablet, most x86 tablets will have to stick with low-end components compared to traditional laptops. Metro apps will do fine, even on this lower-end hardware, but traditional desktop applications that were smooth and fast on your old laptop, will be sluggish on a tablet.

Other than expensive developer machines, I don’t expect to see a lot of high-end x86 tablets, the hardware costs too much, takes up too much space, run too hot, and requires more battery than a reasonably sized tablet has room for.

A major problem with x86 tablets is that cell carriers are not interested in selling them. They have to support the devices they choose to sell, and since these are still full-featured, general-purpose OSes, they still have all the same problems that have plagued PCs in the past; viruses, conflicting and buggy software, bum drivers, security vulnerabilities, etc. Cell carriers learned their lesson during the brief days of netbook computers, and I don’t see them lining up for another customer support ass-kicking.

The primary sales channels for x86 tablets will be the same as for traditional laptop PCs. Without cell carriers to discount the hardware costs, these will have higher up-front costs.

Getting mobile broadband working on these tablets will be just as complicated, expensive, and confusing as it is for laptop users today. You will either have to select a tablet that has the right built-in broadband card for your preferred carrier, or you’ll have to go down to the phone shop and buy a mobile hotspot. Either option adds significant up-front costs, requires specialized knowledge to setup, and still locks you into an expensive 2 year data contract (with no hardware discount to show for it).

As for Windows 8 itself, on x86 it can run both traditional desktop software, as well as the new touch friendly metro apps. While this may seem like a selling point, it presents a whole mess of new problems. Windows 8 doesn’t do much to make traditional applications touch-friendly. The on-screen keyboard also doesn’t go very far. Hopefully most of these tablets will support a stylus, which will make a decent mouse substitute for desktop applications, but the OS doesn’t  do near enough to make the stylus a compelling alternative. You can always use an external mouse and keyboard, but at the cost of the portability that makes tablets appealing in the first place.

Metro apps work fine on x86 tablets, so most of what was said about them in the Windows 8 on ARM section applies here. But metro apps have a totally different look and feel. Switching from desktop applications to metro apps is a jarring and uncomfortable experience. Furthermore, metro apps can’t interact with to their non-metro counterparts in any meaningful way, which leads to near endless user frustration. The whole experience around mixed metro and traditional applications on the same device is disorienting and counter-intuitive, and that’s the polite description.

To sum it up, Windows 8 on x86 tablets will give you an over-powered tablet for metro apps, but under-powered for desktop apps. They’ll be more expensive, bulkier, and have crap for battery life. It will be made by a company you haven’t enjoyed doing business with in the past. It will run desktop software and metro style apps at the same time, but the dual nature of the interface will probably drive you insane. Desktop applications will be difficult to use on a touch-screen, and metro apps are plain obnoxious when using a mouse and keyboard. You’ll have to buy metro apps from a tightly controlled app market that you’ve never done business with before. You will have to buy the tablets from traditional PC distributors at full price, and getting them online with mobile broadband will be difficult and significantly more expensive.

Where’s my cheese grater?

What Windows 8 could have been:

The depressing thing about Windows 8 is that it could have been great, had Microsoft just taken a different approach.

What I, and many others, really wanted from Windows 8 was an OS that brought real general purpose computing to tablets. We wanted a tablet that let us get real work done with real “applications”, not another device that just runs little finger-paint apps…

What we wanted was a tablet built for adults.

Even more depressing is the fact that Microsoft was well on their way to producing that kind of tablet on two separate occasions during the last 10 years.

First was the old Tablet PC OS, a variant of Windows XP. It was a good start that failed mostly due to internal apathy and politics within Microsoft itself; though some blame falls to the hardware, which wasn’t quite up to the job of making cost-effective tablets 10 years ago.

Later there was the courier project, a dual screen book-like tablet with a completely fresh and unique approach to the UI. It would have combined touch, stylus, and on-screen keyboard with a task-driven, workflow oriented application design. Courier had massive support and interest from the public before Microsoft killed it in early 2010.

The key thing about Microsoft’s past attempts was that they did NOT concentrate exclusively on finger-based input. Instead, a stylus was used for detailed work, while fingers were used when accuracy wasn’t an issue. Handwriting recognition via the stylus competed with an on-screen keyboard for data entry. And of course, external keyboard and mouse was a fully supported option.

Had windows 8 continued in this tradition, instead of just copying what Apple and Google were doing, it could have brought touch, stylus, keyboard, and mouse together with full-featured desktop applications. And it could have done so by extending a familiar Windows user interface, rather than chucking out 25+ years of graphical user interface evolution.

Microsoft could still have introduced WinRT, and the other technologies that are aimed at creating touch-first apps, yet let those apps run side-by-side, comfortably, and cooperatively on the same desktop with traditional applications. They could have still had an app market, without needing to force it on everyone. And they could have still forked a version of the OS to port over to ARM hardware without needing to support the older desktop software.

I mourn the OS that could have been, and I suspect that after Windows 8 falls on its face, Microsoft may never again be in a position to produce a compelling tablet OS.

Knockout.js extender for dates in ISO 8601 format

Asp.net web api is switching to json.net for data serialization, and it seems like everyone has finally decided to support the ISO 8601 date format. Since the json spec itself doesn’t specify a particular dates format, this has historically been quite a mess.

So if you are using knockout.js on the client, then you are likely to run into issues binding ISO 8601 dates to the UI. Unfortunately,  using ISO 8601 dates in knockout.js isn’t as straight-forward as it would seem. If you just shove the ISO 8601 data into your viewmodel, you’ll get the raw ISO 8601 string displayed on screen.

This is rarely what you want.

A better solution is to have knockout.js bind the date field to the UI in a human readable and writable form, but then also expose that date in ISO 8601 format when talking to the server.

This is a perfect job for a custom knockout extender.

This fiddle shows such an extender, along with an example of  it in use.

View the full fiddle here

 

 

In this case, I decided to extend the date field itself with a computed observable called formattedDate which exposes a read/write human readable value for the date. The original date field itself is left alone to track the ISO date value. Writing to either will update the other. I’ve seen other examples that show adding the computed observable to the model itself, but I felt that it was cleaner to extend the actual field rather than have two fields on the model itself representing the same data in different ways.

Note that in producing this fiddle I grabbed a good bit of helper code from around the web (why re-invent the wheel):

  • date-format.js : this is a little script by Steven Levithan that adds a format function to the date object so you can easily convert javascript dates to various human readable formats. There are dozens of similar scripts around the net, but I personally like this one for it’s simplicity, and ability to deal with ISO 8601.
  •  Date.toISOString:  is an ECMAScript 5 method. Since not all browsers support this yet, I’ve included a tiny extension that will add this to the date object on those browsers (code taken from Mozilla).
  • Date.parse:  is an extension by Colin Snover to the standard javascript parse function that just adds support for parsing ISO 8601 formats.

For any of the functionality added by these parsing and formatting extensions, you can choose other scripts or libraries to handle those jobs.