<?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; Frameworks</title>
	<atom:link href="http://probertson.com/articles/category/frameworks/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>Mon, 30 Aug 2010 16:38:38 +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>Robotlegs training at 360&#124;Flex DC</title>
		<link>http://probertson.com/articles/2010/08/30/robotlegs-training-at-360flex-dc/</link>
		<comments>http://probertson.com/articles/2010/08/30/robotlegs-training-at-360flex-dc/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 16:08:47 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Presentations]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=464</guid>
		<description><![CDATA[I&#8217;m presenting at the upcoming 360&#124;Flex conference in Washington D.C., Sept. 19. (Yes, that&#8217;s in less than 3 weeks!) This time I&#8217;m very excited to be doing a training session on Robotlegs as part of the pre-conference training.



If you&#8217;ve got some ActionScript and Flex experience and you want to learn to use Robotlegs to build [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m presenting at the upcoming <a href="http://www.360flex.com/">360|Flex conference in Washington D.C.</a>, Sept. 19. (Yes, that&#8217;s in less than 3 weeks!) This time I&#8217;m very excited to be doing a training session on <a href="http://robotlegs.org/">Robotlegs</a> as part of the pre-conference training.</p>
<div>
<img src="/resources/2010/08/30/360-robotlegs.png" alt="Robotlegs at 360|Flex" width="439" height="185" />
</div>
<p>If you&#8217;ve got some ActionScript and Flex experience and you want to learn to use Robotlegs to build more maintainable apps, or if you&#8217;ve wanted to get started with Robotlegs but haven&#8217;t been able to get your head around it quite yet, then this session is definitely for you.</p>
<p>Since it&#8217;s a training session, I&#8217;m going to talk a bit about the concepts and theory of Robotlegs, but mostly we&#8217;re going to be walking through building an app using the Robotlegs MVCS implementation &#8212; the &#8220;standard&#8221; Robotlegs implementation. We&#8217;ll work through several examples of common app &#8220;tasks.&#8221; We&#8217;ll use several of the common &#8220;variations&#8221; of MVCS that are used in various sample applications, blogs, and the real world, and talk about the benefits and downsides of them. I&#8217;ve got a big list of common new-user misconceptions and problems that I&#8217;m working in to the presentation. Finally, time permitting, I&#8217;m hoping to spend some time covering how to use <a href="http://wiki.github.com/robertpenner/as3-signals/">Signals</a> in combination with Robotlegs, since I know that&#8217;s a combination that many people are interested in.</p>
<p>So, if you haven&#8217;t registered for 360|Flex yet, there&#8217;s no better time than the present. It&#8217;s always a great show, and many of my best experiences with the Flex/ActionScript/AIR developer community are linked to a 360|Flex conference. So, what are you waiting for &#8212; <a href="http://360flex.eventbrite.com/">go sign up right now</a>!</p>
<p>In case you&#8217;re curious about my experience with Robotlegs, here&#8217;s a little background on my history with the framework. I started following Robotlegs closely last fall, and started building my first apps with it in February. In March I was very fortunate to be able to collaborate with Joel Hooks as he prepared his Robotlegs training session for the previous 360|Flex &#8212; I learned a ton from that experience. Since then, I&#8217;ve been working full time developing apps using Robotlegs, so I&#8217;ve gotten lots of real-world experience with the framework. In addition, I&#8217;ve been following the Robotlegs knowledge base/question forum pretty much since it started, (lately I&#8217;ve even been contributing answers =) so I&#8217;ve gotten a good view of the common questions and problems that people run into while getting started and working with Robotlegs.</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2010/08/30/robotlegs-training-at-360flex-dc/feed/</wfw:commentRss>
		<slash:comments>0</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>Thoughts from 360&#124;Flex day one</title>
		<link>http://probertson.com/articles/2009/05/18/thoughts-from-360flex-day-one/</link>
		<comments>http://probertson.com/articles/2009/05/18/thoughts-from-360flex-day-one/#comments</comments>
		<pubDate>Tue, 19 May 2009 03:49:21 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Sites to remember]]></category>
		<category><![CDATA[Unit testing]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=276</guid>
		<description><![CDATA[Here are a few things that stood out to me the most in this great day at the greatest Flex conference on the planet:

FlexUnit 4. Wow. Big update. Very nice new features. Time to get (back) into it. (presentation by Michael Labriola)
Renaun Erickson&#8217;s Structured Log Testing framework. Another great, unexpected surprise. I didn&#8217;t really have [...]]]></description>
			<content:encoded><![CDATA[<p>Here are a few things that stood out to me the most in this great day at <a href="http://360flex.com/">the greatest Flex conference on the planet</a>:</p>
<ul>
<li><a href="http://opensource.adobe.com/wiki/display/flexunit/FlexUnit">FlexUnit 4</a>. Wow. Big update. Very nice new features. Time to get (back) into it. (presentation by <a href="http://blogs.digitalprimates.net/codeslinger/">Michael Labriola</a>)</li>
<li><a href="http://renaun.com/blog/">Renaun Erickson</a>&#8217;s <a href="http://structuredlogs.com/">Structured Log Testing framework</a>. Another great, unexpected surprise. I didn&#8217;t really have plans to go to this session except that Renaun&#8217;s such a smart, friendly guy. And frankly, I&#8217;ve never really had enough interest to take a look at his work on this project so far. Boy am I glad I changed my mind. This is definitely a testing approach I can get into &#8212; much less overhead than other approaches I&#8217;ve seen. Getting going with it is only barely more work than adding <code>trace()</code> calls. And the result is certainly infinitely more valuable.</li>
</ul>
<p>Considering I didn&#8217;t come to Indianapolis with any real interest in hearing more about testing&#8230;I&#8217;m surprised to find myself so excited by what I saw today. Today is a great day for Flex testing, that&#8217;s for sure.</p>
<p>I also got to hear some interesting ideas and future plans from <a href="http://jacwright.com/">Jacob Wright</a> and <a href="http://www.xtyler.com/">Tyler Wright</a>. (They made me a bit jealous &#8212; I wish I had a Flex programmer brother that I could see at conferences.) If you&#8217;re in Indianapolis, I recommend checking out their &#8220;write-in&#8221; session on the <a href="http://www.flightxd.com/flightframework/">Flight Framework</a> at 10am Tuesday in the Illinois East room.</p>
<p>Other less code-centric, but interesting, tidbits:</p>
<ul>
<li><a href="http://joeberkovitz.com/">Joe Berkovitz</a> is an avid mountain biker.</li>
<li><a href="http://blog.benstucki.net/">Ben Stucki</a> has a sweet five-year-old daughter who likes deep-fried calamari and pasta, although she wasn&#8217;t able to finish her macaroni and cheese at <a href="http://www.bucadibeppo.com/">Buca di Beppo</a>, where apparently even the child meals are sized to feed 3-4 people.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2009/05/18/thoughts-from-360flex-day-one/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>360&#124;Flex slides for &#8220;AIR SQLite: An optimization conversation&#8221;</title>
		<link>http://probertson.com/articles/2008/08/22/360flex-slides-for-air-sqlite-optimization-conversation/</link>
		<comments>http://probertson.com/articles/2008/08/22/360flex-slides-for-air-sqlite-optimization-conversation/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 00:16:24 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Articles by Paul]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[local SQL database]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=188</guid>
		<description><![CDATA[Updates (Oct. 30, 2008): The video of my presentation has been posted, so I added a link to it at the bottom of this post. Also, I just learned about another AIR-based SQLite admin tool which looks interesting, so I added it to the list of resources even though it&#8217;s obviously not discussed in the [...]]]></description>
			<content:encoded><![CDATA[<p class="editornote">Updates (Oct. 30, 2008): The video of my presentation has been posted, so I added a link to it at the bottom of this post. Also, I just learned about another AIR-based SQLite admin tool which looks interesting, so I added it to the list of resources even though it&#8217;s obviously not discussed in the presentation.</p>
<p>As I mentioned briefly before, this week I presented at the 360|Flex San Jose (August 2008) conference. My presentation was titled &#8220;Adobe AIR SQLite: An optimization conversation.&#8221; As I mentioned in the presentation, the term &#8220;optimization&#8221; could mean a few different things &#8212; for example, optimization meaning improving performance, or optimization meaning improving developer productivity. While my presentation focused mostly on the first type of optimization, I included suggestions for tools, libraries, and strategies that fall in the &#8220;developer productivity&#8221; type of optimization as well.</p>
<p>Anyway, as always I&#8217;m happy to make my presentation materials available. Here are the slides (with some notes) from my presentation:</p>
<p><a href="/resources/2008/08/22/air_sqlite_optimization_slides.zip">&#8220;Adobe AIR SQLite: An optimization conversation&#8221; slides</a> (PDF in .zip - 504kb)</p>
<p>I don&#8217;t really have any specific code examples, apart from what&#8217;s in the slides, so there&#8217;s no &#8220;source code&#8221; download. However, I did link to a lot of external tools and resources (including a few of my own). To save you the trouble of digging into the PDF, here are the links:</p>
<p>Tools</p>
<ul>
<li><a href="http://coenraets.org/blog/2008/02/air-based-sqlite-admin-updated-for-beta-3/">Cristophe Coenraets&#8217; &#8220;SQLite Admin&#8221;</a></li>
<li><a href="/projects/doppler-air-sql-admin-tool/">My tool for testing queries</a></li>
<li><a href="http://www.dehats.com/drupal/?q=node/59">&#8220;Lita&#8221; by David Deraedt</a> (I learned about this one after the presentation, so it&#8217;s not discussed in my slides/video, but I thought it&#8217;d be worth mentioning anyway.)</li>
</ul>
<p>Application architecture/patterns/libraries</p>
<ul>
<li><a href="http://www.peterelst.com/blog/2008/04/07/introduction-to-sqlite-in-adobe-air/">SQLite MXML wrapper classes</a> (Peter Elst)</li>
<li><a href="http://www.brandonellis.org/?p=49">Data access layer</a> (Brandon Ellis)</li>
<li><a href="http://code.google.com/p/asqlib/">asqlib SQL statement generator</a> (Miran Loncaric)</li>
<li>&#8220;Command&#8221; classes (me) as <a href="/projects/addressbook/">demonstrated by my AddressBook sample application</a></li>
<li><a href="http://code.google.com/p/air-activerecord/">AIR ActiveRecord source</a> and <a href="http://jacwright.com/blog/79/air-activerecord-is-open-source/">blog post explaining its usage</a> (Jacob Wright)</li>
<li><a href="http://www.ericfeminella.com/blog/2008/06/22/air-cairngorm-20/">AIR SQLite Cairngorm services</a> (Eric Feminella)</li>
<li>Connection and statement pools, mentioned (with source code) in the article <a href="http://www.adobe.com/devnet/air/flex/articles/air_sql_operations.html">User experience considerations with SQLite operations</a> (Daniel Rinehart)</li>
</ul>
<p>Finally, as you may have heard, Adobe sponsored the recording of every presentation at 360|Flex, and they&#8217;re all going to be made available free of charge via a channel in Adobe Media Player. They&#8217;re rolling them out in phases, <span class="cut">and mine isn&#8217;t available yet. When it is, I&#8217;ll update this post with the video as well.</span> Update: the video is <a href="http://onflash.org/ted/2008/10/360flex-sj-2008-air-sqlite-optimization.php">now available on Ted Patrick&#8217;s blog</a> as well as in Adobe Media Player.</p>
<p>In the mean time, 360|Flex was full of awesome presentations. I wasn&#8217;t able to get to all the ones I wanted to see, due to conflicts and me trying to finish up preparation for my presentation. So I&#8217;m going to be spending some time watching many of those videos as well. If you&#8217;d like to see the videos, Ted Patrick has posted instructions on his blog:</p>
<p><a href="http://www.onflex.org/ted/2008/08/360flex-sessions-media-rss-feed.php">How to view 360|Flex San Jose 8/08 session videos in Adobe Media Player</a></p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2008/08/22/360flex-slides-for-air-sqlite-optimization-conversation/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>New ActionScript unit testing framework</title>
		<link>http://probertson.com/articles/2008/05/01/new-actionscript-unit-testing-framework/</link>
		<comments>http://probertson.com/articles/2008/05/01/new-actionscript-unit-testing-framework/#comments</comments>
		<pubDate>Fri, 02 May 2008 03:58:09 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Sites to remember]]></category>
		<category><![CDATA[Unit testing]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=172</guid>
		<description><![CDATA[Back in November 2005 (yes, 2.5 years ago!) I wrote an article about how data types and type checking work in ActionScript. ActionScript is different than many languages, in that the ActionScript compiler can be used for compile-time type checking (or not), and at runtime it is a strongly typed language, but it also has [...]]]></description>
			<content:encoded><![CDATA[<p>Back in November 2005 (yes, 2.5 years ago!) I wrote <a href="/articles/2005/11/08/actionscript-3-unit-testing-recommended/">an article about how data types and type checking work in ActionScript</a>. ActionScript is different than many languages, in that the ActionScript compiler can be used for compile-time type checking (or not), and at runtime it is a strongly typed language, but it also has features of dynamically typed languages. This allows for some flexibility but also means that you have to be careful about testing your code (because the compiler won&#8217;t always catch everything).</p>
<p>My conclusion (not original by any means) was that unit testing is an important tool for ActionScript developers. I&#8217;ve tried a couple of ActionScript unit testing frameworks (<a href="http://www.asunit.org/">ASUnit</a> and <a href="http://code.google.com/p/as3flexunitlib/">FlexUnit</a>). And finally getting to the point of this post, I was interested to learn today that the crew at <a href="http://www.digitalprimates.net/">Digital Primates</a> is releasing <a href="http://code.google.com/p/dpuint/">an open source unit testing framework for Flex, known as &#8220;dpunit&#8221;</a>.</p>
<p>(via <a href="http://jessewarden.com/">Jesse Warden</a> via <a href="http://twitter.com/jesterxl">Twitter</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2008/05/01/new-actionscript-unit-testing-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex 4 (&#8220;Gumbo&#8221;) - first details revealed</title>
		<link>http://probertson.com/articles/2008/04/11/flex-gumbo-details-revealed/</link>
		<comments>http://probertson.com/articles/2008/04/11/flex-gumbo-details-revealed/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 23:36:16 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=169</guid>
		<description><![CDATA[The first details of the overarching &#8220;themes&#8221; for Flex 4 (&#8220;Gumbo&#8221;) have been posted on the Flex open source wiki. Four themes are listed (&#8220;Design in Mind&#8221;, &#8220;Accelerated Development&#8221;, &#8220;Horizontal Platform Improvements&#8221;, and &#8220;Broadening Horizons&#8221;) although currently only &#8220;Design in Mind&#8221; has any details.
And what nice details they are!
Here are a few highlights that stood [...]]]></description>
			<content:encoded><![CDATA[<p>The first details of <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+4">the overarching &#8220;themes&#8221; for Flex 4 (&#8220;Gumbo&#8221;)</a> have been posted on the Flex open source wiki. Four themes are listed (&#8220;Design in Mind&#8221;, &#8220;Accelerated Development&#8221;, &#8220;Horizontal Platform Improvements&#8221;, and &#8220;Broadening Horizons&#8221;) although currently only &#8220;<a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+4#Flex4-DesigninMind">Design in Mind</a>&#8221; has any details.</p>
<p>And what nice details they are!</p>
<p>Here are a few highlights that stood out to me:</p>
<blockquote><p>Flex applications however have gained a reputation for looking too similar to each other, as many developers choose to use the Flex default look and feel (known as Halo)&#8230;we have found that it remains too challenging to create a truly custom experience. It is therefore a priority for Gumbo to make easy customization of Flex application experiences the norm instead of the exception.</p></blockquote>
<blockquote><p>Major features&#8230;component and skinning architecture&#8230;make it easier to describe experience-oriented features such as states and transitions</p></blockquote>
<p>Perhaps the most revealing part for existing Flex devs is the aptly named &#8220;Caveats and Reassurances&#8221; section:</p>
<blockquote><p>Gumbo will remain compatible with Flex 3&#8230;Over multiple releases post-Gumbo we expect to deprecate the Halo model&#8230;Halo and new Gumbo components can co-exist&#8230;new MXML features may require some changes to your existing markup. However, you can make these decisions on a file-by-file basis</p></blockquote>
<p>But my favorite line of all is in the &#8220;Related Work&#8221; section:</p>
<blockquote><p>Provide a tool in which design-oriented users can easily customize the look of individual components or entire applications. Yes, this is Thermo. We&#8217;re not discussing it here.</p></blockquote>
<p>Of course, this is all fairly in line with what&#8217;s been talked about previously, such as <a href="http://labs.adobe.com/wiki/index.php/Thermo">Thermo</a>, <a href="http://clintm.esria.com/2008/02/26/mxml-g-an-xml-abstraction-of-the-flash-player-drawing-api-and-then-some/">MXML-G</a>, <a href="http://dougmccune.com/blog/2007/10/19/my-writeup-of-ely-greenfields-max-session/">Ely&#8217;s presentation about a new component structure with separation of model and view</a>, etc. But it&#8217;s nice to see more information&#8230;and what&#8217;s not there but is hinted at is even more tantalizing.</p>
<p>I&#8217;ll definitely be watching that page for more information about &#8220;Design in Mind&#8221; and the other Flex 4 themes.</p>
<p>(via email from <a href="http://weblogs.macromedia.com/mxna/">Matt Chotin</a> &#8212; also see the <a href="http://weblogs.macromedia.com/flexteam/archives/2008/04/info_on_our_fir.cfm">announcement on the Flex team blog</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2008/04/11/flex-gumbo-details-revealed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Big ideas behind Google Apps Engine</title>
		<link>http://probertson.com/articles/2008/04/09/big-ideas-behind-google-apps-engine/</link>
		<comments>http://probertson.com/articles/2008/04/09/big-ideas-behind-google-apps-engine/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 19:53:05 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[SaaS]]></category>

		<guid isPermaLink="false">http://probertson.com/?p=168</guid>
		<description><![CDATA[There&#8217;s been plenty of blog play about Google&#8217;s recently announced Apps Engine, which provides scalable server hosting for web apps.
I found a couple of posts that were very interesting from a different perspective than just the &#8220;hey free web hosting&#8221; angle, that I wanted to save/share:

Alec Saunders discusses Google App Engine as an example of [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been plenty of blog play about Google&#8217;s <a href="http://googleblog.blogspot.com/2008/04/developers-start-your-engines.html">recently announced</a> <a href="http://appengine.google.com/">Apps Engine</a>, which provides scalable server hosting for web apps.</p>
<p>I found a couple of posts that were very interesting from a different perspective than just the &#8220;hey free web hosting&#8221; angle, that I wanted to save/share:</p>
<ul>
<li>Alec Saunders discusses Google App Engine as an example of <a href="http://saunderslog.com/2008/04/08/mr-ballmer-i-think-youve-got-the-wrong-tree/">the competition between Microsoft and Google, and why Google &#8220;gets it&#8221; but Microsoft doesn&#8217;t</a>.</li>
<li>Jacob Brunson thinks this is an example of Google &#8220;<a href="http://jacob.peargrove.com/tech/2008/web-development/did-google-just-change-the-world-again/">changing the world</a>&#8221; &#8212; an innovative idea coming from inside Google rather than being bought by them.</li>
</ul>
<p>And one more link that is a coding-focused one, but I wanted to save it anyway. =)</p>
<ul>
<li>Ronald Schouten has a great list of <a href="http://www.atomeo.com/2008/04/get-ready-for-google-apps-engine-learn.html">resources for learning Python and Django</a> (<a href="http://www.python.org/">Python</a> being the language you must use with Google Apps Engine, and <a href="http://www.djangoproject.com/">Django</a> being one of the most popular Python frameworks for web apps).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2008/04/09/big-ideas-behind-google-apps-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Worth watching: Flex application frameworks presentations</title>
		<link>http://probertson.com/articles/2007/10/18/flex-application-frameworks-presentations/</link>
		<comments>http://probertson.com/articles/2007/10/18/flex-application-frameworks-presentations/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 16:49:08 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[Application Design]]></category>
		<category><![CDATA[Articles to remember]]></category>
		<category><![CDATA[Elsewhere on the web]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Presentations]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2007/10/18/flex-application-frameworks-presentations/</guid>
		<description><![CDATA[Last week I posted some of my thoughts on the future of Flex application frameworks, which were my take-aways from the October Silicon valley Flex user&#8217;s group (a.k.a. &#8220;SilvaFUG&#8221;) users group meeting. In that post I strongly recommended watching the recordings of the presentations. The recordings are available now, so once again I highly recommend [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I posted some of <a href="/articles/2007/10/12/flex-frameworks-future/">my thoughts on the future of Flex application frameworks</a>, which were my take-aways from the October <a href="http://www.silvafug.org/">Silicon valley Flex user&#8217;s group (a.k.a. &#8220;SilvaFUG&#8221;)</a> users group meeting. In that post I strongly recommended watching the recordings of the presentations. The recordings are available now, so once again I highly recommend watching them (now that you actually <em>can</em> watch them =)</p>
<p>Here are the direct links:</p>
<ul>
<li><a href="http://adobechats.adobe.acrobat.com/p49294102/">Grant Straker on Moving ZoomFlex from a homegrown framework to Cairngorm</a></li>
<li><a href="http://adobechats.adobe.acrobat.com/p12266504/">Ali Mills and Luke Bayes on Flex application frameworks</a> (A great overview of the strengths and weaknesses of various frameworks like Cairngorm etc., from <a href="http://asserttrue.com/">two really smart developers</a>.)</li>
</ul>
<p>Enjoy!</p>
<p>(via email from <a href="http://www.silvafug.org/">SilvaFUG</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2007/10/18/flex-application-frameworks-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The future of Flex application frameworks-my thoughts</title>
		<link>http://probertson.com/articles/2007/10/12/flex-frameworks-future/</link>
		<comments>http://probertson.com/articles/2007/10/12/flex-frameworks-future/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 16:55:14 +0000</pubDate>
		<dc:creator>Paul Robertson</dc:creator>
				<category><![CDATA[Application Design]]></category>
		<category><![CDATA[Articles by Paul]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://probertson.com/articles/2007/10/12/flex-frameworks-future/</guid>
		<description><![CDATA[This post started out as my notes from the Oct. 11, 2007 SilvaFUG user&#8217;s group meeting, which included two talks on Flex application frameworks, but by the end I realized it was more of a restatement of (filtered through my opinion) some of the important forward-looking ideas that came out of the audience discussions and [...]]]></description>
			<content:encoded><![CDATA[<p>This post started out as my notes from the Oct. 11, 2007 SilvaFUG user&#8217;s group meeting, which included two talks on Flex application frameworks, but by the end I realized it was more of a restatement of (filtered through my opinion) some of the important forward-looking ideas that came out of the audience discussions and the presentations at that meeting. So I think it rambles more than I would normally like, but I was trying to capture my &#8220;raw thoughts&#8221; while the meeting was progressing.</p>
<p>If you&#8217;re interested in a summary of the talks, I&#8217;m afraid I didn&#8217;t do that. (But I highly recommend viewing the presentations:</p>
<ul>
<li><a href="http://adobechats.adobe.acrobat.com/p49294102/">Grant Strake on moving ZoomFlex from a homegrown framework to Cairngorm</a></li>
<li><a href="http://adobechats.adobe.acrobat.com/p12266504/">Ali Mills and Luke Bayes comparing various Flex application frameworks</a></li>
</ul>
<p>What I&#8217;ve written here is primarily just thoughts that I wanted to save for myself; things that maybe I don&#8217;t think about as often as I should, or things I want to remember about the audience of Flex and other Adobe developer products. Because I&#8217;m interested in the developer community, much of the focus is on points about the developer community that I sometimes need to remind myself of.</p>
<h2>Grant Straker</h2>
<p>The first speaker was Grant Straker, talking about his company&#8217;s choice to use a homegrown framework, and eventual decision to migrate it to Cairngorm instead. His company (<a href="http://www.strakerinteractive.co.uk/">Straker Interactive</a>) has a RAD product (&#8220;ZoomFlex,&#8221; I believe it&#8217;s called) that bundles ColdFusion and Flex to create apps quickly &#8212; you use wizards to define data structures, and the product generates database structure, backend ColdFusion, and front-end Flex code for apps using that data. (The idea is that developers then take those Flex files and customize the front-end forms, style the app, etc.)</p>
<p>Here are some interesting thoughts/points I picked up:</p>
<ul>
<li>Originally they chose not to use Cairngorm for the underlying framework for their generated code. The reason: while there are some developers who build big, fancy, complex enterprise apps, there&#8217;s also a group of developers who &#8220;just want to know what they need to know to get their job done&#8221; &#8212; which often means build basic CRUD apps as quickly and easily as possible (e.g. web-enabling existing databases, spreadsheets, etc.). This latter group was/is more in their target audience.</li>
<li>Code can be written in different ways &#8212; they try to generate code so that it&#8217;s clear and obvious what it does, and so that it can be easily extended by developers of varying levels of experience (key: don&#8217;t assume a high level of experience).</li>
<li>In retrospect, he wishes they had just stuck with Cairngorm in the beginning. Now, 1.5 years later, there&#8217;s a large community, examples, documentation, etc. making it easier for a less-experienced developer to learn enough Cairngorm that they can understand it and use it.</li>
<li>I was really amazed by how much code they are able to generate for developers. I&#8217;ve read some things about code generation tools, but I&#8217;ve never tried them out (due to the organizations I&#8217;ve worked for, and perhaps due to my personality as a developer who likes to have &#8220;control&#8221; of the code). However, I&#8217;ve definitely seen the down side of that, which is that I end up writing a lot of redundant or very similar code (especially for data access and manipulation). The &#8220;alternative&#8221; approach certainly has some attractions&#8230;</li>
<li>Part of what they include is a library of pre-built UI components. The process of migrating these components to Cairngorm has been challenging at times. One of the principles of many frameworks including Cairngorm is that the user interface code is separate from the &#8220;model&#8221; (the underlying data). However, some components by nature lend themselves to having knowledge of their underlying data (e.g. their video player component) so figuring out how to structure those components is complicated.</li>
</ul>
<h2>Luke Bayes and Ali Mills - Evaluating application frameworks for Flex</h2>
<p><a href="http://asserttrue.com/">Luke and Ali</a> came into this presentation with no background in any of the major frameworks (other than the Flex framework). This is good because they didn&#8217;t have any biases, but it means they may have some non-best-practices too.</p>
<p>This was a great talk, but there was a lot of info in a short time so again, I&#8217;m not going to bother trying to write detailed notes. I highly recommend watching <a href="http://adobechats.adobe.acrobat.com/p12266504/">the recording</a>.</p>
<p>However, once again in this presentation (in particular in the discussion afterwards) some of the same ideas came up. Luke in particular expressed a reluctance to have a prescriptive framework, because he doesn&#8217;t want to be &#8220;told how to code.&#8221; That opinion resonated with most of the audience there &#8212; but at the same time, everyone also acknowledged that the audience at a user&#8217;s group presentation isn&#8217;t really an accurate representation of the broad Flex developer community (especially the even broader community of developers who are considering Flex or who will be Flex developers in the future). If the Flex community is going to continue to grow, and be more accessible to new developers, it would be very helpful to have some prescriptive application frameworks that give people a predefined, standard architecture within which they can build their app (in the same way that Flex&#8217;s components provide user interface elements and layout elements that give developers a big head-start in building an app, compared to straight ActionScript or Flash).</p>
<p>What is the &#8220;next frontier&#8221; of Flex developers? Is it the &#8220;VB developer&#8221;<a class="footnote" href="#noteVBDeveloper">1</a> (the &#8220;behind-the-firewall&#8221; corporate developer). If so, then to support that group of developers we&#8217;re going to need prescriptive frameworks that are easy to get into (&#8220;accessible&#8221; in Luke and Ali&#8217;s terms), that do as much work for you as they can, but that still don&#8217;t get in the way as an app grows in complexity.</p>
<p>At the same time, more advanced Flex developers may not want such a framework, and they certainly aren&#8217;t going to want to have to carry along the &#8220;baggage&#8221; (meaning both prescriptive architecture imposed on them, and literal baggage in download size) that would come along with such a framework if they&#8217;re not using it.</p>
<p>Personally, I think that&#8217;s an extremely important point for both Adobe and third-party framework developers to keep in mind going into the future.</p>
<p id="noteVBDeveloper">&#8220;VB Developer&#8221; is my name for a developer who works in a medium-large corporation or organization, perhaps coding apps for a group within that organization, who doesn&#8217;t really want to learn everything there is to know about Flex (or their language of choice), or become a &#8220;guru,&#8221; but rather just wants to build their app and make it work nicely, but do so as quickly and painlessly as possible. Yes, the name &#8220;VB developer&#8221; is rather dated, since at this stage in history most such developers are doing web-based apps, probably using ASP.NET or J2EE in a large, standardized org or perhaps PHP or Ruby in a smaller or more independent group.</p>
]]></content:encoded>
			<wfw:commentRss>http://probertson.com/articles/2007/10/12/flex-frameworks-future/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
