Is Microsoft planning a ‘bait and switch’ with the ‘free’ upgrade to Windows 10?

There’s a lot of uncertainty around exactly what Microsoft are offering for the ‘free’ upgrade to Windows 10 that’s going to start rolling out on July 29th. winsupersite.com have a good collection of questions people are starting to ask about what is included in the upgrade offer.

An article in Forbes discussing some internal presentation slides that ComputerWorld obtained is suggesting that the ‘free’ upgrade may not turn out to be entirely free after all, as a cryptic statement from Microsoft states:

“Revenue allocated is deferred and recognized on a straight-line basis over the estimated period the software upgrades are expected to be provided by estimated device life…. [The estimated device life] can range from two to four years”

We can only speculate exactly what Microsoft means by this statement, but it implies the ‘free’ upgrade is only initially free, and thrn at some point during the lifetime of your installation, the cost will be recouped. Exactly how or on what timescale the cost is recouped is unclear, but this statement implies at some point you will be charged for your Windows 10 – possibly ransomware style (‘Pay $199 now to continue using Windows 10’), or maybe subscription style (a monthly subscription to keep the install active?) – at this point there’s not enough information to be able to say. But it does seem clear, we’re not getting Windows 10 for ‘free’.

Windows Phone – is it dead yet?

In recent weeks, Microsoft has axed Stephen Elop, former CEO from acquired Nokia and recent lead of their Mobile Devices Group, written off $7.6 billion as a loss from their failed acquisition of Nokia, cut 7,800 jobs, mostly in their Windows Phone business, is getting slammed with bold statements in the press such as “Windows Phone is dead. Microsoft Lumia is dead”, and still, pro-Microsoft industry bloggers like Paul Therrott are holding on to beliefs that maybe it’s not dead yet, with statements like “Analysis: Microsoft is scaling back on Windows Phone Drastically“.

Uhuh. Really? It’s Dead. Let it go. It sucked and no-one bought it. Apart from that one guy somewhere.

Getting Started with Cal-HeatMap and the AngularJS Cal-HeatMap directive

Working on my AngularJS app that visualizes historical playback of received Amateur Radio signals (www.spotviz.info) I wanted to have a ‘heatmap’ type display that shows density of the received signals per day (or hour). Searching around, the most common library to display a heatmap seems to be Cal-HeatMap. And since this is an AngularJS based app, it makes sense to use a directive to display the heatmap in my view where needed – Angular Cal-HeatMap seemed to be what I needed.

Starting with anything new it’s far easier to build something small that works first, and then include it into something larger/more complicated. Here’s my standalone test app using Angular Cal-HeatMap with Cal-HeatMap. It has hardcoded data, just to show the heatmap rendering.

The first issue I ran into, was that my standalone app was rendering fine, but copying the same directive usage into my SpotViz app, I could not get the directive to recognize my config options, or render any data.

As with everything I’ve found so far with AngularJS, sometimes stuff that should be easy turns out to be hard, but in most cases only because I don’t understand what’s going on, or how I assume it to be working is completely wrong 🙂 At least I’m not the only one who finds this about AngularJS, to quote Nathan LeClair from one of his posts:

"As I’ve gotten a little into AngularJS I’ve been surprised
by how often my assumptions about how things will work 
have turned out to be wrong".

Lesson #1:

I don’t know if this is an issue specifically with how Angular Cal-HeatMap directive is implemented or not, but the way I was trying to use it, it appears it initializes before the point where I retrieve and setup the data for display. Once I retrieve the data, setting it in the $scope variable that the directive is using seems to have no effect; it doesn’t see the data and display as I’d expect.

My work around for this was to use ng-if to only initialize the directive when I toggle a flag after the data is ready. Previously I was using ng-show to toggle the display of the directive, but that apparently causes the directive to initialize even though it’s not visible. I don’t know if there’s something else I can do to re-initialize the directive, but this works for now.

Here’s what I ended up with:

[code]<cal-heatmap ng-if="search.showDataDensity"
config="search.heatmap.config"></cal-heatmap>[/code]

For context, here’s an example of what the heatmap looks like with some example received signal data from 2014:

heatmap_example

 

 

Lesson #2:

Cal-HeatMap uses 5 CSS styles by default for coloring according to how many data points are for each date, from .q1 through .q5. For data with a count > that whatever the top range is set to, apparently css class .q6 gets applied. Without any other change however, if you haven’t defined your own .q6, these dates will be displayed as if there’s no data on those dates. This wasn’t obvious to me, but is discussed in this post on SO. Add a custom CSS class for .q6 with a slightly darker color than .q5, problem solved.

Summary

I’ve some polishing and cleanup to do, but my heatmap display is almost ready to go!