Analytics for iPad, Release 1.2

A new release for Analytics for iPad has been submitted to Apple today.

Depending on the current speed of Apple’s review process it may take about 10 days to hit the store.

Here is a list of all the things to come with the 1.2 release:

New Features:

  • eCommerce Reporting added
  • Forward Reports as Excel-CSV
  • Forward Reports as XML
  • Possibility to switch to another account added
  • Language Support for Reports added for:
    Deutsch, Français, 日本語, Nederlands, Italiano, Español, 中文 (简体), Русский


Improved:

  • Animation for Fullscreen Reporting improved
  • Report Titles shortened for better readability
  • Several Reports display more than 10 entries by default (configuration for an exact count is on the way)


Bugfix:

  • Fixed a crash that happened if the Premium-Upgrade was done too fast after application launch
  • Fixed a problem in the Login form which blocked a second login after a time out


In the meantime we will work on other features to improve Analytics for iPad to meet your needs!

Keep sending us emails with your ideas and wishes, so we know which direction to go!

2010/07/03 – Today the update hit the store, watch out for update notices in iTunes or the App Store to get it on your iPad!

Leave a Reply

V8 vs. Spidermonkey

About a year ago I decided to go with v8js to use javascript code within php because it was so much easier to handle.

Today I benchmarked a problem related to the v8 engine and just out of curiosity I ran the same test with Spidermonkey.

A simple A/B Test:

  • A = define a JS Function and call it it in a loop
  • B = define a JS Function once and call it in a loop

The results for V8 were:

Runs 10 100 1.000 10.000 100.000
A 0.0048ms 0.0018ms 0.0159ms 0.4257ms 4.9063ms
B 0.0004ms 0.0011ms 0.0072ms 0.1733ms 1.8506ms

It was not really surprising that the one-time-definition was faster.
I tried exact the same with Spidermonkey:

Runs 10 100 1.000 10.000 100.000
A 0.0016ms 0.0276ms 0.2141ms 1.8415ms 18.483ms
B 0.0011ms 0.0039ms 0.0713ms 0.8591ms 8.4125ms


Huge difference compared to V8!


Here’s the test code:

V8 Test:


<?php
$runList = array(10, 100, 1000, 10000, 100000);
$jsFunc = 'function myTestFunc () { return {foo: "bar"}; } ';
foreach ($runList as $runs ) {
$start = mstime();
$js = new V8Js('Test');
for ( $i = $runs; $i > 0; $i-- ) {
$js->executeString($jsFunc, 'Test.Context');
$js->executeString("myTestFunc();", 'Test.Context');
}
echo "#1: " . (mstime() - $start)." ({$runs} with re-definition)<br />";
unset($js);
$start = mstime();
$js = new V8Js('Test');
$js->executeString($jsFunc, 'Test.Context');
for ( $i = $runs; $i > 0; $i-- ) {
$js->executeString("myTestFunc();", 'Test.Context');
}
echo "#2: " . (mstime() - $start)." ({$runs} without re-definition)<br />";
unset($js);
echo "<hr />";
}
function mstime() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}


Spidermonkey Test:


<?php
$runList = array(10, 100, 1000, 10000, 100000);
$jsFunc = 'function myTestFunc () { return {foo: "bar"}; } ';
foreach ($runList as $runs ) {
$start = mstime();
$js = new JSContext('Test');
for ( $i = $runs; $i > 0; $i-- ) {
$js->evaluateScript($jsFunc, 'Test.Context');
$js->evaluateScript("myTestFunc();", 'Test.Context');
}
echo "#1: " . (mstime() - $start)." ({$runs} with re-definition)<br />";
unset($js);
$start = mstime();
$js = new JSContext('Test');
$js->evaluateScript($jsFunc, 'Test.Context');
for ( $i = $runs; $i > 0; $i-- ) {
$js->evaluateScript("myTestFunc();", 'Test.Context');
}
echo "#2: " . (mstime() - $start)." ({$runs} without re-definition)<br />";
unset($js);
echo "<hr />";
}
function mstime() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}



I just wanted to share the following complaint:

WS only captures the visible part of the web page, the rest is blank.

Please fix this or I’ll have to write a scathingly negative review and give you zero stars.

(Running iOS 5 developer preview.)

Yours, [..]

Remember: iOS 5 is just a Developer preview right now (a few days old) and scheduled to be made public in the next months.

Time Machine Interval

Time Machine is a great way to backup all files and restore to any point in time, by default it creates a new backup every hour.

Normally this won’t hurt the performance but if you have many small files on your disk or huge portions of your data change very often, it will slow down the whole system.

You can change the intervals to reduce the slowdowns. To backup only every 6 hours, open your terminal and:

sudo defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int 21600

The interval is in seconds.

To setup more sophisticated schedules you can also try a free tool called TimeMachineEditor (http://timesoftware.free.fr/timemachineeditor/).

Archived Apps in XCode and where they are

Archived Apps in XCode are a great way to submit new versions to iTunes Connect because they are automatically grouped, tagged and re-signed in the process – you don’t need to manually find the compiled App, zip it & upload with the Application Loader.

If you start at a new Mac without data migration, you can simply copy the folder with all archived App versions to your new users library.

You can find it here:

/Users/<USERNAME>/Library/Application Support/Developer/Shared/Archived Applications


Or, if you develop at different Macs, symlink that folder to your Dropbox to have them accessible everywhere :-)

Analytics for iPad, Release 1.6

Today the 1.6 Update was submitted to Apple. Originally this update have been scheduled for the first week of November but was put on hold to be released with the iOS 4.2 version to have the least possible problems when everyone upgrades their iPad :-)

It contains only a few but very cool new features:


The new features are:

  • Support for Multiple Accounts – often asked for, here it comes!
  • Advanced Segments – take a better look at your reports by switching and comparing subsets of data
  • Open Reports in other Apps like iBooks – any App that supports PDF Files can receive reports for later usage
  • Print your Reports! – Support for AirPrint is now built in


Improved was the following:

  • The general speed of the website listing updates and report downloads was improved
  • Goals have now names instead of numbers


Also one bugfix is included:

  • Some users with special characters in their password had trouble logging in


In addition to the Update of the Free Version including its Premium Upgrade, there was also a full blown premium Version submitted to the store. That version is exactly the same but meant for everyone who has disabled In-App-Purchases and can’t get the premium upgrade.


2010/12/05 – Today the update hit the store, watch out for update notices in iTunes or the App Store to get it on your iPad!

Detect iPad and iPhone using Javascript

I’ve got some people asking for a simple Javascript-Detection for iPad’s.

It’s simple, just take a look at the browser identification:




Example:


It basically searches in the browser information for any occurence of “iPad” or respectively “iPhone” and returns true if found.

Here’s an example of Safari’s identification on the iPad:


Switch to our mobile site