<?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>Words, punctuated &#187; iPhone</title>
	<atom:link href="http://probertson.com/articles/category/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://probertson.com</link>
	<description>Thoughts on web development, user-centered design, code, etc. by Paul Robertson</description>
	<lastBuildDate>Tue, 20 Jul 2010 21:29:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Slides, examples, and links: Developing iPhone apps with the Flash Platform</title>
		<link>http://probertson.com/articles/2010/03/16/slides-and-examples-developing-iphone-apps-flash-platform/</link>
		<comments>http://probertson.com/articles/2010/03/16/slides-and-examples-developing-iphone-apps-flash-platform/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 00:57:00 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=417</guid>
		<description><![CDATA[
Last week I gave a presentation at 360&#124;Flex 2010 (San Jose) on &#8220;Developing iPhone apps with the Flash Platform.&#8221; As always, I wanted to make my slides, notes, reference links, and example code available to those who were there and those who couldn&#8217;t make it:
Download slides, links, and example code (3.1 MB .zip)
I&#8217;ve been traveling [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/resources/2010/03/16/iphone_flash_platform_resources.jpg" alt="Flash logo pointing to iPhone with presentation title" /></p>
<p>Last week I gave a presentation at 360|Flex 2010 (San Jose) on &#8220;Developing iPhone apps with the Flash Platform.&#8221; As always, I wanted to make my slides, notes, reference links, and example code available to those who were there and those who couldn&#8217;t make it:</p>
<p><a href="/resources/2010/03/16/iphone_flash_platform_resources.zip">Download slides, links, and example code</a> (3.1 MB .zip)</p>
<p>I&#8217;ve been traveling since the conference so I didn&#8217;t flesh out my notes as thoroughly as I have for past presentations. If you have a question about a slide, feel free to ask in the comments and I&#8217;ll try to explain it better. The 360|Flex folks recorded video of my presentation as well as a screen capture. I believe the plan is to make those recordings available to attendees as well as people who couldn&#8217;t make it (though they may charge a fee if you didn&#8217;t attend the conference).</p>
<h2>Acknowledgments</h2>
<p>This is in the slides, but I wanted to once again thank all the people who helped me prepare this presentation (some knowingly, others just by virtue of content they&#8217;ve shared):</p>
<ul>
<li><a href="http://flashrealtime.com/">Tom Krcha</a></li>
<li><a href="http://renaun.com/">Renaun Erickson</a></li>
<li><a href="http://www.linkedin.com/pub/jeff-swartz/1/52/b84">Jeff Swartz</a></li>
<li><a href="http://adityabansod.net/">Aditya Bansod</a></li>
<li><a href="http://www.onflash.org/">Ted Patrick</a></li>
<li><a href="http://www.mikechambers.com/">Mike Chambers</a></li>
<li><a href="http://theflashblog.com/">Lee Brimelow</a></li>
<li><a href="http://www.linkedin.com/in/chiedozi">Chiedo Acholonu</a></li>
<li><a href="http://twitter.com/gburch">Greg Burch</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2010/03/16/slides-and-examples-developing-iphone-apps-flash-platform/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thoughts on multi-screen, multi-context app development</title>
		<link>http://probertson.com/articles/2010/02/09/thoughts-on-multi-screen-context-app-development/</link>
		<comments>http://probertson.com/articles/2010/02/09/thoughts-on-multi-screen-context-app-development/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 01:00:58 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Application Design]]></category>
		<category><![CDATA[Articles by Paul]]></category>
		<category><![CDATA[Contextual design]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Multi-screen]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[User-centered design]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=372</guid>
		<description><![CDATA[Around 8 months ago I was asked to start thinking about the now emerging (particularly from a Flash Platform perspective) world of multi-screen application development. What are issues to consider? What guidance should we offer?
It turns out that my thinking on that topic isn&#8217;t going to become anything in the Adobe documentation. So I&#8217;ve sort [...]]]></description>
			<content:encoded><![CDATA[<p>Around 8 months ago I was asked to start thinking about the now emerging (particularly from a Flash Platform perspective) world of multi-screen application development. What are issues to consider? What guidance should we offer?</p>
<p>It turns out that my thinking on that topic isn&#8217;t going to become anything in the Adobe documentation. So I&#8217;ve sort of just been sitting on my ideas with the idea that someday I&#8217;ll probably share them.</p>
<p>Which brings me to this post.</p>
<h2>Aside: upcoming presentations on multi-screen development</h2>
<p>This is really a side note to the main ideas here, but I thought I&#8217;d mention it since it&#8217;s the reason I actually stopped to write this. In one of my mind-wandering moments this morning, I realized that at the upcoming <a href="http://360flex.com/">360|Flex conference (San Jose, March 7-10)</a> I&#8217;ll be involved in two presentations that are directly related to practical aspects of building multi-screen apps:</p>
<ul>
<li>
<p>As part of the pre-conference free training, <a href="http://joelhooks.com/">Joel Hooks</a> and I are doing a four-hour training on using the <a href="http://robotlegs.org/">Robotlegs micro-architecture</a>. (Joel is the main speaker, fortunately, because he&#8217;s one of the core Robotlegs developers and the main &#8220;evangelist.&#8221; I&#8217;ll be helping out, to try and help save his voice and maybe to help find typos. =)</p>
<p>If you&#8217;re wondering what a Robotlegs session has to do with multi-screen apps&#8230;keep reading, it&#8217;s explained below.</p>
</li>
<li>On Tuesday and Wednesday, <a href="http://renaun.com/">Renaun Erickson</a> and I are giving (two separate) presentations about building iPhone apps using Flash Platform tools. My session is more of an intro into the workflow, how it&#8217;s similar to other app building, and how it&#8217;s different. (Plenty of code to look at &#8212; don&#8217;t worry!) Renaun is going to get more into specifics of building a game, as well as some more intermediate/advanced topics like performance.</li>
</ul>
<p>Funny that I never really made that connection until this morning. I guess subconsciously I knew this is a direction I want to move in, and that&#8217;s why I&#8217;ve been focusing my learning (and hence my presenting) on these topics =)</p>
<h2>Background</h2>
<p>While I was partially trying to keep my thinking abstract, from a practical perspective I centered my thoughts around developing using the Flash Platform. So conceptually, what I was thinking about was the idea of making a single &#8220;app&#8221; for multiple screens, which would mean that (in the technology of the next year or so) it could be potentially take several forms:</p>
<ul>
<li>a browser/computer app (Flash Player)</li>
<li>a browser/mobile app (Flash Player)</li>
<li>a desktop app (AIR)</li>
<li>a mobile (iPhone) app (Publisher for iPhone, similar to AIR)</li>
<li>a mobile app for other devices (AIR)</li>
<li>a TV app or widget (<a href="http://tv.adobe.com/watch/max-2009-design/flash-for-the-digital-home-flash-on-tv/">Flash for the digital home</a>)
</ul>
<p>(Obviously many of these are only out in public beta, some have only been vaguely publicly acknowledged, and others may or may not ever exist as actual Adobe products =)</p>
<h2>One app, or many?</h2>
<p>Back when I started thinking about this, there seemed to be two main camps. One group was a strong advocate for the &#8220;single source&#8221; idea: you would build one SWF or one AIR app and distribute that same app on any platforms (desktop/mobile/TV). Obviously a key element to that, especially for desktop/mobile apps rather than browser apps, would be having code that detects screen size and device capabilities and adapts the UI to the device.</p>
<p>The second group felt that it was more likely that developers who are creating an app for multiple screens would actually create multiple apps (from the perspective of the IDE). The apps would obviously share some code, visual assets, etc., but would be different enough that they&#8217;d be created separately and distributed as separate file types. (In the case of apps created for the iPhone, of necessity this has to be true, at least in terms of the publishing part.)</p>
<p>Since I try to be pragmatic about things unless I have a <em>really</em> good reason, I favored the second viewpoint. However, I acknowledge that in some circumstances the first approach might be used. As always, I think that developers are going to use a mix of approaches.</p>
<p>For example, suppose I&#8217;m building an app and I want to create a version for desktop computers, a version for the iPhone, and a version for other mobile devices. Personally I see this not just as an issue of &#8220;porting&#8221; the app from one platform to another. I think that each device has its strengths, and more importantly, each device is used for different purposes and in different contexts. If I&#8217;m building an app for a device, I should definitely be <a href="http://blog.digitalbackcountry.com/2009/10/introducing-contextual-applications/">taking that notion of context into account</a> as I&#8217;m designing the app. That pretty much rules out the possibility of using the exact same app (UI and everything) for both computers and mobile devices, unless I want it to run as a widget-type app on the desktop.</p>
<p class="editornote">Also see: <a href="http://www.adobe.com/devnet/flashplatform/context_apps/">Adobe Flash Platform contextual applications developer center</a></p>
<h2>Adaptable code to the rescue</h2>
<p>On the other hand, that doesn&#8217;t mean that developers will always create completely separate projects. For example, suppose I&#8217;m creating an app for iPhone, and another for another mobile device. Or perhaps I&#8217;m using the Publisher for iPhone to create an iPhone version of my app and an iPad version. If my app is a game where I can more freely discard the conventions of the platforms, perhaps the only platform difference I need to consider is the difference in screen dimensions and pixel density. In that case, it&#8217;s quite possible that I can <a href="http://www.adobe.com/devnet/flash/articles/authoring_for_multiple_screen_sizes.html"use the same source code and have it adapt to the different screen sizes</a>.</p>
<h2>Frameworks to the rescue</h2>
<p>Even for a more line-of-business or productivity app, one of the key ideas in <a href="http://tv.adobe.com/watch/max-2009-develop/preview-flex-for-mobile-devices/">Slider</a>, the future <a href="http://flashmobile.scottjanousek.com/2010/02/12/adobe-flex-for-mobile-whitepaper/">Flex mobile framework</a>, is to (as much as possible) abstract away platform convention differences. For example, if iPhone usually puts the back button on the top, and another platform puts it on the bottom, and another platform puts it in a menu, and another platform has it assigned to a physical button on the device, then Slider might have a &#8220;back&#8221; event that you can hook into, and you can make your app perform the necessary &#8220;back&#8221; tasks regardless of platform.</p>
<h2>Design patterns to the rescue</h2>
<p>And, of course, in some situations you&#8217;ll almost surely need to create different versions of apps for different screens. For example, suppose you&#8217;re building a desktop Twitter client and a mobile Twitter client. Chances are good you&#8217;ll put some functionality into the desktop version that doesn&#8217;t go into the mobile one &#8212; such as previewing images, or maybe Facebook integration. On the other hand, adding a feature like automatic location tagging would make lots of sense in the mobile version, but not so much in the desktop one.</p>
<p>As I was thinking, many months ago, about the idea of efficiently creating different versions of the same app for different devices, a thought hit me like a ton of bricks. This is exactly the use case that the oft-mentioned &#8220;separation of concerns&#8221; is designed for:</p>
<p>Over several years, various &#8220;micro architectures&#8221; and &#8220;application frameworks&#8221; have emerged and waxed and waned in popularity. Many of these architectures are modeled around the &#8220;<a href="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Controller</a>&#8221; design pattern (or its many variations).</p>
<p>One of the key benefits that these architectures claim is that it helps you keep the pieces of your application separate, without explicit links and dependencies between them. I&#8217;ve looked into and even tried out several of these over the years. One example that is frequently used to describe the notion of separation of concerns, which I always struggled with, goes something like this:</p>
<blockquote><p>
Suppose you&#8217;re creating an app, and you build the user interface and the other logic like server communication and data processing. If you use MVC/separation of concerns, then it&#8217;s really easy to just rip out your whole user interface layer and replace it with a new one.
</p></blockquote>
<p>They usually lost me with that one. As much as I tried, I couldn&#8217;t imagine a situation in which I&#8217;d want to build my app and then just rip out the UI and replace it with a different one <a id="note1src" class="footnote" href="#note1">note 1</a>.</p>
<p>Until now.</p>
<p>Suddenly I had discovered, for myself at least, a real-world use case for the separation-of-concerns-so-you-can-swap-out-the-UI argument. If I&#8217;m building an app for the desktop and mobile, I&#8217;d like to be able to reuse my code where I can. At the same time, some functionality is only going to apply to one app or the other, so it&#8217;d be nice to be able to plug it in cleanly. Oh and by the way, the user interfaces are going to be different, so being able to swap those out is an absolute must.</p>
<p>I&#8217;d always liked micro-architectures in general, if only because I like knowing that I&#8217;m building my app using some pattern or structure that is based on developers&#8217; real-world experience. It&#8217;s much nicer than trying to invent it myself and having to deal with all the pain points they&#8217;ve already gotten over. Now that I am imagining a world where I create multiple versions of the same app, with similar functionality but different user interfaces, suddenly micro-architecture patterns have become indispensable in my mind.</p>
<h2>Conclusion</h2>
<p>These are only just a few of my thoughts about the future world of multi-screen, contextual applications. Like Lee Brimelow, I believe that going forward <a href="http://theflashblog.com/?p=1743">building multi-screen, multi-context apps is going to be a much more common scenario</a>. From my perspective as someone who thinks a lot about user experience design, and trying to optimize tools for the task and context, I think this is one of the most exciting aspects of the current technology revolution. I&#8217;ll definitely continue to share my thoughts and ideas in the future (hopefully more practical ones, too, not just abstract ones like this =)</p>
<h2>Notes</h2>
<p class="footnote" id="note1">Note 1: Just to be clear, I&#8217;m not trying to sound negative about MVC or micro-architectures/frameworks. Most of them provide many benefits, many of which are also related to the idea of separation of concerns, such as making code easier to test, making code cleaner, reducing boilerplate code, providing structure so that teams or developers who inherit a project can get going more quickly, etc. Swapping out the view layer is just one little benefit they mention. (<a href="#note1src">back</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2010/02/09/thoughts-on-multi-screen-context-app-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building iPhone apps with Flash Platform tools roundup</title>
		<link>http://probertson.com/articles/2009/10/05/building-iphone-apps-with-flash-platform-tools-roundup/</link>
		<comments>http://probertson.com/articles/2009/10/05/building-iphone-apps-with-flash-platform-tools-roundup/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 21:35:36 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=340</guid>
		<description><![CDATA[Lots of news and rumors are flying around right now about developing iPhone apps using Flash Platform tools. Here&#8217;s a collection of links that I&#8217;ve found, some the official information and some information from folks who were involved in developing this cool new technology:

First thing first: if you haven&#8217;t seen the MythHackers video about Flash [...]]]></description>
			<content:encoded><![CDATA[<p>Lots of news and rumors are flying around right now about developing iPhone apps using Flash Platform tools. Here&#8217;s a collection of links that I&#8217;ve found, some the official information and some information from folks who were involved in developing this cool new technology:</p>
<ul>
<li>First thing first: if you haven&#8217;t seen the <a href="http://www.youtube.com/watch?v=lzqd5mHWTHE">MythHackers video about Flash on the iPhone</a>, you must go watch it. I laughed so hard my eyes were watering.</li>
<li>Aditya Bansod&#8217;s ADC article &#8220;<a href="http://www.adobe.com/devnet/logged_in/abansod_iphone.html">Developing for the Apple iPhone using Flash</a>,&#8221; from the Product Manager who&#8217;s in charge of the Flash Platform development for iPhone effort. Includes some technicial details on how it actually works and how you build the apps.</li>
<li><a href="http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/">Adobe Labs: Apps for iPhone</a>: Video demo and list of apps that are already in the app store today</li>
<li><a href="http://labs.adobe.com/wiki/index.php/Applications_for_iPhone">Adobe Labs developer FAQ</a>: this has the most information about what this really means for developers</li>
<li>Mike Chambers is, as always, a great resource for information on this topic. He has <a href="http://www.mikechambers.com/blog/2009/10/05/building-applications-for-the-iphone-with-flash/">a nice summary blog post</a>, plus I know he&#8217;s collecting questions to answer in his MAX session (on Wednesday, I believe).</li>
<li>Arno Gourdol, engineering manager for Adobe AIR (and huge iPhone fan and former Apple employee) talks briefly about <a href="http://arno.org/arnotify/2009/10/max-2009-adobe-air-2-0-and-iphone-support/">the underlying technology, with a focus on MAX sessions where you can learn more</a>.</li>
<li>Never one to hold back his enthusiasm, Ted Patrick has posted <a href="http://onflash.org/ted/2009/10/source-to-4-flash-iphone-apps.php">the source code for three different Flash Platform iPhone apps he wrote</a>, that can be seen on the demo phones in the Adobe booth at MAX. (He says it&#8217;s four apps in the blog title, but he explains that two of them are the same app with and without hardware acceleration.)</li>
</ul>
<p>That&#8217;s all for now. I&#8217;ll keep updating the list as I find more resources.</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2009/10/05/building-iphone-apps-with-flash-platform-tools-roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
