Wednesday, March 27, 2013

Canada's Carriers Walking A Tight-Rope With Programmers...

You may remember that I have an ongoing disagreement with Bell Canada, over their policy to give away customer info to third parties and then refuse to reveal as to whom they have given it to.  After the last quick volley over the phone between myself and Bell Canada, I advised that their decision would ultimately cost them dearly.

Bell had made their move.  Now it was my turn.

In the days following that last conversation, an iOS static library was born.  The Carrier Degradation Framework (or the "CDF") as it came to be known, when loaded by a host iOS app would check the carrier settings and if it detected the app was running on Bell Canada, or anything related to Bell Canada (such as MVNO's like Virgin Mobile running on their infrastructure), it would start degrading the device performance, doing a number of things like spuriously turning on the GPS to make the phone hot and drain the battery prematurely, alloc memory to slow down execution of apps, put the host app to sleep, and a few other things I won't mention.

As you can see from this screen capture of a few lines of code, this isn't exactly rocket science...

The net result was when you compared two identical iPhones and the only difference was one was on Bell and one was on Rogers, the Bell phone would die of flat batteries nearly two hours before the competitor's device and the experience was generally sluggish in comparison to the Rogers one.  Combined with a simple remote signal on a web server, it could easily be remotely enabled and disabled without access to the device needed.

The creation of the CDF illustrated something big to me, which I'd not contemplated much before;  What I realised in making it is Canada's carriers can't go around brazenly aggravating the public like they used to, because in this day and age it's only a matter of time until they're ultimately going to inspire the wrong person to create a monster that's worse than the Carrier Degradation Framework, and the carriers aren't equipped to protect consumers from it.  After all, which one of the static libraries on the umpteen apps on your phone is checking what carrier it's working on and modifying it's behaviour accordingly?  

After you've wrestled with that question, now contemplate if someone like Bell Canada can fight that fire?  The answer is... they can't and don't.

In this case, Bell Canada were lucky because regardless of my know-how and my position as an unhappy customer, the CDF will be deployed somewhere where it can ultimately do some good...  But not everyone Bell Canada annoys has the moral obligations that I have, and so eventually something like this will go wild when they push the wrong buttons with someone else.  

In this case, whilst my disdain for Bell Canada continues under the circumstances, they can rest assured that the CDF wasn't ultimately how I used my turn in this game of chess.  

To conclude, the problem as I see it is this:  Bell Canada is poking the public like they Bell believes it has got the upper-hand, without thinking that the same aggravated members of the public is now writing the code for Bell's customer base.  After all, think how many iOS, Android and Blackberry apps made in Canada are created by people that don't have a beef with these carriers?

The position they're in now reminds me of this Supertramp album cover to "Famous Last Words"...

I just don't think the carrier's have realised this yet.