<?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>Jonathan Campos&#039; Blog &#187; General</title>
	<atom:link href="http://www.unitedmindset.com/jonbcampos/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.unitedmindset.com/jonbcampos</link>
	<description>Blog on technology and software development typically around Adobe Flash, Flex, and AIR.</description>
	<lastBuildDate>Mon, 07 Nov 2011 22:32:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Speaking at MAX 2011</title>
		<link>http://www.unitedmindset.com/jonbcampos/2011/07/28/speaking-at-max-2011/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2011/07/28/speaking-at-max-2011/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 20:24:54 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[max]]></category>

		<guid isPermaLink="false">http://www.unitedmindset.com/jonbcampos/?p=2526</guid>
		<description><![CDATA[I&#8217;m excited to again be fortunate enough to present at Adobe Max 2011. If you are interested in learning about Mobile Applications I will be giving a the first half of a 2 part lab in conjunction with Asfusion! We will start with the application basics and go as far as using custom Native Extensions [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://max.adobe.com?sdid=ISMTQ"><img alt="" src="http://www.adobe-max.com/published/adobemax2011/global_files/MAX11_125x125_SPEAKER_dancers.jpg" title="Adobe Max 2011" class="alignleft" width="125" height="125" /></a>I&#8217;m excited to again be fortunate enough to present at Adobe Max 2011.</p>
<p>If you are interested in learning about Mobile Applications I will be giving a the first half of a 2 part lab in conjunction with Asfusion!</p>
<p>We will start with the application basics and go as far as using custom Native Extensions and Density Aware skins. It&#8217;s quite a learning event.</p>
<p>If you haven&#8217;t signed up for Adobe Max, <a href="http://max.adobe.com?sdid=ISMTQ" title="Adobe Max Signup!" target="_blank">do it now!</a></p>
<p>Make sure to sign up for the labs, they are filling up very quickly!<br />
<a href="http://bit.ly/nxx5mv" target="_blank">(First Presentation) Lab, Tuesday at 8am</a><br />
<a href="http://bit.ly/nxx5mv" target="_blank">(Second Presentation) Lab, Wednesday at 4pm</a></p>
<p>The same content will be shown at each of these labs. The 2nd half presentation presented by Asfusion hasn&#8217;t had it&#8217;s times set yet, keep watching out for it!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2011%2F07%2F28%2Fspeaking-at-max-2011%2F&amp;title=Speaking%20at%20MAX%202011" id="wpa2a_2"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2011/07/28/speaking-at-max-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making It Mobile &#8211; 360Flex Preso</title>
		<link>http://www.unitedmindset.com/jonbcampos/2011/04/18/making-it-mobile-360flex-preso/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2011/04/18/making-it-mobile-360flex-preso/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 16:34:55 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[Air for Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.unitedmindset.com/jonbcampos/?p=2511</guid>
		<description><![CDATA[I was fortunate enough to present last week at 360Flex with good friend Antonio Holguin about how to make a mobile application. Our format of the back and forth designer/developer workflow was an experiment but one that most people seemed to enjoy. Below are our slides, feel free to ask questions about the presentation. Making [...]]]></description>
			<content:encoded><![CDATA[<p>I was fortunate enough to present last week at 360Flex with good friend <a href="http://swfhead.com/blog/?p=1162">Antonio Holguin</a> about how to make a mobile application. Our format of the back and forth designer/developer workflow was an experiment but one that most people seemed to enjoy.</p>
<p>Below are our slides, feel free to ask questions about the presentation.</p>
<div style="width:425px" id="__ss_7652445"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/AntonioHolguin/making-it-mobile360flexjonathancamposantonioholguin" title="Making it mobile_360_flex_jonathancampos_antonioholguin">Making it mobile_360_flex_jonathancampos_antonioholguin</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/7652445" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/AntonioHolguin">AntonioHolguin</a> </div>
</p></div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2011%2F04%2F18%2Fmaking-it-mobile-360flex-preso%2F&amp;title=Making%20It%20Mobile%20%26%238211%3B%20360Flex%20Preso" id="wpa2a_4"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2011/04/18/making-it-mobile-360flex-preso/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>360Flex: Red Carpet Rumble</title>
		<link>http://www.unitedmindset.com/jonbcampos/2011/04/11/360flex-red-carpet-rumble/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2011/04/11/360flex-red-carpet-rumble/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 07:00:05 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[Air for Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash Builder 4]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Netflix Flex API]]></category>

		<guid isPermaLink="false">http://www.unitedmindset.com/jonbcampos/?p=2503</guid>
		<description><![CDATA[This is the application created by Antonio Holguin and myself for our 360Flex presentation. This app is a &#8220;semi&#8221; playable version of the game we are creating tentatively called &#8220;Red Carpet Rumble&#8221;. If you have an Android device you can use this link to get the game. Disclaimer: By no means do we feel that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://unitedmindset.com/badassgame/MobileGame.apk"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/uploads/2011/04/001_splash-300x180.jpg" alt="" title="001_splash" width="300" height="180" class="alignnone size-medium wp-image-2505" /></a><br />
This is the application created by <a href="http://twitter.com/antonioholguin">Antonio Holguin</a> and myself for our 360Flex presentation.</p>
<p>This app is a &#8220;semi&#8221; playable version of the game we are creating tentatively called &#8220;Red Carpet Rumble&#8221;.</p>
<p>If you have an Android device you can use <a href="http://unitedmindset.com/badassgame/MobileGame.apk">this link to get the game</a>.</p>
<p>Disclaimer: By no means do we feel that this application is completely done. Yes, we have the full intention of continuing to work on this game and get it out. If you have comments feel free to let us know.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2011%2F04%2F11%2F360flex-red-carpet-rumble%2F&amp;title=360Flex%3A%20Red%20Carpet%20Rumble" id="wpa2a_6"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2011/04/11/360flex-red-carpet-rumble/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Edge Article</title>
		<link>http://www.unitedmindset.com/jonbcampos/2011/04/07/adobe-edge-article/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2011/04/07/adobe-edge-article/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 20:49:36 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[architecting applications]]></category>
		<category><![CDATA[edge]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.unitedmindset.com/jonbcampos/?p=2495</guid>
		<description><![CDATA[Check out the Adobe Edge article I wrote!]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.unitedmindset.com/jonbcampos/wp-content/uploads/2011/04/Architecting-your-application-for-multiple-devices.jpeg" alt="" title="Architecting your application for multiple devices" width="204" height="110" class="alignnone size-full wp-image-2496" /></p>
<p>Check out the <a href="http://www.adobe.com/newsletters/edge/march2011/articles/article5/index.html?trackingid=IJQLJ">Adobe Edge article</a> I wrote!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2011%2F04%2F07%2Fadobe-edge-article%2F&amp;title=Adobe%20Edge%20Article" id="wpa2a_8"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2011/04/07/adobe-edge-article/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Presenting at SXSW and 360Flex!</title>
		<link>http://www.unitedmindset.com/jonbcampos/2011/02/03/presenting-at-sxsw-and-360flex/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2011/02/03/presenting-at-sxsw-and-360flex/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 20:11:13 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[360Flex]]></category>
		<category><![CDATA[sxsw]]></category>

		<guid isPermaLink="false">http://www.unitedmindset.com/jonbcampos/?p=2437</guid>
		<description><![CDATA[This is such an exciting season and probably the biggest speaking events I&#8217;ve even been apart of. Coming up in March Dedo Inc. will be presenting on going multi-screen at SXSW. Christian Cantrell of Adobe, Andre Charland of Nitobi (PhoneGap), along with Danny Dura of Dedo Inc., Mark Miller of Dedo Inc. and myself will [...]]]></description>
			<content:encoded><![CDATA[<p><strong></strong><a href="http://www.360flex.com/" target="_blank"><img class="alignleft size-full wp-image-2449" style="margin: 10px;" title="Mtn_Badge_speaker" src="http://www.unitedmindset.com/jonbcampos/wp-content/uploads/2011/01/Mtn_Badge_speaker.png" alt="" width="194" height="190" /></a> This is such an exciting season and probably the biggest speaking events I&#8217;ve even been apart of.</p>
<p>Coming up in March Dedo Inc. will be presenting on going multi-screen at <a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=sxsw" target="_blank">SXSW</a>. <a href="http://blogs.adobe.com/cantrell/" target="_blank">Christian Cantrell of Adobe</a>, <a href="http://www.phonegap.com/" target="_blank">Andre Charland of Nitobi (PhoneGap)</a>, along with Danny Dura of Dedo Inc., Mark Miller of Dedo Inc. and myself will be showing off different techniques and platforms of how to go multi-screen.</p>
<p>In April, I will be presenting along with <a href="http://blog.swfhead.com/" target="_blank">Antonio Holguin</a> at <a href="http://www.360flex.com/" target="_blank">360Flex</a> on Mobile development techniques. We&#8217;ve developed a slick game for mobile devices and will be discussing every part of it&#8217;s creation, from initial idea to release. This presentation will be very important to you and any group you are working with that may be planning to go mobile soon. This will also allow you time to ask us questions as you prepare for your new project. Antonio will be focusing on the design aspect of new mobile development and I will be focusing on the developer side of mobile development.</p>
<p>I am highly anticipating March and April!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2011%2F02%2F03%2Fpresenting-at-sxsw-and-360flex%2F&amp;title=Presenting%20at%20SXSW%20and%20360Flex%21" id="wpa2a_10"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2011/02/03/presenting-at-sxsw-and-360flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moved My Blog</title>
		<link>http://www.unitedmindset.com/jonbcampos/2011/01/10/moved-my-blog/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2011/01/10/moved-my-blog/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 16:29:34 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.unitedmindset.com/jonbcampos/?p=2432</guid>
		<description><![CDATA[I&#8217;ve moved my blog and and my hosting company. While this should be seamless, there may be a bug or two left in the moving. If you find anything feel free to call it out and let me know.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve moved my blog and and my hosting company. While this should be seamless, there may be a bug or two left in the moving. If you find anything feel free to call it out and let me know.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2011%2F01%2F10%2Fmoved-my-blog%2F&amp;title=Moved%20My%20Blog" id="wpa2a_12"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2011/01/10/moved-my-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn from my mobile mistakes</title>
		<link>http://www.unitedmindset.com/jonbcampos/2010/12/28/learn-from-my-mobile-mistakes/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2010/12/28/learn-from-my-mobile-mistakes/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 15:02:59 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[Air for Android]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Netflix Flex API]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[queue manager]]></category>

		<guid isPermaLink="false">http://unitedmindset.com/jonbcampos/?p=2393</guid>
		<description><![CDATA[This blog post could also be &#8220;how to lower your stars in the marketplace&#8221;. I say this because now looking back at having an application in the marketplace for a few months I see many places that I have screwed up and things that I could do much better next time. At the point of [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://unitedmindset.com/jonbcampos/wp-content/uploads/2010/10/icon128.png" alt="" title="icon128" width="128" height="128" class="alignleft size-full wp-image-2237" />This blog post could also be &#8220;how to lower your stars in the marketplace&#8221;. I say this because now looking back at having an application in the marketplace for a few months I see many places that I have screwed up and things that I could do much better next time.</p>
<p>At the point of writing this I&#8217;m actually really happy with where Queue Manager has gone.<br />
- Queue Manager has almost 50k users<br />
- Queue Manager is listed highly in the Android Market<br />
- Queue Manager is listed as the top Air for Android app on <a href="http://www.appbrain.com/app/queue-manager/air.com.unitedmindset.QueueManager">AppBrain</a><br />
- Queue Manager is listed highly in <a href="http://appaware.org/app.php?packagename=air.com.unitedmindset.QueueManager">AppAware</a><br />
- Queue Manager is awaiting acceptance into the BlackBerry App World<br />
- <a href="http://www.androidcentral.com/android-central-editors-app-picks-october-28-2010?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed:+androidcentral+(Android+Central)">Android Central</a> listed Queue Manager as a top pick in October and it was stated &#8220;it [Queue Manager] has proven to me the viability of Adobe Air as a development platform for Android&#8221;</p>
<p><img src="http://qrcode.kaywa.com/img.php?s=5&#038;d=market%3A%2F%2Fsearch%3Fq%3Dpname%3Aair.com.unitedmindset.QueueManager" alt="qrcode"/><br />
<span id="more-2393"></span></p>
<p>All this success has not been due to my efforts though, I feel that my efforts have only hindered the application&#8217;s success rather than bolster it. I&#8217;m going to go through the things that I&#8217;ve done &#8211; or have been done to me &#8211; that have hurt Queue Manager and what I have done to fix my mistakes.</p>
<p>Some of these mistakes are embarrassing to admit, especially from a developer that has made multiple applications / products before, yet the old issues still creep up if you let them.</p>
<p><strong>Releasing Too Early</strong><br />
This issue was due to my ego more than anything else. I wanted to have the first Air for Android application on the market and guess what? I did it. The second that Air was pushed to the market I followed right up with Queue Manager. What issues did this cause? You can assume and assume correctly that the initial release was buggy, feature depleted, and could have used some good ole&#8217; optimization. In subsequent releases I fixed up these bugs but due to my buggy release I ended up on triage duty for the first week.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Release when the app is ready, not based on some other date</li>
</ul>
<p><strong>Frequent Releases</strong><br />
Part of this issue was due to how far I needed to go to compete with other Netflix applications on the Android market, part of this issue was that I was trying to have a specific feature set out by Adobe Max, part of this issue was that I wasn&#8217;t testing thoroughly enough and had to constantly release bug fixes, and part of this issue was that every time I finished a feature I wanted it out to the market as fast as possible. All of these &#8220;parts&#8221; lead to one thing: upset users. While some users appreciated the frequent releases most told me that they would have preferred if they weren&#8217;t quite as frequent as I was making them. As time has gone on my releases have been less frequent as the amount of changes needed to the application have decreased. Along with that I have been testing more on my application prior to release &#8211; not just testing the feature that I worked on. Finally my app has grown to a very stable state so the bugs have been worked out over time.</p>
<p>I currently sit on releases a day or two just to feel good about them.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Plan releases</li>
<li>- Test throughly so that you&#8217;re not having to follow up a feature release with an immediate bug fix</li>
<li>- Even if you have good code to release, spread it out and possibly merge feature releases</li>
</ul>
<p><strong>Work closely with your API provider</strong><br />
This has actually been one of my biggest problems and a problem I am completely helpless to &#8211; hopefully the app that you make isn&#8217;t dependent on a public API.</p>
<p>The issue is that Netflix provides me X amount of calls against their servers in one day. If Queue Manger gets featured somewhere or a bunch of people decide to use Queue Manager for an extended period of time and Queue Manager hits it&#8217;s Netflix limit then the application starts giving back an error from Netflix. Each time this has happened I have contacted Netflix and they have given me a bump in my limit, yet another few weeks pass by and I start hitting my limit again. I feel for my users, they just want an application that works, yet this is an area that I am completely hopeless.</p>
<p>When this happens I usually end up with a string of 1 star comments in my market reviews.</p>
<blockquote><p>This is particularly bad when I put out a new release because everyone goes and plays with the app to see what has changed. A quarter of my user base could easily put me over my API limit.</p></blockquote>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Give good feedback to the user</li>
<li>- Limit calls to the server</li>
</ul>
<p><strong>Condense your trips</strong><br />
Mobile is great because it is on the go however you can quickly come across places that on the go doesn&#8217;t equal on the web. With this spotty service possibility even the smallest service call may take quite a long time to fully get back. I learned this the hard way with my initial release.</p>
<p>On my testing computer I received each service call I made almost instantly and the computer was quickly able to parse and visualize the data. When my users started working with my application the initial comments I got back were that they didn&#8217;t know if anything was going on. Even after adding visual loading indicators I had users complaining that the application was &#8220;sluggish&#8221; and the data was taking too long to get back.</p>
<p>This lead to another place for optimization and I spent some long nights working on reorganizing the service calls that I made to the Netflix service. This reduced the data that I was receiving from Netflix, sped up the application and especially the loading time. I still have users that say it takes to long, but eventually there is only so much that I can do about the network, their location, and their device.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Give good feedback to the user</li>
<li>- Reduce the amount of data you rely on</li>
</ul>
<p><strong>Double check your app id prior to release!</strong><br />
I thought that I would be the only person to hit this but alas my good friend <a href="http://twitter.com/flashcanon" target="_blank">FlashCanon</a> also fell prey to this. Prior to releasing your app to the Android Market double check your app id in the application descriptor file and make sure you are perfectly happy with it <strong>BECAUSE YOU CAN&#8217;T CHANGE IT LATER!</strong> The name of the app, the programming, the colors, and basically everything else about your app can change between releases but your app id will stay the same and can&#8217;t be changed.</p>
<blockquote><p>I know there are rumors that you can contact Google and ask them to help change your app id but I would recommend just getting this right from the beginning.</p></blockquote>
<p>If you need to change the app id you will just have to put up a new application with the right id and get your users to reinstall the new app. Obviously you will lose the stats and whatever else from your initial release but you will get the id that you were wanting.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Double check your application id!</li>
</ul>
<p><strong>Double check your application descriptor prior to every release</strong><br />
With every release you can remove your application from the Android Market based on the options that are in your application descriptor. There was about a two week period that I removed Queue Manager from the Marketplace because I updated my Flash Builder version and the application descriptor changed just slightly. This slight change altered the filtering options on my application and even my users couldn&#8217;t find the application in a search.</p>
<blockquote><p>Always check your application descriptor and the application manifest. These details lead to filtering in the Android Market.</p></blockquote>
<p>Now prior to every release I read through my application manifest,  double check that the install location is set to auto, and that my user permissions are set properly.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Double check your permissions</li>
<li>- Make sure that the install location is set to auto for app2sd functionality</li>
<li>- Ensure that your icons stay consistent between releases (and exist)</li>
</ul>
<p><strong>Have error tracking code</strong><br />
As I hinted at earlier there are many things that may go wrong with an application. The device may malfunction, the internet signal may fade, or &#8211; the most obvious &#8211; your code may break. Your users will probably be quick to tell you that your application sucks or has failed but be unclear as to what happened. As I am limited and don&#8217;t know what has happened on the server side (delivered by Netflix) I have an entire section of my application that I am unaware of any issues.</p>
<p>That being said I&#8217;ve had to construct an error tracking system within my application to give the users details as to what happened and ultimately deliver to me the error. All this extra work is very helpful to narrowing down the problem. As an added bonus, if you make error reporting very easy on your users they are more apt to sending you the generated error report.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Give good feedback to the user</li>
<li>- Make it easy for the user to submit bugs/issues</li>
</ul>
<p><strong>Have statistics gathering code</strong><br />
I love statistics gathering code because once I know what my users are doing on a statistical level I know where to focus my efforts for development. I&#8217;ve recently learned that my users do two things: search for titles and browse through new instant titles. That&#8217;s it. Knowing this I can focus my development practices around making sure that my application can do what my users want.</p>
<p>Where did I fail on this? Well I didn&#8217;t put in my tracking information till recently. If you are working on an application I recommend <a href="http://code.google.com/p/gaforflash/">GA for Flash</a>.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Add in code to gather use statistics</li>
<li>- Don&#8217;t gather more information than is necessary, this just will cause extra unneeded application chatter</li>
</ul>
<p><strong>Optimize Visuals</strong><br />
My good friend <a href="http://feedgrids.com">Dimi</a> would be proud of me and all the work I did on the icons. Just for the record he designed most of the app and how it looked, I just pieced it all together. The issue was that some of the icons came out as &#8220;crunchy&#8221; (thanks <a href="http://blog.swfhead.com/">Antonio</a>).</p>
<p>I knew to not scale the images yet the icons still came out as &#8220;crunchy&#8221;.</p>
<p>One night I decided to sit down and figure out the problem, it didn&#8217;t take long. The icons that I was using was built at an odd size. Due to the odd size the device has having issues displaying the icon as the device also does some scaling of the icon. However when I rebuilt the icons with their size based on a power of 2 (specifically 36&#215;36) the icon&#8217;s &#8220;crunchy&#8221; look went away and was smooth again.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Look over all images, make sure they are a multiple of 2 (16&#215;16, 36&#215;36, etc)</li>
</ul>
<p><strong>Test on multiple screens</strong><br />
Testing on multiple devices is the bane of my existence. No matter how many devices I get my hands on there is always one more device that makes my app look just a little bit different and horrible at the same time. At a certain point you are going to need to decide for yourself how many devices is &#8220;good enough&#8221; and move forward.</p>
<p>I&#8217;d recommend testing on at least 3 different phones and 1 tablet. These different sizes and resolutions should help get most of the kinks out. When you see your app on these different resolutions and sizes you&#8217;ll probably realize the same two things that I did. Things that were &#8220;a bit&#8221; on the small size are unusable on some devices and things that &#8220;a bit&#8221; on the large size actually look okay.</p>
<blockquote><p>For the most part I&#8217;ve been really happy with the look of my app across many devices. The Flex Team is doing a good job of keeping design stable across multiple screens.</p></blockquote>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Get devices</li>
<li>- Test on devices</li>
</ul>
<p><strong>Never accept &#8220;okay&#8221;</strong><br />
There are a few times that I&#8217;ve had to make the hard decision &#8220;I will cut a corner here so I can get this important bug fixed there&#8221;. I thought that my users wouldn&#8217;t notice and that they would be happy to get one bug fixed even if it meant that the update wasn&#8217;t very significant.</p>
<p>I was wrong.</p>
<p>My users did notice and they punished me for it. Users aren&#8217;t happy for incremental changes and they will comment and rate your application on two levels. The first is an overall score while the second is how much has the app improved from the last update. If the user doesn&#8217;t deem the update important enough you&#8217;ll get a nice 1-star rating for wasting their time with the update. Not nice but it is reality.</p>
<p>After seeing this phenomenon I&#8217;ve been very happy to rate applications that I enjoy with 5 stars, even if the updates seem trivial.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Plan your updates</li>
<li>- Realize that everything is significant and you can&#8217;t skip out anywhere</li>
</ul>
<p><strong>Accept that your users are going to destroy your app</strong><br />
This point was very interesting and something I didn&#8217;t expect. I had a user contact me that the app didn&#8217;t work for them. After a few more emails back and forth I couldn&#8217;t understand what the problem was and was left to just apologizing to the user. Then the user gave me a break through. He had a custom build of the Android OS that gave him a few extra abilities &#8211; including the ability to turn on and off permissions to applications.</p>
<p>Apparently he decided that my application didn&#8217;t need the ability to access the internet but was upset with me when the application couldn&#8217;t access the Netflix API.</p>
<p>The lesson? Sometimes there is nothing you can do.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Accept defeat</li>
</ul>
<p><strong>Unit Test (where possible)</strong><br />
Don&#8217;t have to go far into this subject. Unit tests work, use them. Even if you think you&#8217;re a &#8220;good developer&#8221; they will help.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Write your tests</li>
</ul>
<p><strong>Have a release checklist</strong><br />
This may not seem like very important but I&#8217;ve always found release checklists to be helpful. There were a few times in early releases that I didn&#8217;t follow any checklist and I accidentally left in debug information or my testing api key or a few other issues. All of these caused for some bad releases followed by an immediate secondary release followed by upset users.</p>
<p>I recommend writing a script for you to follow when you are making a release. Make sure all of your testing bits are in the script, any settings you have to change, and double check your application descriptor. Once your checklist is completed then make your release.</p>
<p>I originally didn&#8217;t do all this with my app as I considered it a &#8220;small&#8221; app and suspected I could remember all these steps off the cuff. I quickly learned that there is no such thing as a small app and every detail matters.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Make a script</li>
<li>- Follow your script each time</li>
</ul>
<p><strong>Include your contact information</strong><br />
Finally, give your users a way to contact you. I&#8217;ve found over the entire process that I have some very kind users and also some users that have great ideas and points for improvements. They appreciate that the ability to give feedback and contribute often. I receive roughly 10 emails a day from my users with ideas and requests.</p>
<p><em>To Do Item(s):</em></p>
<ul>
<li>- Include your contact information somewhere</li>
</ul>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2010%2F12%2F28%2Flearn-from-my-mobile-mistakes%2F&amp;title=Learn%20from%20my%20mobile%20mistakes" id="wpa2a_14"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2010/12/28/learn-from-my-mobile-mistakes/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Samsung Galaxy Tablet Review</title>
		<link>http://www.unitedmindset.com/jonbcampos/2010/11/15/samsung-galaxy-tablet-review/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2010/11/15/samsung-galaxy-tablet-review/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 16:21:58 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://unitedmindset.com/jonbcampos/?p=2385</guid>
		<description><![CDATA[I give every device at least a few hours before completely throwing it away. In that time it either proves useful to me or it doesn&#8217;t. If it isn&#8217;t, then it goes the way of the virtual boy &#8211; but if it is then I&#8217;m happy to keep it. I&#8217;ll say now, the Samsung Galaxy [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://unitedmindset.com/jonbcampos/wp-content/uploads/2010/11/19428-the-samsung-galaxy-tab-the-first-ever-tablet-from-samsung-300x300.jpg" alt="" title="19428-the-samsung-galaxy-tab-the-first-ever-tablet-from-samsung" width="300" height="300" class="alignleft size-medium wp-image-2394" />I give every device at least a few hours before completely throwing it away. In that time it either proves useful to me or it doesn&#8217;t. If it isn&#8217;t, then it goes the way of the virtual boy &#8211; but if it is then I&#8217;m happy to keep it.</p>
<p>I&#8217;ll say now, the Samsung Galaxy Tablet is a keeper.</p>
<p>There have been some scathing reviews of the Galaxy tablet but for my needs I&#8217;m very happy with the tablet as a lightweight productivity device. When I first thought of the iPad &#8211; before ole Stevie actually announced it &#8211; this is what I thought of as a device. Cameras, Geolocation, Accelerometer, connections to the entire internet, lots of good apps, and a device I can program for. Based on that list Stevie has failed on multiple points.</p>
<blockquote><p>
I will say that I&#8217;ve spent time with the iPad and liked it &#8211; I&#8217;m not completely jaded. I just didn&#8217;t see any point to buy it due to many shortcomings at the hardware level. Software can be updated &#8211; with incomplete hardware you&#8217;re stuck and the iPad was incomplete. I know iPad round 2 will have cameras but the system will still be unfriendly to me as a developer and for that I&#8217;m still looking to Android based devices.
</p></blockquote>
<p><span id="more-2385"></span><br />
<img src="http://unitedmindset.com/jonbcampos/wp-content/uploads/2010/11/samsung-galaxy-tablet-vs-apple-ipad.jpeg" alt="" title="samsung-galaxy-tablet-vs-apple-ipad" width="260" height="184" class="alignleft size-full wp-image-2410" /><strong>Physical Specs</strong><br />
You can find the exact specs online in a million places but here are the specs as I felt them.</p>
<p>The size of the tablet is awesome. It fits in most of the pockets of my backpack and I can easily hold it securely in one hand. I say this because the larger size of the iPad makes it so you really can&#8217;t put an entire hand around it. So if something were to slip&#8230; crash. I&#8217;m paranoid like that though. The size makes it also so you can turn the device into portrait view and type with two hands like a big phone. This is a big performance improvement over other larger tablets.</p>
<p>The weight of the device is great. It isn&#8217;t so light that you&#8217;d forget it was a piece of hardware when moving things around on your desk yet it isn&#8217;t so heavy that you&#8217;ll get tired using it with just one hand. On top of that the device feels solid, seriously solid. I&#8217;m not terribly worried about it breaking on me while I give it a toss to the couch.</p>
<p>Maybe it&#8217;s just me but the 4 android buttons are causing me troubles. That is probably because the Evo that I use everyday is set in a different order &#8211; which feels more logical to me. Basically I keep hitting home when I go for what I think is menu and vice versa. It&#8217;s nit-picky but something that keeps annoying me.</p>
<p><strong>Peripherals</strong><br />
Many people have bashed on the device for it&#8217;s camera quality and I have to agree. The camera has great quality, but I&#8217;d like it to be a bit more &#8211; especially since my Evo has a higher quality than the tablet. However if you look at a specific competitor: 2 cameras > 0 cameras.</p>
<p>I ran a few different applications on it to test multitouch, accelerometer, and GPS capabilities and all of these had stellar capabilities. The multitouch was spot on without dropped or switched touch points even with many touch points running, the accelerometer was spot on and the GPS was very accurate.</p>
<p>One thing that many people laugh at is the fact that the Samsung tablet actually has phone capabilities built in &#8211; especially when they put the device to the side of their head and laugh at how stupid it seems. Try adding a bluetooth headset to your device and you&#8217;re good to go. <img src='http://www.unitedmindset.com/jonbcampos/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://unitedmindset.com/jonbcampos/wp-content/uploads/2010/11/2010-09-09-b8140-300x216.jpg" alt="" title="2010-09-09-b8140" width="300" height="216" class="alignright size-medium wp-image-2413" /><strong>Battery Life</strong><br />
The battery life is beyond amazing! I have gotten to the point on my Evo that I have to charge it twice a day to keep continual use. It&#8217;s a fact that I have come to accept and often just let my phone die off in the evening hours. Now working with the Samsung tablet I am amazed that I played with it for multiple hours on the first evening and didn&#8217;t even reach half way on my power. Without powering down and with moderate to heavy use it was nearly 3 days before I even had to plug it in for power. This made me very happy.</p>
<p><strong>Added Software</strong><br />
I&#8217;m not talking about the software added by Tmobile here, that needs to just be uninstalled and let me enjoy my device. I&#8217;m talking about the tablet specific software that was created to maximize the larger screen size usage. Yes all your favorite Android apps are there and they look really nice, but now there are new productivity apps that use the larger size. If you are used to the iPad you will notice lots of similarities to the larger apps provided with the iPad. My only complaint is that there aren&#8217;t more apps like this provided for the Tablet. The ones that are there are great, now we just need more.</p>
<p><strong>Games</strong><br />
I played a few games on the tablet and they all ran so smoothly that they were fun again &#8211; yes I&#8217;m talking about a few racing games and Angry Birds. They all worked well, the performance of the running app was slick on the device, and the larger screen size made it so I could enjoy the details that may have been lost previously on smaller screen sizes.</p>
<p><strong>Overall Thoughts</strong><br />
The coolest things that I didn&#8217;t even think about trying was figured out by Danny in the office. He was packing his pockets for a meeting and he just threw the tablet into his coat pocket after also sticking it into his pants pocket. Pocket test passed.</p>
<p>Ultimately the issue comes down to what are you intending to do with your tablet. For some the screen size will just inhibit your workflow too much &#8211; like a programmer on a small laptop screen. But if you are needing something very mobile with more power and productivity than your standard smartphone &#8211; this tablet is made for you.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2010%2F11%2F15%2Fsamsung-galaxy-tablet-review%2F&amp;title=Samsung%20Galaxy%20Tablet%20Review" id="wpa2a_16"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2010/11/15/samsung-galaxy-tablet-review/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MAX 2010</title>
		<link>http://www.unitedmindset.com/jonbcampos/2010/11/02/max-2010/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2010/11/02/max-2010/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 19:39:33 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[adobemax]]></category>

		<guid isPermaLink="false">http://unitedmindset.com/jonbcampos/?p=2326</guid>
		<description><![CDATA[First thing &#8211; to all the haters. YOU SNOOZE YOU LOSE! No other conference that I&#8217;ve been to has caused for so many hate emails and texts from my friends. I think what got to them most is that, for most of them, they decided to not go for one reason or another and later [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://unitedmindset.com/jonbcampos/wp-content/uploads/2010/11/max_blog_header.jpg" alt="" title="max_blog_header" width="564" height="313" class="alignnone size-full wp-image-2364" /><br />
First thing &#8211; to all the haters. YOU SNOOZE YOU LOSE! No other conference that I&#8217;ve been to has caused for so many hate emails and texts from my friends. I think what got to them most is that, for most of them, they decided to not go for one reason or another and later regretted the decisions.</p>
<p>And regret the decision to not show up to Adobe Max 2010 you should!</p>
<p>I&#8217;ve been going to Max for a few years and this was the best one by far. Only since my first Max have I been so excited to pop out of my bed after a long night of &#8220;networking&#8221; and make it for the early morning sessions. This year the sessions were spot on, the technology was new and exciting, summit was great, and the keynotes were memorable &#8211; and of course the networking is the best you&#8217;ll ever have.<br />
<span id="more-2326"></span><br />
<strong>Sessions</strong><br />
To all the speakers presentations that I saw, GREAT JOB. Ryan Frishberg, <a href="http://tv.adobe.com/watch/max-2010-develop/deep-dive-into-the-spark-datagrid-component-and-item-renderers-/">Hans Muller</a>, <a href="http://tv.adobe.com/watch/max-2010-develop/flash-player-3d-future/">Sebastian Marketsmueller</a>, <a href="http://tv.adobe.com/watch/max-2010-develop/flash-builder-advanced-tips-and-techniques/">Jason San Jose</a>, <a href="http://tv.adobe.com/watch/max-2010-develop/developing-wellbehaved-mobile-applications-for-adobe-air-/">Renaun</a>, <a href="http://tv.adobe.com/watch/max-2010-develop/deep-dive-into-mobile-development-with-the-flex-sdk-/">Chiedo</a>, <a href="http://tv.adobe.com/watch/max-2010-develop/flex-roadmap-/">Deepa</a>, and Grant Skinner.</p>
<p>There were a few other sessions I attended that didn&#8217;t have videos but when you go to Max make sure to find sessions lead by the actual senior developer of the product. These are the sessions that will blow you away beyond belief. This year Adobe really showed off how smart some of the people are that work at the highest (and deepest) levels of the Flash Player. Seeing this level of knowledge really grew my confidence in the platform.</p>
<p><strong>New Technology</strong><br />
New technology abound this year! Tablets, mobile devices, phones, tvs and all these devices ready to run in the device lounge at Adobe Max. I personally went around and installed my <a href="http://unitedmindset.com/jonbcampos/2010/10/09/queue-manager/">Queue Manager</a> on every device I could get my hands on. This was such a learning experience and also so much fun to see how well my application responded on a variety of devices. For anyone that has an app or just wanted to see the difference between the different devices this was a great time to do it.</p>
<p>I was also one of the lucky one&#8217;s to sign up for the Air for TV labs that got to walk away with an AIR development box for my tv. People walking around with these boxes became the envy of other conference goers. I&#8217;m currently working on my first Air for TV app due to what I learned at Max.</p>
<p><strong>Summit</strong><br />
For those that don&#8217;t know Summit is an event for community managers, this includes User Group Managers and Adobe Community Professionals. I&#8217;m not going to go too far into it but Rachel, Liz, Tammy, Aaron and all the other Community Leaders did a great job bringing all of us together.</p>
<p>If you want to join in at Summit next year I would recommend <a href="http://groups.adobe.com/pages/startagroup">starting a user group in your area</a> or if you feel like you are ready for it, j<a href="http://www.adobe.com/communities/professionals/all.html">oin the few and become an Adobe Community Professional</a>.</p>
<p><strong>Keynotes</strong><br />
Let&#8217;s not kid ourselves, the keynotes caused the hate mail and texts mainly because of the droid2 and google tv giveaways. And I am very thankful for them! <img src='http://www.unitedmindset.com/jonbcampos/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Last year was Flash Catalyst and Flex 4, this year was all about technology and AIR. Adobe did a great job showing off all the places that AIR is available now. Developers everywhere can easily now develop for so many different devices and screens that are reach is limitless. I&#8217;d actually say that this is the first year that the <a href="http://www.openscreenproject.org/">Open Screen Project</a> has proved it&#8217;s worth.</p>
<p>For designers, this year displayed the new tools and how easy it is to create amazing creations targeting a variety of playforms &#8211; sans developer.</p>
<p><a href="http://tv.adobe.com/show/max-2010-keynotes/">The Keynotes can be found here.</a></p>
<p><strong>Networking</strong><br />
Finally, the best reason to come to Max is for the networking. If this was your first year at Max (or you are thinking about next year) just find out what hotel everyone is going to and go there. You don&#8217;t have to be a drinker to join (thought it helps) but just come and hang out. I&#8217;ve never seen a larger group of people that are as open as the Adobe community. Quickly you will be swapping stories of projects long gone, tech headaches, and how William Shatner seemed way too confused and way too cool at the same time.</p>
<p>Usually I would add a big section about the Max Bash and talk about how cool it was but this year it wasn&#8217;t. It was nice don&#8217;t get me wrong &#8211; the Max Bash just didn&#8217;t blow my socks off. Basically this year they had a giant tent with food and a band that only true music lovers would know of. It was nice to walk around and talk to friends but pretty quickly we left to go find a place to sit and a bartender to attend to us.</p>
<p>Overall I&#8217;d say that this Max was one of the best I&#8217;ve been to in a while. I know that I&#8217;m going to Max next year&#8230; <img src='http://www.unitedmindset.com/jonbcampos/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2010%2F11%2F02%2Fmax-2010%2F&amp;title=MAX%202010" id="wpa2a_18"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2010/11/02/max-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex 4.5 PersistenceManager</title>
		<link>http://www.unitedmindset.com/jonbcampos/2010/11/01/flex-4-5-persistencemanager/</link>
		<comments>http://www.unitedmindset.com/jonbcampos/2010/11/01/flex-4-5-persistencemanager/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 15:26:48 +0000</pubDate>
		<dc:creator>jonbcampos</dc:creator>
				<category><![CDATA[Air for Android]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[air for android]]></category>
		<category><![CDATA[flex 4.5]]></category>
		<category><![CDATA[ipersistencemanager]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[persistencemanager]]></category>

		<guid isPermaLink="false">http://unitedmindset.com/jonbcampos/?p=1981</guid>
		<description><![CDATA[The PersistenceManager is the data center backbone to your mobile Flex application. The reason you need to think about the persistance layer of your mobile app more than you needed to before in web and desktop development is because of the high probability of interruption and application closure. In web and desktop development if something [...]]]></description>
			<content:encoded><![CDATA[<p>The PersistenceManager is the data center backbone to your mobile Flex application. The reason you need to think about the persistance layer of your mobile app more than you needed to before in web and desktop development is because of the high probability of interruption and application closure.</p>
<p>In web and desktop development if something else happened on the user&#8217;s computer the user could simply switch windows to handle the interruption and continue their task. This happens so frequently that developers actually never think of this as a issue. However with mobile development there is always the chance of a phone call coming in, or email, or any other application that may take focus away from your application. While you application is not in immediate use you now fall prey to the operating system&#8217;s whim. If the OS decides that your application needs to close for memory or power reasons then the state of your application and any data it was holding may now be lost unless you have created an aggressive data persistance layer.</p>
<p><img src="http://unitedmindset.com/jonbcampos/wp-content/uploads/2010/11/applicationSessionCut.png" alt="" title="applicationSessionCut" width="582" height="225" class="alignnone size-full wp-image-2343" /></p>
<p>On top of that, the views within your application are created and destroyed quite frequently. That means if you were a developer that was used to grabbing data from offscreen or invisible views then your data will no longer be available when these other views are destroyed. Another reason why you need to be very aggressive about moving data into a proper data model and away from the view.</p>
<p>Getting into it let&#8217;s look at the PersistenceManager, what it is, and how we can alter it to do our bidding.<br />
<span id="more-1981"></span><br />
<strong>PersistenceManager</strong><br />
First off the PersistenceManager is a simple way to interact with an LSO (Local Shared Object). This is the default way to persist data across views and sessions. There are only a handful of functions to worry about to get use this class.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//--------------------------------------------------------------------------</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// &nbsp;Methods</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//--------------------------------------------------------------------------</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Clears all the data that is being stored by the persistence<br />
&nbsp; &nbsp; &nbsp;* &nbsp;manager.<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@langversion 3.0<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion Flash 10.1<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion AIR 2.5<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@productversion Flex 4.5<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>;<br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Flushes the data being managed by the persistence manager to<br />
&nbsp; &nbsp; &nbsp;* &nbsp;disk or another external storage file.<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@langversion 3.0<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion Flash 10.1<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion AIR 2.5<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@productversion Flex 4.5<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">flush</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>;<br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Initializes the persistence manager.<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@langversion 3.0<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion Flash 10.1<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion AIR 2.5<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@productversion Flex 4.5<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> initialize<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>;<br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Returns the value of a property stored in the persistence manager.<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@param key The property key<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@langversion 3.0<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion Flash 10.1<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion AIR 2.5<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@productversion Flex 4.5<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">key</span>:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Object</span>;<br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Stores a value in the persistence manager.<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@param key The key to use to store the value<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@param value The value object to store<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@langversion 3.0<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion Flash 10.1<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@playerversion AIR 2.5<br />
&nbsp; &nbsp; &nbsp;* &nbsp;@productversion Flex 4.5<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">key</span>:<span style="color: #0066CC;">String</span>, value:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>;</div></div>
<p>This makes it very easy to set and get data from the persistence layer.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">var</span> p:PersistanceManager = <span style="color: #000000; font-weight: bold;">new</span> PersistenceManager<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">/* this is a singleton */</span><br />
p.<span style="color: #0066CC;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;key&quot;</span>, <span style="color: #cc66cc;">1232131.123</span><span style="color: #66cc66;">&#41;</span>;<br />
<br />
...<br />
...<br />
<br />
<span style="color: #000000; font-weight: bold;">var</span> p:PersistanceManager = <span style="color: #000000; font-weight: bold;">new</span> PersistenceManager<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">/* this is a singleton */</span><br />
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">key</span>:<span style="color: #0066CC;">Number</span> = p.<span style="color: #0066CC;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;key&quot;</span><span style="color: #66cc66;">&#41;</span> as <span style="color: #0066CC;">Number</span>;</div></div>
<p><strong>Roll Your Own</strong><br />
Don&#8217;t like using LSOs? Prefer SQLite Databases or some other storage plan? No problem. You don&#8217;t have to roll your own completely if you don&#8217;t want to &#8211; though you could. You can still use the PersistenceManager, just make sure to use the interface: <em>IPersistenceManager</em>. The functions are all the same but now you can make your own and do whatever you want. This is a wonderful example of programming to an interface rather than an implementation.</p>
<p>While the simple functions provided by the <em>IPersistenceManager</em> may not be robust enough for your application then you can just completely write your own class. I prefer to stick to the provided interfaces because then other developers that help out don&#8217;t have to learn an entire new set of methods.</p>
<blockquote><p>
Looking at getting started with Flash Builder Burrito and the new Flex SDK? Check out this post on <a href="http://unitedmindset.com/jonbcampos/2010/10/25/flex-4-5-mobile-development-post-burrito/">Flex Hero development</a>.
</p></blockquote>
<blockquote><p>
Looking at getting going with non-Hero development or don&#8217;t have the new Flash Builder Burrito? Check out this post on <a href="http://unitedmindset.com/jonbcampos/2010/07/19/android-mobile-development/">getting started with Air for Android</a>.
</p></blockquote>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.unitedmindset.com%2Fjonbcampos%2F2010%2F11%2F01%2Fflex-4-5-persistencemanager%2F&amp;title=Flex%204.5%20PersistenceManager" id="wpa2a_20"><img src="http://www.unitedmindset.com/jonbcampos/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.unitedmindset.com/jonbcampos/2010/11/01/flex-4-5-persistencemanager/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

