<?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>Gregs Ramblings</title>
	<atom:link href="http://gregsramblings.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gregsramblings.com</link>
	<description>Adobe, Technology, Photography, Aviation and other Ramblings</description>
	<lastBuildDate>Sat, 28 Jan 2012 13:31:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Flex</title>
		<link>http://gregsramblings.com/2011/11/11/flex/</link>
		<comments>http://gregsramblings.com/2011/11/11/flex/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 01:42:01 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3292</guid>
		<description><![CDATA[The Flex team just provided some insight into what&#8217;s next for Flex - http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html]]></description>
			<content:encoded><![CDATA[<p><a href="http://gregsramblings.com/wp-content/uploads/2011/11/Flex-Logo.png"><img class="size-thumbnail wp-image-3294 alignleft" title="Flex-Logo" src="http://gregsramblings.com/wp-content/uploads/2011/11/Flex-Logo-150x150.png" alt="" width="150" height="150" /></a>The Flex team just provided some insight into what&#8217;s next for Flex - <a href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html" target="_blank">http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F11%2F11%2Fflex%2F&amp;title=Flex" id="wpa2a_2"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/11/11/flex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PhoneGap Day Videos now available</title>
		<link>http://gregsramblings.com/2011/11/03/relive-phonegap-day-with-videos/</link>
		<comments>http://gregsramblings.com/2011/11/03/relive-phonegap-day-with-videos/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 03:10:13 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[learn phonegap]]></category>
		<category><![CDATA[phonegap]]></category>
		<category><![CDATA[phonegap videos]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3287</guid>
		<description><![CDATA[A great way to learn a lot about PhoneGap &#8212; http://phonegap.com/2011/11/03/relive-phonegap-day-with-videos/]]></description>
			<content:encoded><![CDATA[<p>A great way to learn a lot about PhoneGap &#8212; <a href="http://phonegap.com/2011/11/03/relive-phonegap-day-with-videos/" target="_blank">http://phonegap.com/2011/11/03/relive-phonegap-day-with-videos/</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F11%2F03%2Frelive-phonegap-day-with-videos%2F&amp;title=PhoneGap%20Day%20Videos%20now%20available" id="wpa2a_4"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/11/03/relive-phonegap-day-with-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript, CSS, HTML Frameworks and Tools &#8211; my list</title>
		<link>http://gregsramblings.com/2011/10/21/javascript-css-html-frameworks-tools-my-list/</link>
		<comments>http://gregsramblings.com/2011/10/21/javascript-css-html-frameworks-tools-my-list/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 20:57:50 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[angularjs]]></category>
		<category><![CDATA[appmobi]]></category>
		<category><![CDATA[cobiq]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery mobile]]></category>
		<category><![CDATA[jsfiddle]]></category>
		<category><![CDATA[knockout.js]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[leviroutes]]></category>
		<category><![CDATA[modernizr]]></category>
		<category><![CDATA[mustache]]></category>
		<category><![CDATA[saas]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[xui]]></category>
		<category><![CDATA[zepto]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3255</guid>
		<description><![CDATA[One of the challenges in the world of HTML/JavaScript/CSS app development is cobbling together your kitchen sink of frameworks, tools and other technologies. When you start looking around, it feels like there is an endless list of options, which is good and bad!  Recently, I&#8217;ve been gathering a list of what&#8217;s popular these days and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-3260 aligncenter" style="border-width: 1px; border-color: black; border-style: solid;" title="javascript-frameworks-500" src="http://gregsramblings.com/wp-content/uploads/2011/10/javascript-frameworks-500.jpg" alt="" width="500" height="360" /></p>
<p>One of the challenges in the world of HTML/JavaScript/CSS app development is cobbling together your kitchen sink of frameworks, tools and other technologies. When you start looking around, it feels like there is an endless list of options, which is good and bad!  Recently, I&#8217;ve been gathering a list of what&#8217;s popular these days and thought it might be useful for others to share. If you see anything obvious missing, please let me know.  Thanks to the following for helping me put together this list: <a href="http://www.coldfusionjedi.com/" target="_blank">Ray Camden</a>, <a href="http://www.tricedesigns.com/" target="_blank">Andy Trice</a>, <a href="http://wilsonhut.wordpress.com/" target="_blank">Philip Wilson</a>, <a href="http://coenraets.org/" target="_blank">Christophe Coenraets</a>, <a href="http://www.riaspace.net/" target="_blank">Piotr Walczyszyn</a>, and <a href="https://twitter.com/#!/ibjhb" target="_blank">James Brown</a>.</p>
<h4>In no particular order:</h4>
<ul>
<li><strong>Adobe Edge</strong> &#8211; HTML5/JS/CSS animation/interaction tool - <a href="http://labs.adobe.com/technologies/edge/" target="_blank">http://labs.adobe.com/technologies/edge/</a></li>
<li><strong>Less Framework</strong> &#8211; CSS grid system/layout - <a href="http://lessframework.com/" target="_blank">http://lessframework.com/</a></li>
<li><strong>Less</strong> &#8211; alternative CSS syntax &#8211; supports OO-like syntax &#8211; referenced by Google at Google IO &#8211; used in many projects - <a href="http://lesscss.org/" target="_blank">http://lesscss.org/</a></li>
<li><strong>Saas</strong> &#8211; another alternative CSS syntax &#8211; similar to Less - <a href="http://sass-lang.com/" target="_blank">http://sass-lang.com/</a></li>
<li><strong>Kendo UI Framework</strong> (mobile coming soon) - <a href="http://www.kendoui.com/" target="_blank">http://www.kendoui.com/</a></li>
<li><strong>Sencha</strong> - <a href="http://www.sencha.com/" target="_blank">http://www.sencha.com/</a> - multiple products &#8211; including Sencha Touch, Charts, etc.</li>
<li><strong>JQuery UI</strong> - <a href="http://jqueryui.com/" target="_blank">http://jqueryui.com/</a></li>
<li><strong>JQuery (core)</strong> - <a href="http://jquery.com/" target="_blank">http://jquery.com/</a></li>
<li><strong>JQuery Mobile</strong> - <a href="http://jquerymobile.com/" target="_blank">http://jquerymobile.com/</a></li>
<li><strong>xui</strong> -minimalist JQuery-like framework - <a href="http://xuijs.com/" target="_blank">http://xuijs.com/</a></li>
<li><strong>zepto.js</strong> &#8211; minimalist JQuery-like framework - <a href="http://zeptojs.com/" target="_blank">http://zeptojs.com/</a></li>
<li><strong>Backbone.js</strong> MVC framework for JavaScript - <a href="http://documentcloud.github.com/backbone/" target="_blank">http://documentcloud.github.com/backbone/</a></li>
<li><strong>Underscore.js</strong> &#8211; Kitchen-sink utilities for JavaScript - <a href="http://documentcloud.github.com/underscore/" target="_blank">http://documentcloud.github.com/underscore/</a></li>
<li><strong>Modernizr</strong> &#8211; JavaScript library to detect device features &#8211; very popular - <a href="http://modernizr.com/" target="_blank">http://modernizr.com/</a></li>
<li><strong>cubiq.org</strong> &#8211; home of iScroll, a very popular scroll/list lib - <a href="http://cubiq.org/" target="_blank">http://cubiq.org/</a></li>
<li><strong>appMobi</strong> &#8211; web-based dev with emulation, etc.  Also has an HTML5-framework - <a href="http://www.appmobi.com/" target="_blank">http://www.appmobi.com/</a></li>
<li><strong>LeviRoutes</strong> - lightweight routes framework for hooking in to HTML5 history - <a href="https://github.com/PaulKinlan/leviroutes" target="_blank">https://github.com/PaulKinlan/leviroutes</a></li>
<li><strong>Mustache</strong> &#8211; &#8220;logic-less templates&#8221; &#8211; mentioned by Google presenters at Google IO - <a href="http://mustache.github.com/" target="_blank">http://mustache.github.com/</a></li>
<li><strong>Midori</strong> &#8211; JavaScript framework &#8211; JQuery-like with some unique features - <a href="http://www.midorijs.com/" target="_blank">http://www.midorijs.com/</a></li>
<li><strong>Knockout.js</strong> &#8211; JavaScript UI framework &#8211; implements MVVM pattern &#8211; recommended by Greg&#8217;s brother &#8211; popular - <a href="http://knockoutjs.com/" target="_blank">http://knockoutjs.com/</a></li>
<li><strong>AngularJS</strong> &#8211; MVC framework, two-way data binding, JQuery-compatible - <a href="http://angularjs.org/" target="_blank">http://angularjs.org/</a></li>
<li><strong>JSFiddle</strong> &#8211; online tool for doing lint/tidy/debugging - <a href="http://jsfiddle.net/" target="_blank">http://jsfiddle.net/</a></li>
<li><strong>HighCharts</strong> &#8211; fantastic looking charts - <a href="http://www.highcharts.com/" target="_blank">http://www.highcharts.com/</a></li>
<li><strong>ZingCharts</strong> &#8211; HTML5/SVG/VML and Flash charts - <a href="http://www.zingchart.com/#welcome" target="_blank">http://www.zingchart.com/#welcome</a></li>
<li><strong>AMCharts</strong> &#8211; JavaScript/HTML5-based charts.  They also offer Flash-based charts. - <a href="http://www.amcharts.com/javascript/" target="_blank">http://www.amcharts.com/javascript/</a></li>
<li><strong>HTML5 Boiler Plate</strong> &#8211; assist with cross-browser issues and other utils - <a href="http://html5boilerplate.com/" target="_blank">http://html5boilerplate.com/</a></li>
<li><strong>Bootstrap, from Twitter</strong> - Bootstrap is a toolkit from Twitter designed to kickstart development of webapps and sites. <a href="http://twitter.github.com/bootstrap/" target="_blank">http://twitter.github.com/bootstrap/</a></li>
<li><strong>Popcorn.js</strong> &#8211; HTML5/JS Media Framework - <a href="http://popcornjs.org/" target="_blank">http://popcornjs.org/</a></li>
<li><strong>Three.js</strong> &#8211; JavaScript 3D engine - <a href="https://github.com/mrdoob/three.js" target="_blank">https://github.com/mrdoob/three.js</a> and <a href="http://www.aerotwist.com/lab/getting-started-with-three-js/" target="_blank">http://www.aerotwist.com/lab/getting-started-with-three-js/</a></li>
<li><strong>PhoneGap</strong> &#8211; <a href="http://phonegap.com" target="_blank">http://phonegap.com</a></li>
<li><strong>PhoneGap Plugins</strong> - <a href="https://github.com/phonegap/phonegap-plugins" target="_blank">https://github.com/phonegap/phonegap-plugins</a></li>
<li><strong>Require.js</strong> &#8211; <a href="http://requirejs.org" target="_blank">http://requirejs.org</a> - RequireJS is a JavaScript file and module loader</li>
<li><strong>Brunch</strong> - <a href="http://brunch.io/" target="_blank">http://brunch.io/</a> - A lightweight approach to building HTML5 applications with emphasis on elegance and simplicity.</li>
</ul>
<div>I&#8217;m also collecting a list of great learning resources, especially videos from Google IO and other conferences.  I&#8217;ll blog this list soon.</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F10%2F21%2Fjavascript-css-html-frameworks-tools-my-list%2F&amp;title=JavaScript%2C%20CSS%2C%20HTML%20Frameworks%20and%20Tools%20%26%238211%3B%20my%20list" id="wpa2a_6"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/10/21/javascript-css-html-frameworks-tools-my-list/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Upgrading my MacBook Pro to a SSD (solid state drive)</title>
		<link>http://gregsramblings.com/2011/10/12/upgrading-my-macbook-pro-to-a-ssd-solid-state-drive/</link>
		<comments>http://gregsramblings.com/2011/10/12/upgrading-my-macbook-pro-to-a-ssd-solid-state-drive/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 21:31:29 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Cool Technology]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[macbook pro]]></category>
		<category><![CDATA[solid-state drive]]></category>
		<category><![CDATA[ssd]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3240</guid>
		<description><![CDATA[Solid-state drives (SSDs) have been available for a few years now, but I&#8217;ve been reluctant to move to one due to some early problems that friends of mine had.  When a SSD fails, there is no warning&#8230; no clicking drive sound, and no opportunity to save a few files.  When it crashes, it&#8217;s instant death. [...]]]></description>
			<content:encoded><![CDATA[<p>Solid-state drives (SSDs) have been available for a few years now, but I&#8217;ve been reluctant to move to one due to some early problems that friends of mine had.  When a SSD fails, there is no warning&#8230; no clicking drive sound, and no opportunity to save a few files.  When it crashes, it&#8217;s instant death.  I&#8217;m usually a bleeding edge guy when it comes to technology, but converting my primary drive on my primary development machine was a bit scary, so I&#8217;ve waited.  Current SSDs are much more reliable and I don&#8217;t hear of any crash stories any more, so I felt it was time.  Yesterday I upgraded my MacBook Pro 15&#8243; (early 2011 model) from a 500GB 7200RPM drive to a 300GB SSD. After tweeting about it, I had a few people ask me what steps I took, so I have documented it:</p>
<p><strong>Stuff needed:</strong></p>
<ul>
<li>Small Phillips-head screwdriver</li>
<li>T6 Torx screwdriver (I found one at the local CompUSA as part of a small computer toolkit that cost less than $15)</li>
<li>New hard drive &#8211; in my case, it&#8217;s the <a href="http://www.amazon.com/gp/product/B004T0DNI8" target="_blank">Intel 320 Series 300GB SATA 3.0 GB-s 2.5&#8243; Solid State drive</a></li>
<li>SATA USB Docking station &#8211; allows you to access the new hard drive as a USB drive.  There are many alternatives.  I&#8217;ve had the <a href="http://www.amazon.com/gp/product/B001A4HAFS/" target="_blank">Thermaltake BlacX</a> for a couple of years.</li>
<li>Software to clone hard drives.  There are a few options, but I use <a href="http://www.bombich.com/" target="_blank">Carbon Copy Cloner</a>.  This software is also good for creating bootable USB drive images of your main drive.  In a pinch, you could boot off your USB drive and keep going if your main drive crashes.</li>
<li>Good directions on replacing the hard drive.  The iFixit site always has good directions.  For my early-2011 MacBook pro 15&#8243;, I used <a href="http://www.ifixit.com/Guide/Installing-MacBook-Pro-15-Inch-Unibody-Early-2011-Hard-Drive-Replacement/5895/1" target="_blank">this page</a>.</li>
</ul>
<p><center><a href="http://gregsramblings.com/wp-content/uploads/2011/10/intel320a.png"><img class="size-thumbnail wp-image-3242 alignnone" title="intel320a" src="http://gregsramblings.com/wp-content/uploads/2011/10/intel320a-150x150.png" alt="" width="150" height="150" /> </a>    <a href="http://gregsramblings.com/wp-content/uploads/2011/10/blacxa.png"><img class="size-thumbnail wp-image-3243 alignnone" title="blacxa" src="http://gregsramblings.com/wp-content/uploads/2011/10/blacxa-150x150.png" alt="" width="150" height="150" /></a></center><strong>Steps I took:</strong></p>
<ol>
<li>I cleaned up my existing hard drive.  Since I was downsizing (for the first time in my life!), I had to do some serious space making (long overdue).</li>
<li>I plugged my new SSD into the SATA USB Dock and connected it to my computer.</li>
<li>I formatted the drive using Disk Utility.  I used the same format as my main drive (Mac OS Extended (Journaled)).</li>
<li>I ran Carbon Copy Cloner and set it to copy everything.  This took about 4 hours on my machine.  During that 4 hours, I continued to work knowing that I would be slightly out of sync when the cloning process was complete.</li>
<li>After the clone was finished, I shut down Mail, Calendar, Eclipse, Evernote, etc., and ran the clone process again as an incremental update.  This took less than 30 minutes.</li>
<li>I then shut down the MacBook Pro, unplugged it and flipped it upside down to start the surgery.</li>
<li>I followed the instructions at <a href="http://www.ifixit.com/Guide/Installing-MacBook-Pro-15-Inch-Unibody-Early-2011-Hard-Drive-Replacement/5895/1" target="_blank">http://www.ifixit.com/Guide/Installing-MacBook-Pro-15-Inch-Unibody-Early-2011-Hard-Drive-Replacement/5895/1</a> to swap the drives.  Depending on which model of MacBook you have, you may need to find alternative instructions.  For the early 2011 MacBook Pro 15&#8243;, it&#8217;s a piece of cake.  The only nervous moment was getting the bottom panel to snap off.  It takes some gentle prying.  Everything else was easy.  Since I was only replacing the hard drive, I skipped the step about disconnecting the battery.  (Do this at your own risk)</li>
<li>I put everything back together and booted it up.</li>
<li>After it was up and going, I turned off the hard drive sleep feature in SETTINGS, ENERGY SAVER (uncheck the &#8220;Put the hard disks(s) to sleep when possible&#8221; on both BATTERY and POWER ADAPTER).</li>
<li>All modern MacBooks have sudden motion sensors that halt the hard drive when motion is detected to save the drive heads.  Since this is a solid state drive with no moving parts, I turned off this feature using the following command in terminal: <strong>sudo pmset -a sms 0</strong></li>
<li>I then went to disk utility and verified the disk, and ran the repair permissions function.  This is always a good idea after doing any drive swap.</li>
</ol>
<div><strong>Results:</strong></div>
<div>I expected things to be faster, but WOW!  Boot time is crazy fast.  There is no pause between logging in and being able to launch an app.  Everything on the system is faster!  Build time for Flex apps is cut in half!  The drive will pay for itself in a few weeks in saved time.  The silence is a little eerie at first, but I&#8217;ve quickly adjusted.  :)</div>
<p>&nbsp;</p>
<div><strong>UPDATE</strong>: I put a 500GB regular hard drive in the optical bay using the <a href="http://eshop.macsales.com/item/Other+World+Computing/DDAMBS0GB/" target="_blank">OWC Data Doubler</a>.  The kit is fantastic and worth every penny.  It contains all of the tools that you need and their website has videos clearly documenting the hardware replacement.  I use the 2nd drive for backups, VMWare images and other media.  After I put this drive in, I decided to undo the command above that turns off hard drive sleep mode.  So far, everything has been working great.  To conserve battery life, I manually eject the drive.  Here are two command-line tricks for managing the 2nd hard drive:</div>
<p>&nbsp;</p>
<div>
<ul>
<li><strong>diskutil eject /dev/disk1</strong>  &#8211; ejects my 2nd hard drive which forces it to power down.  The drive is then unavailable until you remount it using the following command.</li>
<li><strong>diskutil mountDisk /dev/disk1</strong>  &#8212; mounts the drive again.</li>
</ul>
<p><strong>The OWC Data Doubler:</strong></p>
<div><a href="http://eshop.macsales.com/item/Other+World+Computing/DDAMBS0GB/"><img class="size-medium wp-image-3283" title="OWC Data Doubler" src="http://gregsramblings.com/wp-content/uploads/2011/10/datadoubler_hero10-300x186.jpg" alt="" width="300" height="186" /></a></div>
</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F10%2F12%2Fupgrading-my-macbook-pro-to-a-ssd-solid-state-drive%2F&amp;title=Upgrading%20my%20MacBook%20Pro%20to%20a%20SSD%20%28solid%20state%20drive%29" id="wpa2a_8"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/10/12/upgrading-my-macbook-pro-to-a-ssd-solid-state-drive/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stupid PhoneGap Tricks &#8211; loading external content</title>
		<link>http://gregsramblings.com/2011/10/12/stupid-phonegap-tricks-loading-external-content/</link>
		<comments>http://gregsramblings.com/2011/10/12/stupid-phonegap-tricks-loading-external-content/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 06:18:15 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3229</guid>
		<description><![CDATA[Most PhoneGap apps are built so that the HTML/JS/CSS content is bundled into the app (see my previous blog post).  I wondered if it was possible to load external content into the PhoneGap container, and after a few minutes of looking at the APIs, I discovered that it is doable, at least on Android (I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Most PhoneGap apps are built so that the HTML/JS/CSS content is bundled into the app (see my <a href="http://gregsramblings.com/2011/10/06/what-is-phonegap/">previous blog post</a>).  I wondered if it was possible to load external content into the PhoneGap container, and after a few minutes of looking at the APIs, I discovered that it is doable, at least on Android (I&#8217;ll try iOS later, but if you are reading this and already know how to do it on iOS, please comment).</p>
<p>Simply modify the main Java Class of your PhoneGap Android project and set the <strong>loadInWebView</strong> property to <strong>true</strong> &#8211; then simply load your content using http:// instead of file://.  If you try using http:// without setting the loadInWebView property, it will open the page in the device&#8217;s browser and your code won&#8217;t have access to the device APIs.</p>
<p>For example:</p>
<pre class="brush: java; title: ; notranslate">
package com.gregwilson.gregpg1;

import com.phonegap.*;

public class GregPG1Activity extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setBooleanProperty(&quot;loadInWebView&quot;, true);
        super.loadUrl(&quot;http://somewebsite/index.html&quot;);
        //ORIGINAL--&gt; super.loadUrl(&quot;file:///android_asset/www/index.html&quot;);
    }
}
</pre>
<p>Since the web content is loaded and executed in the PhoneGap container, you can use any PhoneGap JavaScript APIs you desire just as if the code was loaded from the device. A few thoughts:</p>
<ul>
<li>This could actually speed up parts of the development workflow because now I can simply modify the HTML/CSS/JS and reload the page (once I add a reload button!).  It avoids having to deploy the app over and over.</li>
<li>This opens up a huge security hole.  Imagine if someone could hack your web server and inject some new JavaScript.  Since the JavaScript executes on the device, in the PhoneGap container, it could easily extract or delete your contacts, determine your location and many other devious things.  Therefore, I would NOT recommend doing this for anything other than testing.
<li>There might be some interesting hybrid apps where some of the content is sourced from the server while other content is on the device, but I&#8217;m fairly sure this would not be a &#8220;best practice&#8221; without further code changes to avoid the security issues.</li>
<li>Assuming this is possible on iOS, I&#8217;m fairly certain that your app could be rejected since you are loading external code (a no-no in iOS-land).</li>
</ul>
<p>I&#8217;m not a PhoneGap expert (yet!), so feel free to correct me.  I&#8217;m basically blogging as I learn!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F10%2F12%2Fstupid-phonegap-tricks-loading-external-content%2F&amp;title=Stupid%20PhoneGap%20Tricks%20%26%238211%3B%20loading%20external%20content" id="wpa2a_10"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/10/12/stupid-phonegap-tricks-loading-external-content/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How PhoneGap impacts how we evangelize Flex</title>
		<link>http://gregsramblings.com/2011/10/06/how-phonegap-impacts-how-we-evangelize-flex/</link>
		<comments>http://gregsramblings.com/2011/10/06/how-phonegap-impacts-how-we-evangelize-flex/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 03:40:09 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Adobe MAX 2011]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex on Mobile]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[adobe evangelist]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3197</guid>
		<description><![CDATA[DISCLAIMER:  The following is my personal opinion and not necessarily that of my employer (Adobe Systems, Inc.). The PhoneGap announcement at MAX 2011 really got a lot of people excited (including me!), and it raised a few questions about how it changes our jobs as evangelists.  PhoneGap gives us the means to build cross-platform apps with [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-3215 alignright" style="margin-left: 8px; margin-right: 8px;" title="mobiledevelopmentadobe" src="http://gregsramblings.com/wp-content/uploads/2011/10/mobiledevelopmentadobe.jpg" alt="" width="278" height="200" /><strong>DISCLAIMER:</strong>  The following is my personal opinion and not necessarily that of my employer (Adobe Systems, Inc.).</p>
<p>The <a href="PhoneGap announcement at MAX 2011" target="_blank">PhoneGap announcement at MAX 2011</a> really got a lot of people excited (including me!), and it raised a few questions about how it changes our jobs as evangelists.  PhoneGap gives us the means to build cross-platform apps with HTML5 with hooks into the device&#8217;s native APIs (see my <a href="http://gregsramblings.com/2011/10/06/what-is-phonegap/">previous post</a>).  Having new things to show off to developers and customers is always a good thing, especially when this new thing lets us stretch our new HTML5 muscles on mobile devices.  I&#8217;m already playing around with using <a href="http://labs.adobe.com/technologies/edge/" target="_blank">Adobe Edge</a> to animate some interactions in a mobile app (stay tuned!).</p>
<p>As a technical evangelist talking to developers, having PhoneGap in my arsenal removes the  &#8221;HTML vs Flash/Flex&#8221; religion  from the discussion and allows us to have a real conversation about which technology is the best solution for the requirements at hand.</p>
<p>Here&#8217;s an analogy:  If I worked for a company that sells tile flooring, it would be tough for me to convince someone that tile is the best choice for a particular room because they will expect me to say that tile is best for everything.  Conversely, if I worked for a company that sells wood flooring, they expect me to say wood is best.  However, if I work for a company that sells both types of flooring, I can have a real discussion about which is best on a room by room basis because I will have credibility in both types of flooring.</p>
<p>Now the conversation starts at a higher level and allows me to be more effective at demonstrating the value that Adobe offers to anyone building mobile apps.</p>
<p>There are clearly use-cases where PhoneGap will indeed be the better choice because of the lightweight nature, broader device support and the availability of the required skillset to build these types of apps.  However, there will continue to be use-cases that go beyond the capabilities of HTML5 and will demand the more capable Flash/Flex platform.  Features such as collaboration, complex UIs, handling of large data sets, real-time data processing, and rich data visualization are just a few examples where HTML5 simply won&#8217;t cut it today.  However, as the capabilities of the platforms evolve, Adobe is in a good position to provide solutions across the spectrum.</p>
<p>Our team is in rapid learning mode now, but that&#8217;s why we do this job.  New products, new technologies and new ways of approaching problems is what fuels us.  We&#8217;re basically professional learners.  During the next few months, you&#8217;ll see more content related to PhoneGap as well as the new features coming in Flex 4.6, and much more.  Fun, fun!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F10%2F06%2Fhow-phonegap-impacts-how-we-evangelize-flex%2F&amp;title=How%20PhoneGap%20impacts%20how%20we%20evangelize%20Flex" id="wpa2a_12"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/10/06/how-phonegap-impacts-how-we-evangelize-flex/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What is PhoneGap?</title>
		<link>http://gregsramblings.com/2011/10/06/what-is-phonegap/</link>
		<comments>http://gregsramblings.com/2011/10/06/what-is-phonegap/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 02:45:59 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[phonegap]]></category>
		<category><![CDATA[uiwebview]]></category>
		<category><![CDATA[webview]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3183</guid>
		<description><![CDATA[Earlier this week at Adobe MAX, it was announced that Adobe had started the process (signed a definitive agreement) of acquiring Nitobi, the makers of PhoneGap. After this announcement, I had multiple conversations with conference attendees and found that several of them really had no idea what PhoneGap is. Some thought it was a JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this week at Adobe MAX, it was <a href="http://www.phonegap.com/2011/10/03/nitobi-enters-into-acquisition-agreement-with-adobe-2/" target="_blank">announced</a> that Adobe had started the process (signed a definitive agreement) of acquiring Nitobi, the makers of PhoneGap. After this announcement, I had multiple conversations with conference attendees and found that several of them really had no idea what PhoneGap is. Some thought it was a JavaScript framework that competes with JQuery or Sencha; others thought it was something that converted JavaScript to native Objective C or Java.  Both of these are incorrect &#8211; not even close&#8230; so I decided to write a quick blog post to explain.</p>
<p>Since I&#8217;m more familiar with Android than iOS, I&#8217;ll explain how it works for Android.</p>
<p>First, you create a new Android project in Eclipse (requires the Android SDK), add the phonegap.jar file to the lib folder, and make a few tweaks to the manifest and other files (details <a href="http://www.phonegap.com/start#android" target="_blank">here</a>). The main java file is modified as follows:</p>
<pre class="brush: java; highlight: [11]; title: ; notranslate">
package com.gregwilson.gregpg1;

import com.phonegap.*;
import android.os.Bundle;

public class GregPG1Activity extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl(&quot;file:///android_asset/www/index.html&quot;);
    }
}
</pre>
<p>Notice the highlighted line (line 11) &#8212;  We&#8217;ve created a native Android app, and this native app loads <strong>android_assets/www/index.html</strong> in WebView when launched.  WebView is a class in the Android SDK that allows you to display web pages as a part of your layout.  It&#8217;s like having a web browser inside of your app and uses the device&#8217;s existing implementation of WebKit.  In iOS, it&#8217;s UIWebView.  Other mobile OSes use similar techniques.</p>
<p>Below is my project in both Eclipse (Android) and Xcode (iOS).  The web application is in the www folder indicated by the red arrows.</p>
<p><img class="aligncenter size-full wp-image-3184" title="adobephonegap" src="http://gregsramblings.com/wp-content/uploads/2011/10/adobephonegap.png" alt="" width="900" height="361" /></p>
<p>Now you simply compile, build, deploy like any other Android project.</p>
<p>Basically, PhoneGap apps are HTML/JS/CSS apps that run within the WebView (or equiv) component. If you are like me, at this point you are thinking, &#8220;Uh &#8211; that&#8217;s lame &#8211; is that it? I can do that today without any additional software&#8221;.</p>
<p>But there&#8217;s more&#8230; PhoneGap extends the WebView class to give it hooks back to the device itself and exposed them as JavaScript.  Remember the jar file that is in the project?  The project also includes a <strong>phonegap.js</strong> file, which exposes many new functions that make this much more than simply displaying a web page in a WebView component.</p>
<p>Check out the code below for accessing the device GPS (copied from one of the many great examples from <a href="http://docs.phonegap.com" target="_blank">http://docs.phonegap.com</a>).  If you create an PhoneGap project and copy the code below to your index.html file, you can see it run.</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Device Properties Example&lt;/title&gt;

    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot; src=&quot;phonegap.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;

    // Wait for PhoneGap to load
    //
    document.addEventListener(&quot;deviceready&quot;, onDeviceReady, false);

    // PhoneGap is ready
    //
    function onDeviceReady() {
        navigator.geolocation.getCurrentPosition(onSuccess, onError);
    }

    // onSuccess Geolocation
    //
    function onSuccess(position) {
        var element = document.getElementById('geolocation');
        element.innerHTML = 'Latitude: '           + position.coords.latitude              + '&lt;br /&gt;' +
                            'Longitude: '          + position.coords.longitude             + '&lt;br /&gt;' +
                            'Altitude: '           + position.coords.altitude              + '&lt;br /&gt;' +
                            'Accuracy: '           + position.coords.accuracy              + '&lt;br /&gt;' +
                            'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '&lt;br /&gt;' +
                            'Heading: '            + position.coords.heading               + '&lt;br /&gt;' +
                            'Speed: '              + position.coords.speed                 + '&lt;br /&gt;' +
                            'Timestamp: '          + new Date(position.timestamp)          + '&lt;br /&gt;';
    }

    // onError Callback receives a PositionError object
    //
    function onError(error) {
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }

    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;p id=&quot;geolocation&quot;&gt;Finding geolocation...&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Now your &#8220;web app&#8221; has access to Accelerometer, Camera, Compass, Contacts, and many other device capabilities.</p>
<h3>Some observations:</h3>
<ul>
<li>Since the app itself is super small, it loads crazy fast &#8211; less than one second on my HTC Inspire and iPad 2.  You probably won&#8217;t even need a splash screen.</li>
<li>The framework is simple and lightweight, so the resulting app has a very small memory footprint. This allows apps to work on older and slower hardware like the original iPhone and older BlackBerry phones.</li>
<li>The PhoneGap docs and examples are fantastic &#8211; clear and concise.  I was able to copy/paste every sample and see the results. (one note &#8212; the phonegap-1.1.0.js for Android is different than the phonegap-1.1.0.js for iOS &#8211; I initially made the mistake of assuming they were identical and killed a few hours trying to figure out why certain samples wouldn&#8217;t run)</li>
<li>The platform support is broad. As of this article, PhoneGap supports iOS (iPhone, iPhone 3G/3Gs/4/4S, iPad 1/2, Android (all versions), BlackBerry OS 4.6 and newer, WebOS, Symbian, Bada and they have recently started to support Windows Mobile. See <a href="http://www.phonegap.com/about/features" target="_blank">http://www.phonegap.com/about/features</a> for a list of what&#8217;s supported on each.</li>
<li>Your HTML/JS/CSS run in the native WebView so you are free to use any frameworks you desire such as JQuery Mobile, Sencha, whatever. PhoneGap gives you a WebView/UIWebView with hooks to the device. The rest is up to you.</li>
<li>PhoneGap is free, open-source and will become an Apache project very soon (translation &#8211; it will remain free).</li>
<li>PhoneGap is extendable via a plugin model giving you a bridge between native code capabilities and JavaScript.</li>
<li>There is already a great collection of community-created plugins at <a href="https://github.com/phonegap/phonegap-plugins" target="_blank">https://github.com/phonegap/phonegap-plugins</a>.</li>
<li>I haven&#8217;t figured out a good way to debug these types of apps yet.  I suspect that this will be a bit of a challenge.  There is a console.log() function that will send messages back to your Eclipse console.  When the camera sample wasn&#8217;t working, I really had no clues as to why.  It&#8217;s likely that I&#8217;m missing something, so it&#8217;s too early to judge.</li>
</ul>
<h3>PhoneGap Build</h3>
<p>As you start building mobile apps in any technology, you soon discover that each platform has it&#8217;s own deployment steps and tooling requirments (some of which are amazingly tedious and error-prone).  For example, to build a native iOS app, you use Xcode, which only runs on Mac OS X.  To build for BlackBerry phones, you have to use their tooling that only runs on Windows.  To build for both platforms, you&#8217;ll need two machines (or use virtualization).  This is why <a href="http://build.phonegap.com" target="_blank">http://build.phonegap.com</a> was created.  The service allows you to upload your www project folder (or give it a GitHub URL) and it will package your app for the supported platforms.  The specific steps are documented at <a href="https://build.phonegap.com/docs/start" target="_blank">https://build.phonegap.com/docs/start</a>.  NOTE: Adobe has stated that this service will continue as part of the recently announced &#8220;<a href="http://www.adobe.com/products/creativecloud.html" target="_blank">Adobe Creative Cloud</a>&#8221; but no details have been provided nor has any pricing been announced.</p>
<h3>What&#8217;s next</h3>
<p>If you&#8217;re intrigued, I encourage you to go to <a href="http://phonegap.com" target="_blank">http://phonegap.com</a>, where you&#8217;ll find everything you need to build an app. I was able to get a Hello World app running on both Android and iOS in under 30 minutes (not counting the downloading of Xcode).  The &#8220;Getting Started&#8221; section is excellent.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F10%2F06%2Fwhat-is-phonegap%2F&amp;title=What%20is%20PhoneGap%3F" id="wpa2a_14"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/10/06/what-is-phonegap/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>A super simple approach to Splash Screens for Flex Mobile Apps</title>
		<link>http://gregsramblings.com/2011/09/25/flex-splash-screen-sizes-easy-approach/</link>
		<comments>http://gregsramblings.com/2011/09/25/flex-splash-screen-sizes-easy-approach/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 03:35:31 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[AIR for Android]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex on Mobile]]></category>
		<category><![CDATA[air splash]]></category>
		<category><![CDATA[flash splash]]></category>
		<category><![CDATA[flex splash]]></category>
		<category><![CDATA[splash screen]]></category>
		<category><![CDATA[splashScreenScaleMode]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3144</guid>
		<description><![CDATA[If you are fairly new to mobile app development with Flash or Flex, I bet you have run into the following issue when creating your splash screens &#8212; You create a splash image that looks great when the device is held in portrait orientation: &#8230;but then when you turn it landscape, you get the white [...]]]></description>
			<content:encoded><![CDATA[<p>If you are fairly new to mobile app development with Flash or Flex, I bet you have run into the following issue when creating your splash screens &#8212; You create a splash image that looks great when the device is held in portrait orientation:</p>
<p><a href="http://gregsramblings.com/wp-content/uploads/2011/09/app-portrait-good-orig.jpg"><img class="aligncenter size-full wp-image-3160" title="app-portrait-good-orig" src="http://gregsramblings.com/wp-content/uploads/2011/09/app-portrait-good-orig.jpg" alt="" width="215" height="388" /></a></p>
<p>&#8230;but then when you turn it landscape, you get the white borders (or whatever your app background color is):</p>
<p><img class="aligncenter size-full wp-image-3157" title="app-landscape-letterbox-bad" src="http://gregsramblings.com/wp-content/uploads/2011/09/app-landscape-letterbox-bad.jpg" alt="" width="391" height="207" /></p>
<p>&#8230;so you change the splashScreenScaleMode property to &#8220;<em>stretch</em>&#8221; and you get this (destroys the image):</p>
<p><img class="aligncenter size-full wp-image-3161" title="app-landscape-stretched-bad" src="http://gregsramblings.com/wp-content/uploads/2011/09/app-landscape-stretched-bad.jpg" alt="" width="391" height="207" /></p>
<p>&#8230;so then you start looking into how to include multiple splash screens, which requires a custom preloader and additional image work.</p>
<div class="woo-sc-box note  square " style="padding-left:15px;background-image:none;"><strong>Here&#8217;s a quick and simple solution</strong>: Put your splashScreenScaleMode back to &#8220;none&#8221;. Create your splash screen image as a square, and make the side dimensions equal to the length of the device. For example, if the screen is 480&#215;320, make it 480&#215;480, but make sure your artwork fits within the center 320&#215;320. When the app starts, the splash screen is auto centered.</div>
<p>Below is the same splash screen, but as you can see, I used a single square image that works with both orientations.</p>
<p><img class="aligncenter size-full wp-image-3163" title="app-autoorient-good" src="http://gregsramblings.com/wp-content/uploads/2011/09/app-autoorient-good.jpg" alt="" width="665" height="392" /></p>
<p>What about handling multiple device sizes? The same technique works, as long as you keep the content within the center square that has a width/height equal to the short side of the smallest device you intend to install on.</p>
<p>Below are two images; one for tablets, and one for phones. I&#8217;ve drawn the portrait and landscape edges of several popular devices.</p>
<p><strong>Tablets:</strong><br />
The largest tablet I&#8217;ve seen is the Motorola Zoom and Samsung Galaxy Tab 10.1, both of which are 1280&#215;800, so my diagram below assumes that it is the largest possible resolution by making the splash screen image 1280&#215;1280:</p>
<div id="attachment_3151" class="wp-caption aligncenter" style="width: 810px"><a href="http://gregsramblings.com/wp-content/uploads/2011/09/easy-splash-tablet.jpg"><img class="size-full wp-image-3151 " title="easy-splash-tablet-800" src="http://gregsramblings.com/wp-content/uploads/2011/09/easy-splash-tablet-800.jpg" alt="" width="800" height="800" /></a><p class="wp-caption-text">Click for full-size</p></div>
<p><strong>Phones:</strong><br />
Phones come in many resolutions. The image below assumes that the largest resolution is 960&#215;640 (iPhone 4), so the image is 960&#215;960:</p>
<div id="attachment_3152" class="wp-caption aligncenter" style="width: 620px"><a href="http://gregsramblings.com/wp-content/uploads/2011/09/easy-splash-phones.jpg"><img class="size-full wp-image-3152 " title="easy-splash-phones-600" src="http://gregsramblings.com/wp-content/uploads/2011/09/easy-splash-phones-600.jpg" alt="" width="610" height="610" /></a><p class="wp-caption-text">Click for full-size</p></div>
<p>Depending on your splash screen design, you could get away with only two images, one for tablets and one for phones. I typically do three images, one for the low-resolution iPhone 3Gs, one for other phones, and one for tablets.</p>
<p>If you are building an app that targets multiple device resolutions, I suggest you use the code below as your preloader. It assumes three images &#8211; tablet, high-res phones, low-res phones. It selects the image based on the length of the longest edge of the screen.</p>
<pre class="brush: as3; title: ; notranslate">
// Based on original DPI-based code by Jason San Jose at http://www.adobe.com/devnet/flex/articles/mobile-skinning-part2.html#articlecontentAdobe_numberedheader_5
// Improved by Christophe Coenraets to select image based on length of longest edge of device - http://coenraets.org
// Simplied by Greg Wilson to use only 3 images for all devices
package
{
	import flash.desktop.NativeApplication;
	import flash.display.NativeWindow;
	import flash.display.Stage;
	import flash.display.StageAspectRatio;
	import flash.display.StageOrientation;
	import flash.system.Capabilities;

	import mx.core.DPIClassification;
	import mx.core.mx_internal;

	import spark.preloaders.SplashScreen;

	use namespace mx_internal;

	public class MultiDPISplashScreen extends SplashScreen
	{
		[Embed(source=&quot;assets/splash-tablet.png&quot;)]
		private var SplashImageTablet:Class;

		[Embed(source=&quot;assets/splash-high-phone.png&quot;)]
		private var SplashImageHighPhone:Class;

		[Embed(source=&quot;assets/splash-low-phone.png&quot;)]
		private var SplashImageLowPhone:Class;

		public function MultiDPISplashScreen()
		{
			super();
		}

		override mx_internal function getImageClass(dpi:Number, aspectRatio:String):Class
		{
			var min:int = Math.min(Capabilities.screenResolutionX, Capabilities.screenResolutionY);

			if (min &gt; 960)
				return SplashImageTablet;
			else if (min &gt; 320)
				return SplashImageHighPhone;
			else
				return SplashImageLowPhone;
		}
	}
}
</pre>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F09%2F25%2Fflex-splash-screen-sizes-easy-approach%2F&amp;title=A%20super%20simple%20approach%20to%20Splash%20Screens%20for%20Flex%20Mobile%20Apps" id="wpa2a_16"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/09/25/flex-splash-screen-sizes-easy-approach/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>VShieldUpdate process spiking CPU after Mac OS X Lion upgrade &#8211; FIX</title>
		<link>http://gregsramblings.com/2011/09/20/vshieldupdate-cpu-lion-macosx/</link>
		<comments>http://gregsramblings.com/2011/09/20/vshieldupdate-cpu-lion-macosx/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 21:39:39 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Mac OS X Tricks]]></category>
		<category><![CDATA[lion]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[vshieldupdate]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3137</guid>
		<description><![CDATA[I&#8217;m writing this article because it took me longer than expected to find an answer to this fairly simple problem.  Hopefully this post will save you some time. Problem: After updating to OS X Lion, I noticed that the fans were spinning constantly and my battery was being quickly drained.  A quick look at the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing this article because it took me longer than expected to find an answer to this fairly simple problem.  Hopefully this post will save you some time.</p>
<p><strong>Problem</strong>: After updating to OS X Lion, I noticed that the fans were spinning constantly and my battery was being quickly drained.  A quick look at the activity monitor showed a process called VShieldUpdate.</p>
<p>VShieldUpdate is a virus scanning app that is part of VMWare Fusion.  For some reason, the updater for this app gets hung after updating to Lion.</p>
<p><strong>Solution</strong>:  Uninstall it with the following commands (from Terminal):</p>
<div class="woo-sc-box note   " style="padding-left:15px;background-image:none;">
cd /usr/local/vscanx<br />
./VirusScan\ Uninstall.command<br />
</div>
<p>After a couple of seconds, life returns to normal.  My VMWare images might be missing some virus protection, but for me, that&#8217;s not a problem.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F09%2F20%2Fvshieldupdate-cpu-lion-macosx%2F&amp;title=VShieldUpdate%20process%20spiking%20CPU%20after%20Mac%20OS%20X%20Lion%20upgrade%20%26%238211%3B%20FIX" id="wpa2a_18"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/09/20/vshieldupdate-cpu-lion-macosx/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>My Adobe MAX session &#8211; Migration to the Cloud &#8211; How Do I Get There?</title>
		<link>http://gregsramblings.com/2011/09/20/my-adobe-max-session-migration-to-the-cloud-how-do-i-get-there/</link>
		<comments>http://gregsramblings.com/2011/09/20/my-adobe-max-session-migration-to-the-cloud-how-do-i-get-there/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 19:14:40 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe MAX 2011]]></category>
		<category><![CDATA[Amazon AWS]]></category>
		<category><![CDATA[Amazon CloudFront]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Adobe MAX]]></category>
		<category><![CDATA[amazon ec2]]></category>
		<category><![CDATA[amazon s3]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[cloudfoundary]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[max 2011]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[salesforce.com]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3123</guid>
		<description><![CDATA[During the past year, I&#8217;ve learned a lot about various cloud computing offerings including Amazon EC2 / S3 / CloudFront / Beanstalk / RDS / etc., Rackspace Cloud, Salesforce.com, Cloud Foundry, Heroku, and of course, the growing number of Adobe cloud-related offerings.  I&#8217;ve also learned that &#8220;cloud&#8221; is probably the most overused word I&#8217;ve come [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 410px"><img class=" " src="http://gallery.tigeraerial.com/Photography/Looking-out-the-airplane/DSCF0664/147004441_QDFbC-S.jpg" alt="" width="400" height="300" /><p class="wp-caption-text">I had WiFi on this flight... Cloud Computing? <img src='http://gregsramblings.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p></div>
<p>During the past year, I&#8217;ve learned a lot about various cloud computing offerings including Amazon EC2 / S3 / CloudFront / Beanstalk / RDS / etc., Rackspace Cloud, Salesforce.com, Cloud Foundry, Heroku, and of course, the growing number of Adobe cloud-related offerings.  I&#8217;ve also learned that &#8220;cloud&#8221; is probably the most overused word I&#8217;ve come across in 20+ years in technology!  I&#8217;ve put together a crash course MAX session to introduce people to what cloud computing is really all about.  My goal is to use only a few slides and spend most of the session doing some real demos that really show off what&#8217;s cool in cloud computing.   It&#8217;ll be action packed, so come check it out!  The information is below:</p>
<p><strong>When: Wednesday, October 5, 11:00 a.m. &#8211; 12:00 p.m, I&#8217;m doing the following session at Adobe MAX 2011</strong></p>
<p><a href="https://max.adobe.com/schedule/by-session/session/S4660" target="_blank"><strong>Migration to the Cloud: How Do I Get There?</strong></a></p>
<p>Cut through the hype and see what cloud computing is really all about. Take a tour of cloud infrastructure-as-a-service (IaaS) and platform-as-a-service (PaaS) solutions. Watch a live deployment of a server infrastructure that supports a new mobile app built with Adobe Flex. Learn how to create a new virtual server, configure it, and bring it online—all in a few minutes. Then see how the infrastructure is horizontally scaled to support 1,000,000+ users. During the demonstration, you&#8217;ll learn about reliability, redundancy, disaster recovery, geographic distribution, and other important considerations for migrating to the cloud.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F09%2F20%2Fmy-adobe-max-session-migration-to-the-cloud-how-do-i-get-there%2F&amp;title=My%20Adobe%20MAX%20session%20%26%238211%3B%20Migration%20to%20the%20Cloud%20%26%238211%3B%20How%20Do%20I%20Get%20There%3F" id="wpa2a_20"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/09/20/my-adobe-max-session-migration-to-the-cloud-how-do-i-get-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finding the current location in your mobile app using Geolocation</title>
		<link>http://gregsramblings.com/2011/09/08/finding-the-current-location-in-your-mobile-app-using-geolocation/</link>
		<comments>http://gregsramblings.com/2011/09/08/finding-the-current-location-in-your-mobile-app-using-geolocation/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 18:25:14 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex on Mobile]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex.org]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[here i am]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3094</guid>
		<description><![CDATA[Yesterday, I blogged about Geolocation. I thought it would be helpful to show some code that determines the current location in your app. CODE:]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I <a href="http://gregsramblings.com/2011/09/08/geolocation-tips-quirks-bugs-flash-actionscript/">blogged</a> about Geolocation. I thought it would be helpful to show some code that determines the current location in your app.</p>
<div class="woo-sc-box info   " style="padding-left:15px;background-image:none;">
<p>Notes:</p>
<ul>
<li>The first location event is thrown away because as noted in <a title="Geolocation tips, quirks, and possible bugs (flash.sensors.Geolocation)" href="http://gregsramblings.com/2011/09/08/geolocation-tips-quirks-bugs-flash-actionscript/">yesterday&#8217;s blog post</a>, it&#8217;s not the current location. It&#8217;s the last known location (cached location).</li>
<li>The code below will keep trying to improve the location until it gets an accuracy of 150 meters or better, or, until it times out (30-second timeout).</li>
<li>Once the 30-second timeout occurs, it will report the last location event (if available).</li>
</ul>
</div>
<p><strong>CODE:</strong></p>
<pre class="brush: as3; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
			   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
			   applicationComplete=&quot;init()&quot;&gt;

	&lt;fx:Script&gt;
		&lt;![CDATA[
			import flash.sensors.Geolocation;

			protected var geo:Geolocation;
			protected var geoLastEvent:GeolocationEvent;
			protected var geoCheckCount:int;
			protected var geoTimer:Timer;

			protected function init():void
			{
				log.text = &quot;App Starting\n&quot;;
				if(Geolocation.isSupported)
				{
					geoCheckCount = 0;
					geo = new Geolocation();
					geo.setRequestedUpdateInterval(500); 		// suggest a very frequent update of 500ms
					geo.addEventListener(GeolocationEvent.UPDATE, onUpdate);

					// Create a timer
					geoTimer = new Timer(30000,1);
					geoTimer.addEventListener(TimerEvent.TIMER_COMPLETE,onTimeout);
					geoTimer.start();
				} else {
					log.appendText(&quot;GPS not supported on this device\n&quot;);
				}
			}

			protected function onUpdate(event:GeolocationEvent):void
			{
				++geoCheckCount;
				if(geoCheckCount &lt;= 1) return; // Throw away the first location event because it's almost always the last known location, not current location
				geoLastEvent = event;

				if(event.horizontalAccuracy &lt;= 150)
				{
					geoTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,onTimeout);
					geoTimer.stop();
					log.appendText(&quot;LOCATION: &quot; + event.latitude + &quot; / &quot; + event.longitude + &quot; - &quot; + event.horizontalAccuracy + &quot;\n&quot;);
					geo.removeEventListener(GeolocationEvent.UPDATE, onUpdate);
					geo = null;
				}
			}

			protected function onTimeout(event:TimerEvent):void
			{
				geoTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,onTimeout);
				geoTimer.stop();
				geoTimer = null;
				if(geoLastEvent != null)
				{
					log.appendText(&quot;Timed out - best location is: &quot; + geoLastEvent.latitude + &quot; / &quot; + geoLastEvent.longitude + &quot; - &quot; + geoLastEvent.horizontalAccuracy + &quot;\n&quot;);
				} else {
					log.appendText(&quot;Unable to determine location before timeout\n&quot;);
				}
				geo.removeEventListener(GeolocationEvent.UPDATE, onUpdate);
				geo = null;
			}

		]]&gt;

	&lt;/fx:Script&gt;
	&lt;s:TextArea id=&quot;log&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
&lt;/s:Application&gt;
</pre>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F09%2F08%2Ffinding-the-current-location-in-your-mobile-app-using-geolocation%2F&amp;title=Finding%20the%20current%20location%20in%20your%20mobile%20app%20using%20Geolocation" id="wpa2a_22"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/09/08/finding-the-current-location-in-your-mobile-app-using-geolocation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Geolocation tips, quirks, and possible bugs (flash.sensors.Geolocation)</title>
		<link>http://gregsramblings.com/2011/09/08/geolocation-tips-quirks-bugs-flash-actionscript/</link>
		<comments>http://gregsramblings.com/2011/09/08/geolocation-tips-quirks-bugs-flash-actionscript/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 04:27:38 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex on Mobile]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash.sensors.geolocation]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex.org]]></category>
		<category><![CDATA[geolocation]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3063</guid>
		<description><![CDATA[ I&#8217;ve been working on a couple of apps recently that use the Geolocation APIs. I&#8217;ve discovered a few tips and quirks that I felt were worthy of sharing. Geolocation object There are two classes that you need in order to implement location in your app &#8211; Geolocation and GeolocationEvent. When you create a Geolocation object, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-3082" style="margin-left: 5px; margin-right: 5px;" title="748px-GPS_Satellite_NASA_art-iif" src="http://gregsramblings.com/wp-content/uploads/2011/09/748px-GPS_Satellite_NASA_art-iif-300x240.jpg" alt="" width="300" height="240" /> I&#8217;ve been working on a couple of apps recently that use the Geolocation APIs. I&#8217;ve discovered a few tips and quirks that I felt were worthy of sharing.</p>
<h4>Geolocation object</h4>
<p>There are two classes that you need in order to implement location in your app &#8211; <strong><a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/sensors/Geolocation.html" target="_blank">Geolocation</a></strong> and <strong><a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/GeolocationEvent.html" target="_blank">GeolocationEvent</a></strong>. When you create a Geolocation object, it turns on the GPS sensors on the device and provides you with a couple of important properties: <em>isSupported</em> and <em>muted</em>.  The <em>isSupported</em> property is used to determine if the device has location support. If you run this on your desktop computer or on a Barnes and Noble Nook, this property will be false because no location capability exists on the device. The <em>muted</em> property is slightly different. This property indicates whether the user has turned off location support for the device or denied permission for the app itself.</p>
<p><strong>iOS muted BUG</strong>: There is a known bug with the <em>muted</em> property on iOS devices with the SDK that ships with Flash Builder 4.5.1. On iOS, the Geolocation muted property is always true, so it should be ignored in the current version. This is already fixed in the next release.</p>
<p>There is one method to be aware of on Geolocation &#8212; <em>setRequestedUpdateInterval()</em> &#8212; it&#8217;s used to request a more (or less) frequent location update event. In other words, you are telling the Geolocation object to check for location changes more (or less) often. However, it&#8217;s important to note that the OS may choose a different interval to conserve battery power. The name of the method should actually be <em>setRequestedUpdateIntervalPLEASE()</em> because you are only requesting the interval, not commanding it. <img src='http://gregsramblings.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h4>GeolocationEvent object</h4>
<p>After adding an event listener to the Geolocation object to receive location change events, you will start receiving location events in your event listener. The event contains the latitude, longitude, accuracy, speed, altitude, and heading. Here&#8217;s some important facts about location events:</p>
<ul>
<li><strong>The first location event received is usually NOT the current location</strong>. It is often the &#8220;last known location&#8221; or the cached location. Your app will get this first event almost immediately, but remember, it might be an out of date location along with the associated out of date accuracy. For example, I created a simple test app that logged my location. I ran it from home and let it run for a few seconds until I was getting good accuracy of about 10 meters. I shutdown the app and drove 10 miles away and ran it again. I immediately received a location event that was the location of my house with an accuracy of 10m! If you don&#8217;t know to expect this, your app could make a bad conclusion about the location. Also, the timestamp is no help here (contrary to popular belief). I talked to the Flex engineering team to confirm this. The documentation will be updated shortly. In my opinion, it&#8217;s a bug until documented. Once documented, it&#8217;s actually a cool feature.  One of the apps I&#8217;m working on has a &#8220;I am here&#8221; button that captures the current location and sends it to the server.  In my code, I ignore the first event.  The second location event is a real attempt to report my current location.  I&#8217;ll share the full code of this in the next blog post.  <strong>UPDATE</strong>: Docs will be fixed soon.</li>
<li><strong>verticalAccuracy is always wrong in my testing (Android)</strong> &#8212; There are two properties related to location accuracy &#8211; <em>horizontalAccuracy</em> and <em>verticalAccuracy</em>. The horizontalAccuracy is exactly what you think it is. However, in all of my testing across multiple devices, the verticalAccuracy is <em>always</em> identical to the horizontalAccuracy, which is practically impossible. I won&#8217;t go into details because it would quadruple the size of this article, but some simple web searches will confirm what I&#8217;m saying. Vertical accuracy is usually 2 to 3 times less accurate than horizontal accuracy of any GPS device (unless it uses WAAS or another augmentation system, which no Android or iOS devices supports yet). Therefore, verticalAccuracy should be ignored because it&#8217;s simply not correct. I&#8217;ve yet to figure out if this is a bug with the flash.sensors.Geolocation class or a limitation of the underlying OS. I&#8217;ve looked through the Android SDK documentation and can&#8217;t find a vertical accuracy property anywhere. If anyone can clarify, please add a comment below. If it is indeed not being reported by the underlying OS, I think it is a bug in flash.sensors.Geolocation because the expected behavior is to report either a NaN or some other obvious invalid value rather than a value that is wrong and misleading.  <strong>UPDATE</strong>: On Android, the underlying OS returns &#8220;radialAccuracy&#8221; and both horizontalAccuracy and verticalAccuracy are being set to that single value.  This is a bug that will be addressed.  Android does not return a vertical accuracy so the value should be set to either NaN or a negative number.  On iOS, the vertical accuracy is set correctly to the vertical accuracy reported by the underlying OS.</li>
<li><strong>heading is always NaN in my testing (Android)</strong> &#8212; I&#8217;ve yet to test on a device where I get a value for heading. You could write some code to calculate it based on the location history/track, but the property itself is always NaN. I highly suspect that this is a device limitation, not a bug. If anyone has seen a value for heading, let me know in the comments.  <strong>UPDATE</strong>: On iOS, I get heading information.</li>
<li><strong>Two different types of determining location and a possible bug</strong> &#8212; Most modern mobile devices have two different means of determining  location &#8211; WiFi/Cell-ID (coarse location) and GPS (fine location). GPS is much more accurate.  I have discovered what I think is a bug with how the two types of locations are used (I&#8217;m working with engineering to confirm) &#8212; If the GPS is enabled on your device, you will not receive any WiFi/Cell-ID-based location events, so if you are out of range of GPS satellites (e.g. in the basement), you will get no location events at all (other than the initial last-known-location as mentioned above). The expected behavior (IMO) is to receive WiFi/Cell-ID-based location events until the GPS signal is acquired.  You can see this behavior in the Google Maps app.  When you first run Google Maps, it will show your location almost instantly but it will have a wide circle of accuracy.  This is the WiFi/Cell-ID-based location.  Once the GPS signal is locked in, the circle shrinks to only a few meters.  However, I am unable to recreate this functionality using the flash.sensors.Geolocation class. Oddly, if you disable the GPS on your device, you <em>will</em> then receive WiFi-Cell-ID-based location events as expected.  This feels like a bug to me and I suspect that the code uses either WiFi/Cell-ID <em>or</em> GPS and is not sophisticated enough to use both as I just described.</li>
<li><strong>Location permissions</strong> &#8211;  On Android, there are two relevant permissions related to location &#8211;  <em>android.permission.ACCESS_FINE_LOCATION</em> and <em>android.permission.ACCESS_COARSE_LOCATION</em>.  I have confirmed that setting the <em>android.permission.ACCESS_FINE_LOCATION</em> includes the COARSE permission. In other words, you do not have to specify both permissions because FINE includes COARSE. This is confirmed at <a href="http://developer.android.com/guide/topics/location/obtaining-user-location.html" target="_blank">http://developer.android.com/guide/topics/location/obtaining-user-location.html</a>.</li>
</ul>
<p>Hopefully this clears up some confusion on Geolocation.  It&#8217;s hard to test this stuff, so if you find any evidence of my conclusions being wrong, please don&#8217;t hesitate to let me know in the comments.</p>
<p>Writing location-based apps is incredibly fun and really creates some interesting app opportunities.  In my next post, I&#8217;ll share some code for a typical &#8220;Here I am&#8221; app that handles the last-known-location event and implements a simple timeout.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F09%2F08%2Fgeolocation-tips-quirks-bugs-flash-actionscript%2F&amp;title=Geolocation%20tips%2C%20quirks%2C%20and%20possible%20bugs%20%28flash.sensors.Geolocation%29" id="wpa2a_24"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/09/08/geolocation-tips-quirks-bugs-flash-actionscript/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Flex versus ActionScript &#8211; the debate gets new life</title>
		<link>http://gregsramblings.com/2011/09/06/flex-vs-actionscript-the-debate-gets-new-life/</link>
		<comments>http://gregsramblings.com/2011/09/06/flex-vs-actionscript-the-debate-gets-new-life/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 20:08:45 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex on Mobile]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[actionscript vs flex]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex.org]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3028</guid>
		<description><![CDATA[A few days ago, a reader commented on my blog post, &#8220;The Flex Team discusses the future of Flex&#8221; and brought up the frequent debate of Flex versus ActionScript. This subject has been debated many times since Flex was born, but lately it is becoming a hot topic again, especially with developers shifting their focus [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-3051 alignright" title="buildingblocks" src="http://gregsramblings.com/wp-content/uploads/2011/09/buildingblocks-287x300.jpg" alt="" width="287" height="300" />A few days ago, a reader commented on my blog post, &#8220;<a href="http://gregsramblings.com/2011/08/25/the-flex-team-discusses-the-future-of-flex/" target="_blank">The Flex Team discusses the future of Flex</a>&#8221; and brought up the frequent debate of <em>Flex versus ActionScript</em>. This subject has been debated many times since Flex was born, but lately it is becoming a hot topic again, especially with developers shifting their focus to mobile apps.</p>
<p>Developers need to know enough to use the right tool for the job at hand&#8211;and that holds true for any technology, not just Flex. Yes, some developers are using Flex for things that Flex should not be used for (this has always been the case). Flex is a framework that gives us components, a declarative language (MXML), a sophisticated event model, data binding, view management and many other useful, time-saving features. When you compile a Flex app, everything is converted to pure ActionScript as step one of the build process. Is this generated ActionScript optimized for every possible use case? Of course not. The Flex product managers and engineers put a lot of effort into prioritizing where to invest engineering time based on a wide array of use cases, but they obviously can&#8217;t optimize for every possible scenario. On the other hand, a ton of engineering hours have been invested in optimizing the Flex framework, and you should take advantage of this where possible rather than investing your own time in building custom ActionScript. It simply depends on your requirements.</p>
<p>So, when considering whether to build an app with the Flex framework or to build it in pure ActionScript, you are really making a decision between using prewritten/generated ActionScript that was created for a multitude of use cases or to write your own ActionScript that is specific to your specific use case. Of course, the latter is sometimes going to perform better because your code will be exactly what you need it to be, but it&#8217;s usually going to take you much longer to write your app.</p>
<p>You can take the quest for performance to the extreme. If you want the absolute best performance possible, write your app in machine code that targets a specific device and create a different version for each processor that your app will run on. The performance will be insane because every instruction will be specific to your app, but the development effort will take years! I realize that this is a crazy comparison, but again, we developers have to make some intelligent decisions when deciding what to use. Frameworks like Flex save us time, but they do have some costs in terms of performance. By the way, the same holds true for JavaScript. I recently wrote an application that utilized a lot of jQuery. jQuery saved me a TON of time, and thankfully in my app, the performance was adequate without me having to replace any of the jQuery functions with my own JavaScript. (If you search around, you&#8217;ll find people having the same debate on when to use jQuery versus straight JavaScript though).</p>
<p><a href="http://gregsramblings.com/wp-content/uploads/2011/09/FlashBuilderNewProjectDialog.png"><img class="alignright size-medium wp-image-3053" title="FlashBuilderNewProjectDialog" src="http://gregsramblings.com/wp-content/uploads/2011/09/FlashBuilderNewProjectDialog-172x300.png" alt="" width="172" height="300" /></a>We are seeing new life in the Flex versus ActionScript debate because of the recently released 4.5.x version of Flash Builder, which supports building Flex apps that target iOS, Android, and BlackBerry Tablet OS. All of us who have been building mobile apps are having to think about performance a lot more than usual because these devices have dramatically fewer resources than the modern desktop/laptop computers that we&#8217;ve been spoiled by. Suddenly we are worrying about every optimization and every byte of memory just like &#8220;back in the good ol&#8217; days&#8221;. When performance is an issue, the choice to use a framework that trades performance for a shortened development process is not to be taken lightly, so the cost versus benefit analysis is key. However, it&#8217;s not an all or nothing proposition&#8230;</p>
<p>The guys at <a href="http://hdinteractive.com" target="_blank">HD Interactive</a> have written some great games that are in the Apple app store, Android Market, B&amp;N Nook store, and other markets. The games include Kung Fu Battle Slots, Pyramix, MrMixit, Neptune, and more (their home page has all of the links so you can check them out). I have been super impressed by their app performance, so I sat down with them and looked at how they do it. The apps are indeed Flex apps and they take advantage of Flex views, the component model, and the event model. However, many of the animations, transitions, and effects were written in pure ActionScript that is specific for the game because they needed the best performance possible for the specific use case. For example, some of the effects and transitions in Flex are great for most apps, but they were not fast enough to handle the types of animations and the rich graphics that HD&#8217;s games demanded, so they made the smart decision to invest some extra time writing <a href="http://www.taterboy.com/blog/2011/02/movethis-another-as3-tweening-animation-engine/" target="_blank">their own animation code</a>. They even go to Flash Pro to build some of the animations because the tooling made more sense for a couple of specific items. They are masters at using the right tool for the job at hand. They utilize Flex where it saves them time, and they write specific ActionScript as needed.</p>
<p>Most of the apps I&#8217;m involved in are data-driven business apps, which are very well suited for Flex. Flex saves me a huge amount of time because the framework provides a lot of the building blocks that these apps typically require. For these apps, the decision to use Flex is a no-brainer. This is usually the case for enterprise apps. However, for other apps, the decision may not be as clear. Like many decisions we developers make, the answer is &#8220;IT DEPENDS&#8221;. <img src='http://gregsramblings.com/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%2Fgregsramblings.com%2F2011%2F09%2F06%2Fflex-vs-actionscript-the-debate-gets-new-life%2F&amp;title=Flex%20versus%20ActionScript%20%26%238211%3B%20the%20debate%20gets%20new%20life" id="wpa2a_26"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/09/06/flex-vs-actionscript-the-debate-gets-new-life/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Remember Adobe Flash?</title>
		<link>http://gregsramblings.com/2011/09/03/remember-adobe-flash/</link>
		<comments>http://gregsramblings.com/2011/09/03/remember-adobe-flash/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 03:26:14 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Molehill]]></category>
		<category><![CDATA[stage3d]]></category>
		<category><![CDATA[unity]]></category>
		<category><![CDATA[unity 3d]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3018</guid>
		<description><![CDATA[HTML, JavaScript, CSS has made some incredible strides in the past few years.  It&#8217;s now possible to do amazing things using capabilities built right into today&#8217;s browsers without the use of a plugin (and Adobe is building some killer tooling to help you take advantage of these new capabilities). In the past, the role of [...]]]></description>
			<content:encoded><![CDATA[<p>HTML, JavaScript, CSS has made some incredible strides in the past few years.  It&#8217;s now possible to do amazing things using capabilities built right into today&#8217;s browsers without the use of a plugin (and Adobe is building some killer tooling to help you take advantage of these new capabilities).</p>
<p>In the past, the role of Flash was to bring capabilities to the web that were not otherwise possible.  But now so many things are possible without Flash leading some to draw conclusions about the future of it.  If Adobe stopped working on Flash Player, then it would indeed fade away as more and more capabilities are built into future browsers.</p>
<p>However, work has not stopped, it&#8217;s in full swing.   The role of Flash will remain the same &#8212; Flash will bring capabilities to the web that are not otherwise possible.</p>
<p><strong>Evidence:</strong></p>
<ul>
<li><a href="http://blogs.unity3d.com/2011/09/01/unity-and-flash-a-sneak-peek/" target="_blank">http://blogs.unity3d.com/2011/09/01/unity-and-flash-a-sneak-peek/</a> (beyond words &#8211; just go there!)</li>
<li><a href="http://www.tricedesigns.com/2011/08/31/project-awesome/" target="_blank">http://www.tricedesigns.com/2011/08/31/project-awesome/</a> (3D data visualization on desktop and mobile combined with Adobe Collaboration Service)</li>
<li><a href="http://www.tricedesigns.com/2011/08/03/molehill-stage3d-on-mobile/" target="_blank">http://www.tricedesigns.com/2011/08/03/molehill-stage3d-on-mobile/</a> (3D data visualization on a phone!)</li>
</ul>
<div><a href="http://gregsramblings.com/wp-content/uploads/2011/09/adobe-flash.png"><img class="size-full wp-image-3020 alignleft" title="adobe-flash" src="http://gregsramblings.com/wp-content/uploads/2011/09/adobe-flash.png" alt="" width="300" height="280" /> </a></div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F09%2F03%2Fremember-adobe-flash%2F&amp;title=Remember%20Adobe%20Flash%3F" id="wpa2a_28"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/09/03/remember-adobe-flash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Flex Team discusses the future of Flex</title>
		<link>http://gregsramblings.com/2011/08/25/the-flex-team-discusses-the-future-of-flex/</link>
		<comments>http://gregsramblings.com/2011/08/25/the-flex-team-discusses-the-future-of-flex/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 02:53:46 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex.org]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=3010</guid>
		<description><![CDATA[Earlier today, Andrew Shorten published an article on the Flex Team blog titled, &#8220;Flex: where we are headed&#8220;. If you haven&#8217;t seen it, I encourage you to read it. It&#8217;s a clear, bold statement about Adobe&#8217;s investment in Flex, the recent increase in Flash Builder downloads and the future ahead. From my own personal perspective, [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today, Andrew Shorten published an article on the Flex Team blog titled, &#8220;<a href="http://blogs.adobe.com/flex/2011/08/flex-where-were-headed.html" target="_blank">Flex: where we are headed</a>&#8220;. If you haven&#8217;t seen it, I encourage you to read it. It&#8217;s a clear, bold statement about Adobe&#8217;s investment in Flex, the recent increase in Flash Builder downloads and the future ahead.</p>
<p>From my own personal perspective, this is the most excited I&#8217;ve ever been about Flex and the most energized I&#8217;ve been since I joined the Adobe Evangelist team four years ago.  The story is solid, the value proposition is clear, and the technology delivers.  Getting developers excited about it is easy! (don&#8217;t tell my boss!).</p>
<p><a href="http://gregsramblings.com/wp-content/uploads/2011/08/Flexicon1.png"><img class="aligncenter size-full wp-image-3014" title="Flexicon" src="http://gregsramblings.com/wp-content/uploads/2011/08/Flexicon1.png" alt="" width="256" height="256" /></a></p>
<p>&nbsp;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F08%2F25%2Fthe-flex-team-discusses-the-future-of-flex%2F&amp;title=The%20Flex%20Team%20discusses%20the%20future%20of%20Flex" id="wpa2a_30"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/08/25/the-flex-team-discusses-the-future-of-flex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex PersistenceManager and iOS Tip</title>
		<link>http://gregsramblings.com/2011/08/23/flex-persistencemanager-and-ios-tip/</link>
		<comments>http://gregsramblings.com/2011/08/23/flex-persistencemanager-and-ios-tip/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 12:23:07 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flex on Mobile]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flex on mobile]]></category>
		<category><![CDATA[Flex.org]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[PersistenceManager]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=2999</guid>
		<description><![CDATA[Due to the way iOS suspends apps, you&#8217;ll need to do an explicit &#8220;.save()&#8221; on your persistenceManager if you want your data to be reliably saved. I can&#8217;t find this documented, but I suspect it is because of how iOS suspends an app. Once your app is suspended, it is not allowed to do anything [...]]]></description>
			<content:encoded><![CDATA[<p>Due to the way iOS suspends apps, you&#8217;ll need to do an explicit &#8220;.save()&#8221; on your persistenceManager if you want your data to be reliably saved. I can&#8217;t find this documented, but I suspect it is because of how iOS suspends an app. Once your app is suspended, it is not allowed to do anything and if the persistenceManager hasn&#8217;t flushed, you&#8217;ll lose your data.</p>
<p>For example:</p>
<pre class="brush: jscript; title: ; notranslate">

protected var persistenceManager:PersistenceManager = new PersistenceManager();;
...
...
persistenceManager.setProperty(&quot;userLogin&quot;, userLogin);
persistenceManager.setProperty(&quot;whatever&quot;, whatever);

persistenceManager.save(); // force a save now otherwise, it sometimes won't save on iOS
</pre>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F08%2F23%2Fflex-persistencemanager-and-ios-tip%2F&amp;title=Flex%20PersistenceManager%20and%20iOS%20Tip" id="wpa2a_32"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/08/23/flex-persistencemanager-and-ios-tip/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex on Mobile Live Q&amp;A Chat Session Thursday, August 18th, 2011</title>
		<link>http://gregsramblings.com/2011/08/12/flex-on-mobile-live-qa-chat-session-thursday-august-18th-2011/</link>
		<comments>http://gregsramblings.com/2011/08/12/flex-on-mobile-live-qa-chat-session-thursday-august-18th-2011/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 13:00:47 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[flash builder]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flex on mobile]]></category>
		<category><![CDATA[Flex.org]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[playbook]]></category>
		<category><![CDATA[qnx]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=2974</guid>
		<description><![CDATA[If you are building apps with Flex for mobile devices or about to embark on this journey, you should check out the upcoming live Q&#38;A online event for developers at http://flex.org/ask. There will be no slides, no demos nor any speaking. It&#8217;s a very informal, pure Q&#38;A using the Q&#38;A pod and a chat pod [...]]]></description>
			<content:encoded><![CDATA[<p>If you are building apps with Flex for mobile devices or about to embark on this journey, you should check out the upcoming live Q&amp;A online event for developers at <a href="http://flex.org/ask" target="_blank">http://flex.org/ask</a>. There will be no slides, no demos nor any speaking. It&#8217;s a very informal, pure Q&amp;A using the Q&amp;A pod and a chat pod in Adobe Connect.</p>
<p>Go to <a href="http://flex.org/ask">http://flex.org/ask</a> during the event time and you&#8217;ll find a link.</p>
<p>We&#8217;ve never tried an online event quite like this, but we&#8217;re excited to try. Come check it out on Thursday, August 18th from 9am to 10:30am PDT (GMT-7).</p>
<p><strong><span style="color: #ff0000;">UPDATE</span></strong>: <strong>A transcript from the event is available on http://flex.org/ask.  Another event will be scheduled soon &#8211; visit http://flex.org/ask often for updates.</strong></p>
<p><a href="http://flex.org/ask"><img class="aligncenter size-full wp-image-2991" title="flex-ask" src="http://gregsramblings.com/wp-content/uploads/2011/08/flex-ask1.png" alt="" width="591" height="283" /></a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F08%2F12%2Fflex-on-mobile-live-qa-chat-session-thursday-august-18th-2011%2F&amp;title=Flex%20on%20Mobile%20Live%20Q%26%23038%3BA%20Chat%20Session%20Thursday%2C%20August%2018th%2C%202011" id="wpa2a_34"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/08/12/flex-on-mobile-live-qa-chat-session-thursday-august-18th-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Politifact app now in 5 mobile app stores &#8211; one Flex project</title>
		<link>http://gregsramblings.com/2011/08/09/politifact-app-now-in-5-mobile-app-stores-one-flex-project/</link>
		<comments>http://gregsramblings.com/2011/08/09/politifact-app-now-in-5-mobile-app-stores-one-flex-project/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 19:27:48 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[AIR for Android]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flex on mobile]]></category>
		<category><![CDATA[Flex.org]]></category>
		<category><![CDATA[mobile apps]]></category>
		<category><![CDATA[politifact]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=2961</guid>
		<description><![CDATA[If you missed my earlier blog post, this app was the #1 news app in iTunes for a few days and was featured on the New and Noteworthy page. Here&#8217;s the important part &#8211; this is one single Flex project!  That&#8217;s right, 3 different mobile OSes, 5 different app stores, 1 single Flex project. The Politifact app is [...]]]></description>
			<content:encoded><![CDATA[<div>If you missed my <a href="http://gregsramblings.com/2011/06/28/adobe-flex-app-is-the-1-news-app-in-itunes-app-store/">earlier blog post</a>, this app was the #1 news app in iTunes for a few days and was featured on the New and Noteworthy page.</div>
<div>Here&#8217;s the important part &#8211; this is one single <a href="http://flex.org" target="_blank">Flex</a> project!  That&#8217;s right, 3 different mobile OSes, 5 different app stores, 1 single Flex project.</div>
<p>The Politifact app is now available in 5 online stores &#8211;</p>
<ul>
<li>Android Market &#8211; <a href="https://market.android.com/details?id=air.com.tampabay.Politifact">https://market.android.com/details?id=air.com.tampabay.Politifact</a></li>
<li>Apple App Store &#8211; <a href="http://itunes.apple.com/us/app/politifact-mobile/id444548650">http://itunes.apple.com/us/app/politifact-mobile/id444548650</a></li>
<li>BlackBerry App World &#8211; <a href="http://appworld.blackberry.com/webstore/content/49265?lang=en">http://appworld.blackberry.com/webstore/content/49265?lang=en</a></li>
<li>Barnes &amp; Noble Nook Store &#8211; <a href="http://search.barnesandnoble.com/Politifact-Mobile/Times-Publishing-Company/e/2940043855633">http://search.barnesandnoble.com/Politifact-Mobile/Times-Publishing-Company/e/2940043855633</a></li>
<li>Amazon Appstore for Android &#8211; <a href="http://www.amazon.com/Times-Publishing-Company-Politifact-Mobile/dp/B005FHP5K8/ref=sr_1_1?ie=UTF8&amp;s=mobile-apps&amp;qid=1312816567&amp;sr=1-1">http://www.amazon.com/Times-Publishing-Company-Politifact-Mobile/dp/B005FHP5K8/ref=sr_1_1?ie=UTF8&amp;s=mobile-apps&amp;qid=1312816567&amp;sr=1-1</a></li>
</ul>
<div><a href="http://gregsramblings.com/wp-content/uploads/2011/08/politifact.jpg"><img class="aligncenter size-full wp-image-2964" title="politifact" src="http://gregsramblings.com/wp-content/uploads/2011/08/politifact.jpg" alt="" width="300" height="423" /></a></div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F08%2F09%2Fpolitifact-app-now-in-5-mobile-app-stores-one-flex-project%2F&amp;title=Politifact%20app%20now%20in%205%20mobile%20app%20stores%20%26%238211%3B%20one%20Flex%20project" id="wpa2a_36"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/08/09/politifact-app-now-in-5-mobile-app-stores-one-flex-project/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adobe Flex app is the #1 news app in iTunes App store &#8211; Politifact</title>
		<link>http://gregsramblings.com/2011/06/28/adobe-flex-app-is-the-1-news-app-in-itunes-app-store/</link>
		<comments>http://gregsramblings.com/2011/06/28/adobe-flex-app-is-the-1-news-app-in-itunes-app-store/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 14:59:26 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[AIR for Android]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[politifact]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=2941</guid>
		<description><![CDATA[Check out the screenshot below (click for larger view). The Politifact app is the #1 paid news app in the app store&#8230; and&#8230; it&#8217;s built with Flex using Flash Builder 4.5.1!  It&#8217;s also in the &#8220;New &#38; Noteworthy&#8221; section.  There is also an Android version and there will be a BlackBerry PlayBook version soon. &#160;]]></description>
			<content:encoded><![CDATA[<p>Check out the screenshot below (click for larger view).  The Politifact app is the #1 paid news app in the app store&#8230; and&#8230; it&#8217;s built with <a href="http://flex.org" target="_blank">Flex</a> using <a href="http://www.adobe.com/products/flash-builder.html" target="_blank">Flash Builder 4.5.1</a>!  It&#8217;s also in the &#8220;New &amp; Noteworthy&#8221; section.  There is also an <a href="https://market.android.com/details?id=air.com.tampabay.Politifact" target="_blank">Android version</a> and there will be a BlackBerry PlayBook version soon.</p>
<p style="text-align: center;"><a href="http://gregsramblings.com/wp-content/uploads/2011/06/politifact.jpg"><img class="aligncenter size-large wp-image-2942" title="politifact" src="http://gregsramblings.com/wp-content/uploads/2011/06/politifact-1024x640.jpg" alt="" width="819" height="512" /></a></p>
<p style="text-align: center;">&nbsp;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F06%2F28%2Fadobe-flex-app-is-the-1-news-app-in-itunes-app-store%2F&amp;title=Adobe%20Flex%20app%20is%20the%20%231%20news%20app%20in%20iTunes%20App%20store%20%26%238211%3B%20Politifact" id="wpa2a_38"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/06/28/adobe-flex-app-is-the-1-news-app-in-itunes-app-store/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Flex on multiple devices press briefing setup</title>
		<link>http://gregsramblings.com/2011/06/21/flex-on-mobile-press-briefing-setup/</link>
		<comments>http://gregsramblings.com/2011/06/21/flex-on-mobile-press-briefing-setup/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 23:36:59 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[AIR for Android]]></category>
		<category><![CDATA[iOS/iPhone/iPad]]></category>
		<category><![CDATA[adobe connect]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[flash builder 4.5.1]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flex mobile]]></category>
		<category><![CDATA[Flex.org]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://gregsramblings.com/?p=2933</guid>
		<description><![CDATA[Earlier today, I did a press briefing that included a parade of demos of Flex apps running on all of my devices.  I thought it looked pretty cool so here&#8217;s a pic: The app in the picture is Christophe&#8217;s Mobile Trader (video demo here).   This is one of four demos that I&#8217;ve been showing [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today, I did a press briefing that included a parade of demos of Flex apps running on all of my devices.  I thought it looked pretty cool so here&#8217;s a pic:</p>
<p><a href="http://gregsramblings.com/wp-content/uploads/2011/06/AdobeMobilePresentation.jpg"><img class="aligncenter size-full wp-image-2934" title="AdobeMobilePresentation" src="http://gregsramblings.com/wp-content/uploads/2011/06/AdobeMobilePresentation.jpg" alt="" width="700" height="480" /></a></p>
<p>The app in the picture is Christophe&#8217;s Mobile Trader (<a href="http://tv.adobe.com/watch/adc-presents/financial-trader-app-for-ios-android-and-blackberry-playbook/" target="_blank">video demo here</a>).   This is one of four demos that I&#8217;ve been showing recently.  I have to admit &#8211; this is fun stuff and the reaction has been simply fantastic!  More soon!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fgregsramblings.com%2F2011%2F06%2F21%2Fflex-on-mobile-press-briefing-setup%2F&amp;title=Flex%20on%20multiple%20devices%20press%20briefing%20setup" id="wpa2a_40"><img src="http://gregsramblings.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://gregsramblings.com/2011/06/21/flex-on-mobile-press-briefing-setup/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

