Monday, May 06, 2013

Mary Jo reports that Windows 8 sales are roughly on par with Windows 7 sales. Which is good news for Windows 8, because Microsoft said (at the time) that Windows 7 was the fastest selling OS to that point.

She also points out that actual usage of Win8 isn’t terribly high at this point – which isn’t at all surprising (see my blog post on if Windows 8 is a success).

The real value of the numbers just provided by Microsoft is that they are an apples to apples comparison between Win7 and Win8, and that they demonstrate that Win8 is following roughly the same track as Win7 in terms of production and sales.

That’s good news, given that Win7 is (by nearly any measure) extremely successful, and is considered by many people to be the best OS Microsoft has released. Windows 8 on an x86 machine can basically be viewed as a faster version of Windows 7, plus the ability to run WinRT apps, and so I pretty much think of Windows 8 as a slight improvement over the already excellent Windows 7.

As Mary Jo notes, we don’t know if the 100 million figure includes Windows RT. At this point I’m not sure if that really matters – at least not from a business app dev perspective. Windows RT can only run WinRT (Windows Runtime) apps, and the WinRT dev platform is too new and immature to risk targeting it when building large enterprise apps (not to mention the side-loading cost issues).

At this point most organizations appear to be building new smart client apps using WPF, and of course they continue to maintain a great many Windows Forms apps. The strength of Windows 8, as I see it, is that it remains an extremely relevant and potent business app platform via its desktop mode, which runs Win32/.NET apps at least as well as its predecessor.

If Microsoft resolves the side-loading cost issues so licensing and deployment becomes reasonable for small, medium, and large organizations I do think WinRT has a reasonable shot at being the successor to Win32/.NET for business developers. In another version or two it should stabilize and mature to the point that it is pretty comparable to WPF, and thus is attractive and useful to C#/XAML developers. That’ll probably take a couple years, which is also the timeframe that corporate IT groups will probably be willing to consider upgrading from Windows 7 to Windows 8.

In summary: good Windows 8 sales today means that betting on WPF for smart client development should be pretty safe, and will hopefully have a decent migration path to WinRT in 2-3 years.

Monday, May 06, 2013 10:30:54 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [6]  | 
 Thursday, May 02, 2013

This question keeps floating around the Internet, and I thought I’d give my viewpoint.

Obviously I have no more intel on sales numbers than anyone else (which means pretty much nothing). So anything anyone says at this point is pretty much speculation, and that includes me too.

So rather than speculate uselessly, let me provide a bit of narrative.

Almost nobody buys operating systems. This is a truth that has existed since the dawn of the concept of an operating system. Operating systems exist as an abstraction over the hardware that allow developers to build applications without having to deal with the low-level details of interacting with hardware.

Of course over the past couple decades “operating system” has come to include a lot of things. At a minimum these days people expect the OS to include drivers for every type of device ever invented (or to be invented), a nice user interface, and a set of pre-installed “first party” apps. None of that stuff actually is the OS, but most people view it as part and parcel.

Even so, very few people buy an OS. They buy a device (computer, ultrabook, tablet, phone) because the device enables them to do something useful. More precisely the device allows them to run software (apps) that do something useful.

(I’ll freely admit that I’m biased. As a software developer, I do tend to see software as the most important part of this whole picture. And I think I’m correct, because if you give anyone a device and tell them they can’t install any software on that device I can pretty much guarantee you that they won’t be able to use the device for much of anything.)

I’d also suggest that there are two broad categories of “person” in this discussion.

There are regular individuals like you and me. We buy devices ourselves, investing hundreds or thousands of dollars so we can do things like access the Internet, write letters, manage home budgets, send email, play games, etc. Our motivations in buying a device are to gain access to the apps that allow us to do those things we consider worthwhile in life – whatever that might be for each of us. And yes, people like me also get joy out of the device itself because we’re geeks, but most people just see these things as extremely useful tools or toys.

There are organizations (which are also apparently “people” thanks to Citizens United). They buy devices for their employees so the employees can do things that provide productivity and value to the organization. Some organizations are OK with employees using those devices for personal reasons, others aren’t. In almost no case does an organization buy devices other than because an employee needs the device to perform important aspects of their job.

I keep running into people who think there’s no difference between these scenarios. And maybe I’m a little slow, but I really struggle to see how organizations are going to start buying (and supporting) devices outside the scope of enabling employees to be productive. Nor do I see how dock workers, administrative assistants, lab technicians, and other employees are going to start purchasing devices for the intent of using them at work. Actual human people buy devices to make their personal lives better, not because they intend on using them as an alternative for a work-supplied device.

(In other words BYOD is pretty much bunk – but that’s another blog post.)

To judge the success of Windows 8 then, one must evaluate it in the context of people buying devices for their own use, and organizations buying devices for their employee’s use.

 

From what I’ve seen there is some resistance on the part of people in terms of buying Windows 8. On the tablet side of things there aren’t a lot of apps, and people buy these devices for apps, not the device itself. On the ultrabook, laptop, and desktop side of things people buy a PC because they want to run PC software – all of which runs on Windows 7 just fine, so there’s no obvious reason to go to Windows 8. But there is an obvious reason not to go to Windows 8: everyone knows it is different, and people fear change.

So if I’m a regular person looking to buy a tablet, I’ll probably gravitate toward the tablet with the most apps – hence an iPad or perhaps a Kindle Fire. And if I’m a regular person looking for personal productivity with Office, CAD software, or gaming, I’ll be perfectly happy with Windows 7 (or even Vista) as long as my current computer keeps working.

Please note that I am personally not a regular person in this context. I’m a geek, and thus have been running Windows 8 since long before it was released. But I have sat in restaurants and overheard conversations about Windows 8 by random people – conversations that lead me to be pretty confident that my previous paragraph is correct.

None of this says that people won’t slowly adopt Windows 8 as their existing computers need replacing, because they probably will. And as more people actually start using Windows 8 and tell their friends and neighbors that it really isn’t that scary, then the fear of change will fade. And with any luck the number of apps available for WinRT will grow relatively fast so people will consider buying Windows 8 tablets because they feel confident those devices have good and useful apps.

Does this mean Windows 8 is a success or failure? I don’t know. We are in uncharted territory to some degree, because today’s computers (with their i3, i5 and i7 processors) are essentially identical in performance to computers from three years ago. For the first time in recent memory (and perhaps ever) computers have stopped getting faster, eliminating one of the primary reasons why people would buy a new computer. Now the only reason to buy a new computer is a complete failure of your existing computer, and computers often last a very long time…

In other words, Windows 8 adoption in the personal space might be slower than in the past (we don’t really know). But if it is, I strongly suspect one major factor has less to do with Windows 8 than the reality that few people are motivated to spend hundreds of dollars to buy a computer that isn’t any faster than the one they already have.

 

On the organizational side of things the dynamic is entirely different. Organizations try to minimize the number of device types, operating systems, and operating system versions because it is extremely expensive to support more than one. Organizations use “apps” (applications, or enterprise software) that is required for the organization to function. When those apps fail the business loses money by the second – often many thousands of dollars per second. Upgrading from Windows X to Windows Y is never done without extensive testing to ensure those important apps work on the new operating system version. And such upgrades are done according to an orchestrated plan that minimizes the time the organization is forced to support both versions.

This is nothing new. This is the reality of enterprise computing that has existed for as long as I can recall (thus dating back well more than 2 decades).

Strangely, I’ve had people argue that this dynamic is no longer true. That organizations are now going to adopt BYOD, even though that directly means supporting numerous devices, operating systems, and operating system versions all at the same time. I’m not sure what these people are smoking, nor am I sure I want to try it because I think whatever they’ve smoked caused some brain damage. But I could be wrong – perhaps organizations are ready to radically increase their IT support costs in order to allow employees to use random hardware devices and operating systems? Or perhaps there is no increased cost to IT because (as one person told me) it will now be the employee’s responsibility to ensure they have a working device at all times – thus all IT support costs will be born by the end users. Something I’m sure will thrill the minimum wage workers in the warehouses who’ll apparently now have to buy and support computers they’d never have purchased before?!?

Back in the world of the sane, what is actually happening is that a great many (most?) organizations are just now migrating from Windows 2000 or Windows XP to Windows 7. This is because those older operating systems are off support, or will be off support in April 2014. No more bug fixes. No more security patches. Nothing. I truly pity any poor souls left on XP a year from now.

This migration from XP to 7 is not cheap. It is not only an IT issue in terms of upgrading hardware, drivers, and operating system installs. It usually also means updating or replacing ancient enterprise software that was written in VB6 or PowerBuilder or other technologies that haven’t been current for many years.

As a result, almost no organizations even have Windows 8 on their radar at all. Virtually nobody is planning for a Windows 8 migration, because they are just now getting to Windows 7. In fact, my informal polling while speaking at conferences around the world is that nobody expects to move to Windows 8 until 3+ years from now.

Does this mean Windows 8 is a failure? Of course not. Remember, these organizations are just now moving from XP to 7. Windows 7 was released in 2009, and only eclipsed XP in 2012 in terms of installs.

Following that time schedule, we won’t know of Windows 8 is a success or failure until around 3 years from now: in 2015.

 

In summary, is Windows 8 a success or failure? I can’t say. Nor can anyone else, even though a lot of people (including myself) speculate about it quite a lot Smile

The space to watch is the personal/individual computing space, because that’ll move somewhat faster than the organizational space.

Like every previous version of Windows, we won’t know the success or failure of this version until 3+ years after its launch, because enterprises always move at a stately (if not glacial) pace.

Thursday, May 02, 2013 10:39:31 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [3]  | 
 Wednesday, March 06, 2013

I know a lot of people have complained that Windows 8 replaced the start menu with the start screen. Personally I rather like the start screen in Windows 8, and haven’t felt the need to seek out a start menu replacement (like the popular Start8).

However, like a lot of people I run Win8 on multiple monitors (on my desktop and when I dock my laptop). Being able to run WinRT apps in only one window, and to really only see one app at a time is extremely limiting to power users or developers or people with multiple monitors.

About 90 minutes ago I installed ModernMix, a program from the creators of Start8 that basically fixes this whole issue. It allows WinRT apps to run in windows, so you can have multiple WinRT apps running at once, and on different monitors.

It is literally like unlocking the potential of Windows 8! Just 90 minutes later my love of Win8 and WinRT has jumped an order of magnitude (and keep in mind, I already really liked Win8).

The ability to have some of my favorite WinRT apps running and visible while using other WinRT apps and/or Win32 desktop apps improves productivity immensely.

For example, I really like Xaml Candy (http://apps.microsoft.com/webpdp/app/8b9e2d69-feed-409c-befb-4ea97f97351a) and have always wished I could have it in one monitor while using Visual Studio in another. Now I can!

Similarly, the ability to have Feed Reader (http://apps.microsoft.com/webpdp/app/d03199c9-8e08-469a-bda1-7963099840cc) sitting in a window on my second monitor makes it much more useful. It never needed to consume all of my massive monitor space, and now it fits in a much more appropriately sized window.

Seriously, installing ModernMix is like night and day in terms of productivity for Windows 8. If you use multiple monitors and/or are a power user or developer you really want this tool.

(note, I don’t work for those guys, nor did I get the product for free – I’m just so happy with the results I wanted to share!)

Wednesday, March 06, 2013 4:31:46 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [4]  | 
 Tuesday, March 05, 2013

I’ve now done four posts where I summarize Microsoft’s side-loading licensing scheme in terms of just how it works, what it looks like from various business perspectives, and why I think they have designed this scheme to compete with the wrong target (iPad instead of HTML 5).

  1. Cost to enable side-loading on a Windows 8 device
  2. Windows 8 LOB deployment ‘story’
  3. Perspectives on WinRT app licensing
  4. Windows 8 WinRT sideloading update

If you work for a large enterprise with EA/SA agreements and an IT staff that manages all your domain-joined Windows 8 Enterprise workstations you can probably stop reading now. You are the one demographic that is well-covered by the existing licensing model.

If you are a small or medium business, or an enterprise (such as a franchise or co-op org) where you have lots of non-domain joined machines, machines that run Windows 8 Pro, Windows RT, or the lowly “Windows 8” basic edition, then read on.

After my first four posts I heard from community members and people inside Microsoft – “ok tough guy, you’ve said what’s wrong, now how would you do it right?” (to paraphrase of course Smile ).

My first reaction is that this isn’t my job. If Microsoft wants to make WinRT unpalatable for business developers so we all switch to cross-platform HTML 5/JavaScript (h5js) then who am I to stop them? Besides, don’t they have high-paid experts to figure this stuff out, and so why should I give my thoughts for free?

My second reaction is that from 2001-today I’ve had the pleasure of working with .NET, and these have been the most enjoyable years of my professional career. Although TypeScript appears to offer some reasonable wrapper around the horror that is JavaScript, I’d much prefer it if Microsoft didn’t destroy the idea of building WinRT apps with XAML/C#/VB.

So here are my thoughts – though please keep in mind that I’m not a licensing expert, nor did I stay at a Holiday Inn Express last night.

To be successful, WinRT licensing needs to address its real competitor: h5js and/or WPF+ClickOnce. If WinRT is going to levy an additional licensing cost above those technologies, then WinRT must have commensurate benefits to offset that cost.

What is the cost to deploy an h5js app? Effectively zero, because the app downloads from a web deployment server into a browser. The browsers are all free, there’s no per-workstation license to enable downloading HTML or JavaScript, so the cost is essentially zero.

What is the cost to deploy a WPF app with ClickOnce? Effectively zero, because the app downloads from a deployment server and is installed on the workstation through a standardized ClickOnce client process. No per-workstation license is required – as long as you have a legal copy of the OS, .NET (and thus ClickOne) are free.

I’ve already covered the costs of deploying WinRT apps in the current scheme in my previous blog posts. Those costs can easily add up to thousands or even millions of added dollars – just for the privilege of deploying your own app to your own workstations.

So does WinRT have benefits over h5js or WPF that make it work this added licensing cost? Probably not at this time. It is a version 1 technology and so is less mature than h5js or WPF. Unlike h5js it isn’t cross-platform, and unlike WPF it doesn’t have a simple pre-built deployment technology like ClickOnce. It does have two benefits: WinRT apps can run on ARM devices as well as Intel devices, and WinRT offers a superior model for building touch-enabled apps. I’ll let you decide if those benefits are worth thousands or millions of extra dollars.

Assuming we agree that WinRT isn’t good enough to justify the added licensing fees over its competition, the question becomes how to license WinRT side-loading in a competitive manner.

Microsoft has expressed the (imo) very valid concern that they don’t want to enable the free-for-all side-loading model of the Android world. And I agree – the last thing I want is for my kids to yet again be able to download random software from random locations that are infested with viruses and malware. I really want control over what gets into public stores. I want my software to be vetted when it comes from public locations.

At the same time, I absolutely don’t want added cost or overhead or complexity for apps coming from my corporate marketplaces. I’m in consulting, so the model must allow for Magenic to have a marketplace for our employees, and our consultants must also be able to leverage the marketplaces of our clients so we have access to their apps while we’re working for them.

Thus far I’ve accumulated some requirements:

  1. No per-device licensing fees
  2. One device must be able to access multiple marketplaces
  3. Public marketplaces must be controlled (or perhaps there is just the one Microsoft Store)
  4. People do work from home, where the “Windows 8” edition is most common, so it should support side-loading as well
  5. InTune is a fine idea for deployment, but it shouldn’t be the only option – customized/tailored “marketplace” experiences should be possible

No per-device fees

Let’s start with this requirement. Microsoft doesn’t charge extra for us to use Windows for business, and it makes no sense as to why they think they can charge an extra tax for us to use WinRT for business. This includes discarding the $30/device fee as well as not requiring the InTune per-device/per-month fee.

If InTune has enough other value people will buy it, but h5js and ClickOnce don’t have a monthly fee, so WinRT needs a comparable model.

Multiple marketplaces

As I noted above, employees of a company like Magenic need access to the Magenic marketplace, and to the marketplace of the company(ies) where they are working as consultants. And one would hope we’d have access to the Microsoft Store as well! This implies a way for each device to access multiple “stores” or marketplaces.

Public marketplaces

I’m rather neutral about public marketplaces beyond the Microsoft Store. My only requirement here, is that if Microsoft did allow such a thing to occur then they should be able to revoke any public marketplace’s “license” or “key” if that vendor becomes a source (intentionally or unintentionally) for malware. The bar for any public marketplace should be as high as the Microsoft Store in that regard.

Or perhaps a better solution is to make public stores legally liable for malware. So it becomes possible for me to seek financial or legal recourse if a marketplace allows malware to slip through onto my device?

Work from home

It is patently absurd to think that I can go to Best Buy and purchase a lowly Windows RT tablet and it can side-load business apps, but the most common Windows 8 edition (Windows 8) can’t be used to run my business apps. I can’t envision any justification for this at all, so clearly this just needs to be fixed.

No InTune requirement

I understand the value of InTune – it does a lot of cool stuff, one of which is deployment. But not everyone wants all that other stuff, and making InTune the only real ClickOnce replacement makes WinRT uncompetitive. Again, h5js and ClickOnce have no monthly cost, and WinRT needs a zero cost option as well.

The result

As a result I think the answer is to license deployment servers not client devices.

And for public servers these licenses should be revokable so Microsoft can easily shut down rogue public marketplaces. I’ll leave the public marketplace concept alone for the rest of this discussion, as I’m much more interested in corporate marketplaces.

To make this work for a small business (think 2-500 employees) the cost of a deployment server license/key must be quite low. A 5 person company might spend 10’s or low 100’s of dollars by not beyond that. I can see how Microsoft might want the cost to scale somewhat, so you could envision deployment server licenses working against a “registered device” model. I honestly think Microsoft would be best served by not charging an extra fee, but if they feel they must find a new revenue source perhaps it could work like this:

  • <=100 devices $100
  • <=500 devices $500
  • <=1000 devices $1000

MSDN subscribers should get a <=10 device license as part of their subscription, allowing for software development and testing.

EA/SA customers might get some deployment server license “for free” as part of their negotiated contract.

Interestingly, Windows Phone 8 already has a corporate marketplace concept built into the phone, where you can register your phone with a corporate marketplace. They (to my knowledge) only support one marketplace, but the core idea is there.

To make this work, a server admin must be able to revoke the registration of a client device (employee leaves, device stolen, etc.), and there should probably be a pre-built WinRT app users can run to register their device with a marketplace (perhaps based on access to an appropriate email domain – like WP8 again).

So a Magenic employee would run this WinRT device registration app and enter their magenic.com email address. Perhaps this causes the marketplace server to send an email to that address with a confirmation hyperlink. The user clicks that hyperlink to confirm and the marketplace completes registration of that device, making the apps in that marketplace available to the end user.

Conclusion

Again, I’m not a licensing expert. I’m simply looking at the competitive landscape and trying to figure out how to make WinRT financially competitive with h5js and WPF+ClickOnce. Assuming that WinRT has no incredible value proposition over its competitors (and I don’t see that it does) then it must provide a cost-comparable licensing/deployment model.

Given that h5js and WPF+ClickOnce have a zero licensing/deployment cost, the goal should be for WinRT apps to have a zero licensing/deployment cost.

At the same time, I surely don’t want public marketplaces to come into being without some substantial recourse and penalty for any such marketplace that becomes a vector for malware.

I think something along the lines of what I’ve proposed here can achieve these goals, and can make WinRT into a viable business development platform in the future. My guess is that Microsoft has a few months, perhaps 18 at most, to make this happen (or at least to lay out a clear roadmap) before business developers really start migrating away from Windows toward h5js in an effort to ensure their careers remain vibrant and healthy.

Tuesday, March 05, 2013 2:33:53 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [7]  | 
 Tuesday, February 26, 2013

If you’ve followed my blog recently you know I’ve done a lot of research into the licensing around deployment (side-loading) of business apps on Windows 8 (Windows Runtime aka WinRT).

  1. http://www.lhotka.net/weblog/CostToEnableSideloadingOnAWindows8Device.aspx
  2. http://www.lhotka.net/weblog/Windows8LOBDeploymentLsquostoryrsquo.aspx
  3. http://www.lhotka.net/weblog/PerspectivesOnWinRTAppLicensing.aspx

As a result of this two things have happened.

First, I’ve had some interesting conversations with a few people at Microsoft. Some understand the issue, others just don’t get it. If you think this is an issue I suggest you have conversations with any Microsoft people you know because that’ll help educate and pressure them to fix the problem.

As an aside, it is hard to talk to the right people at Microsoft because the Windows Division owns all this stuff and they don’t talk to developers. In fact, they are almost constantly behind what’s known as the “veil of silence” – essentially unable to discuss anything interesting without risk of being fired. This unwillingness to talk to developers on your own platform is pretty ridiculous, and makes it virtually impossible to generate enthusiasm for building apps on the platform. I have hopes that Sinofsky’s departure from Microsoft will eventually allow them to come to their senses…

Second, I’ve had a number of people ask if I think Windows and/or Microsoft is done for on the client, at least in terms of business software development.

Although I think that’s a very real possibility, given just a bit more maturity in the HTML 5/JavaScript (h5js) space, I don’t think the Windows client is a lost cause yet either.

The thing about the licensing/deployment side-loading story is that Microsoft has it set up to be perfectly acceptable to large enterprises. Those orgs almost certainly already have an EA/SA and use SCCM and run domain-joined Windows Enterprise machines. Their Windows RT or other Win8 mobile devices are covered by the SA and/or companion device licensing. So their only incremental cost is the $4/mo/device InTune cost. That’s extremely comparable to the cost of MDM products for iPad/Android devices.

Where the Microsoft story falls short is in the SMB (small-medium business) space where businesses probably don’t have those bigger contracts and IT infrastructure. That’s where the incremental costs start to add up pretty fast (as per my previous blog posts and Excel cost calculator). Of course the long tail suggests that there are a lot more SMB orgs than enterprise orgs, so the poor story for this segment of the market is pretty devastating.

I keep posting and talking bluntly about the licensing/deployment story because I think we all need to be aware of what’s going on. We all need to know it so we can make near-term decisions regarding the use of WPF, h5js, and/or WinRT. And because those of us who enjoy building smart client Windows apps can pressure Microsoft into fixing the licensing story before it is too late.

Finally, speaking of “too late”, that’s a slippery phrase.

Businesses are mostly just now upgrading to Windows 7, and won’t go to Windows 8 for 2-4 more years. So in a sense you can argue that Microsoft has a lot of time to fix the side-loading story, because almost no one is going to care about this for a long time anyway.

On the other hand, the developer community tends to move a bit faster. We’re a fickle bunch. If we don’t perceive WinRT as a viable future platform for business apps then we’ll start retooling our skills to something else in order to preserve our careers. That won’t take 4 years. I suspect Microsoft has less than 2 years to get developer buy-in to WinRT or the siren call of h5js will become too much to bear.

At the moment of course, h5js has no rational or consistent smart client deployment story either. Although its ability to support smart client business development is maturing pretty fast, the only widespread deployment model still requires a real-time connection from the client device to a web server. Once the industry settles on a way to package and deploy “h5js apps” for offline use (and I believe that _will_ happen) then Microsoft’s ability to generate enthusiasm for WinRT becomes much harder.

I see this as a race. Can Microsoft generate enthusiasm around WinRT in the business developer world (by fixing the side-loading issue and by actually talking to developers at all)? And can they do that faster than the h5js world can devise and settle on a reliable smart client story of their own (because they already have developer enthusiasm).

In short:

  1. Microsoft has the technical issues pretty much solved, but seems intent on alienating business developers.
  2. The h5js world has a lot of developer enthusiasm, but has yet to tackle or solve some critical technical issues

It’ll be fun to see what happens over the next couple years.

h5js | Windows 8 | WinRT
Tuesday, February 26, 2013 12:21:15 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [6]  | 
 Sunday, February 03, 2013

Note that this is one post in a series. Make sure to read them all. This post provides an index to the set.

In my previous blog post I discussed the Windows 8 WinRT app licensing story for business apps. In that post I looked at the sideloading licensing model from a scenario-based perspective: large enterprise, medium, small, home user, developer/tester.

In this post I walk to explore a different way of thinking about the licensing. In fact, I think this is the core reason Microsoft’s licensing is so out of line with most of our expectations.

The core question: What is the primary competition Windows 8 faces?

Is it the iPad? Android tablets? Generally speaking BYOD.

Or is it WPF+ClickOnce, or HTML 5 and JavaScript? Generally speaking existing business app dev tools.

I’m increasingly confident that the Windows Division at Microsoft views the primary competitor as being BYOD. My evidence here is that Apple and the Android world do levy extra “taxes” for deployment of business apps to their devices. And they have built an ecosystem where additional infrastructure and tooling is required to manage mobile devices in an enterprise space. None of those things are free – hence everyone pays this “tax” to support BYOD in the enterprise.

Windows 8 appears to be following this model as well, by requiring extra licensing, infrastructure, and tools to support Windows devices in the enterprise. Basically Microsoft saw that people were willing to pay a BYOD tax on the other platforms and thought they’d be competitive by levying their own comparable tax for Windows 8. This makes pretty good business sense at one level, because it is a whole new revenue stream for Windows that hasn’t existed in the past.

The thing is, most existing Microsoft developers are looking at this new Windows 8 licensing/infrastructure and wondering what in the hell is going on???

We’ve spent the past 20 years or so building on the Microsoft platform from when it was a toy OS in the early 1990’s, to when it became an enterprise player in the 2000’s with .NET. Throughout all that time Microsoft’s licensing enabled us to easily build and deploy business apps on all Windows machines. No extra tax for business apps over consumer apps.

So now we’re looking at future app dev platform strategy. Where should we put our energy today so we’re best positioned into the future. And I’d suggest (coming from a Microsoft platform background) that we have three primary choices:

  1. Continue with WPF+ClickOnce in the hopes that Microsoft either continues to support Win32/.NET far into the future
  2. Switch to cross-platform HTML 5 and JavaScript to decouple from any specific client OS, including Windows
  3. Focus on Windows Runtime (WinRT) because it is clearly the future of the Microsoft client platform, even though they want to increase the costs of deployment to their platform

Nobody I know of is considering switching to iOS as their primary enterprise client platform. Nor are they looking at Android in that light. Hence Microsoft (imo) is making a major mistake by creating a BYOD-based licensing scheme for Windows 8, thinking their competition is iOS/Android, because what they are really doing is providing a financial dis-incentive for us to move to WinRT, and by extension a financial incentive for us to either stay on WPF or move to cross-platform HTML5.

Personally, having built a bunch of stuff for WinRT, I really, really, really wish Microsoft would drop this financial dis-incentive. I very much enjoy building WinRT apps with .NET. It is an absolute joy to finally be able to build a .NET/XAML app that integrates so smoothly and deeply into the Windows platform. Given a chance, I’ll absolutely embrace a WinRT-based future for smart client business app development!!

But assuming Microsoft maintains the current licensing model I think WPF or HTML5 are the more likely smart client business app dev platforms.

WPF+ClickOnce is really nice of course. It offers a great deployment model without any new license/infrastructure tax. Working in .NET/XAML is a true joy (imo anyway). And I think this is a great stop-gap approach if you assume Microsoft will fix the WinRT licensing story to eliminate the added deployment tax. Or if you assume Microsoft will waver in their focus on WinRT and will return to building on Win32.

I very much doubt they’ll return to any focus on Win32. I think that platform is now pure legacy. By extension WPF is also pure legacy (along with Silverlight and Windows Forms). So I don’t hold out any hope on that front.

I do hold out hope that Microsoft will fix the WinRT licensing story. They just need to realize that the primary competitor is HTML 5, not iOS.

So let’s talk about HTML5. From a Microsoft developer perspective switching to HTML5 as a smart client platform means complete retooling. Throw away all you know about C#/VB, the .NET framework, BCL, etc. Start over with HTML, CSS, and JavaScript, plus myriad open source JavaScript libraries. There is no “single platform” for HTML5 like there is for .NET – the “platform” varies radically depending on which particular open source libraries are chosen for any specific app dev effort. And those libraries are much more fluid and less predictable than the .NET platform, so it is virtually impossible to predict how they’ll evolve over a 3-5 year period, much less a 10 year period (which is a preferable planning horizon for an enterprise app).

As a result, the real costs of building and maintaining apps in HTML5 are way higher than in something like .NET. On the other hand, you get the ‘benefit’ of always living on the bleeding edge. This might make it easier to retain top dev talent, even while making it harder to build and maintain major enterprise apps. Oh, and remember that top dev talent costs more, so odds are that even low-end dev shops will end up paying a lot more for their apps, because you just can’t expect what has been traditional mainstream dev resources to be real productive in such a dynamic environment.

That’s not a slam on mainstream dev resources btw – that’s just reality. Most business developers much prefer to learn a toolset and platform and ply those skills for many years. They prefer to focus on the business problems more than on platform problems. As a business software manager I do want a coding cowboy or two, but I want the majority of my dev team to focus on the business more than on the technology. At the moment though, HTML5 doesn’t afford that option because the platform is too dynamic and volatile – so it is pretty unrealistic to think that mainstream dev resources will be nearly as productive as they were in .NET or Java or VB or C++/MFC.

All that said, the HTML5 platform is maturing. Dev tools (including from Microsoft) are improving rapidly. There’s the possibility that a subset of the myriad open source libraries will become a de facto standard for the platform as a whole. The next version of JavaScript looks like it will get some important language features for modern enterprise app dev. In other words, I really believe that if the enterprise app dev world does shift its focus to HTML 5 that the platform will stabilize over a few short years.

And in a sense Microsoft is “subsidizing” our move to HTML5 through the WinRT deployment tax. The money you would spend to deploy your WinRT business apps can be viewed as a type of savings you can apply to offset the increased cost of building and maintaining your HTML5 apps.

I strongly doubt that offset is enough to actually cover the increased costs of HTML5, at least in the short term. But again, if we all move to HTML5 I think the platform will stabilize over a few years, and as a result the costs of app dev and maintenance will go down over that time as well.

If you stop and think about this for just a second, it is pretty clear that this is a horrific outcome for Microsoft. To think that they had subsidized their entire “Microsoft developer community” to move to a cross-platform technology that eliminates the need for the Microsoft Windows client would be incredibly disheartening.

And this is why I think that, at some point in here, someone in a leadership position at Microsoft will realize the mistake they are making, and they’ll fix the WinRT licensing/deployment story so WinRT is at least as attractive for business apps as WPF+ClickOnce or HTML5.

Or they won’t come to that realization. In which case I strongly suspect Windows will become “just another BYOD OS” alongside iOS, Android, and ChromeBook. In that future the client device is a pure commodity play, because all devices will run all apps. The only way people will choose one device over another is by price and cosmetics – much like we choose automobiles today.

All automobiles do the same thing: get us from point A to point B. But we choose various brands for cosmetic reasons, or for price, or for status.

The thing is, it is hard to predict what such a fundamental change would do to Microsoft, Apple, or Google. Odds are it wouldn’t be ideal for Microsoft or Apple, because their offerings have higher costs – so they’d probably end up more like BMW and Cadillac, while most of us will run cheaper-but-still-perfectly-functional ChromeBook devices (the Ford/Chevy/Toyota equivalent).

On that note I’ll leave you (dear persistent reader) with one final thought.

Business moves slowly. Most organizations are just now moving to Windows 7, and won’t consider moving to Windows 8 (or any other alternative) for 2-4 years. As a result there’s no reason for panic. Keep building WPF+ClickOnce, or start a retooling strategy to HTML5. But remember that there’s no rush. Microsoft could easily fix the WinRT deployment tax problem in the next few months and your investment in WPF/Silverlight will translate pretty nicely to WinRT. Even your retooling costs for HTML5 wouldn’t be wasted given that you can build WinRT apps with JavaScript and WinJS as well as you can with .NET/XAML.

As a Microsoft evangelist I personally hope they make WinRT an attractive business app platform. That’d be the best possible outcome imo.

But if they don’t I’m pretty sure we’ll see a migration to HTML5 (well, really HTML6) over the next few short years, and that’ll be as exhilarating as when I switched from DEC/VAX programming to Windows Smile

Sunday, February 03, 2013 1:35:58 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [7]  | 
 Tuesday, January 29, 2013

Note that this is one post in a series. Make sure to read them all. This post provides an index to the set.

This is the second blog post covering the basics around deployment of business apps (LOB apps) on Microsoft’s new Windows Runtime (WinRT) platform. The first post focused on direct costs, this one focuses on different business scenarios.

In my view the deployment story for business apps targeting WinRT is not currently good. I’ll break the story into parts depending on your scenario:

  • Developer/tester
  • Large enterprise
  • Medium enterprise
  • Small business
  • Home users (employees who work from home sometimes)

Before I get into these scenarios I want to cover the use of the Microsoft Store for business app deployment.

LOB deployment via Windows Store

A Microsoft employee suggested that what I should be recommending is that people deploy their business apps through the Windows Store. So let’s think about this a little bit, because I don’t think it is real workable.

First, suppose I build a mission-critical business app in WinRT and submit it to the store. Around 8 days later (give or take a week) the app will be approved and available from the store. My users start using the app and then we discover a bug, or a critical regulatory feature change, or some other scenario where the app is useless until fixed. So we fix the app and 8 days later (give or take a week) the update is available for my users. So during that 8+ day period what happens? Do we revert to a manual process? Do we just lose money? Do we send employees home? Obviously the store is useless for any important business app deployment scenarios.

Second, I build my non-mission-critical (really unimportant) business app in WinRT and submit it to the store. The store approval process requires that Microsoft employees manually run each part of the app. So do I give them access to my live data? My staging servers? Do I set up servers just for the Microsoft certification process? How much extra code/functionality in the client app and/or server-side infrastructure is necessary to enable Microsoft’s people to test my app? And what legal recourse do I have if Microsoft accidentally leaks my proprietary data or my trade secrets? Do I get to sue Microsoft if their disgruntled tester makes off with some of my key IP and ruins my business or my reputation? Again, the store is totally unacceptable for business app deployment scenarios.

Given that backdrop, the only alternative is ‘side-loading’. This means deployment of apps directly to computers, workstations, PCs, devices – without going through the store.

My previous blog post covers the various side-loading options, but not from a business scenario perspective such as developer/tester, large enterprise, small business, etc.

Let’s look at each scenario in turn.

Developer/tester

If you are a developer or tester the deployment story is actually quite good. In Visual Studio 2012 you can run a wizard that will create an appx package and associated ps1 (powershell) script that can be used to install your WinRT app on any Windows 8 machine (Windows RT, Windows 8, Windows 8 Pro, Windows 8 Enterprise). The app will work for a few weeks before the developer key and/or app test certificate expires – which is fine for dev/test purposes.

You can also use the remote debugging tools in Visual Studio to deploy an app to your Windows 8 machines, and you can then attach your debugger remotely. For example, you can debug your app while it is running on a Windows RT tablet – all from your primary dev workstation. Very nice!

Large enterprise

If you are part of an enterprise that meets the following constraints there’s the start of a pretty decent WinRT LOB deployment story:

  1. All your workstations run Windows 8 Enterprise
  2. All your workstations are joined to your domain
  3. You already use Microsoft System Center to manage and deploy programs to your workstations

In this case you can push a group policy to your domain-joined Win8 Enterprise workstations to enable side-loading of WinRT apps, and you can push those apps to the workstations using System Center. Obviously this requires a pretty mature IT staff, procedures, and infrastructure, but that is true of most large enterprises.

So far so good. But most large enterprises will also have Windows RT tablets, and the story is a little different for these devices because they can’t join your domain, and aren’t running Win8 Enterprise.

For non-domain devices (Windows RT, Windows 8 Pro, Windows 8 Enterprise) you need to buy a special side-loading key for each device at $30 per device. These licenses are sold in packs of 100, which is probably not a big deal for an enterprise. You must install these keys on each device – no reuse or transfer of a key is allowed. Then you can purchase an InTune add-on for SCCM and pay $4/device/month that allows you to manage and deploy apps to the non-domain devices.

My device cost calculator spreadsheet can help you figure out the cost for your organization to cover the $30 unlock keys and InTune subscription costs.

Update: More info from Microsoft indicates that if you have an EA and Software Assurance (SA) then your domain joined Windows 8 Enterprise machines come with a "companion license" allowing you to unlock one Windows RT device without the added $30 fee. Presumably you'd talk to your EA account rep to get these companion keys.

If you add all these costs, you can see that it will cost 10’s of thousands of dollars (or more) to install and update WinRT apps across your enterprise. Realistically probably 100’s of thousands of dollars. So you might ask why you’d pay all that money when you could keep using WPF and ClickOnce for no additional charge. My only answer is that in a large enterprise perhaps a few hundred thousand dollars isn’t a big deal? (yes, that was sarcasm)

Medium enterprise

If you are part of a medium enterprise the story is generally worse. In these types of business the following is probably true:

  1. You have a mix of Windows 8 Pro and Windows 8 Enterprise
  2. Not all workstations are joined to the domain
  3. You probably don’t have a full Microsoft System Center infrastructure in place

Remember that only domain-joined Windows 8 Enterprise machines can use group policy to enable side-loading. All non-domain machines require a $30 per device side-loading key to unlock this feature (again, sold in packs of 100). This is also true of Windows RT devices of course. Surprisingly, it is also true of domain-joined Windows 8 Pro machines – they still need the $30 unlock key.

So imagine you have 240 domain-joined Win8 Enterprise machines – you can unlock them for side-loading and use SCCM plus InTune for deployment. If you don’t have SCCM fully in place then you might need to use sneaker-net to deploy and update your WinRT apps by running PowerShell scripts on each device.

Then imagine you have 40 domain-joined Win8 Pro machines. For these you need to buy 100 unlock keys ($3000) and manually unlock side-loading on each machine. Again, you’ll need SCCM+InTune or sneaker-net PowerShell deployment to get the apps installed and updated over time.

Finally, imagine you have 170 Windows RT devices – most probably not owned by your company, but by employees. You’ll have to buy 200 unlock keys ($6000) and manually unlock side-loading on each device. Remember that these keys aren’t transferable, so when an employee leaves, or chooses to replace their device, you’ll lose (and often need to replace) that unlock key. Obviously this will require some sort of key management scheme (Magenic is happy to help you write a custom solution of course Smile ).

For all these machines/devices you will need SCCM+InTune, or have an IT intern or someone run around and unlock PowerShell so people can run scripts. Then perhaps you can train at least some of your users to run the PowerShell scripts from a network share to install/update the apps.

The InTune add-on for SCCM costs $4/device/month, on top of the $30/device unlock key cost. My device cost calculator spreadsheet can help you figure out the cost for your organization to cover the $30 unlock keys and InTune subscription costs.

Odds are you’ll look at this and ask why you have to spend many thousands of extra dollars to replace WPF and ClickOnce (no unlock fees, no manual processes, etc). And I can’t argue with you – I can’t see how any medium sized business would write a WinRT LOB app at this point.

Small business

If you are part of (or more likely the owner of) a small business the story is pretty much non-existent. In this case the following is probably true:

  1. You have a mix of Windows 8 and Windows 8 Pro
  2. You have no domain
  3. You have no Microsoft System Center
  4. You have no IT staff beyond the “consultant” you bring in a couple times a year to fix network or printer problems

First off, the Windows 8 edition of Windows 8 can not do side-loading so it is impossible to deploy business apps on those machines. Microsoft tells me that you should have bought Win8 Pro in the first place, and that it is technically illegal to use Windows 8 for non-personal use. So you’ll need to upgrade those machines to Windows 8 Pro.

Next, you’ll need to buy the $30 unlock keys in packs of 100 for your Win8 Pro machines. You probably have around 20 computers, so that’s $3000 – more like $150 per machine than $30, but at least you have enough keys to accommodate future growth? And of course you’ll need to manually install the side-loading keys, unlock PowerShell, and use sneaker-net to install/update your WinRT apps.

The same is true for the handful of Windows RT tablets you or your employees are using. That’s another $3000 to get 100 unlock keys. You probably only have 8 such devices, so that’s a mere $375 per device. Again, the whole manual unlock, install, update process must be handled.

As a result, I can’t see where any small business would ever consider building a WinRT business app. It is way cheaper to keep building apps in WPF or PHP or whatever you are using today.

Employees working from home

The final scenario is cross-cutting, in that large, medium, and small businesses all have employees who occasionally (or frequently) work from home using their own personal computers.

Most of these personal home computers are retail purchases, and so run Windows 8. Not Pro or Enterprise. As a result they can not side-load apps and therefore can’t run WinRT business apps at all.

One interpretation of this move is that Microsoft has decided that we all work too much, and they are helping us achieve a better work-life balance by making it unrealistic to work from home.

Another interpretation is that they want employers to spring for the upgrade fees (plus the $30 per device) to get all home computers running Windows 8 Pro and unlocked for side-loading. It is a great way to potentially double the licensing revenue of Windows on a per-employee basis I suppose.

Or perhaps the thought is that nobody buys home computers anymore, and that we all bring our work laptops home with us to work at home. I suppose this is pretty valid, given that a lot of people have quit purchasing home PCs because they have Macs or iPads and Xboxes for gaming?

Yet another theory is that Microsoft wants all businesses to set up a HyperV server farm so home users can RDP into virtual Windows 8 Enterprise machines to do their work from home.

Personally none of these make much sense to me.

In any case, this is the first time in the history of Windows (going all the way back to around 1990) where am employee can honestly tell their boss that they can’t bring their work home with them because their home computer isn’t legally allowed to run the business software necessary to do work.

Summary

Right now it appears that Microsoft has worked very hard to devise a licensing and deployment scheme for WinRT apps designed specifically to discourage the creation of any WinRT business apps. Whether this is intentional or accidental I can’t say, but it is surely the case that no responsible business or IT manager could look at these scenarios and think that a move to WinRT for business app development makes sense at this time.

Hopefully Microsoft examines their current scheme and recognizes the severe disincentive they’ve created for WinRT development, otherwise I see a very long and bright future for WPF, ASP.NET, and PHP.

Tuesday, January 29, 2013 10:57:03 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [7]  | 
 Friday, January 18, 2013

Note that this is one post in a series. Make sure to read them all. This post provides an index to the set.

I’ve been doing a lot of research around the possibility of building business apps for Windows 8 (WinRT) – focusing a lot on deployment.

The short story with deployment is summarized in this table:

  On Domain Not on domain
Windows RT n/a w/ key
Windows 8 n/a n/a
Windows 8 Pro w/ key w/ key
Windows 8 Ent yes w/ key

The “yes” designation means you can deploy to these devices at no additional cost for licensing. You will still need to figure out how to actually push the apps to the Windows 8 Enterprise computers. The options are the same as what follows where I discuss the “w/ key” designation.

The “w/ key” designation means you need to buy a $30 side-loading product activation key that is per device, and which is non-transferable. So to side-load apps on your Surface RT (for example) you need to buy a $30 key. These keys come in packs of 100, so the minimum price is $3000.

Also, you need a way to actually deploy your app. Your options include:

  • Sneaker-net with a USB key
  • Run a PowerShell script from a network share
  • Deploy via System Center (assuming you have this level of IT infrastructure)
  • Deploy via InTune, Microsoft’s cloud service, where they even provide you with a ‘corporate marketplace’

Of the four, I suspect most organizations will laugh at sneaker-net and having their users run ps1 scripts, leaving the last two options. I also suspect a lot of orgs can’t use System Center, at least when deploying to BYOD and home user devices. Beyond which, if you use System Center and want a corporate marketplace you’ll have to write that yourself. At normal consulting costs I suspect that’ll cost between $50,000 and $100,000 to build and get deployed in your organization.

Update: There is an InTune add-in for System Center. That add-in allows the use of the corporate marketplace WinRT app, and it costs $4 per device per month (plus the cost of SCCM of course).

So this leaves InTune as a primary option. InTune costs $6 per device per month.

Update: There is a more comprehensive $11 per device per month InTune subscription as well.

Let’s assume that your organization has 100 Windows RT or Windows 8 Pro devices, so you buy $3000 worth of side-loading keys. And let’s assume you use InTune. Finally let’s assume your devices have a 3 year life – which is pretty typical for corporate devices where you buy a service agreement from Lenovo or Dell or another vendor.

These 100 devices will cost $3000 for keys, plus $6 per device per month. This means that your org with 100 devices will pay around $23,000 extra to deploy a WinRT app just for this licensing.

image

Money you won’t pay if you use WPF or web technologies to build the app. As a result, you have to ask yourself if there’s an additional $23k of value provided by WinRT that you can’t get via WPF or a browser-based solution, otherwise targeting WinRT makes no sense.

Does anyone have other insight into the costing? Any holes in my logic that makes this sound more sane?

I’ve put the calculator spreadsheet on my SkyDrive for those who care to play around with it.

Friday, January 18, 2013 3:30:31 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [6]  | 
 Wednesday, January 16, 2013

The OneNote app for WinRT (Windows 8 native) is quite nice. And it makes it smooth and easy to interact with notebooks stored on SkyDrive.

What it doesn’t make easy is to open a notebook stored on a SharePoint site. Today I finally figured out how to open a SharePoint-hosted OneNote notebook in the WinRT version.

Put the OneNote notebook file(s) into a SharePoint sub-folder in a shared document library. The name of the sub-folder matters, because this is the name that will appear for the notebook in OneNote.

Create a string URL like this (using NotePad or something like that):

onenote:http://sharepointsite.com/sharepointsite/Shared%20Documents/MyNoteBookFolder

Then open the WinRT version of IE and attempt to navigate to that URL. This will open the WinRT version of OneNote and you’ll probably be prompted for your domain credentials. Sign in and let OneNote find and open the notebook file(s) from that folder.

You’ll now see that folder name (“MyNoteBookFolder” in my example) as a notebook on the far left-hand side of the screen.

This could be a whole lot smoother if the OneNote app actually integrated with SharePoint, but it is a decent workaround for now.

Wednesday, January 16, 2013 6:12:19 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Thursday, December 20, 2012

A colleague of mine at Magenic recently posted on how to deploy and debug a WinRT app on a Surface RT.

Another alternative is to install the app onto the Surface device via PowerShell. This won’t attach the debugger, but is often an appropriate solution for people who are just testing the app (QA testers, colleagues willing to provide feedback, etc.).

This is a multi-step process. At a high level it goes like this:

  1. Developer packages the WinRT app to a folder on their hard drive, then puts the package on a network share or USB key, etc.
  2. Tester unlocks PowerShell on their device (this is a one-time thing)
  3. Tester gets the WinRT app package and runs a PowerShell script to install the app on their device

Creating the Package

The developer needs to create a distributable package for the app. This is done by right-clicking on the WinRT project in the Visual Studio solution explorer, and choosing Store –> Create App Packages.

image

This brings up the Create App Package wizard. The first question is whether you want to deploy the the store, and the answer in this case is No.

Next, you’ll be asked where to create the package, how to create the package version number (different from the app version number) and what platforms to target.

image

The Neutral architecture in Release (Any CPU) allows testing on Intel and ARM devices.

When the Create button is clicked, the project is built and packaged, with the results placed in the specified folder.

image

The top level folder contains an appxupload file that you can safely ignore (it is used for uploads to the store). It also contains a sub-folder with the actual app package.

image

These are the files you must make available to the tester. You can put these files on a network share, a USB key, a SkyDrive folder, or any other location where the tester can gain access. The Add-AppDevPackage.ps1 file is the PowerShell script the tester will run to install the app.

Unlocking PowerShell

The tester’s device must be able to execute PowerShell scripts before they can install the app. By default PowerShell has security settings that prevent scripts from executing. This TechNet article discusses running PowerShell scripts. In summary, you need to open PowerShell as Admin and run this command:

Set-ExecutionPolicy unrestricted

Be aware that this allows execution of any script, so you do assume some risk by enabling this policy.

Once this has been done your test device is now able to install WinRT apps by executing the PowerShell script generated by Visual Studio.

Installing the App

On the test device you must have access to the contents of the package folder created by the developer in Visual Studio. You might get those files from a network share, a USB key, or other location.

Simply execute the Add-AppDevPackage.ps1 file in PowerShell to install the app.

The script will ask permission to run.

image

If this device does not have a side-loading unlock key (MAK or developer key), you will be asked if you want to get a developer key. You should answer yes and walk through the wizard to get a developer key for this device. This step will require you to enter your Microsoft Account email address and password. The resulting key will expire after a short period of time (currently three months).

The PowerShell script will then ask for permission to install the certificate for the app. If you’ve already installed the certificate (perhaps you are installing a newer version of the same app) the script will skip this step.

image

image

Once the certificate is installed, the script will install the WinRT app itself.

image

At this point the WinRT app is installed and its tile should appear on the start screen along with all other apps installed on this device.

The user may now run the app like any other app.

Once the developer key for this device expires the app will stop working. Obviously the intent of this installation approach isn’t for the user to run the app forever, but rather so they can test it and provide feedback during the development process.

Thursday, December 20, 2012 12:06:59 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Sunday, November 25, 2012

There’ve been a variety of articles and blog posts about the Microsoft Surface, with people expressing pleasure or disappointment as they’ve played with the device.

I thought I’d share my experience with the Surface RT, having now used it for a few weeks.

First though, it is important to understand that I’ve been running Windows 8 full time for months on my laptop and on my Intel-based tablet. When I started running Win8 I consciously chose not to run any of those apps to make Win8 act more like Win7. I never tried to make WinXP look like Win98, or Win7 look like WinXP, so why would I try to make Win8 look like an obsolete OS? Embrace the new, that’s my view!

Also, it is important to understand that I had an iPad at the beginning. That was comparable to the Surface, in that there were basically no iPad apps – just the ability to run iPhone apps on the iPad, which was a really lame experience. So my iPad experience was that the device was reasonable for web browsing and limited entertainment, but had no practical value at all – because it had no Office, or Lync, or other useful apps. I fully appreciate that now, years later, the iPad does have useful apps and can be useful for something other than entertainment and games. But it is important (I think) to appreciate that my iPad experience is directly analogous to my Surface experience – I used both at the start of their existence. (as an aside, I gave my iPad to my wife, because I saw no reason to lug around another entertainment device as I travel)

Given that background, I’ll start by saying that I use my Surface RT every day. A lot. And I like it. I do also find it frustrating at times.

I find it useful for web browsing, entertainment, and productivity.

From an entertainment perspective, it has a bunch of games, it has Netflix and Hulu and Xbox music/video. And it browses the web, which is also entertainment. The only thing I’m missing is Amazon streaming video, which is Amazon’s loss in terms of competing with Netflix/Hulu, so they better get a WinRT app out ASAP or they’ll probably lose me as a Prime customer. Not a customer totally though, because I’m a Kindle addict and occasionally use the Kindle app on the Surface. I still prefer my Kindle Touch though, because eInk is way superior to the shiny-screened Surface or iPad.

From a productive web browsing perspective I find IE10 to be just fine. I am able to use all the sites I need for work, including msdn.com, SharePoint, yammer, skydrive, Google drive, etc. The browsing experience is generally fast enough to be pleasant, with the exception of yammer’s text editing where they run really intensive js scripts for every keystroke. I haven’t tried their site on the iPad, but I suspect it is laggy there too due to this intense use of scripting.

In terms of pure productivity, the Surface is pretty good. I use Word and Excel pretty much daily, reading and editing documents from SkyDrive and collaborating with colleagues on projects. Lync and Skype both work well for telecom (which is important because Magenic’s entire “phone system” is Lync). I’ve used PowerPoint a little, but generally find editing presentations to be easier when using a full-size keyboard/mouse and my big monitors on my main computer. Using Word and Excel on the Surface (with its keyboard) is perfectly fine though, and I use those apps a lot.

I also use OneNote a lot. Much of my life exists in Outlook and OneNote. As a result the Surface provides me with access to much of my life through OneNote. I use the WinRT app, and I’m not sure I’ve even run the OneNote app from Office on my Surface.

The apps I have running on every one of my Win8 devices include:

  • Office
  • OneNote for WinRT
  • Tweetro
  • Skype
  • Lync
  • Feed Reader
  • Remote desktop
  • News/Weather/Stocks
  • Xbox Music/Video
  • Netflix
  • Hulu
  • Youtube player
  • Khan Academy
  • Calc
  • File Manager
  • TED Talks HD
  • All My Storage (at least until there’s a real DropBox app)
  • Bing

What is missing, and this is a big hole for me, is Outlook. The email client in Win8 is pretty lame. Perhaps adequate for casual email use, but not remotely adequate for productivity users. It has poor calendar integration, no Lync integration, no flagging of emails. It just isn’t even close to Outlook. Similarly the Calendar app on Win8 is lame. Well, it is worse than lame – it is really hard to read or use. Again, it also has no Lync integration and is largely useless for ‘real work’. Although I do use both the email and calendar apps, the experience is frustrating at best.

Similarly, the WinRT Lync app doesn’t compare to the real Lync client on an Intel machine. It is a limited subset of functionality. Fine for making and receiving calls, but extremely poor for collaboration scenarios where you need to share your screen.

I do wish that the SkyDrive app supported interaction with shared folders. When I’m collaborating with people on projects we often use shared folders in SkyDrive, but the SkyDrive app for WinRT doesn’t understand that concept, forcing me to drop into the browser to access those documents.

Finally, there is a general lack of apps in the Microsoft Store. This is directly comparable to my iPad experience (remember, at the start of the iPad’s existence) – with the notable exception that Surface comes with Office, so the single biggest set of apps I need are available right now on the Surface, unlike with the iPad (even today there’s no actual Office there, nor the amazingly smooth integration with SkyDrive).

For me, the big missing apps in WinRT include:

  • Outlook
  • Full featured Lync
  • DropBox
  • Yammer
  • TripIt
  • Amazon streaming video
  • Quicken

In short, at this comparable point in time with the iPad I gave the device away because it was just more weight to carry for little value. But I find my Surface RT continually valuable and have no plan to stop using it. The fact that it has Office and that it smoothly integrates into the SkyDrive ecosystem along with my desktop, laptop, and phone (WP8) makes it incredibly useful. I move seamlessly between my various devices, able to view and edit my documents regardless of where I am or what size screen I’m using.

So yes, I really like my Surface RT. There’s some frustration, but not nearly as much as when I was a month into using the iPad.

I have high hopes for Windows 8, WinRT, and Surface (and similar devices).

Sunday, November 25, 2012 11:48:20 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [7]  | 
 Thursday, November 15, 2012

At a .NET Rocks event a few weeks ago an attendee asked if there would be some add-on to Windows 7 that allowed running WinRT apps.

My answer: Yes! It is called Windows 8  :)

Thursday, November 15, 2012 10:57:19 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  | 
 Friday, October 26, 2012

At the .NET Rocks Road Trip event in Charlotte, NC this week an attendee asked if there’d be a way to run the new Windows Store apps on Windows 7.

These are apps running on the new Windows Runtime (WinRT) platform.

Basically the question was whether Microsoft would issue an update so WinRT apps can run on Windows 7.

My answer, which got a great laugh, but is actually serious, is that Windows 8 is the update to Windows 7 that allows it to run WinRT apps.

I acknowledge that this answer is loaded with humor. But I am also serious in my answer.

I’ve been running Windows 8 full time for a few months now, and haven’t run into any issues with Windows 7 apps not working on Windows 8 (except for a couple odd-ball Steam games that I suspect break some Win32 programming rules). All my work software, all my business software, and my important games (Battlefield 3, XCOM, Supreme Commander, L4D2) all work fine on Windows 8.

Windows 8 turns out to be a slightly faster version of Windows 7, that can also run WinRT apps. Hence, Windows 8 is the upgrade to Windows 7 that allows you to run Windows Store apps.

Friday, October 26, 2012 4:09:22 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, October 24, 2012

I am pleased to announce the final release of CSLA 4 version 4.5 with support for the following platforms:

  • .NET 4.5
  • Windows Runtime (WinRT)
  • .NET 4
  • Silverlight 5

The new release is available via nuget and the CSLA download page.

This release includes a number of important features and changes, including:

  • Support for Windows Runtime (WinRT), so you can simply recompile your existing CSLA .NET business classes for WinRT with little or no changes required to migrate to the new platform
  • Support for the new async and await keywords in .NET 4.5 (and in .NET 4 and SL5 via the async targeting pack)
  • Enhancements to the business rules engine
  • Enhancements to Windows Forms support via the Csla.Windows namespace

The entire CSLA .NET dev team has put a lot of work into this release, and we hope you enjoy it and find it useful!

Wednesday, October 24, 2012 4:00:51 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, August 21, 2012

Most of the work Magenic does for our customers centers around enterprise app development. That’s another way of saying ‘line of business’ or LOB apps in most cases.

Most enterprise and LOB apps will never be placed into the Windows Store for deployment. They’ll typically be deployed from corporate servers to the devices (tablets, ultrabooks, laptops, desktops) of employees. In the mobile world this is called “side-loading”, but that’s just jargon for deploying apps without using a public store.

The Wikipedia page describing the Win8 editions is highly misleading:

http://en.wikipedia.org/wiki/Windows_8_editions

If you look at the last item in the comparison grid, it appears that only Windows 8 Enterprise supports side-loading. That is entirely wrong.

The following two links provide important details:

The process for Windows RT (ARM devices) seems to be more polished than for Intel devices, and that is rather strange. But still, Intel devices can be enabled to side-load apps via domain policy or a command line script.

The important thing to understand is that you can side-load enterprise or LOB apps to all editions of Windows 8.

As I’ve said before, if you want to write Windows apps that can run on any Win8 device, you should be targeting WinRT as your development platform.

Tuesday, August 21, 2012 9:35:55 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [3]  | 
 Wednesday, August 08, 2012

At Visual Studio Live in Redmond I gave a talk about using SkyDrive and the Windows Live services from WinRT applications.

The LivePush project is here on SkyDrive:

Wednesday, August 08, 2012 8:43:36 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Friday, August 03, 2012

With all the new terminology and conceptual surface area that comes with Windows 8, I think it is important to have some clarity and consistency around the terms and concepts.

Here are some of the basic terms:

  • Windows 8 – the new operating system that runs in a “dual mode”: Desktop (Win32) and WinRT (Windows Runtime)
  • Desktop – the Win32 OS API that supports today’s applications in Win8 (basically Windows 7)
  • WinRT – Windows Runtime: the new OS API that supports “modern” applications
  • Windows RT – Windows 8 on ARM devices (note: Windows RT and WinRT are not the same thing)
  • Windows 8 UI style – a user experience design language often used when building WinRT applications

Windows 8 basically includes two different operating systems.

One is the “old” Win32 OS we think of today as Windows 7. This is now called Windows 8 Desktop, and is available on Windows 8 Intel tablets, laptops, and desktops. This is only partially available on ARM devices, and you should not expect to build or deploy Win32 Desktop apps to ARM devices.

The other is the new Windows Runtime (WinRT) “operating system”. This is a whole new platform for apps, and is available on all Windows 8 machines (ARM, Intel, tablet, laptop, desktop). If you want the widest reach for your apps going forward, you should be building your apps for WinRT.

Confusingly enough, “Windows 8” runs on Intel devices/computers. “Windows RT” is Windows 8 for ARM devices. The only real difference is that Windows RT won’t allow you to deploy Win32 Desktop apps. Windows RT does have a Desktop mode, but only Microsoft apps can run there. Again, if you want to build a Windows 8 app that works on all devices/computers, build the app for WinRT, because it is consistently available.

Windows 8 UI style describes a user experience design language for the look and feel of WinRT apps. This isn’t a technology, it is a set of design principles, concepts, and guidelines.

Another source of confusion is that to build a WinRT app in Visual Studio you need to create a “Windows 8 UI style” app. What makes this odd, is that this type of app is targeting WinRT, and it is entirely up to you to conform to the Windows 8 UI style guidelines as you build the app.

“Windows 8 UI style” was called “Metro style”, but Microsoft has dropped the use of the term “Metro”. I am skeptical that this new “Windows 8 UI style” term will last long-term, because it obviously makes little sense for Windows Phone 8, Xbox, Windows 9, and other future platforms that may use the same UI style. But for now, this appears to be the term Microsoft is using.

Thinking about app development now, there are several options on the Microsoft platforms.

  Technologies Platforms
Full .NET 4.5 ASP.NET, WPF, Windows Forms, WCF, WF Windows 7, Windows 8 Desktop, Windows Server 2008, Windows Server 2012
WinRT .NET 4.5 Windows 8 UI style apps Windows 8 WinRT, Windows Phone 8, rumored for next-gen Xbox
Full .NET 4 ASP.NET, WPF, Windows Forms, WCF, WF Windows 7, Windows Server 2008, Azure PaaS
Silverlight Silverlight Windows 7, Windows 8 Desktop, Windows Phone 7, Windows Phone 8
Friday, August 03, 2012 10:03:20 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [6]  | 
 Wednesday, August 01, 2012

Check out the new logo graphics for CSLA 4 version 4.5!

Thank you to Sandra Fougerousse for creating these updated Windows 8 style logo graphics!

csla win8

For those who are wondering, I expect to put a beta of version 4.5 online shortly after August 15 (when Windows 8 and Visual Studio 2012 final bits are available). That will start the beta cycle, with a planned release of version 4.5 around the end of October (if not sooner). I’m very exited to get CSLA .NET for WinRT into the hands of app developers!

Wednesday, August 01, 2012 10:45:32 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 
 Wednesday, July 11, 2012

In a word: yes.

My post is spurred by discussions I’ve had around this recent article:

http://www.tomshardware.com/news/Bill-Gates-Charlie-Rose-Surface-Windows-8-Microsoft,16190.html#xtor=RSS-998

And my post is motivated by the fact that I’ve had an i5-based Windows 8 tablet for a few months now, and have direct experience with the idea of using a tablet as a desktop/laptop replacement.

First, understand that I have:

  • A tablet with an i5 CPU, a decent GPU, 4 gb RAM, and an SSD
  • A docking station for the tablet with USB and HDMI ports
  • A bluetooth keyboard
  • A bluetooth mouse

On this tablet I have installed:

  • A variety of WinRT/Metro style apps
  • Office 2010
  • Visual Studio 2012
  • Expression Blend
  • Microsoft Lync
  • DropBox and the Win7 SkyDrive client

Second, understand that I also have a high-end desktop (for dev work and gaming), and an i7-based laptop for dev work. The laptop is also running Win8, and the desktop is still Win7.

Third, I’m a big guy. I’m 6’5” tall, with broad shoulders, and big hands. Netbook keyboards are a joke, nearly useless. Normal laptop keyboards cause me great wrist, arm, and shoulder pain. Only Microsoft Natural keyboards allow me to type for any length without discomfort.

Given that background, here’s my normal usage profiles.

My Home Office

I use my desktop for most things, because it is all set up with a Microsoft Natural keyboard and multiple monitors. It is just comfortable, and all my games are installed on this machine, as is VS10 for work on .NET 3.5 stuff.

Also I’m a gamer, and I have a friend who custom-builds my desktop computers. So I always have a top-end dev/gaming rig for a fraction of the cost to get a comparable laptop. And I have yet to see anyone talking about a “gaming capable” tablet – not at the level of gaming oriented tablets or desktops. Were there to be a tablet that could run Battlefield 3 at high res and no lag, AND without me needing a second mortgage on my house, I’d consider getting rid of my desktop.

My Magenic Office

I use my laptop (Win8) for most things, because I have a nice docking station connected to multiple monitors and a Natural keyboard. My laptop also has Office, VS10, and VS12, so I can do whatever work I need, plus it has a variety of WinRT apps that I use on a regular basis (mostly the same apps as on the tablet).

I could use my tablet instead, but the Dell docking station for my laptop is somewhat more convenient than the docking station for the tablet. This is because I carry the tablet’s docking station with me everywhere. If I bought a second docking station to leave in my office then I’d probably just use the tablet instead of the laptop.

On the road

When I’m on the road there’s no access to a Natural keyboard, so I have wrist, arm, and shoulder pain. This is true with my laptop keyboard and the bluetooth tablet keyboard. They are both too small for me, but it isn’t realistic to carry a “real” keyboard around everywhere. So I put up with the pain and minimize the amount of typing work I do while traveling. Tai Chi helps too.

Over the past few months, I have taken to only carrying my tablet while on the road. Because I avoid doing extensive typing on the road, I also avoid doing extensive dev work. As a result, the difference between the i5 tablet and i7 laptop is pretty immaterial, and the tablet is a LOT lighter and easier to carry. It is also a lot more useful on the airplane (remember, I’m a big guy – even first class seats often have too little room to open my big laptop).

In short, while on the road, my tablet has become a complete laptop replacement.

At conferences

The one exception to the tablet replacing my laptop while on the road is when I go to conferences. The problem here isn’t probably what you’d expect: it is a video projection issue.

The tablet has HDMI out, and its docking station has HDMI out. No VGA out at all. I do have an HDMI to VGA converter (from HP) that usually works, but not always. If the sole purpose of my travel is to speak at a conference, you can imagine that it is bad if my computer can’t project onto the screen.

So I lug my laptop around specifically because it has a VGA output jack. Sad but true…

So in summary, once companies and conferences have a reliable way to project HDMI video content onto overhead screens, I’ll have no reason to carry my laptop at all anymore when on the road. And if I bought a second docking station to leave at my Magenic office I wouldn’t need my laptop there either – so I wouldn’t need the laptop at all.

The desktop is harder to give up because I’m a gamer, and there’s nothing on the horizon that would allow me to play my games on an affordable laptop, much less tablet.

Yes, laptops are doomed – tablets will replace them over the next few years – of that I have little doubt.

Desktops aren’t entirely doomed – at least for gamers, CAD users, people doing graphics work, and other scenarios where cost-effective high-end hardware is required. But even today few people have only a desktop. Most people have a desktop and laptop – and in the near future I expect they’ll have a desktop and tablet instead.

For me, I’m happy that my tablet is now my primary work machine. It works great, and meets my needs for everything except high end gaming.

Wednesday, July 11, 2012 12:25:10 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [13]  | 
 Tuesday, July 03, 2012

While the punditry and others are fixated on whether users can adapt to (or even enjoy) the new Windows Start screen and other new UX features, they are missing the real point of Windows 8 and WinRT.

A couple days ago my reasonably computer-savvy son wanted to do some art work, so he downloaded Paint .NET. Or so he thought.

These days most software for Windows is downloaded via the web. And any reasonably popular software has malicious clones with domain names, web sites, and even installers, that look similar to the real thing. This is absolutely the case with Paint .NET.

So my son downloaded what appeared to be a valid installer, from a domain name that seemed reasonable. And just like that his computer was infected with a bunch of Yahoo crap, along with a bunch of real spyware and malware. He’s still trying to get it all cleaned up.

I’ve done the same thing, and I’m extremely computer savvy. Sometimes even the most savvy user gets suckered by a very clever bad guy.

WinRT apps only come from a store. The Microsoft Store, or a corporate “store”.

To get into the Microsoft Store, developers must be registered, apps are screened by Microsoft, and if anything malicious does slip through, the app can be removed/revoked from the store.

To get into a corporate “store”, your employer must choose to put the app into that store. It seems unlikely that your IT department will put apps in their own store that they didn’t create or acquire from a known vendor.

As a result, you can imagine a “Paint WinRT” app that is like Paint .NET, but that my son would have found in the Microsoft Store, and installed from the Store. Effectively zero chance of all the spyware, malware, and Yahoo crap that comes with so much of today’s software.

Now think of all the PC users around the world who will be able to actually find and install software without the fear we all feel in today’s world.

Sure, Win8 and WinRT mean accepting some change. But personally I am entirely ready to embrace that change to get the benefits offered!

Tuesday, July 03, 2012 8:30:53 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [15]  | 
 Monday, June 18, 2012

This is why I’m putting so much work into making sure CSLA .NET works great on WinRT!

http://www.microsoft.com/surface/en/us/default.aspxgallery_1_large

Monday, June 18, 2012 8:19:29 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [8]  | 
 Friday, June 01, 2012

Like a lot of people, I eagerly downloaded and installed the Windows 8 Release Preview (RC).

Like a few people, I was already running the Consumer Preview on my machines (tablet and laptop), so I just reimaged both machines with the RC. And I reused the same computer names for each machine – which seems pretty reasonable to me (but isn’t as it turns out).

Much to my surprise, I was unable to download any apps from the Microsoft Store. The failure message wasn’t helpful – it just said there was “a problem”.

After some tweeting and emailing with colleagues, I spent a couple hours trying random things to resolve the issue. Eventually I did figure it out.

The problem is that the store or live.com gets confused when you connect using a fresh install of Windows where the computer has the same name as before the install.

In other words, I already had a ‘RockyTablet’ machine connected to the store and/or live.com, and now I had a “new” computer with the same name connecting. This confused Microsoft’s servers, so they wouldn’t let me download anything.

There are two solutions.

  1. Give your computer a new and unique name
  2. Go to http://skydrive.live.com and remove your existing computer from the list of computers. To do this, click on the computer in the list on the left, and then click the subtle “Disconnect computer from SkyDrive” link near the top of the page. This apparently deregisters your computer with live.com and/or the store and allows the store to start working

If your computer isn’t listed or registered with SkyDrive, I’m not sure what else you can do other than option 1. If there’s another way to find and remove a computer from live.com I haven’t found it…

Friday, June 01, 2012 3:50:44 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  | 
 Monday, May 07, 2012

There are three fairly popular presentation layer design patterns that I collectively call the “M” patterns: MVC, MVP, and MVVM. This is because they all have an “M” standing for “Model”, plus some other constructs.

The thing with all of these “M” patterns is that for typical developers the patterns are useless without a framework. Using the patterns without a framework almost always leads to confusion, complication, high costs, frustration, and ultimately despair.

These are just patterns after all, not implementations. And they are big, complex patterns that include quite a few concepts that must work together correctly to enable success.

You can’t sew a fancy dress just because you have a pattern. You need appropriate tools, knowledge, and experience. The same is true with these complex “M” patterns.

And if you want to repeat the process of sewing a fancy dress over and over again (efficiently), you need specialized tooling for this purpose. In software terms this is a framework.

Trying to do something like MVVM without a framework is a huge amount of work. Tons of duplicate code, reinventing the wheel, and retraining people to think differently.

At least with a framework you avoid the duplicate code and hopefully don’t have to reinvent the wheel – allowing you to focus on retraining people. The retraining part is generally unavoidable, but a framework provides plumbing code and structure, making the process easier.

You might ask yourself why the MVC pattern only became popular in ASP.NET a few short years ago. The pattern has existed since (at least) the mid-1990’s, and yet few people used it, and even fewer used it successfully. This includes people on other platforms too, at least up to the point that those platforms included well-implemented MVC frameworks.

Strangely, MVC only started to become mainstream in the Microsoft world when ASP.NET MVC showed up. This is a comprehensive framework with tooling integrated into Visual Studio. As a result. typical developers can just build models, views, and controllers. Prior to that point they also had to build everything the MVC framework does – which is a lot of code. And not just a lot of code, but code that has absolutely nothing to do with business value, and only relates to implementation of the pattern itself.

We’re in the same situation today with MVVM in WPF, Silverlight, Windows Phone, and Windows Runtime (WinRT in Windows 8). If you want to do MVVM without a framework, you will have to build everything a framework would do – which is a lot of code that provides absolutely no direct business value.

Typical developers really do want to focus on building models, views, and viewmodels. They don’t want to have to build weak reference based event routers, navigation models, view abstractions, and all the other things a framework must do. In fact, most developers probably can’t build those things, because they aren’t platform/framework wonks. It takes a special kind of passion (or craziness) to learn the deep, highly specialized techniques and tricks necessary to build a framework like this.

What I really wish would happen, is for Microsoft to build an MVVM framework comparable to ASP.NET MVC. Embed it into the .NET/XAML support for WinRT/Metro, and include tooling in VS so we can right-click and add views and viewmodels. Ideally this would be an open, iterative process like ASP.NET MVC has been – so after a few years the framework reflects the smartest thoughts from Microsoft and from the community at large.

In the meantime, Caliburn Micro appears to be the best MVVM framework out there – certainly the most widely used. Probably followed by various implementations using PRISM, and then MVVM Light, and some others.

Monday, May 07, 2012 2:01:55 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [9]  | 
 Thursday, April 26, 2012

I am sometimes asked for technical career advice. A common question these days is whether it is worth learning WPF, or Silverlight – .NET and XAML in general I suppose, or would it be better to learn HTML 5 and JavaScript, or perhaps even Objective C?

This is a challenging question to be sure. How good is your crystal ball? Smile

XAML appears to be alive and well – WPF, Silverlight, and now WinRT (Windows 8 – and probably Windows Phone 8 and “Xbox 720” and more) all use XAML.

I look at the WinRT usage of XAML as being essentially “Silverlight 6” – it is far closer to Silverlight than WPF, but isn’t exactly like Silverlight either. Assuming success with Windows 8, WinRT will become the new primary client dev target for most smart client development (over the next few years).

The primary competitors are Objective C (if you believe iPads will take over the client space), and HTML 5/JavaScript (if you believe in fairy tales the concept of ‘one technology to rule them all’).

This is where the crystal ball comes into play.

Do you think Apple will displace Microsoft – iPads will replace the use of Windows – as the monopoly client OS?

Do you think the concept of ‘natural monopoly’ that has caused the Windows hegemony over the past 20 years is at an end – that some fundamental economic shift has occurred so companies are now willing to increase their IT budgets as a % of revenue to accommodate multiple client platforms (unlike the past 20 years)? In which case business app developers should expect to support at least iPad and Windows, if not Android, into the future?

Do you think that Windows 8 and WinRT will be strong enough to withstand the iPad onslaught, and that the natural monopoly economic effect remains in place, so Windows will remain the dominant client platform for business apps into the foreseeable future?

These are really the three options, resulting in:

  1. Objective C slowly overtakes .NET and we ultimately are Apple devs instead of Microsoft devs
  2. H5/js rules the world as the ‘one technology to rule them all’ and vendors like Microsoft and Apple become entirely irrelevant because we live in a purely open-source world where nobody makes money off any platform technologies, so probably the only hardware/OS left is something like Android running Chrome, because it is a 100% commodity play at that level
  3. .NET and XAML remain entirely valid, and life generally continues like it is today, with a mix of .NET smart client work and primarily server-based web work with h5/js primarily used to boost the user experience, but not often used to write standalone smart client apps

My crystal ball leans toward option 3 – I don’t think economic realities change much or often, and I struggle to see where IT departments will come up with the increased budget (% of revenue) necessary to build apps for both iPads and Windows over the long term. It will be measurably cheaper (by many, many, many thousands of dollars) for companies to buy employees Win8 tablets rather than building and maintaining both iOS and Windows versions of every business app.

And I don’t believe in the ‘one technology to rule them all’ idea. That hasn’t happened in the entire history of computing, and it is hard to imagine everyone on the planet embracing one monoculture for software development. Especially when it would be counter to the interests of every platform vendor out there (Microsoft, Apple, Google, Oracle, and even IBM).

Still with me? Winking smile

To summarize, I think learning XAML is time well spent. Today that’s WPF or Silverlight. There is absolutely no doubt that Silverlight is closer to WinRT than WPF, and people building SL apps today will have an easier time migrating them to WinRT later, whereas most WPF apps will be a pretty big rewrite.

But there’s nothing wrong with focusing yourself on h5/js. If you do so, I suggest doing it in a way that ignores or minimizes all server-side coding. If h5/js does take over the world, it will be used to create pure smart client apps, and if there’s a “web server” involved at all, it will exist purely as a deployment server for the client app. The ‘pure’ h5/js/jquery/etc. world isn’t linked to any vendor – not Microsoft, Apple, or anyone. To me this represents a pretty major career shift, because to truly embrace h5/js as a complete software development platform is so demanding (imo) it won’t leave time to retain .NET or other vendor-specific technology expertise.

For my part, I’m not yet ready to abandon Microsoft for h5/js, because I think Windows 8, WinRT, .NET, and XAML have a rather bright future. A year from now I think a lot of people will be happily using Windows 8 desktops, laptops, and tablets – and hopefully a lot of Windows Phones, and with luck we’ll be looking forward to some cool new Xbox. I live in (I think realistic) hope that my .NET/XAML skills will apply to all these platforms.

What does your crystal ball say?

Thursday, April 26, 2012 9:32:58 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [9]  | 
 Monday, April 23, 2012

Microsoft recently posted some details regarding the way Windows 8 (specifically ARM-based tablets running Windows RT) will work in a domain.

http://blogs.msdn.com/b/b8/archive/2012/04/19/managing-quot-byo-quot-pcs-in-the-enterprise-including-woa.aspx

This related article from Steven Vaughan-Nichols suggests that Microsoft’s strategy is flawed:

http://www.zdnet.com/blog/networking/windows-8-tablets-not-open-for-business/2261?tag=nl.e539

And he could be right, but I think there’s substantial room for hope.

I speculate that Microsoft is thinking along the following lines:

  1. If a company buys a Win8 tablet for an employee, they’ll probably buy an Intel-based tablet so it can be a tablet and also a laptop (with a keyboard/mouse), and most importantly so it can run existing line of business applications required for the employee to do their actual work.

    I have such a tablet today, and I truly love the fact that it is a tablet and a laptop so I get the best of both worlds. It is wonderful!

    And it can join an AD domain, and probably should join the domain, because it is corporate property.
  2. If a person buys a Win8 tablet for themselves, they may well buy a cheaper and lower-powered ARM-based tablet. Such a device is a tablet, I suspect most will also double as a laptop with Office 15 (with a keyboard/mouse) – but they won’t be able to run existing line of business applications because those applications are Windows Forms or WPF or Silverlight.

    A person, spending their own money to buy a device, is probably going to be unwilling to allow their corporate IT folks to set policies and perform administration tasks on their personal device. If my company wants to muck around with my devices, they can buy me the device! The last thing most people would ever want is for corporate IT to muck around with their own personal property.

    So the fact that a Windows RT tablet can’t join a domain might be a true blessing. Microsoft is doing us a favor by eliminating the possibility that your corporate IT might insist on managing your personal property – because it just doesn’t work that way.

I’ve talked to people quite a lot over the past few months, about a possible dystopic future where employees are required to buy and support their own devices. All you have to do is take BYOD to its logical conclusion, and things look (to me) quite bleak. Surprisingly I’m finding that quite a few people in our industry thing this could be a good thing.

So here’s my train of thought.

One reason companies like BYOD is that the cost of computing shifts from the company to the employee. The company no longer has to buy the employee a laptop, because the employee chose to shell out $800 to get an iPad, and then insists that they be able to use it at work. As a result, IT can just say “OK, use it, but we don’t really support it”, and away you go. The company saves hardware and software purchase, licensing, and support costs. The burden of having a machine on which to do work falls on the employee – including the costs of acquisition, licensing, software, and support.

Now we’re not quite to that point yet. But I have heard CIO or IT director level people say, in so many words, that they see this BYOD thing as a way of cutting costs. So they are thinking exactly along this line, and it is a small step from employees insisting that they get to use their own devices, to employers requiring that employees supply and use their own devices.

And this is important, because true BYOD is incredibly expensive! In the long run, it means that all line of business apps must either be written in the highly volatile HTML 5 world, and tested on every conceivable device. Or they must be written and tested numerous times – in .NET, Objective C, Java, etc.

Magenic does quite a lot of mobile development these days, targeting iOS and Android mostly. And every time we get an Android project we have to go buy a whole new set of tablets for testing – because that platform is changing so fast, and is so inconsistent across devices and OS versions. This is true for native and HTML 5 apps – in all cases we have to test across a wide array of devices due to differences in the hardware, OS, and/or browsers.

So I feel confident saying BYOD is extremely expensive. And that might be fine if IT can figure out how to offset that expense. One way to help do that is to entirely eliminate the costs associated with hardware, OS, and support by shifting that responsibility to employees.

“You want to work in our shipping department for $17/hr? Great! Just make sure to bring your $800 iPad to work on Monday when you start. Oh, you don’t have an iPad? You don’t have $800 laying around? Well sorry, then you can’t work here.”

You think this won’t happen? Maybe not. I hope not.

But at some point IT is going to have to justify and/or offset the costs of BYOD. At some point in the next couple years the CEO/CFO or board of directors is going to ask why IT costs have spiraled out of control, and the answer will be “because you said we had to support the iPads used by our executives”. At that point the proverbial sh*t will hit the fan, and some IT directors will lose their jobs, and BYOD will come to a sudden and inglorious end.

In the meantime, we can all be happy that there’s no way IT can join our Windows RT tablets (or iPads or Kindle Fires) to the AD domain. Because those are our personal property and shouldn’t be subject to corporate administrative policies and more than our cars, our televisions, or our other personal property.

Monday, April 23, 2012 10:10:41 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [4]  | 
 Friday, April 06, 2012

I've been watching a number of discussion threads regarding the usability of Windows 8, especially regarding the start screen, Desktop application usage, and multi-monitor scenarios.

All I can say is don’t knock it until you try it.

I’ve been running Win8 on my tablet and laptop for a few weeks now. The work I do on my laptop is often multi-monitor, and is real work.

There are three themes I’d like to address, based on my full-time usage experience thus far.

First, some people feel that Microsoft is making a mistake by having WinRT (Metro style) and Desktop apps run on the same machine at the same time. I vehemently disagree. I absolutely want one machine that I can use as a tablet on the plane, and as a real computer when I get to my destination. My tablet does this (Samsung from //build/) for almost everything, except when I’m doing distributed computing demos and need my full laptop to run virtual machines (because my laptop has tons of memory and an i7, vs the tablet with less memory and an i5).

I love the fact that I have WinRT apps, which are far superior to most web sites, for consuming news, weather, etc. And I love the fact that the same machine, plugged into a small portable dock, has a keyboard, mouse, second monitor, and can run Visual Studio just fine!

Second, there’s this idea floating around that the Win7 start menu is superior to the new Win8 start screen. That doesn’t hold true for me. Let me explain why.

When I read the Microsoft blog post about the Win7 telemetry data they used to design the start screen, they were describing me. When I use Win7 I pin my common apps and web sites to the start bar, and to run any other apps I press the Windows key and type part of the application name, then press enter. Almost never do I actually use the start menu to browse for apps.

In Win8 (keyboard/mouse – desktop/laptop computer) I pin my common desktop apps to the start bar, and my WinRT apps to the first page or two of the start screen. And I still press the Windows key and type the first part of the application name to run other applications. In other words, THERE IS NO DIFFERENCE between Win7 and Win8 from my perspective – other than that the live tiles from news/weather/stocks/etc. make the start screen a useful dashboard – so it is BETTER than Win7.

(as an aside, I do have some Desktop apps on my start page tiles too – but I find that I rarely use those tiles, preferring instead to tap the Desktop tile and then launch from the start bar – a personal quirk I suppose)

Third, the multi-monitor problems aren’t as bad as they are being portrayed. But the story isn’t good either, and I truly hope it improves over the next few months.

If you are doing “real work” today, you are probably spending 90% of your time (or more) in desktop mode. And if you’ve pinned your common apps to the start bar (like Win7, and I have done this) then you’ll probably never leave desktop mode. And in this case, multi-monitor works just like Win7, but slightly better because the start bar works better in Win8 (or at least it has new options I find useful).

Where the multi-monitor falls down is if you are using a mix of WinRT apps and Desktop applications at the same time.

WinRT only runs on the primary monitor, and that’s just lame. It completely prevents the use of WinRT for many business scenarios where multi-monitor is critical. I honestly don’t expect this to get fixed in WinRT v1, but I hope we don’t have to wait for Windows 9 (2014?) for this to be solved, because it is a major blocker for WinRT development in the real world.

Between the Dev and Consumer previews, they did change the way WinRT apps use the primary monitor. At least now in the Consumer preview it is possible to keep a WinRT app running on the primary monitor while using a Desktop app on other monitors. I do find though, that it is too easy for some errant Desktop app to use the primary monitor, thus making the WinRT app disappear – and this is frustrating.

Sadly it is not possible to keep the start page visible while using a Desktop app on a secondary monitor – reducing its otherwise high value as a dashboard L

To summarize the multi-monitor scenario: if you are a Desktop app user, Win8 is as good or better than Win7, because you’ll only see the start screen when you press the Windows key to launch some non-pinned app. If you are a WinRT user multi-monitor is useless. If you are a hybrid user (like me) the experience is workable, but unpredictable and frustrating.

Clearly Microsoft needs to do more work in this area.

In final summary, don’t knock it until you try it full-time on real machines. The experience overall is quite good, and I VERY much like having WinRT apps that I can use on my main computer instead of using web pages with their inferior usability and aesthetics. Given that most of my main laptop usage is in Visual Studio, Word, and PowerPoint, I find the experience with multi-monitor to be adequate, and Win8 is just as productive for those scenarios as Win7.

Friday, April 06, 2012 9:50:13 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  | 
 Tuesday, March 13, 2012

I just read this article about what’s wrong with Windows 8:

http://www.zdnet.com/blog/hardware/heres-whats-wrong-with-windows-8/19027?tag=nl.e539

The author makes some valid points. Most notably, in the consumer preview there are a ton of inconsistencies where the user is dumped into legacy mode (sorry, Desktop mode) when doing things as common as setting up a printer. That’s clearly confusing, and Microsoft has their work cut out to replace all the OS dialogs between now and release.

And the fact that there’s no obvious way out of Desktop mode once you get there is a problem. If you happen to accidentally get your mouse in the far lower-left corner of the screen you might escape, otherwise normal users just get trapped there with no way out. That’s pretty silly.

But toward the end of the article he makes an observation that I think is completely faulty:

“I don’t see touch being that important of a driver to either sell new PCs or a new operating system. Outside of Microsoft and a small number of power users, I don’t really see a demand for touch for PCs from either enterprise of consumer markets. Instead, what we have is Microsoft trying — once again — to stir up interest in touch devices.”

Apparently the author hasn’t noticed the massive uptake of iPad and Kindle Fire devices all over the place – at the consumer and corporate level. It is an understatement to say that demand exists for touch devices, and it would be absurd to think Microsoft would ignore that demand.

Or perhaps the author is suggesting that nobody wants a PC with touch. That they’d rather carry a PC for work, and a totally different type of device for touch? That is possible, but it seems unlikely that people would choose to spend twice the money and carry twice the hardware just to have two different experiences – at least if they have a choice of carrying one device that is good for work and play.

There are many reasons I’m motivated to see Windows 8 be successful (though I agree that success isn’t a foregone conclusion). Perhaps the biggest though, is apps. For touch, keyboard, and mouse, I want apps.

Why?

Because apps are the resurgence of the smart client and distributed computing. And there are no apps on the PC, so PC users are increasingly stuck using the second-class web interfaces to interact with the world.

Take almost anything – news, weather, stocks, social services like Facebook – you name it. PC users have to interact with these things via the web, reducing their super-powerful PC to a dumb terminal. But mobile device users get rich, smooth apps that are a lot more fun to use.

Given a choice, would you interact with Facebook via a web UI, or a nice app with clear navigation, nice animations, and well-considered user interaction? People have spoken – Facebook apps for tablets and phones are the primary way to interact with the social service over the web UI.

As a PC user I am increasingly left out. Left to suffer with browser-based experiences while my wife uses her iPad to interact with the same services in a more enjoyable manner.

It seems obvious now that apps will never come to the Win32/.NET PC world. So the only way to have decent interaction with the world at large is to figure out a way to get apps on the PC – and that is clearly via WinRT and Metro.

I think the lack of apps on the PC is because there’s no store, so no easy way to find and install such apps. Microsoft could have created an app store for Windows 7, but Win7 doesn’t offer a fully sandboxed runtime environment where such apps can be virus and harm-free to the end user.

I also think Microsoft could have created such a sandbox world based on Silverlight, without the need to create a whole new operating system. It would have been possible to enable Silverlight apps to be directly hosted on Win7, and to be purchased from a centralized and curated store.

But that wouldn’t have addressed the tablet and touch issues.

So what we’ve got is a new operating system, with a runtime designed from the ground up to support safe apps that are deployed from a store. And from a .NET developer perspective this new Windows Runtime (WinRT) is extremely close to Silverlight in terms of its development model. So in a sense Microsoft is doing exactly what you’d expect to enable apps – but they are also enabling tablets and touch.

In short, I am looking forward to Windows 8 because it breathes new life into the smart client and distributed computing world – and because as a user I can finally get a first-class experience for interacting with news, weather, and social services on the “web”.

Tuesday, March 13, 2012 9:56:44 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [5]  | 
 Wednesday, March 07, 2012

If you’ve used Windows 8 you’ve probably notice that there are two “flavors” of IE 10: Metro style and Desktop.

The Metro style IE10 is optimized for use on touch devices. It also prevents the use of browser plug-ins like Silverlight or Flash. This makes it frustrating when browsing many sites that use Flash to play video, or Silverlight to provide business functionality.

The Desktop IE10 is pretty much like the IE you already know, except that IE10 is much more standards-complaint and provides good HTML 5 support.

If you are using Windows 8 on a desktop or laptop, the touch-optimized Metro style IE10 can be frustrating on many levels. Perhaps most notably because you aren’t using touch, so it is awkward to use. And also because of the lack of useful plug-ins.

It turns out you can overcome these issues by forcing IE10 to always open in the Desktop. To make this happen:

  1. Open Desktop IE10
  2. Open the Internet Options dialog
  3. Go to the programs tab, and change the “Choose how you open links” options as shown here:
    image
  4. Set it so the browser always opens on the desktop, and so all tiles on the Windows 8 start screen open in IE on the desktop

That’s it – now you won’t see the Metro style IE10 anymore, and you might enjoy your browsing experience just a bit more.

fwiw, I did this on my laptop and prefer this choice. But I still use the Metro style IE10 on my tablet, because the touch-optimized experience really is better on a machine with a touch UI.

Wednesday, March 07, 2012 5:27:39 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |