CarrierIQ - The Ansca version

This post is aimed directly at something that is a major concern, first we had the CarrierIQ apps running on Androids that were *forced* on to users, here's something that is forced or baked into our apps when we build, thereby making us party to similar issues everytime we build an app using CoronaSDK.


Corona LaunchPad
Build great apps and games with Corona. Make them take off with LaunchPad!
Over 1,003,542,128 events served

what are these *events*, what do they measure? What do they tell us?, Metrics like I have 25,000 unique page hits make sense, or I have 500,000 overall pageviews, but what does over a billion events served mean?

Firstly these numbers are the LaunchPad stats, everytime a person builds and runs it on the device for testing, it triggers this, It is Ansca's version of CarrierIQ that tracks what you are building and on what device you are testing and running. Even if it is only the xCode simulator. Users that are playing games build with Ansca Mobile calls home and logs it on their server. I haven't 'wiresharked' this packet to check what it sends home, but it is scary that it does that and unknown to the user and placed by the developer using the CoronaSDK, just like Android builds have carrierIQ placed on the Android devices.

E.T. Phones home

I have Little Snitch running and it tells me that everytime I start up CoronaSDK, it wants to connect to blogs.anscamobile.com this is used to display the little stories in the welcome screen. So if you are running CoronaSDK, not only do they want to control the build by having a build server at their end ( concerns raised in an earlier post at http://howto.oz-apps.com/2011/12/cross-with-platform.html ) but also track every person using CoronaSDK be it a trial version or a licensed version. If I disallow the blog connection, I cannot build anymore, so it is that *deep* rooted on tracking.

Where in the world are you?

Now tracking users is one thing, They launched Launchpad to let users know how their apps were doing, or so it may seem, what about when I am testing, I do not want to know anything. This *could* be a service that is aimed from their end to prevent piracy so that unauthorised users do not build apps by cracking their protection scheme or even deter those that might have found a way to host their own build server by testing the same via the "ET Call home code stub"

This is wrong as there is no information on how this data is being used. From the years of data related services and as an Analyst, I can tell you that it is a matter of minutes before the data can co-relate a particular app that was build, let's say "com.tracker.app" by user theDev123 and signed with the client's certificate and given to the client, now the client runs the app on the device and gets an IP, mainly it will be the wireless in their home/office. Co-relate this recurring IP with the IP of the user's that build/log-in and voila, A nice little relationship diagram to see who is collaborating with whom and who is doing what. This is in a lot of ways breach of privacy.

Where's the OPT-OUT button?

In the modern world, I thought that there was an option to opt-out of such tracking, even when I call up for some services, they let me know that the call may be recorded and I can request the operator if I do not wish it to be recorded. Where is this option from Ansca? They are *imposing* this on everyone, is this even legal? This tracking should be like flurry works only when requested by the developer and approved by the user. The last thing I want is a client that comes back saying that they do not appreciate the app created for them tracking them. If there are any advantages of using CoronaSDK, this seems like one that is totally detrimental.

Not only Tracking, but Fooling ya too

Now tracking was not good enough, it seems that the main focus for Ansca is Numbers, I am unsure who these numbers are for, but they love generating and inflating them. Let us look past the privacy concerns of Launchpad and look at the statistics and their usage. If you have used Flurry, you will know that it is similar, however in Flurry, you have to log what you want at that point in code and only in the Distributed App, you might not get statistics in a developmental app (I need to double check that one). With launchpad, everytime someone runs it even in the xCode simulator to test native elements, it connects and generates a hit. So for example a user (licensed, not a test driver) builds for xCode simulator and need to adjust the textbox, let's say this goes on for 50 times till they get it right, that equates to 50 hits on Launchpad, now is that right???

The webpage of Ansca Mobile at http://www.anscamobile.com/launchpad/ states over a billion events served. How many of Indie or Pro developers that test this way have contributed to this? So it is not a Billion game-plays as it leads us to believe.

Not only that, the number Billion something is dodgy, what is the accuracy of that number? It is based on a javascript that increments this number by 96 every second. Something that was mildly highlighted by Michael H, another developer in his tweets a couple of months ago. If you can program with COronaSDK, you can definitely read a bit of JavaScript, so why not go to that page, then right click on the page and select view source. THe first script right after the CSS stylesheets reads as

<script>
//Show a rough approximation of number of events so far based on data
var o_unixtime = 1313778440;
var o_events = 104848496;

var eventsPerSecond = 96;

function setCount() {

 var date = new Date; // Get date object
 var unixtime_ms = date.getTime(); // Returns milliseconds since the epoch
 var unixtime = parseInt(unixtime_ms / 1000);

 var currentCount = o_events + eventsPerSecond*(unixtime - o_unixtime);
 $('.counter').html(addCommas(currentCount));
 setTimeout("setCount()", 1000);
}

$(document).ready(function(){
 
 setCount(); 
 
});

</script>


If you know a bit about epoch times (unix time in seconds) it is the number of seconds after Jan 1, 1970 00:00, so roughly if we divide that o_unixtime by 365 (days to a year) then by 24 (hours in a day) then by 60 (minutes in an hour) and again 60 (seconds in a minute) we get 41.6596 these are years since that data, add it to 1970 we get 2011.6596, which would mean approximately mid August 2011. LaunchPad was released around the same time, August 11th or so.

The second number o_events is 104,848,496 a start value, the increment factor is 96 (eventsPerSecond). If you see the $(document) specifies that this is using jQuery, however the line
$(document).ready(function(){
 
 setCount(); 
 
});

says that when the page is loaded, call the function called setCount


the function setCount is then as follows

the variable date gets a date object
then the variable unixtime_ms is assigned the current date/time in ms since epoch (1970, Jan 1, 00:00)
the next variable unixtime is the integer value of these ms into seconds by dividing it by 1000

then the currentCount variable is set as the seedvalue (o_events) + 96 (eventsPerSecond) * secondsSince that midAugust date we got (unixtime - o_unixtime)

then the setTimout is set to call this again in about 1000 ms

you can try this with Lua (ironically from within CoronaSDK) as

local o_unixtime = 1313778440
local o_events = 104848496

local eventsPerSecond = 96

local function setCount()
 local date_t = os.date("*t")      -- Get date object
 local unixtime_ms = os.time(date_t) -- Returns milliseconds since the epoch
 local unixtime = unixtime_ms     --math.floor(unixtime_ms / 1000)
        --We get the time in seconds than ms, so we do not need to convert ms to seconds.

 local currentCount = o_events + eventsPerSecond*(unixtime - o_unixtime)
 print(currentCount) -- $('.counter').html(addCommas(currentCount))
 timer.performWithDelay(1000,setCount)
end
 setCount()


check the output of this in the terminal or place this on a text on screen and compare it with the webpage above, more synchronised than the Olympic level Synchronized Swimming team.

I call this fooling the people for two reasons,
1. Do 96 people really play/launch CoronaSDK build apps every second continuously since 11 August 11?
2. The formula local currentCount = o_events + eventsPerSecond*(unixtime - o_unixtime) adds a seed of 104,848,496 as the number of events at the start of Launchpad (assuming that those are the number of people since Ansca released a stable version of CoronaSDK)

Numbers can be misleading and are used to fool people, it is shameful that it is found to have been true at an organisation that a lot held close to heart or still hold close to heart. It is obviously evident that the focus at Ansca is about numbers, It is difficult to put a finger on the pulse of how are these numbers important that they have to fake them or inflate them.

I am sure that it has something to do with funding and investors, I am lucky that I am not in America and shall not be swindled with another inflated set of numbers that at first caused the Global Financial Crisis, this might not be playing with the investments in Banks, etc but are trading organisations in USA that will affect investment and businesses

Summary


With this formula of 96 hits per second, it seems that the number of hits per day are 96x24x60x60 = 8,294,400
Let us assume that there are 300,000 licensed users and they are very aggressive developers and they are building their apps and testing it on a device every 5 minutes, (I guess to make changes to the code, compile, upload and then test, it would take at least a minimum of that time) that is 300,000x24x12 = 43,200,000 that is if all 300,000 developers code for all 24 hours, which is not the case, so when looked at practically, 8 hours a day per developer, it is 300,000x8x12=28,800,000. The only problem with this picture is 300,000 developers at it all at once, many are still grappling with the basics or running into errors with other stuff like widgets, storyboard, etc, so a realistic figure would be 10,000 developers active [if anyone disagrees, please help m eunderstand do you think there are more than 10,000 developers using coronaSDK 8x7 (8 hours per day for all days of the week) and keep building every 5 minutes?]

Plus what is that a real measure of? How many times a developer compiles and builds their app to test?

so the realistic numbers would be 10,000 x 8 x 12 = 960,000 which is far far from the inflated number of 8,294,400 which is about 7,334,400 more or 89% inflated per day, so over 180 days that is 89*180 = 16,020% inflated from a realistic figure. I hope that their get what they are so desperately trying to achieve, that they have to over inflate numbers so much

if we increase that 10,000 to 100,000, we still inflation and 100,000 users all round the world building every 5 minutes everyday is just impossible. I mean I would spend more time in the simulator than on the device for most of the things and I might build to device for the client to look at or if I need to test something on the xCode simulator or the device. So the number of builds that I might have in a 16 hours span (I do not have a 9-5 alter ego and then back to mobile development, this is my full time job) are about a maximum of 50 in a day where I needed to make a movie or upload builds for a client or have iterative builds.


On both counts,
1. Tracking every IP and build at their end, keeping the entire stuff compiler et all at their mercies is wrong
2. Providing misleading statistics and falsifying information is also wrong. Even more so if it is used as the basis for investments from the public or to garner deals with other partners to demonstrate just how *LARGE* their software is.


Given that this is just another corporation that exists for making money in a Capitalist country, the question is how long will they continue to allow such falsifying and inflating numbers by organisations? Why cannot Ansca release actual numbers, why do they use projection models and then impose them as official numbers?

Comments

  1. There's only one reason people do this with numbers:

    IMPRESS INVESTORS.

    The beer company and the United company both need investor money to survive. Hence their parading of numbers around like they matter, in big digits.

    There are other indicators of this being something that the Beer Company NEEDS... like the very slow development and constant harping on about their successes and the successes of those using their engine, but mostly how badly they take criticism. Those confident and doing well, and caring about their consumers, they don't act the way the Beer company does.

    ReplyDelete

Post a Comment

Popular Posts