Sunday, December 27, 2015

Retirement of the Corporate PC

Remember the company car?  Neither do I.   There's a good chance the company-provided PC that most information workers are issued is trending toward extinction as well.

The net result could be a boon for PC retailers.  Policy agreements become SLA's with the employee, and the budget moves out of IT and into HR.

Posted on Linked In:  Retirement of the Corporate PC

https://www.linkedin.com/pulse/retirement-corporate-pc-jim-wilcox

Friday, November 13, 2015

Live Process Migration

For years now, I've been watching Microsoft Windows evolve.  From a bit of a distance I've been watching the bigger picture unfold, and a number of details have led me to speculate on a particular feature that I think could be the next big thing in technology....   Live process migration.  

This is not the first time I've mused about the possibility... [A big feature I'd love to see in Windows 11] it's just that as I work with tools across the spectrum of Microsoft's tool chest, I've realized there are a few pieces I hadn't really connected before, but they're definitely a part of it.

What is live process migration?  Folks who work with virtual machines on a regular basis are often familiar with a fancy feature / operation known as live virtual machine migration....  VMWare's vSphere product refers to the capability as vMotion.  It's the ability to re-target a virtual machine instance, while it's running... to move it from one host to another.

In sci-fi pseudo psycho-babble meta physio-medical terms, this might be akin to transitioning a person's consciousness from one body to another, while they're awake...  kinda wild stuff.

As you can imagine, live VM migration is a heavy duty operation... the guest machine must stay in sync across two host computers during the transition in order to seamlessly operate. For the average user, it's hard to imagine practical applications. 

That said, live process migration is no small feat either.  A lot of things have to be put in place in order for it to work... but the practical applications are much easier to spot. 

Imagine watching a movie on Netflix on your Xbox (or maybe even your Hololens), but it's time to roll.   No problem, with a simple flick gesture, and without missing a beat, the running Netflix app transitions to your tablet (or your phone), and you're off.   Then you get to your vehicle, and your vehicle has a smart technology based media system in it that your tablet hands off the process to.   It could work for any process, but live streaming media is an easy scenario.

From a technical perspective, there's a bunch of things required to make this work, especially across whole different classes of hardware...  but these problems are rapidly being solved by the universal nature of Windows 10 and Azure.

Commonality required:
  • Global Identity (e.g. Windows Live)
  • Centralized Application Configuration
    • Windows 10 apps natively and seamlessly store configuration data in the cloud
  • Binary compatibility
    • Universal apps are one deployable package that runs on everything from embedded devices to large desktops and everything in between.
  • Inter-nodal process synchronization
    • Nothing exemplifies this better than the 1st class remote debugging operation  in Visual Studio.  You can run an app on a phone or device from your laptop, hit breakpoints, and manipulate runtime state (local variables) from the laptop and watch the device react in real time.
  • Handoff protocol
    • I'm sure it exists, but I don't have a good word to describe this, but it's probably based on something like SIP
  • Runtime device capability checking (the part that sparked this blog post).
Over the years, there have been a lot of "write once, run anywhere" coding schemes.  Most involve writing a program and having the compiler sort out what works on each type of hardware.... what you get is a different flavor of the program for different kinds of hardware.  In Windows 10, it's different.  In Windows 10, the developer codes for different device capabilities, and the application checks for the required hardware at run time.  

While the UWP does an amazing job of abstracting away the details, it puts some burden on the hardware at runtime...  the app developer has to write code to check, anyway: hey, is there a hardware camera shutter button in this machine?  If yes, don't put a soft camera shutter button on the screen, but now the app has to check the hardware every time it runs.

I struggled a bit trying to understand this latter point...  why would Microsoft want it to work that way?  Except for a few plug & play scenarios, it could be optimized away at application install time...  unless your process can move to a different host computer/phone/console/tablet/VR gear.


While I am (more recently) a Microsoft V/TSP working for BlueMetal, an Insight company, I have no inside information on this topic.  I'm just looking at what's on the table right now.   We're almost there already.  Yesterday, I showed my son how to save a document to OneDrive, and within moments, pick up his Windows 10 phone and start editing the same document on it.

In my mind, there's little doubt that Microsoft has been working its way up to this since Windows Phone 7... the only question in my mind is how many of these tri-annual Windows 10 updates will it be before "App-V Motion"-style live process migration is a practical reality.

Wednesday, September 23, 2015

Fix: Drag and Drop File Upload on Published SharePoint 2013 Pages

Ran into a long existing bug in SharePoint 2013 where you have a couple of conditions prevent uploading a file to a document library by drag & drop.

The conditions are these:

The document library is exposed as a webpart view on the page.
The page is a published page (as opposed to draft or checked-out) in a site where publishing is enabled at the site collection level.   (note that drag and drop uploads work if the page is not published.)

A number of posts describe the problem out on the interwebs, but I couldn't find a single one with a working solution... 

They talked about dragdrop.js and the SP.Utilities.CommandBlock undefined error, and setting x-ua-compatible to IE9, and a few other pieces to the puzzle... 

After a consult with the gang around the BlueMetal office, we collectively arrived at the following solution, using Script On Demand functionality...

The fix is to add the following to a script block at the bottom of the master page associated with the published page:

  
<script type="text/javascript">

     //Drag & Drop fix for publishing pages      
     SP.SOD.executeFunc("sp.core.js");        
     SP.SOD.executeFunc("cui.js");

</script>
That forces those libraries to load for your masterpage even if nothing else on the page requires them.

Saturday, September 5, 2015

Time to Extend Your Brand to Windows 10

Marketers, if you're looking for fresh, fertile ground to extend your brand into, jump now on Windows 10.

The Windows 10 app store is a clear path to:
  • Bump up your online store shopper counts
  • Extend ever-available services directly to your Windows customers (which is about 90% of them)
  • Connect with your brand's demographic in a way that helps you better understand their needs
  • Build brand value by connecting with partners
  • Build brand value by connecting with social media
  • Escape web browser inconsistency that threatens to pull brand value down
  • Escape security/stability issues in popular platforms (e.g. Android) that threatens brand value.
  • Reach more device form factors with a single, less specialized (less expensive) codebase (desktop, tablet, phone, even game consoles and devices)
AND...

Windows 10 is attracting Microsoft's (and, by extension, arguably) consumer tech's most valuable territory,

To wrap one's head around this, it helps to understand recent history a bit. 

Being a "convicted monopoly" put a lot of costly restrictions on Microsoft, and especially Windows, making every OS release from XP to Vista to Windows 7 less than it could have been.  Despite the fact that Windows is still king in the desktop arena by far, Microsoft has done a great job of digging out from under the perception that it has a monopoly in that space.  It dug itself out by connecting Windows to the both to the cloud and to the broader computing device market, including tablets, smartphones, consoles and devices.

Being out from under those restrictions has enabled Microsoft to really make Windows 10 come together in ways that even the incumbent Windows 7 couldn't.   All indications are that Windows 10 is a hit and will de-throne Windows 7 as the de-facto desktop OS within a couple years. Between re-claimed freedom to innovate, lessons learned, and other market conditions, it's a no-brainer that Windows 10 has legs.

[Here's a number to associate with Windows 10:  1 Billion UPGRADES.  (not counting the number of devices that will be sold with Windows 10 on them.)]

What about Social Media?  According to folks like @fondalo:
With nearly 62% of consumers stating that social media has “no influence at all” on their purchasing decisions (Gallup), marketers are faced with substantial hurdles in an ever-increasingly noisy digital landscape. This challenge is further amplified by a CMO Council study showing that only 5 percent of brands feel they are extremely effective at creating experiences that resonate with target audiences.

In fact, most marketers are currently forced to put more resources toward their digital and social efforts, just to maintain their current returns. I believe this gap will continue to widen for larger brands, but smaller more nimble retailers that get creative and deploy proper resources could end up being the big winner.

Finally, it goes without saying that it no longer matters that you've extended your brand to iOS (iPhone/iPad) and/or Android.  The app marketplace for those devices, in your space, is saturated... even super-saturated.  You've extended your brand to those app stores, and so has every other brand in the world, including all your competitors.   Of course, saturation will occur in the Windows 10 app marketplace, but getting in ahead of the crowd has its advantages.

Never mind the upside potential on phones and tablets (which remains huge, and far more addressable from Windows 10).  The pendulum is swinging back to the desktop/laptop again (for now).

Being a Microsoft appointed Technical Solutions Professional, I can help.  Let me know how I can bring my (and my team, BlueMetal's) expertise to bear for you in your goal to make the jump.

In any case, talk to me.  If you're a marketing technology manager, what do you see as the pros and cons of jumping into the Windows app pool?  

Tuesday, August 11, 2015

KB3035583 - Where is the Windows 10 Invitation to Upgrade?


I've had a lot of folks express confusion over Windows 10...  It is FREE for the vast majority of existing Windows users. (Only some corporate PCs may run into a cash register.)  It's also very easy to install for the vast majority of users.  I'm so confident with the upgrade process that I've handed off one of the URLs below to my folks, and told them to call me if they have a problem... 

The invitation to reserve Windows 10 is triggered from an update that rolls out over WSUS, described by Knowledge Base article KB3035583.  The reservation is essentially passed since the software is officially released, but here’s some detail on it if you’re curious…
The following URL is the KB article, which describes update that triggers the invitation to reserve Windows 10, mentioning that Enterprise machines do not apply:
https://support.microsoft.com/en-us/kb/3035583



The following article indicates that once installed, the KB3035583 update will also exclude itself from being applied Domain Joined machines:
http://rainesy.com/what-is-the-update-kb3035583-you-might-ask/


But the most important question to answer at this point… 
HOW TO UPGRADE TO WINDOWS 10 NOW:

I've had a couple links at the ready since I've been answering questions like this a lot lately across both business and personal connections...  here’s a post on how to download & install Windows 10 immediately for an individual system: 
www.microsoft.com/en-us/software-download/windows10

If you’re looking for more information on how to roll Windows 10 out across a company infrastructure, there’s a high level set of options, outlined in the following post:
https://technet.microsoft.com/en-us/library/mt158221%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

There’s a ton of great reasons for a company to deploy Windows 10, including

  • Universal Apps that enable you to extend your code base and/or future code effort across the entire Windows spectrum
  • A host of attractive, industrial-strength BYOD options for more than just tablets and smartphones
  • The most efficient and consistent use of latest generation hardware including touchscreen and security measures

Microsoft is preparing to *upgrade* over a billion Windows devices to Windows 10.   We’re proud to be a part of that, and very happy to help in any capacity we can getting the bits pushed out to all your machines. 

As a developer, I'm very happy to promote the platform I most want to work on... I really feel that Windows 10's success is the foundation of a lot of others' success, including my own.

Saturday, August 8, 2015

Windows 10, Industrial-strength BYOD

"Bring Your Own Device" (BYOD) is not new. It's the term companies use to describe company policies that enable an employee to connect employee-owned devices (typically a smartphone or tablet) to company resources... resources such as email or company document repositories.

In order for BYOD to work, a device must meet criteria for security and manageability minimally agreed upon by the company and the employee.

Mock-up of a woman using a Razer laptop in a classic work setting.
One of the things I love about Windows 10 is the multitude of security and manageability features that really make "BYOD" attractive to both employees and employers.

Being the tablet and smartphone platform that Windows 10 is, there's been a lot of attention to making Windows 10 able to address many of the objections Enterprise IT has with IOS (iPhone and iPad) and Android devices. (In light of recent issues like #StageFright on Android, I find it hard to figure out how Android is supportable in BYOD scenarios.)

Windows 10 comes stock with not just one, but several viable BYOD solutions that present industrial-strength solutions to these BYOD objections.

Also, being the Universal OS that Windows 10 is, these objection busters apply to traditional laptops and even PCs. The magic here is that you can intentionally & willfully enroll your computer, laptop, tablet, phone, what have you with your company's computing device policy, and be sure that your device will comply with company policy to the extent that the company requires.

If only for this reason, the fusion of work and play in one machine, Windows 10 makes the PC personal again, as promised.

As a Microsoft Partner-Technical Solutions Professional (P-TSP) with BlueMetal, I've been issued an awesome company laptop... but for a number of reasons, I found myself wanting to explore Satya Nadella's vision for one device that co-mingles business and pleasure.

Having heard Nadella's call for one device for work and personal use, I selected a laptop that could meet the needs of a higher-end gamer as well as meeting the needs of my role as a Senior Software Engineer in the Devices & Mobility group at BlueMetal.

What I ended up with is a rocket ship of a laptop, (a Razer Blade 14 laptop).

After taking a few precautions like Bitlocker-encrypting my laptop and upgrading to the Pro edition of Windows 10, I was comfortable enrolling my laptop with the company Intune policy. What I get is a stand-out kick ass trophy machine with enough display resolution to make 2k-display smartphone emulators seem quaint, that kicks ass developing apps, which I can then take home and kick ass in Azeroth & Draenor... without skipping a beat.

Imagine allowing employees to opt some portion of their personal hardware into your compute and/or sensor fabric in a way that does not interfere with that employee's personal computing.

The possibilities add up to a win-win-win.

Employees win because they aren't stuck with cheap, sub-standard-issue equipment at work.

Employers win, because 1) employees are happier with their better performing equipment, 2) employers aren't in the hardware maintenance business anymore, and 3) can potentially leverage some of that hardware as an extension of human resources.

OEMs win because employees will gravitate toward hardware that gives them a leg up at work, rather than settling for the sub-standard-issue machine.

The most notable NEW ways to present BYOD in the enterprise are these:

1) Mobile Device Management and Mobile Application Management (App-V) with VPN isolation, making it so that devices have an encrypted sandbox for company applications and data, as well as a dedicated, isolated channel for VPN connectivity that 3rd party apps on the device can't touch.
2)  Bitlocker-encrypted Hyper-V Virtual Machines with virtual Trusted Platform Module managed by the enterprise, typically where the guest OS is Active Directory-Domain joined.

Monday, July 27, 2015

Visual Studio 2015: An Insider's Review

I apologize I've been pretty wrapped up in a little bit of everything, but I wanted to share a piece my colleague, Dave Davis, Architect at BlueMetal Architects wrote for SD Times:

https://www.bluemetal.com/News/Dave-Davis-Published-in-SDTimes

Well worth the read.

Tuesday, June 30, 2015

The Edge Browser in Windows 10


Today, I was mildly (but pleasantly) surprised when I logged into my laptop and discovered it had updated itself over night to the latest build of the Windows 10 Insider Preview (10158).  I shouldn't have been surprised, in retrospect... I knew a build was coming, and I left my laptop on overnight...


The first thing I did was run smack into the Edge browser, which is far more polished in this build.  More importantly, this new browser has many features built in... especially Web Notes. 


Web Notes is a feature which, with a touch (or click if you don't have touch) you can graphically deface (ok, "annotate" or "mark up") web content.  Even more fun, you can  touch again, and post it to your favorite social media site or even to OneNote.


This one feature really differentiates the browser, in my mind, from just about anything else out there, and makes it much more clear why a replacement for IE is justified.   I'd heard about the feature, but the experience is far cooler than just seeing it. 


Frankly, in the past, I've panned Spartan/Edge as nothing more than browser platform fragmentation... a new wedge in the browser market designed to make the browser a harder platform to build viable apps for. After experiencing the WebNotes feature, I find myself wondering if it won't a)  end Internet Explorer, and b) make the web cool again.


Given the way the Edge browser integrates with OneNote, I also find myself wondering if Edge shouldn't be considered a part of the Office suite rather than a part of Windows.  That said, I'm aware of the fact that Microsoft has no plans to bring Edge to IOS or Android.


Aside from the myriad of practical content research and sharing applications, I can easily imagine Edge Web Notes being a social media hit, especially.  Who wouldn't love to draw moustaches on all their friends & family's profile pictures?




I have not heard if Edge on Windows 10 Mobile will have Web Notes, but I will be fully disappointed if it doesn't.  It'd definitely make the web more versatile in a mobile form factor.  My Lumia 1520 with build 10149 has Edge on it, but no Web Notes...  yet.  As a colleague of mine points out, Edge is a Universal Platform app, meaning the code should be baked in, even if it's not exposed in the UI.  I'll keep ya posted.


Wouldn't it be cool, also, if MS updated the Apache Cordova platform to incorporate Edge as the web view, thereby enabling annotations in apps that use it?


For what it's worth, I used Edge to compose & edit this post.  Blogger is definitely much happier with Edge than with IE 11.

Sunday, June 28, 2015

Intro to Windows 10 Universal Devices and Raspberry Pi

I really enjoyed presenting "Intro to Windows 10 Universal with Raspberry Pi" to the Granite State Windows Platform App Devs (#WPDevNH) this past week. 




Here's the slides which have a few decent links in them to get you started.







I will try to get a presentation on the next part of this sometime over the next couple months, with a dive in on the GPIO libraries.


Check out the group's Meetup site for stuff going on going forward.


http://www.meetup.com/Granite-State-NH-WPDev/


Apache Cordova and SharePoint Online / Office 365

The concept came from a good place, but at this point, the story is best described as "science experiment", as I mentioned at SharePoint Saturday Boston 2015.  I was working on a cross-platform Apache Cordova project for Windows, Windows Phone and Android when the call for speakers hit.  I said "why not?" and I signed myself up to present it...


The good news is that the story's not without some worth to someone exploring the idea of hooking into SharePoint from an Apache Cordova-based app. Tools that exist today at least assist in the process.




The demo code is mostly about accessing files from your personal SharePoint profile document library (A.K.A. OneDrive for business) and indeed, the code is using file access code in addition to SharePoint connection.  The hardest work in a browser based app is to authenticate with Office 365, and this code does that, and then opens up to the rest of SharePoint...


Tuesday, June 2, 2015

Windows 10 and the Near Zero Hardware Liability Enterprise

With Windows 10, Microsoft is re-defining the BYOD (bring your own device) game, and it's a subtly aggressive move that many will probably appreciate.

No, really.  Like you, I have heard "BYOD game-changer" shticks before, and dismissed it as marketing hype.  Hear me out.  (And also keep in mind that folks once often said "never" with respect to the cloud... but "never" is a lot longer than folks tend to look.)

Let me start by describing what I mean by "near zero hardware liability".

There are already smaller organizations out there that have completely moved their hardware behind the wizard's curtain. That is, they own little to no IT hardware themselves (with little to no capital expense, depreciation, or hardware liability.) These companies are typically small, use the cloud to support their infrastructure & services hardware, and BYOD for their employees' desktop machines.

While cloud services are making serious headway into the enterprise, BYOD has been an arguably harder sell. The whole concept of BYOD has been largely dismissed by most larger companies because BYOD in in the Windows 7 (and prior) world can't be managed.  Policy can't be addressed and applied.  Data can't be protected on an "unmanaged" employee owned device.  Hardware depreciation, liability, and support is kinda small compared to the other liabilities involved.

Imagine a more classically European view of the world however.  In Europe, a user's computer traditionally is considered to be only a step away from personal property.  Like the days of being given a company car, the days of being issued a PC by your employer may well be coming to an end. 

At the Windows 10 Pre-flight Summit in Redmond this week (6/1-2), it seems the word of the day isn't so much about "upgrade".  It is, but there's a bigger word floating around. 

It's "provisioning", or enrolling a device in an enterprise.

In Windows 10, the word "upgrade" is going to die.  It's not just one platform for multiple devices.  It's not just one platform for now, until Windows 11.  It's one platform for the coming decades.  Upgrade to Windows 10, sure.  Update Windows 10, yes.  Upgrade from Windows 10, not in the works.  It's also one very personal platform in more ways than one.

The day may be coming when part of a hiring decision (both by employee and employer) may be that an employee has devices of their own to bring to the table.  The employee will have their own support network, their own personal liability, and in order to accept the job, the employee must be willing to provision their devices with their employer.

Provisioning a device means the device gets an enterprise managed workspace, as us developers would say, a sandbox where all managed apps and app data live.  Provisioning also sets a minimum acceptable standard policy on the device.  If the device can't meet the provisioning policy requirements, it won't be accepted...  (sorry Charlie, you need new hardware.)

I speculate on how much effort it would save companies if they could have the security & policy management without the hardware ownership overhead, but I bet, all told, it would be pretty significant. 

In many ways it will be similar to the car analogy...  you can't expect to keep a job if you can't manage your own transportation sufficiently to get you there when you need to be there.

This is also a very aggressive tactic. Imagine an enterprise deciding to implement BYOD, and it's very successful... to the point where you can't really get a job at that company without bringing a Windows 10 device.  Is that a labor issue? 

By kicking down as many objections to BYOD as possible, Microsoft may even be looking to drive adoption from the bottom up. Rather than the CIO/CTO decreeing and pushing Windows 10 down, the BYOD user will use Windows 10's features to overcome the BYOD objections.  Tired of the "golf cart" class standard issue machine at work, a power user brings in their own "hot rod", and harasses IT until IT realizes the objections can be sufficiently mitigated with Windows 10... and the floodgates open.

I also speculate on the ramifications of the job market.  I could easily envision a day when the mark of a more desirable employee would be the higher end hardware they bring with them.  Imagine how it might re-invigorate the PC market if employee competition drove sales.  Imagine the PC becoming more important than the automobile in terms of employability-driving hardware, as a competitive attribute of an employee.  (The mark of a good chef is their knife set.  The mark of a solid information worker may be their laptop.)

It won't hit all at once on July 29th.  It all has a ways to go.  It is a very thought provoking possibility.  What do you think? Is this on the path to Tomorrowland?

Edit 6/3:  Day 2 of the conference points out that Hyper-V 6.2 included in some editions of Windows 10 will enable virtualized Trusted Platform Module (v-TPM).  This means that an employer could provide a secure, Bitlocker enabled VM to an employee (which may or may not be provisioned), rather than provisioning the employee's device as a directly provisioned system.   Yet another way to make BYOD a more Enterprise friendly policy.

Wednesday, April 29, 2015

A big feature I'd love to see in Windows 11

With all the announcements coming out of //Build, I'm pretty jazzed about what's coming in Windows 10.   That doesn't stop me from wishing there were one or two other scenarios Microsoft would get to... and at this point, I'll have to hope to see them in something after Windows 10.

"App-V-Motion" running apps, migrating them across devices. 

Enable an app running on the phone or tablet or laptop or desktop to seamlessly transition from device to device.

Imagine it's getting late in the day...  you have a long running process on your desktop that you need to babysit.  Poor timing, sure, but it happens far too often.   Now, rather than being tethered to your desk, you can transition the process to a mobile device, and simply take it with you.   Perhaps it'll take longer to complete on the mobile device, so when you get home, you hand it back off to bigger iron. 

or, my other favorite scenario...  you're watching your favorite movie, but it's time to roll.... so you hand off the movie player app to your phone, and keep watching while you're on the go, without missing a beat.

With cloud configuration & storage, this scenario is getting more and more feasible, but given where I'm seeing Windows 10, now, this could potentially be a 10.1 or 10.2 feature.

Sunday, April 26, 2015

Google's Challenge, by the Numbers

Google may have inadvertently worked itself into some awkward dependencies that could be troublesome for it in the next few years.

It's hard to imagine Web 2.0, now a decade gone by, as the peak of the web, but I think the numbers speak volumes about it.  Below, I've grabbed some stats from Wikipedia, as of today (4/26/2015) ( http://en.wikipedia.org/wiki/Usage_share_of_operating_systems ), that puts together some puzzle pieces together in my head, but introduces a few new ones. 

Originally, I was thinking about Windows market share this past weekend, and how absurd it is that folks think of Windows 8/8.1 a "failure"... (It came up at the Global Azure Cloud Camp Jim O'Neil hosted at BlueMetal's office in Watertown this past Saturday.)  There's more Windows 8+ machine (alone) than all versions of Mac OS X combined...  Microsoft's "failure" is only a failure when compared to Windows XP and Windows 7.

Desktop operating system browsing statistics
Windows 7
  
58.04%
Windows XP
  
16.94%
Windows 8.1
  
10.55%
Mac OS X 10.10
  
3.96%
Windows 8
  
3.52%
Windows Vista
  
1.97%
Mac OS X (other)
  
1.71%
Mac OS X 10.9
  
1.61%
Linux
  
1.5%
Windows (other)
  
0.2%

Windows 8 / 8.1 comes sums at roughly 13%, while OS X (all versions) is (estimating generously) 8%.  So 13% may be a failure compared to Windows 7's 58%....  but no one thinks of OS X's 8% market share as anything less than a smash hit.  

I get that the terms of failure for 8.x come from it's largest customer, the enterprise market, which has largely ignored it. It's why Windows 10 is a significant comeuppance for Microsoft.

All told, though, among desktop OS's, Windows is king.  No surprise there, really.  That's only the beginning of the story. 

Some of the other stats started to catch my attention with respect to all devices, and what folks are using them for.

From the same Wikipedia page:
"
According to Gartner, the following is the worldwide device shipments (referring to wholesale) by operating system, which includes smartphones, tablets, laptops and PCs together.

Worldwide Device Shipments by Operating System
SourceYearAndroidiOS/OS XWindowsOthers
Gartner[1]201448.61%11.04%14.0%26.34%
Gartner[2]201338.51%10.12%13.98%37.41%
Gartner[3]201222.8%9.6%15.62%51.98%
"

The above table establishes that "device" shipments of Windows devices is relatively small compared to Android devices, with Apple devices coming in 3rd overall.  If we set form factor aside and look at all consumer "computing devices", Android is undeniably tops, and has been for a few years already.

Now look at this...  (a breakdown of what OS folks are using web browsers on.)



Web clients' OS family statistics
Windows
  
55.74%
Linux based
  
22.02%
iOS, OS X
  
17.17%
Symbian, S40
  
2.02%
Other
  
3.05%
Linux based is actually composed of both desktop and Android based devices... digging a bit, the stat that shows Android usage specifically shows it at less than half of "Linux" based stats.

See the rub?

The web is unequivocally consumed by desktops, which are owned by Windows.

Android... the most popular consumer "device" (by an allegedly monopolistic margin in some markets), represents less than half the web traffic.

Either the margin of error is so far off these stats, rendering them all useless, or there's an interesting story there.

This means the good old browser is being left behind by mobile devices.   This has been observed before, but it's interesting to note that Google's hanging on it.  I mean, what's your home page?  If you're like a lot of folks, it may well be www.google.com.

Here's a question.  Is the browser propping up Windows, or is Windows propping up the WWW?

Here's an answer...  Microsoft's go-forward strategy is Mobile First / Cloud First.  Windows 10 is a mobile OS that supports desktops, not a desktop OS that supports mobile.  Clearly, Microsoft is taking risks, but their goal is to push Windows into the mobile app world, taking only the parts of the world wide web that are important to mobile and cloud.

One might argue that Windows 10 includes both IE 12 and the Spartan browser.  Further, Microsoft is just releasing a new ASP.NET and MVC web development tools.

No matter what, the web app is not going to vanish overnight.  Still, Microsoft adding yet another browser and more tools is 1) further fragmenting the already terribly fragmented web app platform, 2) a bone thrown to the many enterprises who have built their infrastructure on web technology and can't afford to fully shift their enterprise app platform (and developer skill set) to mobile apps in the next few years, and 3) continued support for the still critical http protocol that is a core network transport for everything in the Internet of Things.

One might argue Office 365.  The backfire there:  pretty much everyone who has Office 365 also has desktop and even mobile apps.  This leaves Office 365 to be primarily a services back end for those apps, with a web-based UI as a fallback if you for some reason can't run the native apps.

Apple's iOS success and Google's Chromebook failure led Google to cannibalize itself into the (unexpectedly?) wildly successful Android.

Android's success, in turn, is eating away at Google's classic model...  Google will likely always be a media platform first, but more and more, that media platform is being confined to (and defined by) Android.  (Like a genie enslaved to its bottle...  "Phenomenal cosmic power, itty-bitty living space.)

All in all, I'll go out on a limb and say that Microsoft is about done propping up the consumer web as an application platform.

Still, forgetting what Microsoft is doing, Google is SaaS heavy, and has no PaaS or IaaS offering to fall back on.  They have no desktop OS to elevate them.  All the cards in their foreseeable future appear to rest on Android (and therefore Samsung).

With the anti-trust suits already starting against Google because of Android, it’s hard to really see Google’s future over the next decade.

Being at the top, it’s pretty easy to say Android is peaking.   The question is where does that leave Google.  YouTube?  Self-driving cars?

I find myself thinking it makes a bit more sense that Apple and Yahoo have aligned their search with Bing.

What am I missing?

Friday, April 17, 2015

Apache Cordova and Windows Universal (8.1)

Thanks to everyone who made it out to the Granite State Windows Platform Users Group last night (April 16, 2015) to see my presentation on using Apache Cordova to create Windows Universal (8.1) "store apps". 

I walked away feeling like I'd helped inspire everyone who attended...  even as an "intro" level presentation, the demos seemed to keep everyone engaged, asking questions, and prompting me to go "off-roading" to check out various features. 

We really had fun with it!

So while the best part of the presentation was the demos, the slides do have some great links in them.




 
 

If you missed it, don't worry too much...  I'll keep this presentation dusted off & ready for upcoming events, as well...  I could imagine it fitting well into a Code Camp event or something akin to it in the coming year.  

Heck, feel free to reach out to me if you think this is something you'd like to know more about... I'm happy to have a chat about it.

Next month's meeting is already scheduled...  we're looking forward to Jim O'Neil coming to reprise his Boston Code Camp 23 presentation on Themes in Windows Universal (8.1).   Please join us!

Meetup:  http://www.meetup.com/Granite-State-NH-WPDev 



Sunday, March 22, 2015

Data Persistence in Windows Universal (8.1) apps (Boston Code Camp 23)

Thanks to everyone who joined me for my Boston Code Camp 23 presentation.  Shuffling data around is a core responsibility of any serious computing platform.  Windows Universal really goes above and beyond the mundane call of duty with consistency and utility. It's part of what makes the Windows client platform a true "cloud car", especially with its Backup, Roaming Settings / Folders, and Roaming Password Vault capabilities as native functionality... all from the Windows.Storage namespace.

Here are
For the individual who asked what encryption level the Windows Password Vault functionality uses, I looked it up, and it's 128bit AES encryption.  Stern stuff there.

Another question came up about app backups.  As I said in the presentation, the content of the Local storage is backed up automatically to the cloud by the OS.  (Isn't that fantastic?!)

Likewise, as mentioned, the Temporary storage is excluded from backups.

One detail I missed however... the LocalCache storage area.  LocalCache is like Local except that it is not backed up.  LocalCache differs from Temporary storage in that the OS will not wipe it as it occasionally does the Temporary storage.  Next time I do this presentation, I'll make sure to update it to discuss LocalCache.


Here's a comparison of the storage options available to developers in the 8.1/universal platform. Note that each user on a device gets their own app-specific sandbox *and* OneDrive space for each installed app.


TypeAvailabilityLimitsSettings hashtableBacked Up By OSSync'd to all App / User / Devices by OSEncryptionWiped By OS if space is lowUri prefixSuggested use
Install PackageUniversalStatic/ReadOnly Media from InstallNoNoNoSandboxedNoms-appx://Version specific static app media
LocalUniversalAvailable free storageYesYesNoSandboxedNoms-appdata:///local/General
Local CacheWindows Phone OnlyAvailable free storageYesNoNoSandboxedNo Persistent cache
TemporaryUniversalAvailable free storageYesNoNoSandboxedYesms-appdata:///tempSemi-persistent cache
SD/RemovableUniversalAvailable free storageNoNoNoNoneNo Removable/general
RoamingUniversal100kYes(by virtue of roaming)YesCloud PartitionedNoms-appdata:///roamingRoaming settings
Password VaultUniversal100k (included in Roaming)Password-friendly structure(by virtue of roaming)YesCloud Partioned + 128bit AESNo Roaming credentials /OAuth tokens



I asked my stunt audience (the kids) later what my presentation had been about.  I was glad to know at least one of them had gotten it right. 

They were inspired, though, and that's the important part. 

I hope you found inspiration in technology from both the day and maybe in some small part from my presentation.



Friday, January 30, 2015

Is Your Solution Delivery Strategy About to get Avalanched by Windows 10?

HoloLens took the spotlight when //build/ 2015 announced it had sold out in under an hour, but I can't help but think at least as big a chunk of the excitement is around Windows 10 (or as we developers like to think of it, Windows Unified). As cool as HoloLens is, Windows 10 will most likely be landing in your lap long before HoloLens has images dancing in your living room. 

If you're not already preparing for Windows 10, your solution delivery stack could be in for a shock from the client up. Microsoft is in the process of launching a re-boot of itself, and Windows 10 is the fulcrum of that effort. As usual, many of its changes are aimed at pulling developers in. If solution development has a place in your organization, this will likely impact you as well. 

"Mobile First / Cloud First" is, as always, the key phrase, and for a client OS... if it's not for cloud devices.... give it a moment...  let that sink in...   Yes.  Windows 10 is an OS for mobile devices. Even if your device is a big heavy block of a workstation sitting near your monitor.  It will have the same mobile app store as phones and tablets, and it can be managed by the same Enterprise Mobile Device Manager (MDM).

Windows 8 was an introductory / transitional OS. With Windows 10, the transition matures.  Windows 10's maturity is likely to make it far more palatable than Windows 8 was. (Keep in mind that Windows 8 is only a "failure" in terms of Microsoft's other OS releases... Windows 8/8.1 has a bigger install base than some of the most "successful" of its non-Microsoft competitors. If Windows 10 becomes the hit many foresee it to be, it has potential to become the de facto standard platform to truly de-throne XP and even Windows 7.)

Windows 10 also adds a bit of a surprise, especially around browser technology.  Microsoft is tossing in to Windows 10 a whole new web browser (in addition to Internet Explorer) currently code-named Spartan. This new browser is intended to go after the consumer browser market, which IE has lost considerable ground in. I speculate that Spartan will be a breath of fresh air for consumers who feel IE's bloat-related flaws collectively compels them to download Chrome or Firefox.

If you're a web application developer who does more than a little HTML, on the other hand, you're probably already groaning. You know what a pain browser compatibility is. (The browser was never intended to be a homogenous cross-everything platform, but that's how a lot of web designers treat it, and they've shaped culture to expect it. Despite the best efforts of tools like jQuery and others to try homogenize, and trends like responsive to try to change the culture of presentation homogeny, web application developers get severely burned in the crossfire.  I've got more than a few scars to prove this, but you don't have to look further than jQuery's failed mechanisms for helping developers with these issues.    (First there was $.browser and $.browser.version, then $.support... then, "awe... heck... we give up, use Modernizr".) /rant )

Spartan is a move that makes total sense, but it can't help but add complexity to web application developers' lives.  

In fact, in my mind, the long term net message is... there's only one way to end browser pain... by getting out of web as a client platform. (Web services are the only part of the web worth salvaging.)

Microsoft has seen what platform diversification has done to its core OS business, and it's not good. Developers need a consistent platform to deliver consistent solutions on, and that's been a bigger part of Microsoft's success over the years than even they seem to have realize.

So if web application development is becoming ever more complex in an already over complicated domain, how should one produce and deploy apps?

In a word:  native (aka mobile).

Windows 10 is a unifying platform, a "pentecostal" event to counter the "tower of babel" event of Windows platforms that have fractured into existence since the end of the .NET Compact Framework era. Where before development was requiring more and more effort to support PC, tablet, smartphone, wearable and even Xbox, Windows 10 has a unified SDK across all those platforms. For the first time ever, a .NET developer can build a single solution that runs in all those devices. There may be runtime differences between platforms that have to be ironed out, still, but not compile-time  (if(system.capability.phone) {} rather than #ifdef WINDOWS_PHONE_APP)

And think about it... what are the big reasons for web deployment?   Centralized management and centralized deployment.  Think back to MDMs and mobile app stores.

(Xamarin plays a roll in all this as well. Between Windows 10 and Xamarin, developers will be able to leverage a good chunk of their code base across all hardware, even non Microsoft platforms such as IOS and Android. This, too, is a breath of fresh air, because the cost of maintaining multiple code bases (and talent pools) is ever climbing. Xamarin will likely never be the 110% development experience that the latest .NET framework is, but neither was Silverlight for Windows Phone 7, yet one could do some fairly heavy lifting with it.)

Because Windows 10 is one platform that runs across form factors, it essentially means that any app written for Windows 10 is a mobile app. In that light, it means that Windows 10 is most likely to vault Windows into the top spot for mobile platforms by its projected install base. 

This on top of Microsoft's recent "trickle up" theory of mobile market share growth, where Microsoft has been grabbing market share by targeting the feature phone market.  (This tactic has little effect in the US, where carrier subsidies nullify the low end to "$0")  At some point Windows Phone will hit critical mass outside the US. Once that happens, even US developers will no longer be able to afford to ignore it.

Even if Microsoft is not contributing directly to your solution stack, Windows 10 and its biases have potential to culturally influence your solutions and solution delivery over the next decade.

Friday, January 23, 2015

Lumia Problems

I'm a pretty serious fan of Windows Phone, and especially Lumia devices.   In addition to the NH Windows Phone Users Group (now Granite State Windows Platform App Devs),  I've convinced everyone in my immediate family, and a good chunk of my extended family to go Lumia... 

So it breaks my heart when I see a Windows Phone that's gone awry.  Among the many I've come in contact with, I've seen one or two develop issues that seem outside of normal hardware wear & tear.

My own device has occasionally had trouble with its SD card, occasionally forcing a restore.   These are annoyances to me, Windows Phone is a cloud car, so resetting the device and getting it back to normal is really only a mater of re-entering credentials, and the phone's back in business.   The restore tends to re-apply start-screen layout and the set of installed apps on the device... the apps themselves are responsible for their individual recoveries, typically from their own cloud backups.   The few times I've been forced to do a full hard reset & restore, it's been an ordeal that typically lasted under an hour (with a good Wifi connection).

This past week, I think the SD card flaked out again, but restoring from a backup didn't resolve the issues.   I identified a number of odd behaviors, and was almost convinced my device was beyond recovery:

  • Power button:  the typical short-click which should toggle the device in & out of standby mode simply was not operating.   Long clicks, intended to shut the device down completely, were working, so... not a hardware disconnect.   In order to wake the phone up, I had to plug in a power source... and then had to wait for it to put itself to sleep.
  • App updates:  app updates were identified and the device would queue them, but rather than automatically downloading and installing, they'd hang in the download queue, all marked as Pending.  Occasionally one would come up with an error, but a retry would simply hang it back in Pending state.
  • WiFi internet sharing would not allow clients to connect.
  • Power saver:  on a whim, I put the device in power saver mode.  At first, it wouldn't take the change.  Then I told it to always go in powersaver mode, and then, ironically, I couldn't get it OUT of power saver mode.
  • Data Sense:  the app would crash and abend when trying to open it.
  • Mail sync:  would only sync manually
  • Alarm:  I missed my usual bus twice this week because my alarm failed & I overslept.
The end solution:  hard reset, but don't restore from a backup...  just manually set up your accounts and re-download apps.  It took me a couple hours, but to get my 1520 back on track again, it was well worth the time.  In retrospect, I'm also happier because I didn't re-install a ton of apps that I don't use anymore, so the device is much leaner.  

The Windows Phone platform is relatively mature... it doesn't fail often, but I think I'm going to have to pick up a better SD card.  The hard part is that I think I've heard rumors of some of these symptoms on devices that don't have SD card slots.

My understanding is that it has something to do with the Cyan firmware update.  The Denim firmware may provide more stability, and that update started rolling out to devices in December with a promise that by the end of that month, it would be rolled out to the full Lumia nation.  We're pushing into Feb 2015, and most in the US are still waiting.


[Addendum, 5/7/2015]:  My Lumia 1520 had a relapse of the above symptoms on Windows Phone 8.1.1 / Denim.   On a whim, I decided to try upgrading to the Windows 10 Insider Preview.  The problems with the SD card intensified as well.  I finally bit the bullet and replaced the SD card.  I did have to hard reset the phone back to the "stock" Windows 10 Insider Preview, but after that, not only were all the above symptoms resolved, but another long running annoyance...  a problem I thought to be related to the Lumia 1520 itself, went away.  The problem...  often, entering the unlock code, number presses would repeat so quickly that the phone would fail to unlock.  Occasionally it was bad enough to lock my phone for a minute or two.    Again, this issue is now resolved along with the other symptoms I noted in this post by replacing the SD card with a new one.

Monday, January 19, 2015

AppStudio gotcha

Recently, I upgraded the Granite State (NH) SharePoint Users Group's website from WSS 3 (MOSS 2007 generation) to SharePoint Foundation 2013.  The upgrade itself went as well as a 2007 to 2010 to 2013 upgrade could go, in general.

The only real "problem" I ran into was the Windows Phone app I wrote for the group years ago.  It was coming up with a 401 error trying to grab content from lists.asmx.  

I spent some time digging in the dirt, trying to resolve the 401, and hit a few common settings known to have an impact, but no good.  

Rather than struggle with it in my not so copious amounts of spare time, I decided to trash the old app, and build a new one with AppStudio.  

The app loads content from the #NHSPUG web site (http://granitestatesharepoint.org), mostly via RSS feeds.  I put a little extra effort into this.  Using AppStudio (http://appstudio.windows.com), I found a couple hours...  after that, I had not only a much prettier v3 of the Windows Phone app, but a Windows 8.1 (tablet style) publishing package as well.

One thing that caught me off guard though... the Gotcha:

The Windows 8.1 edition of the app wouldn't load the content from the users group website. 

With some debugging, I found that attempts to load the content were coming up with "Unable to connect to the remote server. hresult=   -2146233088".

Turns out the error had to do with the fact that I had not enabled Capability "Private Networks (Client & Server" in the Package.appxmanifest.   Ironically, the app works fine anywhere except where I was trying to test it:  on the same network as the content source server. So, to be fair, this is an environmental/configuration issue, not AppStudio, but it was worth mentioning, since my original assumption led me down that path. Maybe this will help someone else.


Oh... Here's the Windows Phone app:
http://www.windowsphone.com/s?appid=8c1ce3ea-9ffd-46a0-80bd-6b45d1019b32

And here's the Windows 8.1 (tablet style) app:
http://apps.microsoft.com/windows/app/granite-state-sharepoint-users/01ea0a83-f3af-4be6-abb0-268587072686


And here's my moment of shame recording the incident and solution in the forums:
https://social.msdn.microsoft.com/Forums/windowsapps/en-US/be7b02cf-25d0-4aa2-8850-e0e2dce21fd2/appstudio-windows-81-apps-not-loading-external-content?forum=wpappstudio&prof=required

Wednesday, January 7, 2015

Lumia Denim, Windows 10 Phone

Lots of folks have been looking forward to the impending Lumia Denim update for Lumia Windows Phones.  I know, cause I'm one of them.   I wish I had special insight into when my AT&T 1520 will be updated, but I don't... so I find myself checking sometimes multiple times a day hoping that the upgrade will suddenly become available. 

The amount of buzz on Lumia Denim is overshadowing a more important update, in my humble opinion.  The Windows 10 Phone update (not Windows Phone 10, but Windows 10 Phone.)

The killer feature for Windows 10 is the integration across hardware form factors...  Desktop, Laptop, Tablet, Phone and even Xbox will all be running editions of Windows 10 (thus we will have a Windows 10 Phone OS, rather than a Windows Phone 10 OS).

Recently my son ran across my old Windows Phone 6.   One thing that made me really love the platform was that I could develop code using the .NET Compact Framework, and the EXE worked anywhere that had a .NET runtime installed... and I mean anywhere.   I literally was able to take an EXE and drag it from phone to desktop and back without any form of recompile, and it would run great on either hardware.   More impressively still, I was able to take DLLs compiled for the .NET CF, and run them in unexpected places, like reference them in ASP.NET web applications...   at one point, I had code for a Sudoku game model that was running desktop, phone, and WEB server!  :)

Needless to say, I was disappointed by the fact that Windows Phone 7 used a different flavor of the .NET Compact Framework called Silverlight, and Silverlight was a lot less compatible, and required a re-write of my hobby code to make it run.   This re-write wasn't nearly so portable.  In fact, come Windows Phone 8, I had to we-write a chunk of the code I'd done for Windows Phone 7.   This has been the plight of the Windows Phone developer;  with each release of the OS comes a new set of SDKs to code against.

Like the undoing of the curse of the tower of Babelon, with Windows 10, we'll see the all the hardware speak the same language again, and this will be huge.   It's already massive to be able to suggest that you can run tablet apps on your Windows 8.1 machine.  Imagine how it will be when the lines blur further.

So... bring on Denim, please, but don't hold back Windows 10!

Monday, January 5, 2015

Cobbler's Shoes

Happy New Year! I hope you enjoyed the holidays!
 
I took time off for the holidays... not as much as I'd have liked to, but enough to enjoy it.

What'd I do?

The cobbler finally got a chance to tend to his own shoes, at least infrastructure wise.

A few years ago, I caught that MS was giving away a license to Windows System Center Core, and I realized I had enough retired hardware to cobble together a hobby-level host. I then did a Physical->Virtual on my small network of Windows 2003 based servers that I ran the NHSPUG website from.

The setup was nice, actually... all three virtual machines ran with room to spare on what was originally an old client-class PC. With dynamic RAM turned on and all three VMs cranking, they occasionally managed to consume nearly a third of the host's 8GB of RAM.

Having recently had opportunity to get a hold of platform MSDN licensing, I upgraded my entire home network infrastructure by two platform generations across the board.

Seriously... Windows Server 2003 ->  2012 R2 64, SQL 2005 -> 2014, SharePoint WSS3 -> SharePoint Foundation 2013.

Almost all of it was build, replace, rip... build new VMs, integrate them into the domain, migrate data & config as needed, then shut down the systems they replace. The fun one was SharePoint WSS 3.0 upgrading to Foundation 2013. I had to bounce the content databases off a spare 2010 farm I had left over from a project at work. It was nice that it was possible to do that, given that the 2010 farm was a different domain. It's amazing how much you can get done in short order when you are a one-man IT shop... the communications overhead savings alone is unreal.

The hard part is that newer software in the 64bit range uses much more system resources, so I have extended hosting not just to my System Center, but also to two Windows 8.1 Pro systems running Hyper-V, just to spread out the necessary load and provide some critical system redundancy.

With that, only obvious thing externally is that the Granite State NH SharePoint Users Group website ( http://www.granitestatesharepoint.org ) is now SharePoint 2013 based.

Internally, things generally seem a touch faster, smoother... maybe that's just psychological, but I notice the difference, even if my wife & kids think it just functions as always, as expected.

I guess the irony in this is that my hobby infrastructure backlog is knocked down a few more notches than I thought I would ever get to... (yes, I took time off from work, and, to chill, I did some of what I do at work.) now my hobby development backlog has new possibilities and subsequently grown substantially.

One of the first things I've got to take care of is the few services the SharePoint upgrade has caused... the NHSPUG site still has some cosmetic issues I want to sort out. My Windows Phone apps that integrated with the WSS3 site are now broken, and I have some jiggering to do with my dev environment before I can even diagnose them. That doesn't even cover some of the things I want to do with the NHWPAD group and my hobby/portfolio projects (e.g. Jimmy Sudoku).