<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>esDot.ca</title>
	<atom:link href="http://esdot.ca/site/feed" rel="self" type="application/rss+xml" />
	<link>http://esdot.ca/site</link>
	<description></description>
	<lastBuildDate>Mon, 08 Apr 2013 17:19:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mobile Hardware Stats 2013</title>
		<link>http://esdot.ca/site/2013/mobile-hardware-stats-2013</link>
		<comments>http://esdot.ca/site/2013/mobile-hardware-stats-2013#comments</comments>
		<pubDate>Mon, 08 Apr 2013 13:38:28 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1483</guid>
		<description><![CDATA[A large part of being a mobile developer is identifying your target platforms, and optimizing for the majority of your users. This can be difficult though, without some stats to indicate how your user base is spread out. Luckily, Unity has released a huge set of statistics for Mobile Devices, and there&#8217;s some very interesting&#160;<a href="http://esdot.ca/site/2013/mobile-hardware-stats-2013" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p>A large part of being a mobile developer is identifying your target platforms, and optimizing for the majority of your users. This can be difficult though, without some stats to indicate how your user base is spread out.</p>
<p>Luckily, Unity has released a huge set of statistics for Mobile Devices, and there&#8217;s some very interesting details.</p>
<p>You can find the main blog post below:</p>
<ul>
<li><a href="http://blogs.unity3d.com/2013/04/07/mobile-hardware-statistics-and-more/">http://blogs.unity3d.com/2013/04/07/mobile-hardware-statistics-and-more/</a>&#8216;</li>
</ul>
<h1>iOS</h1>
<div>Particularly interesting to me, was the mobile device breakdown for iOS. On my latest project we&#8217;ve been struggling quite a bit with performance on iPad 1 and iPhone 4 and we need to decide how much of our resources to dedicate to these &#8216;problem devices&#8217;. The iPad 1 is extremely limited on RAM, which leads to constant crashes, and both devices are quite slow at rendering in general.</div>
<div></div>
<div>Drilling into the specs a bit, we get to this page:</div>
<ul>
<li><a href="http://stats.unity3d.com/mobile/device-ios.html">http://stats.unity3d.com/mobile/device-ios.html</a></li>
</ul>
<p><img class="alignnone" src="http://f.cl.ly/items/44211u1d2d1F1Z25241v/Image%202013-04-08%20at%207.30.40%20AM.png" alt="" width="770" height="420" /></p>
<p>A couple interesting points here for sure:</p>
<ul>
<li>iPad 1 is a mere 1.5% of the market at this point</li>
<li>3Gs is also quite low at 2.5%</li>
<li>iPhone 4 install base is fairly high, when counting the iPod Touch 4, it&#8217;s 24%!</li>
</ul>
<p>The takeaway points for me are that it is not really worthwhile to spend a ton of efforts on supporting the older hardware such as iPad 1 and 3GS. On the other hand, iPhone 4 is an extremely important demographic and you must make sure your apps run flawlessly there.</p>
<p>It&#8217;s also quite impressive to see the mobile upgrade stats, with 98% of iOS user&#8217;s running iOS 5.1 or higher. That is great news for the HTML dev&#8217;s in the room. The general performance characteristics of the iOS userbase remain pretty high as well, with nearly 60% rocking an extremely powerful device (iPad 2 or higher, iPhone 4s or higher).</p>
<h1>Android</h1>
<p>The Androiod stats also reveal some very positive numbers:</p>
<p><img class="alignnone" src="http://f.cl.ly/items/3q28171P0B1o072G0b1E/Image%202013-04-08%20at%207.40.53%20AM.png" alt="" width="739" height="362" /></p>
<p>&nbsp;</p>
<p>Here we&#8217;re seeing Android 2.x begin to twindle down. 4.x is now occupying 70% of all devices, this is awesome news for Android Dev&#8217;s across the board as it significantly reduces fragmentation. I&#8217;m not sure how to reconcile these numbers with my own though. My numbers from the Android Dev Console show 2.x being much higher&#8230;</p>
<p>The next most interesting thing for me, is Samsung&#8217;s utter domination of the Android market. We all knew this was the case, but I didn&#8217;t realize it was this huge of an ass-whooping:</p>
<p><img class="alignnone" src="http://f.cl.ly/items/3g3M3c1n1h053P2q2U14/Image%202013-04-08%20at%207.46.02%20AM.png" alt="" width="740" height="374" /></p>
<p>&nbsp;</p>
<p>For a full breakdown of all the stats, check out the root page here:</p>
<ul>
<li><a href="http://stats.unity3d.com/mobile/">http://stats.unity3d.com/mobile/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/mobile-hardware-stats-2013/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bardbarian Dev Blog #2!</title>
		<link>http://esdot.ca/site/2013/bardbarian-dev-blog-2</link>
		<comments>http://esdot.ca/site/2013/bardbarian-dev-blog-2#comments</comments>
		<pubDate>Thu, 28 Mar 2013 18:27:41 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1478</guid>
		<description><![CDATA[Over at TreeFortress we’ve put together a massive dev update for our upcoming game Bardbarian. To read all about it, check out the TreeFortress blog! http://treefortress.com/dev-update-2-bardbarian-treefortress/ If you’re not familiar, Bardbarian is an iOS/Android game, built with Adobe AIR and the Starling Framework, and is slated for a Spring/Summer release in 2013. Follow them directly&#160;<a href="http://esdot.ca/site/2013/bardbarian-dev-blog-2" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://treefortress.com/wp/wp-content/uploads/2013/03/720titlescreen.png" alt="" width="768" height="432" /></p>
<p>Over at TreeFortress we’ve put together a massive dev update for our upcoming game Bardbarian. To read all about it, check out the TreeFortress blog!</p>
<p><a href="http://treefortress.com/dev-update-2-bardbarian-treefortress/" target="_blank">http://treefortress.com/dev-update-2-bardbarian-treefortress/</a></p>
<p>If you’re not familiar, Bardbarian is an iOS/Android game, built with Adobe AIR and the Starling Framework, and is slated for a Spring/Summer release in 2013. Follow them directly if you’re interested!</p>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/bardbarian-dev-blog-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Stage3D&#8230;</title>
		<link>http://esdot.ca/site/2013/fixing-stage3d</link>
		<comments>http://esdot.ca/site/2013/fixing-stage3d#comments</comments>
		<pubDate>Fri, 15 Feb 2013 16:43:33 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1471</guid>
		<description><![CDATA[I don&#8217;t usually repost blogs here, but I thought it was important to get this out there and increase the visibility as much as possible. With the cancellation of ASNext, Adobe has left the Flash/AIR in an unfortunate spot where the script execution is the prime bottleneck in GPU rendering across almost every single device.&#160;<a href="http://esdot.ca/site/2013/fixing-stage3d" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t usually repost blogs here, but I thought it was important to get this out there and increase the visibility as much as possible.</p>
<p>With the cancellation of ASNext, Adobe has left the Flash/AIR in an unfortunate spot where the script execution is the prime bottleneck in GPU rendering across almost every single device. The AS3 VM is not built to handle all the of computations required to push a ton of Vertex data to the GPU, the overhead is just too high.</p>
<p>Philippe Elsass has written up a great solution which would require a very simple API and should be quit easy for Adobe to implement.<br />
<a href="http://philippe.elsass.me/2013/02/what-should-adobe-do-to-save-air/" target="_blank">http://philippe.elsass.me/2013/02/what-should-adobe-do-to-save-air/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/fixing-stage3d/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Please welcome: TreeFortress Games!</title>
		<link>http://esdot.ca/site/2013/please-welcome-treefortress-games</link>
		<comments>http://esdot.ca/site/2013/please-welcome-treefortress-games#comments</comments>
		<pubDate>Thu, 14 Feb 2013 14:49:16 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1463</guid>
		<description><![CDATA[I&#8217;m happy to announce that I&#8217;ve personally joined a new Games Company and it&#8217;s called TreeFortress games! This is a really exciting point in my career. I&#8217;ll be making games pretty much fulltime, with total creative control! We are hoping to bring some really awesome stuff to a mobile device near you soon. The Artist&#160;<a href="http://esdot.ca/site/2013/please-welcome-treefortress-games" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to announce that I&#8217;ve personally joined a new Games Company and it&#8217;s called TreeFortress games!<br />
<center><br />
<a href="http://treefortress.com/" target="_blank"><br />
<img src="http://treefortress.com/wp/wp-content/uploads/2012/03/logo.png" alt="null" /><br />
</a><br />
</center></p>
<p>This is a really exciting point in my career. I&#8217;ll be making games pretty much fulltime, with total creative control! We are hoping to bring some really awesome stuff to a mobile device near you soon. The Artist on the project is Mike Gaboury, who is just insanely talented and one of the most hardcore gamers I&#8217;ve ever laid eyes on. You can check out more of Mike&#8217;s stuff on his tumblr: <a href="http://mikegaboury.tumblr.com/" target="_blank">http://mikegaboury.tumblr.com/</a>. The entire initiative is supported by my employer and all around great company, <a href="http://gskinner.com" target="_blank">gskinner.com</a>.</p>
<p>Our first project is coming this Spring, and is called <a href="http://treefortress.com/introducing-bardbarian/" target="_blank">Bardbarian:<br />
<center><br />
<img src="http://24.media.tumblr.com/97da78369295f1f47811df8b6d5a8b64/tumblr_mhzftu4on21qc99nxo2_r1_400.gif" alt="null" /><br />
</center><br />
</a></p>
<p>I you like what you see, please follow us at our blog, <a href="http://treefortress.com/" target="_blank">http://treefortress.com/</a>. Thanks for stopping by!</p>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/please-welcome-treefortress-games/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SpriterAS: A new library from TreeFortress Games</title>
		<link>http://esdot.ca/site/2013/spriteras-a-new-library-from-treefortress-games</link>
		<comments>http://esdot.ca/site/2013/spriteras-a-new-library-from-treefortress-games#comments</comments>
		<pubDate>Fri, 01 Feb 2013 18:50:50 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1460</guid>
		<description><![CDATA[TreeFortress Games has announced a library for playing back Spriter animations with Starling, check out the full blog post for more details: http://treefortress.com/introducing-spriteras-play-spriter-animations-scml-with-starling/]]></description>
			<content:encoded><![CDATA[<p>TreeFortress Games has announced a library for playing back Spriter animations with Starling, check out the full blog post for more details:<br />
<a href="http://treefortress.com/introducing-spriteras-play-spriter-animations-scml-with-starling/" target="_blank">http://treefortress.com/introducing-spriteras-play-spriter-animations-scml-with-starling/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/spriteras-a-new-library-from-treefortress-games/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe no longer required royalties for &#8220;Premium Features&#8221; (aka Stage3D + Alchemy)</title>
		<link>http://esdot.ca/site/2013/adobe-removes-premium-features-from-flash-player</link>
		<comments>http://esdot.ca/site/2013/adobe-removes-premium-features-from-flash-player#comments</comments>
		<pubDate>Tue, 29 Jan 2013 23:11:18 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1457</guid>
		<description><![CDATA[In a surprise move today, Adobe has reversed it&#8217;s policy on Premium Features within Flash Player, and will no longer charge royalties to anyone using Alchemy + Stage3D. This is good news for anyone deploying games to the browser, the so-called &#8220;Speed Tax&#8221; is gone, huzzah! For more details see here: http://www.adobe.com/devnet/flashplayer/articles/premium-features.html]]></description>
			<content:encoded><![CDATA[<p>In a surprise move today, Adobe has reversed it&#8217;s policy on Premium Features within Flash Player, and will no longer charge royalties to anyone using Alchemy + Stage3D.</p>
<p>This is good news for anyone deploying games to the browser, the so-called &#8220;Speed Tax&#8221; is gone, huzzah!</p>
<p>For more details see here:<br />
<a href="http://www.adobe.com/devnet/flashplayer/articles/premium-features.html" target="_blank">http://www.adobe.com/devnet/flashplayer/articles/premium-features.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/adobe-removes-premium-features-from-flash-player/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BB10: Introduction to the Invocation Framework</title>
		<link>http://esdot.ca/site/2013/bb10-introduction-to-the-invocation-framework</link>
		<comments>http://esdot.ca/site/2013/bb10-introduction-to-the-invocation-framework#comments</comments>
		<pubDate>Wed, 23 Jan 2013 07:12:47 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1423</guid>
		<description><![CDATA[One of the major new features of BB10 is the ability for Apps to share data with each other. It&#8217;s called the Invocation Framework, and you can read all about it in the (slightly jumbled) docs here: https://developer.blackberry.com/air/documentation/bb10/app_integration.html The basic idea is that your app registers for certain events types, and then it will be&#160;<a href="http://esdot.ca/site/2013/bb10-introduction-to-the-invocation-framework" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p>One of the major new features of BB10 is the ability for Apps to share data with each other. It&#8217;s called the Invocation Framework, and you can read all about it in the (slightly jumbled) docs here:<br />
<a href="https://developer.blackberry.com/air/documentation/bb10/app_integration.html" target="_blank">https://developer.blackberry.com/air/documentation/bb10/app_integration.html</a></p>
<p>The basic idea is that your app registers for certain events types, and then it will be opened whenever an event of that type occurs. This has endless applications, the obvious ones are sharing text or images between apps, but it can be used for any type of data.</p>
<p>For example, lets say you&#8217;re writing a Twitter client, you would register for &#8220;bb.action.SHARE&#8221;, and then, when user&#8217;s select the &#8220;Share&#8221; option witin BB10, your app and it&#8217;s icon, will show up in the Share Menu. When the app is opened, you&#8217;ll receive a small data packet which contains the text they want to share!</p>
<p><img class="alignnone aligncenter" src="https://developer.blackberry.com/air/files/documentation/bb10/images/invocation_context_menu.png" alt="" width="200" height="334" /></p>
<p>It&#8217;s similar to Android Intents, or the &#8220;charms&#8221; bar in Windows 8, but in many aways much more powerful. The InvocationFramework differentiates itself in a few ways:</p>
<ul>
<li>Apps can be overlayed on other apps by using &#8216;Cards&#8217;, These cards come in a number of styles and built in transitions. Cards can communicate events back to the calling app when they&#8217;re all done. Super cool stuff.<br />
<a href="https://developer.blackberry.com/air/documentation/bb10/card_style.html#ufa1349810153933" target="_blank">https://developer.blackberry.com/air/documentation/bb10/card_style.html#ufa1349810153933</a></li>
<li>The Schema is easily extensible and very flexible, you can mix and match mimeTypes, fileTypes and other options.</li>
<li>Easily integrate with the Menu&#8217;s in the Core OS and other apps</li>
<li>Apps can query the OS for a list of Ivoke Targets, allowing them to build a list inside their app of potential share targets.</li>
</ul>
<p>I have to give a hats off to Blackberry on this API, I haven&#8217;t dug super deep, but from what I&#8217;ve seen they&#8217;ve created a very slick system here that will blossom extremely quickly. It&#8217;s true they had the benefit of coming last, and they seem to have made good use of it.</p>
<h1>Example Time!</h1>
<p>For my purposes, I needed to allow my apps to handle Shared Images, here&#8217;s how that works.</p>
<p><strong>Step 1: Declare your intentions!<br />
</strong>The first<strong> </strong>step<strong> </strong>is to edit your<em> blackberry-tablet.xml</em> file (or whatever the kids are callin it these days&#8230;), and add the declaration for the types of InvokeEvents your app can handle.</p>
<p>Open up the XML file, and add the following:</p>
<p><em>&lt;invoke-target id=&#8221;com.yoursite.YourApp&#8221;&gt;</em><br />
<em>          &lt;invoke-target-type&gt;application&lt;/invoke-target-type&gt;</em><br />
<em>          &lt;filter&gt;</em><br />
<em>                   &lt;action&gt;bb.action.SHARE&lt;/action&gt;</em><br />
<em>                   &lt;mime-type&gt;image/png&lt;/mime-type&gt;</em><br />
<em>                   &lt;mime-type&gt;image/jpeg&lt;/mime-type&gt;</em><br />
<em>                   &lt;property var=&#8221;uris&#8221; value=&#8221;file://&#8221;/&gt;</em><br />
<em>          &lt;/filter&gt;</em><br />
<em> &lt;/invoke-target&gt;</em></p>
<p>For more information on what these fields mean, and the different options, check out the docs: <a href="https://developer.blackberry.com/air/documentation/bb10/receiving_invocation.html" target="_blank">https://developer.blackberry.com/air/documentation/bb10/receiving_invocation.html</a></p>
<p><strong>Step 2: Listen Up<br />
</strong>The other half of this equation is to listen for incoming Invoke Events. This is super simple.</p>
<p>First, open up your document class, and register for the event with the InvokeManager:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> MainConstructor<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
       InvokeManager.<span style="color: #006600;">invokeManager</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>qnx.<span style="color: #006600;">events</span>.<span style="color: #006600;">InvokeEvent</span>.<span style="color: #006600;">INVOKE</span>, onAppInvoke<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>Then check out the <em>invokeManager.startupRequest</em> to access any incoming data:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">protected <span style="color: #000000; font-weight: bold;">function</span> onAppInvoke<span style="color: #66cc66;">&#40;</span>event:qnx.<span style="color: #006600;">events</span>.<span style="color: #006600;">InvokeEvent</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">//Regular Launch...do nada.</span>
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>InvokeManager.<span style="color: #006600;">invokeManager</span>.<span style="color: #006600;">startupMode</span> == InvokeStartupMode.<span style="color: #006600;">OPEN</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #b1b100;">return</span>;
        <span style="color: #66cc66;">&#125;</span>
	<span style="color: #808080; font-style: italic;">//Invoked by another app</span>
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>InvokeManager.<span style="color: #006600;">invokeManager</span>.<span style="color: #006600;">startupMode</span> == InvokeStartupMode.<span style="color: #006600;">INVOKE</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
                <span style="color: #808080; font-style: italic;">//Check to see there's a valid StartupRequest</span>
		<span style="color: #000000; font-weight: bold;">var</span> request:InvokeRequest = InvokeManager.<span style="color: #006600;">invokeManager</span>.<span style="color: #006600;">startupRequest</span>;
		<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>request <span style="color: #66cc66;">&amp;&amp;</span> request.<span style="color: #006600;">uri</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">//Load the passed image!</span>
			loadImage<span style="color: #66cc66;">&#40;</span>request.<span style="color: #006600;">uri</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>That is basically all there is too it, and you are now integrated into the Core OS, handling any images sent your way <img src='http://esdot.ca/site/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/bb10-introduction-to-the-invocation-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Snippet: Detecting BB10 Devices in AIR</title>
		<link>http://esdot.ca/site/2013/code-snippet-detecting-bb10-devices-in-air</link>
		<comments>http://esdot.ca/site/2013/code-snippet-detecting-bb10-devices-in-air#comments</comments>
		<pubDate>Tue, 08 Jan 2013 18:58:25 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1391</guid>
		<description><![CDATA[When programming multi-platform apps, it&#8217;s sometimes important to know whether you&#8217;re running on a certain type of devices. This is usually stored in the Capabilities.os string, and BB10 is no different. To check whether you&#8217;re on BB10 you can run the following check: 0 1 2 //Capabilities.os is 'qnx 8.0.0 blackberry 10' var os:String = Capabilities.os.toLowerCase&#40;&#41;;&#160;<a href="http://esdot.ca/site/2013/code-snippet-detecting-bb10-devices-in-air" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p>When programming multi-platform apps, it&#8217;s sometimes important to know whether you&#8217;re running on a certain type of devices.</p>
<p>This is usually stored in the Capabilities.os string, and BB10 is no different. To check whether you&#8217;re on BB10 you can run the following check:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//Capabilities.os is 'qnx 8.0.0 blackberry 10'</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">os</span>:<span style="color: #0066CC;">String</span> = <span style="color: #0066CC;">Capabilities</span>.<span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> isBB10:<span style="color: #0066CC;">Boolean</span> = <span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;blackberry&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p>Here&#8217;s an example of some production code I use for all devices:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">_deviceName = defaultDevice;
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">os</span>:<span style="color: #0066CC;">String</span> = <span style="color: #0066CC;">Capabilities</span>.<span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;playbook&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">||</span> <span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;blackberry&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	_deviceName = BLACKBERRY;
<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;iphone&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
         <span style="color: #808080; font-style: italic;">//iPhone OS 4.3.3 iPad2,1</span>
	_deviceName = <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ipad&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> ? IPAD : IPHONE;
<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Capabilities</span>.<span style="color: #0066CC;">manufacturer</span>.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;android&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">||</span> 
	<span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;android&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	_deviceName = ANDROID;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/code-snippet-detecting-bb10-devices-in-air/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012 Sales Breakdown &#8211; Comparison of App Stores</title>
		<link>http://esdot.ca/site/2013/2012-sales-breakdown-comparison-of-app-stores</link>
		<comments>http://esdot.ca/site/2013/2012-sales-breakdown-comparison-of-app-stores#comments</comments>
		<pubDate>Mon, 07 Jan 2013 18:34:16 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1373</guid>
		<description><![CDATA[2012 was by the craziest year I&#8217;ve ever had in terms of App Development, while 2011 was lucrative, 2012 was insanity. I released PicShop in February, and it has just exploded into a very successful app across nearly all the app stores. My previous apps, ColorUp and TouchUp have also continued to sell, but in&#160;<a href="http://esdot.ca/site/2013/2012-sales-breakdown-comparison-of-app-stores" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p>2012 was by the craziest year I&#8217;ve ever had in terms of App Development, while 2011 was lucrative, 2012 was insanity. I released PicShop in February, and it has just exploded into a very successful app across nearly all the app stores. My previous apps, ColorUp and TouchUp have also continued to sell, but in slowly declining quantities.</p>
<p>In addition to changing the lives of my entire family and giving us near financial freedom, this has given me some pretty neat data for the year, allowing some good comparisons of sales and promotional opportunities across the various stores.</p>
<p>I think some of the results might surprise you&#8230;</p>
<h1>Overall Sales</h1>
<p><a href="http://esdot.ca/site/wp-content/uploads/2013/01/AllMarketsPieChart.png"><img class="aligncenter size-full wp-image-1374" title="AllMarketsPieChart" src="http://esdot.ca/site/wp-content/uploads/2013/01/AllMarketsPieChart.png" alt="" width="519" height="395" /></a></p>
<p>As you can see iOS dominated the competition, bringing in over 3/4 of all my total revenue. Google was a distant 2nd, with Blackberry and Amazon neck and neck. </p>
<p>Surprisingly, Amazon and Blackberry are actually pretty close to Google Play, despite Play&#8217;s massive install base advantage. It&#8217;s especially impressive for Blackberry, which is essentially just coasting off of dying Playbook sales. This is probably due mainly to the great promotions I receive on Playbook (PicShop is regularly featured), but the Playbook userbase has always had a voracious appetite for apps. The Amazon numbers are due basically to a freak couple months in Nov/Dec.</p>
<p>Here you can see a monthly break down of relative sales for all market places which reveals more data about the curves of each market:</p>
<p><a href="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-ALL.png"><img class="aligncenter size-full wp-image-1375" title="Revenue-2013-01-05-ALL" src="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-ALL.png" alt="" width="672" height="520" /></a></p>
<p>Each dashed line in the graph represents $10k in revenues. At it&#8217;s peak, iOS pulled in close to $40,000 in one month, and you can see that the &#8216;little&#8217; bars are still pulling in a healthy $2000-3000/month each. I told you it was an insane year!! </p>
<p>In order to analyze the &#8216;others&#8217; a little better, I took Apple out of the picture:</p>
<p><a href="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-RACE-FOR-2ND.png"><img class="aligncenter size-full wp-image-1376" title="Revenue-2013-01-05---RACE-FOR-2ND" src="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-RACE-FOR-2ND.png" alt="" width="672" height="495" /></a></p>
<h1>Breaking it Down</h1>
<h3>iOS</h3>
<p><strong>Sales Curve<br />
</strong>iOS showed a pretty steady curve throughout the year. After PicShop sales took off, it maintained those revenues throughout the year. As in last year, I saw a big spike in the Summer months, a decline into the Fall, and then a massive holiday spike<strong>. </strong></p>
<p><strong>Promotions<br />
</strong>PicShop<strong> </strong>was featured multiple times by Apple as &#8220;What&#8217;s Hot&#8221;, which lead to nice increases in sales each time it happens. It seems every few weeks it gets cycled into place in some countries.</p>
<p>I purchased a FAAD promotion early in the year which resulted in a huge sales boost for PicShop, and afterwards was approached by a number of free competitors like AppGratis and AppTurbo, which ran even more promotions on the app, this time for free.</p>
<p>In retrospect, running FAAD was one of the best decisions I ever made, as it snowballed everything, and resulted in a ton of new promotional oppotunities.</p>
<p>Later in the year I ran another FAAD, campaign, this time it was a complete flop and my sales actually declined. I&#8217;m not sure what happened, but perhaps the service is declining in popularity, or their userbase was just saturated with my app already.</p>
<h3>Android</h3>
<p><strong>Sales Curve</strong></p>
<p><a href="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-GOOGLE.png"><img class="aligncenter size-full wp-image-1377" title="Revenue-2013-01-05 - GOOGLE" src="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-GOOGLE.png" alt="" width="672" height="445" /></a></p>
<p>The revenue curve for Android is pretty much just flat, it sort of just plods along at the same rate every month. I rarely see any spikes, and I have yet to really gain any serious traction in this market place.</p>
<p>So far, Android is proving, by far, the hardest market to penetrate in the top lists. It seems that any app that hasn&#8217;t existed for 4+ years has little chance of ranking highly.</p>
<p>It&#8217;s still a good revenue source, don&#8217;t get me wrong, but it should be alot higher.</p>
<p><strong>Promotions<br />
</strong>Google is impossible to talk to. Any attempt I&#8217;ve ever had in contacting google&#8217;s promotional team has been stone-walled. I just can&#8217;t find any way at all to speak to a person.</p>
<p>I have a beautifully tablet-optimized app, when they are desperately in need of them, and yet they have no clue my app even exists, or any seeming interest in promoting it.</p>
<p>I have only ever been featured once by them, as a featured &#8220;Photo Editor&#8221; and it doubled my daily sales for the duration, and then dropped off. So I made $200/day instead of $100, nothing to write home about.</p>
<h3>Playbook</h3>
<p><a href="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-RIM.png"><img class="aligncenter size-full wp-image-1378" title="Revenue-2013-01-05 - RIM" src="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-RIM.png" alt="" width="672" height="445" /></a></p>
<p>The Blackberry Playbook sales curve shows strong sales for the first half of the year (coninciding with a big pricedrop on the Playbook), then a major decline in the summer months as Playbook sales slowed to a crawl. December saw a pretty huge resurgence though, apparently RIM was moving some hardware!</p>
<p><strong>Promotions<br />
</strong>AppWorld<strong> </strong>has (by a country mile) the best promotional team amongst any of the major App Stores. I have developed a fairly close relationship with a number of people on the AppWorld team, they reach out to me often for joint promotions/sales, and they have even sent me a couple of BB10 Dev Devices so I can prep for upcoming BB10 launch.</p>
<p>I really can&#8217;t express how awesome this team has been, there&#8217;s always someone to talk too, and they couldn&#8217;t be friendlier.</p>
<p>As an example, I was contacted early Dec to run a combined sale on PicShop, ColorUp and TouchUp for Xmas, I marked all my apps down 50%, and RIM featured them as the primary App of the Day for Dec 23. My revenues basically tripled, how cool is that!?</p>
<h3><strong>Amazon</strong></h3>
<p><strong>Sales Curve</strong></p>
<p><a href="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-AMAZON.png"><img class="aligncenter size-full wp-image-1379" title="Revenue-2013-01-05 - AMAZON" src="http://esdot.ca/site/wp-content/uploads/2013/01/Revenue-2013-01-05-AMAZON.png" alt="" width="672" height="445" /></a></p>
<p>This sales curve is really hilarious to look at. Talk about all your sales being loaded into one shopping period! After a really strong Dec, 2011,  Amazon sales stepped off a cliff in January. Anemic all through the year, they suddenly surged starting on Black Friday, and had a massive December, launching them up to nearly 3rd spot on my revenue list.</p>
<p><strong>Promotions<br />
</strong>Amazon App Store is a funny place. They promote your app, but they are going to do it their way, with or without your knowledge. Often I&#8217;ll go to the Amazon App Store and see that my app is 50% off for the day, or my description has been re-written by someone. Amazon does this at their discretion, and they do know a thing or two about running an online store. Still, it&#8217;s weird not to have complete control over your own product and promotions.</p>
<p>The other promotion Amazon offers you is the Free App of the Day promotion. Basically, one day you&#8217;ll get an email out of the blue, with a long list of conditions, and you must agree to it. Once you do that, Amazon might, someday, maybe, feature your app as App of the Day. It happened a few times for PicShop, TouchUp and ColorUp, the results are nothing amazing, but it will get you into the top of the charts pretty quickly. I&#8217;m hopeful this will pay off alot more in 2013.</p>
<p>&nbsp;</p>
<h1> Trends for 2013</h1>
<ul>
<li><strong>Blackberry</strong><br />
I&#8217;m expecting pretty big things from Blackberry in 2013, the performance from just the Playbook in 2012 was really amazing, and BB10 Phones will move 10x the units Playbook ever did.</li>
<li><strong>Apple</strong><br />
Apple looks to be marching along in it&#8217;s unstoppable way. Their content curation team is excellent, the recent redesign to the App Store was an improvement, and they moved a metric shit-ton of hardware in Dec. Look for same old same old from Apple.</li>
<li><strong>Amazon</strong><br />
Amazon is showing some life finally, and actually producing some real money, so 2013 might be the year this market really takes off. Although it did have good numbers last Dec, this year was up 400%.</li>
<li><strong>Google<br />
</strong>As for Google Play, I don&#8217;t know&#8230; I think until they actually start communicating with their developers, and re-factor their ranking system, they are going to continue to stagnate. There&#8217;s probably many great Tablet apps for Android, but no-one can find them, cause older, uglier apps are completely &#8216;grandfathered&#8217; in to the top of the charts.</li>
<li><strong>Windows 8</strong><br />
I had high hopes for Windows 8 this year, but am now really doubting it&#8217;s potential.Consumers have never likd Windows Phone, and it seems they still don&#8217;t. The launch was a total flop. Sales of Surface devices has been paltry, and the download numbers I&#8217;ve seen for Windows App Store are very low.At some point, this just *has* to become a revenue generator, as it&#8217;s baked into every Windows Machine, but I don&#8217;t know if that will happen any time soon. For now my focus is on the others.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/2012-sales-breakdown-comparison-of-app-stores/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Adding Blackberry (BB10) Support for FlashBuilder 4.7</title>
		<link>http://esdot.ca/site/2013/adding-blackberry-support-for-flashbuilder-4-7</link>
		<comments>http://esdot.ca/site/2013/adding-blackberry-support-for-flashbuilder-4-7#comments</comments>
		<pubDate>Sat, 05 Jan 2013 17:11:40 +0000</pubDate>
		<dc:creator>shawn</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://esdot.ca/site/?p=1358</guid>
		<description><![CDATA[If you haven&#8217;t heard, BB10 is coming out at the end of the month. In my estimation, this will be far bigger sales event than any new device launch we&#8217;ve seen in recent times (Kindle, Nook, Windows 8), so I&#8217;m really excited to get my apps on there, and you should be too! The first&#160;<a href="http://esdot.ca/site/2013/adding-blackberry-support-for-flashbuilder-4-7" class="read-more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t heard, BB10 is coming out at the end of the month. In my estimation, this will be far bigger sales event than any new device launch we&#8217;ve seen in recent times (Kindle, Nook, Windows 8), so I&#8217;m really excited to get my apps on there, and you should be too!</p>
<p>The first step is prepping FlashBuilder 4.7 to export to BB10. This is a bit confusing, as I expected it to just work like it did in 4.6, but there&#8217;s a couple additional steps.</p>
<h2>Adding FlashBuilder Support</h2>
<p>This is explained fairly well in the docs, but the link is extremely buried, for your covnenience, here she be:<br />
<a href="https://developer.blackberry.com/air/documentation/bb10/install_bbtos_sdk_fb47.html#mah1354047470595" target="_blank">https://developer.blackberry.com/air/documentation/bb10/install_bbtos_sdk_fb47.html#mah1354047470595</a></p>
<p>Essentially you just:</p>
<ul>
<li>Run the <a href="https://developer.blackberry.com/air/download/" target="_blank">SDK installer</a> like normal<br />
NOTE: Do <strong>NOT</strong> check the option for Flash Builder support during install, it will destroy your FB 4.7 workspace and prevent it from launching, or at least it did to me&#8230;</li>
<li>Then, in FlashBuilder: <em>Install New Software &gt; Available Software &gt; Blackberry Support.<strong><br />
</strong></em>Install it!</li>
</ul>
<p>With that you are now kicking out builds to your brand new BB10 dev device. They&#8217;ll install, but they probably won&#8217;t run&#8230;</p>
<h2>Force AIR 3.1</h2>
<p>You can use any recent AIR SDK, but you need to add some options to force it to target 3.1</p>
<ul>
<li>Add compiler flag <strong>-swf-version=14</strong></li>
<li>under <em>ActionScript Build Packaging &gt; BlackBerry &gt; &gt; Advanced &gt; Extra packaging</em>, enter <strong>-forceAirVersion 3.1<em> </em></strong></li>
</ul>
<div><em><a href="https://developer.blackberry.com/air/documentation/bb10/gsg_change_runtime_fb.html#mah1354223642439" target="_blank">https://developer.blackberry.com/air/documentation/bb10/gsg_change_runtime_fb.html#mah1354223642439</a></em></div>
<div>
<h2></h2>
<h2>Add Native Extensions</h2>
<p>The final step is to add all the ANE&#8217;s provided to us by BlackBerry, giving access to a wide range of device specific features.</p>
<ul>
<li>Under <em>Build Settings &gt; Native Extensions</em>, add a folder:<strong><br />
c:\Program Files (x86)\Research In Motion\blackberry-tablet-sdk-3.0.0\frameworks\libs\qnx\ane\</strong></li>
</ul>
<div><a href="https://developer.blackberry.com/air/documentation/bb10/create_your_first_application_fb_ms_2010840_11.html" target="_blank">https://developer.blackberry.com/air/documentation/bb10/create_your_first_application_fb_ms_2010840_11.html</a></div>
<div><strong><br />
</strong></div>
<div>This gives you access to all the API&#8217;s listed here:</div>
<div><a href="https://developer.blackberry.com/air/apis/bb10/qnx/system/package-detail.html" target="_blank">https://developer.blackberry.com/air/apis/bb10/qnx/system/package-detail.html</a></div>
<div></div>
</div>
<div></div>
<div>With that you are off to the races, go kick some ass!</div>
]]></content:encoded>
			<wfw:commentRss>http://esdot.ca/site/2013/adding-blackberry-support-for-flashbuilder-4-7/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
