<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: The Truth About Mobile Fragmentation</title>
	<atom:link href="http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/</link>
	<description>The ticket machine in your pocket</description>
	<lastBuildDate>Sat, 23 Jan 2010 20:27:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Anonymous</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-34</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Fri, 11 Apr 2008 12:36:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-34</guid>
		<description>Thanks. :)&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;Ehud.</description>
		<content:encoded><![CDATA[<p>Thanks. <img src='http://www.masabi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8211;<br />Ehud.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Godber</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-32</link>
		<dc:creator>Tom Godber</dc:creator>
		<pubDate>Sat, 05 Apr 2008 08:39:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-32</guid>
		<description>Hi again Elud,&lt;br/&gt;&lt;br/&gt;Low memory basically means of the order of early S40 devices, so 64K jar + 200K RAM - we still see significant downloads for these phones, but many of the other older platforms are dying away now which makes life easier :)&lt;br/&gt;&lt;br/&gt;Normally we adjust API support at build time and have more speciifc builds, but if the project demands it we can do single app builds with the old Class.forName trick - usually we would do this where the client needed to be able to use any standard web server.  You lose some functionality and some devices this way - eg. some JBed JVM devices won&#039;t allow it.&lt;br/&gt;&lt;br/&gt;For remote testing we have used DeviceAnywhere and Forum Nokia&#039;s service; I believe Sony-Ericsson now offer one too.  Normally we use this just to test out specific API or handset bug support, and do the main user experience testing on local handsets - remote testing is a great additional resource but not a complete substitute for a big cupboard of devices!&lt;br/&gt;&lt;br/&gt;PNG bugs: there are about 3 &quot;levels&quot; of Zlib bug we&#039;ve found in PNGs, also issues with only allowing ARGB PNGs through to devices which have &gt;1bit transparency, some types of palette which load incorrectly, some Sagem issues where the PNG row lengths are misread... plenty of irritating little things!&lt;br/&gt;&lt;br/&gt;Automated testing I can&#039;t talk so much about I&#039;m afraid, but basically scriptable emulators which can be customised to perform repeat workflows at build time and ensure certain properties are consistent, no exceptions, etc.&lt;br/&gt;&lt;br/&gt;Hope that is some help!&lt;br/&gt;&lt;br/&gt;Tom</description>
		<content:encoded><![CDATA[<p>Hi again Elud,</p>
<p>Low memory basically means of the order of early S40 devices, so 64K jar + 200K RAM &#8211; we still see significant downloads for these phones, but many of the other older platforms are dying away now which makes life easier <img src='http://www.masabi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Normally we adjust API support at build time and have more speciifc builds, but if the project demands it we can do single app builds with the old Class.forName trick &#8211; usually we would do this where the client needed to be able to use any standard web server.  You lose some functionality and some devices this way &#8211; eg. some JBed JVM devices won&#8217;t allow it.</p>
<p>For remote testing we have used DeviceAnywhere and Forum Nokia&#8217;s service; I believe Sony-Ericsson now offer one too.  Normally we use this just to test out specific API or handset bug support, and do the main user experience testing on local handsets &#8211; remote testing is a great additional resource but not a complete substitute for a big cupboard of devices!</p>
<p>PNG bugs: there are about 3 &#8220;levels&#8221; of Zlib bug we&#8217;ve found in PNGs, also issues with only allowing ARGB PNGs through to devices which have >1bit transparency, some types of palette which load incorrectly, some Sagem issues where the PNG row lengths are misread&#8230; plenty of irritating little things!</p>
<p>Automated testing I can&#8217;t talk so much about I&#8217;m afraid, but basically scriptable emulators which can be customised to perform repeat workflows at build time and ensure certain properties are consistent, no exceptions, etc.</p>
<p>Hope that is some help!</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-31</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Mon, 31 Mar 2008 16:13:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-31</guid>
		<description>Hey Tom.&lt;br/&gt;&lt;br/&gt;Thanks for the detailed and useful reply. &lt;br/&gt;&lt;br/&gt;I have some more questions, if you don&#039;t mind (and if it isn&#039;t too much of a &quot;trade secret&quot;. :)&lt;br/&gt;&lt;br/&gt;1. By saying &quot;low memory profile&quot;, how much do you actually mean? &lt;br/&gt;&lt;br/&gt;The few apps I&#039;ve worked on so far were made to work on ~64/200K JAR/heap limits for 128x128x12, which mostly seemed to expand well to higher resolutions and bit depths (although with very textured graphic elements the file size increase was more rapid). &lt;br/&gt;&lt;br/&gt;I guess this is much less of a problem, though, if targetting only 2005/2006 phones and onwards (and possibly ignoring the exceptionally limited ones).&lt;br/&gt;&lt;br/&gt;2. Do you use dynamic class loading or on-the-fly determination of features to have more generic builds? &lt;br/&gt;&lt;br/&gt;3. Did you mean dev portals that offer remote testing?&lt;br/&gt;&lt;br/&gt;4. Have you used remote testing for apps that are sensitive to input timing?&lt;br/&gt;&lt;br/&gt;5. Can you share what problems are caught during build? (And what PNG problems there are besides too few Huffman entries?)&lt;br/&gt;&lt;br/&gt;6. Finally, can you give examples of &quot;more automated testing&quot;? :)&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;Ehud.</description>
		<content:encoded><![CDATA[<p>Hey Tom.</p>
<p>Thanks for the detailed and useful reply. </p>
<p>I have some more questions, if you don&#8217;t mind (and if it isn&#8217;t too much of a &#8220;trade secret&#8221;. <img src='http://www.masabi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>1. By saying &#8220;low memory profile&#8221;, how much do you actually mean? </p>
<p>The few apps I&#8217;ve worked on so far were made to work on ~64/200K JAR/heap limits for 128&#215;128x12, which mostly seemed to expand well to higher resolutions and bit depths (although with very textured graphic elements the file size increase was more rapid). </p>
<p>I guess this is much less of a problem, though, if targetting only 2005/2006 phones and onwards (and possibly ignoring the exceptionally limited ones).</p>
<p>2. Do you use dynamic class loading or on-the-fly determination of features to have more generic builds? </p>
<p>3. Did you mean dev portals that offer remote testing?</p>
<p>4. Have you used remote testing for apps that are sensitive to input timing?</p>
<p>5. Can you share what problems are caught during build? (And what PNG problems there are besides too few Huffman entries?)</p>
<p>6. Finally, can you give examples of &#8220;more automated testing&#8221;? <img src='http://www.masabi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8211;<br />Ehud.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Godber</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-30</link>
		<dc:creator>Tom Godber</dc:creator>
		<pubDate>Thu, 27 Mar 2008 15:14:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-30</guid>
		<description>Hi Ehud,&lt;br/&gt;&lt;br/&gt;Sorry for the late reply: QA/testing is indeed a tricky problem.&lt;br/&gt;&lt;br/&gt;We use the following development strategy:&lt;br/&gt;&lt;br/&gt;1) Write code which is &quot;failsafe&quot; ie. largely MIDP1 avoiding all types of bugs and problematic techniques we have encountered over the last 7 years, using a low memory profile etc.&lt;br/&gt;&lt;br/&gt;2) Group devices together into platforms and do separate builds per platform - this is actually safe if done carefully, and you can the vast majority of devices with 30-60 builds.  We always test on at least one real handset per group, then use a combination of dev portals (where available), 3rd party resources on the web and remote testing services to establish which devices fit into that platform safely.  Advanced features (going beyond point 1) are then turned on and off per build based on our experiences with the platform - often we have two or three implementations of something and a platform uses the one that works best.&lt;br/&gt;&lt;br/&gt;3) We use build tools which catch and automatically correct common problems, like PNGs which cannot load correctly (this is 99.9% predictable once you know how ;).&lt;br/&gt;&lt;br/&gt;Our QA steps work like this for an application:&lt;br/&gt;&lt;br/&gt;1) Wrap logic in unit tests where possible, run at build time for every device variant.&lt;br/&gt;&lt;br/&gt;2) Perform initial logic and workflow testing on a few different emulators across different screen sizes - they are good for high level testing but not for fragmentation issues.&lt;br/&gt;&lt;br/&gt;3) Application builds are then initially tested on a &quot;core&quot; set of devices - the most popular and the most buggy - until they work reliably.&lt;br/&gt;&lt;br/&gt;4) We then test the remaining builds across all our other test devices.&lt;br/&gt;&lt;br/&gt;5) Any &quot;new&quot; features and APIs being used are tested more extensively across real local and remote devices, and &quot;best practice&quot; implementations are then rolled into our framework.&lt;br/&gt;&lt;br/&gt;We are also investing in more automated testing to catch common issues earlier and eliminate on-device testing for anything other than checking handset bugs and device quirks.&lt;br/&gt;&lt;br/&gt;It&#039;s frustrating, but there isn&#039;t any viable alternative for any kind of mobile development (you need to do the same for the mobile web etc).  Once you have a good stable core framework, it&#039;s surprisingly easy to develop apps that work pretty well first time.&lt;br/&gt;&lt;br/&gt;Hope that helps some,&lt;br/&gt;&lt;br/&gt;Tom.</description>
		<content:encoded><![CDATA[<p>Hi Ehud,</p>
<p>Sorry for the late reply: QA/testing is indeed a tricky problem.</p>
<p>We use the following development strategy:</p>
<p>1) Write code which is &#8220;failsafe&#8221; ie. largely MIDP1 avoiding all types of bugs and problematic techniques we have encountered over the last 7 years, using a low memory profile etc.</p>
<p>2) Group devices together into platforms and do separate builds per platform &#8211; this is actually safe if done carefully, and you can the vast majority of devices with 30-60 builds.  We always test on at least one real handset per group, then use a combination of dev portals (where available), 3rd party resources on the web and remote testing services to establish which devices fit into that platform safely.  Advanced features (going beyond point 1) are then turned on and off per build based on our experiences with the platform &#8211; often we have two or three implementations of something and a platform uses the one that works best.</p>
<p>3) We use build tools which catch and automatically correct common problems, like PNGs which cannot load correctly (this is 99.9% predictable once you know how <img src='http://www.masabi.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Our QA steps work like this for an application:</p>
<p>1) Wrap logic in unit tests where possible, run at build time for every device variant.</p>
<p>2) Perform initial logic and workflow testing on a few different emulators across different screen sizes &#8211; they are good for high level testing but not for fragmentation issues.</p>
<p>3) Application builds are then initially tested on a &#8220;core&#8221; set of devices &#8211; the most popular and the most buggy &#8211; until they work reliably.</p>
<p>4) We then test the remaining builds across all our other test devices.</p>
<p>5) Any &#8220;new&#8221; features and APIs being used are tested more extensively across real local and remote devices, and &#8220;best practice&#8221; implementations are then rolled into our framework.</p>
<p>We are also investing in more automated testing to catch common issues earlier and eliminate on-device testing for anything other than checking handset bugs and device quirks.</p>
<p>It&#8217;s frustrating, but there isn&#8217;t any viable alternative for any kind of mobile development (you need to do the same for the mobile web etc).  Once you have a good stable core framework, it&#8217;s surprisingly easy to develop apps that work pretty well first time.</p>
<p>Hope that helps some,</p>
<p>Tom.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-29</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Fri, 14 Mar 2008 23:42:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-29</guid>
		<description>Missing from the previous comment :) :&lt;br/&gt;--&lt;br/&gt;Ehud.</description>
		<content:encoded><![CDATA[<p>Missing from the previous comment <img src='http://www.masabi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  :<br />&#8211;<br />Ehud.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-28</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Fri, 14 Mar 2008 23:41:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-28</guid>
		<description>How do you deal with platform bugs and testing/QA? &lt;br/&gt;&lt;br/&gt;Assuming emulators or lead/reference devices are indicative can be dangerous, and having hundreds of devices available for testing is a problem, as is the time it would take to test on all of them.&lt;br/&gt;&lt;br/&gt;And this is further compounded by having manufacturers that, for unclear reasons, make supporting their devices difficult, like LG&#039;s zero tools and information policy or Samsung&#039;s mostly OTA only installations.</description>
		<content:encoded><![CDATA[<p>How do you deal with platform bugs and testing/QA? </p>
<p>Assuming emulators or lead/reference devices are indicative can be dangerous, and having hundreds of devices available for testing is a problem, as is the time it would take to test on all of them.</p>
<p>And this is further compounded by having manufacturers that, for unclear reasons, make supporting their devices difficult, like LG&#8217;s zero tools and information policy or Samsung&#8217;s mostly OTA only installations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Godber</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-27</link>
		<dc:creator>Tom Godber</dc:creator>
		<pubDate>Sun, 09 Mar 2008 13:18:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-27</guid>
		<description>Hi,&lt;br/&gt;&lt;br/&gt;For most day-to-day projects, we use a vector package like Xara X which allows you to draft at one size, then  rapidly produce copies at different sizes which can be tweaked to look good.&lt;br/&gt;&lt;br/&gt;For some designs, Photoshop designs (making use of layer styles) can work in the same way if the mockup is done at the largest size variant required, but resizing usually requires manual touching up.&lt;br/&gt;&lt;br/&gt;For generating hundreds of reskins of a basic design across all screen sizes, it is worth investing the time to fine tune templates for every size which can then be customised automatically.&lt;br/&gt;&lt;br/&gt;There is no perfect solution, but with a bit of practice it can be managable :)&lt;br/&gt;&lt;br/&gt;Best regards,&lt;br/&gt;Tom.</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>For most day-to-day projects, we use a vector package like Xara X which allows you to draft at one size, then  rapidly produce copies at different sizes which can be tweaked to look good.</p>
<p>For some designs, Photoshop designs (making use of layer styles) can work in the same way if the mockup is done at the largest size variant required, but resizing usually requires manual touching up.</p>
<p>For generating hundreds of reskins of a basic design across all screen sizes, it is worth investing the time to fine tune templates for every size which can then be customised automatically.</p>
<p>There is no perfect solution, but with a bit of practice it can be managable <img src='http://www.masabi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Best regards,<br />Tom.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://www.masabi.com/2008/01/14/the-truth-about-mobile-fragmentation/comment-page-1/#comment-26</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Sun, 09 Mar 2008 12:41:00 +0000</pubDate>
		<guid isPermaLink="false">http://masabi.com/2008/01/the-truth-about-mobile-fragmentation.html#comment-26</guid>
		<description>Hi Tom, really love the article, you totally hit the target with this one.&lt;br/&gt;&lt;br/&gt;Although I don&#039;t really understand this part:&lt;br/&gt;&lt;i&gt;Managing this screen size complexity is a challenge without huge graphics production timelines (and suicidal designers), but one that can be met with scripting and templates. In Playtech’s case games can feature amazing levels of variation where the graphics require less than a day to customise for a new licensee, ready to drop into an automated build.&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;How do you manage the multiple screen sizes? What techniques do you use? I gather, since it is all pixel graphics, the artist still needs to draw all the variants himself, you can&#039;t use a tool for &quot;resizing&quot; the graphics. Or can you?&lt;br/&gt;&lt;br/&gt;Best Regards,&lt;br/&gt;Tommy</description>
		<content:encoded><![CDATA[<p>Hi Tom, really love the article, you totally hit the target with this one.</p>
<p>Although I don&#8217;t really understand this part:<br /><i>Managing this screen size complexity is a challenge without huge graphics production timelines (and suicidal designers), but one that can be met with scripting and templates. In Playtech’s case games can feature amazing levels of variation where the graphics require less than a day to customise for a new licensee, ready to drop into an automated build.</i></p>
<p>How do you manage the multiple screen sizes? What techniques do you use? I gather, since it is all pixel graphics, the artist still needs to draw all the variants himself, you can&#8217;t use a tool for &#8220;resizing&#8221; the graphics. Or can you?</p>
<p>Best Regards,<br />Tommy</p>
]]></content:encoded>
	</item>
</channel>
</rss>
