<?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>RIAgora</title>
	<atom:link href="http://www.riagora.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.riagora.com</link>
	<description>The place of Adobe Flash Platform fans.</description>
	<lastBuildDate>Mon, 23 Jan 2012 15:18:45 +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>Apache Flex and the community</title>
		<link>http://www.riagora.com/2012/01/apache-flex-and-the-community/</link>
		<comments>http://www.riagora.com/2012/01/apache-flex-and-the-community/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 15:18:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Moods]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=921</guid>
		<description><![CDATA[Flex is now an Apache project in incubation (as PhoneGap under the name &#8216;Cordova&#8217;). The community is hyper-active and it&#8217;s not a surprise. If you look at what the community has achieved around Flex since its creation, you&#8217;ll directly understand why Apache Flex will be successful. Macromedia, and then Adobe, defined Flex&#8217;s vision, launching and [...]]]></description>
			<content:encoded><![CDATA[<p>Flex is now an Apache project in incubation <em>(as PhoneGap under the name &#8216;Cordova&#8217;)</em>. The community is hyper-active and it&#8217;s not a surprise. If you look at what the community has achieved around Flex since its creation, you&#8217;ll directly understand why Apache Flex will be successful. Macromedia, and then Adobe, defined Flex&#8217;s vision, launching and promoting the concept of Rich Internet Applications. Basically, this trend promotes the development of &#8220;software-like&#8221; interfaces in web browsers. RIA can answer large organizations needs who want to migrate legacy client-server applications to a modern web architecture. That&#8217;s why the Flex community is so unique and developed very specific and valuable skills. In my opinion, the only serious competitor on that market is/was Microsoft with SilverLight: great technology combined with a huge community of software developers (VB, .Net, C++&#8230;). They even introduced the concept <em>(or the utopia)</em> or a seamless workflow between designers and developers with Blend. I guess that this healthy competition boosted the Spark architecture in Flex 4 <em>(and the birth of Flash Catalyst)</em>. JavaFX by Sun <em>(and then Oracle)</em> is also trying to embrace this market.</p>
<p>But today, the Flex community is by far the strongest one on the RIA market and it&#8217;s not only due to Adobe. Flex is still the first-choice to build RIA because it&#8217;s consistent and because&#8230; it works. You should all read <span style="color: #3366ff;"><a href="https://plus.google.com/109047477151984864676/posts/CVGJKLMMehs" target="_blank"><span style="color: #3366ff;">this fantastic article by Joao</span></a></span> <em>(RIA expert in Portugal)</em>. It&#8217;s also due to the fact that a lot of Flex developers were coming from various technical backgrounds: Java (mainly), PHP, AS3, .NET&#8230; And they tried to bring and translate their knowledge investing in areas not covered by Adobe&#8217;s engineers: data-visualization, backend integration, continuous integration, micro-architectures&#8230; As a tribute, I just wanted to summarize on one graph <em>(inspired by Michell Zappa)</em> some compelling projects developed by the community around Flex. All these projects are used by large organizations in strategic Enterprise applications. All these talents can now become official Flex contributors thanks to the Apache foundation. Flex is successful thanks to this constellation of talents, not thanks to Adobe.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/flexCommunity.png"><img class="alignnone  wp-image-923" title="flexCommunity" src="http://www.riagora.com/wp-content/uploads/2012/01/flexCommunity.png" alt="" width="570" /></a></p>
<p>Some projects are of course missing, I&#8217;m sorry for that, it&#8217;s not an exhaustive list; but this graph expresses all the efforts made by the community to make Flex a successful framework in a professional Enterprise environment. Just a few projects, such as BlazeDS, were initiated by Adobe on this map. Flex has been successful in the past thanks to the involvement of its vibrant community of talented developers&#8230; why would it change?  If you want to follow the Apache Flex project and get involved, check this page: <a href="http://incubator.apache.org/flex/" target="_blank">http://incubator.apache.org/flex/</a></p>
<p><em>Thanks to all the folks who helped me build this list on Google Docs.</em></p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2012/01/apache-flex-and-the-community/&text=Apache+Flex+and+the+community&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2012/01/apache-flex-and-the-community/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flex mobile and music apps</title>
		<link>http://www.riagora.com/2012/01/flex-mobile-and-music-apps/</link>
		<comments>http://www.riagora.com/2012/01/flex-mobile-and-music-apps/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 13:34:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Moods]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[radio x-track]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[web radio]]></category>
		<category><![CDATA[x-track]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=906</guid>
		<description><![CDATA[Flash (and then Flex) has always been the first choice technology for streaming audio content. I had the chance to work on a very cool mobile application for Radio X-Track. In this article, I&#8217;ll showcase this mobile app and share with you some tips on developping this type of application. As I was developing the [...]]]></description>
			<content:encoded><![CDATA[<p>Flash <em>(and then Flex)</em> has always been the first choice technology for streaming audio content. I had the chance to work on a very cool mobile application for Radio X-Track. In this article, I&#8217;ll showcase this mobile app and share with you some tips on developping this type of application. As I was developing the Radio X-Track mobile apps, <a href="http://www.ckti.com/" target="_blank">Christophe Keromen</a> presented to me another Flex mobile app developed for Mioozic, which I&#8217;ll also cover in this article. Lastly, I&#8217;ll end by presenting a very cool Flex mobile app named &#8220;What&#8217;s that track?&#8221;, a multiplayer music quiz game.</p>
<h2>Radio X-Track</h2>
<h3>UI considerations</h3>
<p>Radio X-Track is a great project led by true music lovers. DJs, painters, actresses and sound designers work together to publish creative playlists of music, covering various styles and  stimulating your eyes with massive paintings. The web radio is also a place for networking with music lovers. Once logged-in with your Facebook account, you can start chatting directly on the website. This arty space is directed by X-Track, a famous sound design studio in France. You can visit the web radio here: <a href="http://radio.x-track.net/EN/">http://radio.x-track.net/EN/</a></p>
<p>The development of the mobile application was challenging as the web radio is a Flash application connected to FMS. Thanks to the recent updates of Adobe AIR, I&#8217;ve been able to use Flex to stream the playlists on smartphones and tablets. First, I&#8217;ve decided to use <a href="http://www.riagora.com/2011/06/adaptive-ui-mobile-vs-tablet/" target="_blank">my adaptive layout technique</a> to code one UI and target both mobile and tablet screens. Here is a video that explains the trick. I&#8217;m playing with two view navigators that dynamically adapt their dimensions and their coordinates at runtime, depending on the screen resolution and the screen orientation.</p>
<p><iframe title="AdobeTV Video Player" src="http://tv.adobe.com/embed/64/11658/" frameborder="0" scrolling="no" width="480" height="296"></iframe></p>
<p>That&#8217;s why on Android, you have a very simple user experience. The first view is the list of DJs, the second view displays a scrollable picture, streams the playlist and displays the title of the song.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/androidRadioXtrack.jpg"><img class="alignnone size-full wp-image-910" title="androidRadioXtrack" src="http://www.riagora.com/wp-content/uploads/2012/01/androidRadioXtrack.jpg" alt="" width="570" height="259" /></a></p>
<p><em><strong>Here is the link to the Android application:</strong></em></p>
<p><a href="https://market.android.com/details?id=air.com.riagora.Xtrack" target="_blank">https://market.android.com/details?id=air.com.riagora.Xtrack</a></p>
<p>With Flex, you code one project and then can publish it on both Android and iOS. So I submitted this application to Apple.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/iphoneRadioXtrac.jpg"><img class="alignleft size-full wp-image-911" title="iphoneRadioXtrack" src="http://www.riagora.com/wp-content/uploads/2012/01/iphoneRadioXtrac.jpg" alt="" width="257" height="300" /></a>The App Store reviewers rejected the initial application for UI reasons. They told me that displaying a list and then a view could be done in the browser, and that it doesn&#8217;t justify the development of an application. They wanted me to develop the application using HTML5&#8230; well&#8230; live audio&#8230; html5&#8230; I had to consider a new strategy and worked on a totally different UI. I started studying the UI patterns of approved radio application and ended up with a new user experience. I&#8217;ve also added some features such as a twitter feed and the biographies of the artists. The application has been directly approved by Apple and is now available for iPhone and iPad users.</p>
<p><em><strong>Here is the link to the iOS application:</strong></em></p>
<p><a href="http://itunes.apple.com/fr/app/radio-x-track/id467964868?mt=8" target="_blank">http://itunes.apple.com/fr/app/radio-x-track/id467964868?mt=8</a></p>
<p>&nbsp;</p>
<h3>Some technical tips to manage audio content</h3>
<p>As the music is streamed by FMS, you can use the classic NetConnection and NetStream object of the Flash API. When the user wants to hear another playlist, I kill the current NetStream object and create a new one<em> (I keep in memory the NetConnection instance)</em>. FMS fires a RTMP message every time a new song is streamed. The client catches the message and displays the title of the song on the screen. The main challenge was to mimic the behavior of the iPod. If you shutdown the screen of your iPhone, or if you switch to another application, the radio is still supposed to stream audio. AIR 3 introduced a new feature to enable this behavior. At the end of the application descriptor of your Flex mobile application, you have a dedicated section for iPhone settings. You can set iOS keys such as <strong>UIApplicationExistsOnSuspend</strong>. All the iOS settings for Adobe AIR are <a href="http://help.adobe.com/en_US/air/build/WSfffb011ac560372f7e64a7f12cd2dd1867-8000.html" target="_blank">listed on this page</a>. In this case, I&#8217;m setting the UIBackgroundModes key to audio.</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;iPhone<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;InfoAdditions<span class="re2">&gt;</span></span></span><span class="sc2">&lt;![CDATA[</span>
<span class="sc2">			&lt;key&gt;UIDeviceFamily&lt;/key&gt;</span>
<span class="sc2">			&lt;array&gt;</span>
<span class="sc2">				&lt;string&gt;1&lt;/string&gt;</span>
&nbsp;
<span class="sc2">			&lt;/array&gt;</span>
<span class="sc2">			&lt;key&gt;UIBackgroundModes&lt;/key&gt;</span>
<span class="sc2">			&lt;array&gt;</span>
<span class="sc2">				&lt;string&gt;audio&lt;/string&gt;</span>
<span class="sc2">			&lt;/array&gt;</span>
<span class="sc2">		]]&gt;</span><span class="sc3"><span class="re1">&lt;/InfoAdditions<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;requestedDisplayResolution<span class="re2">&gt;</span></span></span>high<span class="sc3"><span class="re1">&lt;/requestedDisplayResolution<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/iPhone<span class="re2">&gt;</span></span></span></pre></div></div>
<p>Unfortunately, it won&#8217;t display the &#8220;play&#8221; icon in the status bar of iOS. I guess it would require the development of a native extension. Radio X-Track is a free application. Enjoy !</p>
<h2>Mioozic</h2>
<p>Mioozic is also a Flex mobile application available on both Android and iOS. You start by choosing a theme or a category, and it will start streaming music on your device. This Flex application has been developed by Christophe Keromen, the author of <a href="http://www.amazon.fr/Flex-4-5-pour-mobiles-multiplateformes/dp/2100567063/ref=ntt_at_ep_dpt_1" target="_blank">&#8220;Flex 4.5 for mobile devices&#8221;</a> (in French). It&#8217;s a great example of a high-performance Flex application running on smartphones.</p>
<p style="text-align: center;"><a href="http://www.riagora.com/wp-content/uploads/2012/01/mioozic.jpg"><img class="size-full wp-image-913 aligncenter" title="mioozic" src="http://www.riagora.com/wp-content/uploads/2012/01/mioozic.jpg" alt="" width="530" height="300" /></a></p>
<p>Mioozic on Android : <a href="https://market.android.com/details?id=air.netrix.air.mioozic" target="_blank">https://market.android.com/details?id=air.netrix.air.mioozic</a></p>
<p>Mioozix on the app store: <a href="http://itunes.apple.com/fr/app/mioozic/id479503574?mt=8" target="_blank">http://itunes.apple.com/fr/app/mioozic/id479503574?mt=8</a></p>
<h2>What&#8217;s that track</h2>
<p>This game developed by Orange Labs and Deezer is also a very cool Flex mobile application. It&#8217;s a quiz game. You can play alone or with friends. The goal is very basic: hear a song, tap the screen if you think that you know the artist, and select the correct artist in a list of four. It&#8217;s a very cool game with a nice 70s UI. It&#8217;s already a popular app on Android (only). Have fun.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/android-mioozic.jpg"><img class="alignnone size-full wp-image-915" title="android-mioozic" src="http://www.riagora.com/wp-content/uploads/2012/01/android-mioozic.jpg" alt="" width="530" height="300" /></a></p>
<p>What&#8217;s that track on Android: <a href="https://market.android.com/details?id=air.com.orange.labs.whatsthattrack&amp;hl=fr" target="_blank">https://market.android.com/details?id=air.com.orange.labs.whatsthattrack&amp;hl=fr</a></p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2012/01/flex-mobile-and-music-apps/&text=Flex+mobile+and+music+apps&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2012/01/flex-mobile-and-music-apps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GradleFx automated builds</title>
		<link>http://www.riagora.com/2011/12/gradlefx-automated-builds/</link>
		<comments>http://www.riagora.com/2011/12/gradlefx-automated-builds/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 01:02:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Interview]]></category>
		<category><![CDATA[Moods]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[automated build]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=898</guid>
		<description><![CDATA[I&#8217;ve just attended the Flex summit, a great event with 40 members of the Flex community. It was the opportunity to brainstorm about future contributions and it went very well. Some members of the community already posted great articles about what have been said. You can read this remarkable article by Adam Flater, another one by [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just attended the <span style="color: #0000ff;"><strong><a href="http://www.spoon.as/category/announcements/" target="_blank"><span style="color: #0000ff;">Flex summit</span></a></strong></span>, a great event with 40 members of the Flex community. It was the opportunity to brainstorm about future contributions and it went very well. Some members of the community already posted great articles about what have been said. You can read this <span style="color: #0000ff;"><a href="http://www.adamflater.net/2011/12/14/apache-flex-beginning/" target="_blank"><span style="color: #0000ff;">remarkable article</span></a></span> by Adam Flater, <span style="color: #0000ff;"><a href="http://www.peterelst.com/blog/2011/12/13/flex-summit-updates-on-the-open-source-strategy-and-runtimes/" target="_blank"><span style="color: #0000ff;">another one by Peter Elst</span></a></span>  and some <span style="color: #0000ff;"><a href="http://blog.nerdradio.com/tagged/Flex-Community-Summit" target="_blank"><span style="color: #0000ff;">great interviews on Nerd Radio</span></a></span>. I&#8217;m very confident in the future of Flex because of the level of maturity of our community, and also because it&#8217;s a passionate one. To showcase this excitement, I&#8217;m working on a graph that will express all the work already done by the community. I&#8217;m currently listing several major community projects in a Google Doc. If you want to review this document and add comments, <span style="color: #0000ff;"><a href="https://docs.google.com/document/d/1V8kP5eT22oK2Jwd2Zrn_vmcJ5MIoRB6vcxj-kfLSfnk/edit" target="_blank"><span style="color: #0000ff;">feel free to review this document</span></a></span>.</p>
<p><strong>We are looking for committers!!!</strong> If you want to participate in the success of Apache Flex, <span style="color: #0000ff;"><a href="http://blogs.adobe.com/flex/2011/12/call-for-committers.html" target="_blank"><span style="color: #0000ff;">check this blog post</span></a></span>. Yennick is one of these talented Flex developers who could become Apache Flex committers. He&#8217;s the project leader of GradleFx. I met him in Belgium during the Devoxx conference and he has been kind enough to accept an interview.</p>
<p><strong>&#8220;Hi Yennick, can you introduce yourself, your background and your relationship with Flex:&#8221;</strong></p>
<p><a href="http://www.riagora.com/wp-content/uploads/2011/12/2011new-058.jpeg"><img class="size-thumbnail wp-image-901 alignleft" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px; margin: 5px;" title="2011new-058" src="http://www.riagora.com/wp-content/uploads/2011/12/2011new-058-150x150.jpg" alt="" width="150" height="150" /></a>Hi, my name is Yennick Trevels and together with Steven Dick I started the GradleFx plugin. I work as a RIA Consultant at iDA MediaFoundry in Belgium where I do most of my projects in Java and Flex <em>(desktop, web, mobile, &#8230;)</em>.</p>
<p>I started out as a Java developer for 3 years, but soon found out that I wanted to focus on frontend development and that&#8217;s how I got started with Flex. Flex has been somewhat of a passion for me now because it allows me to create good looking applications with lots of custom components and there are still a lot of oppertunities to create libraries which make our lives easier.</p>
<p><strong>&#8220;GradleFx is a Gradle plugin. Can you explain us what Gradle is and who is using it today?&#8221;</strong></p>
<p>Gradle is a new build tool which combines the best features of Ant and Maven and leaves the bad things behind. It has dependency management, convention-over-configuration, multi-project support and lot&#8217;s of other cool features. Build scripts are written in Groovy where you have access to the Gradle API, which gives your build scripts a lot of flexibility.</p>
<p>Lots of plugins are already available for Gradle, like the Java plugin, Maven plugin, Eclipse &amp; Intellij plugins, Sonar plugin etc. These plugins make your build scripts a lot easier because most of the time the only thing you have to do is configure some variables. So build script in Gradle are shorter/easier and more flexible than Maven or Ant build scripts.</p>
<p>GradleFx uses these same principles because it&#8217;s a plugin for Gradle.</p>
<p><strong>&#8220;Then I guess that GradleFx is just an extension for building Flex applications. How does it work and what do I need to make it run?&#8221;</strong></p>
<p>GradleFx is indeed a plugin to build Flex applications.</p>
<p>First you&#8217;ll need to install the Gradle and Flex SDK, add the Gradle bin directory to your PATH environment variable and create a FLEX_HOME environment variable which points to your Flex SDK. Once you have these setup you can start to write your build script (in a build.gradle file). You don&#8217;t have to manually download GradleFx because it&#8217;s available on the Maven Central repository, so just specify it as a dependency for your build script and apply the plugin, that&#8217;s it.</p>
<p><strong>&#8220;What are the features that the GradleFx plugin adds to Gradle.&#8221;</strong></p>
<p>Right now the plugin has tasks to compile SWC, SWF and AIR projects, clean the build directory, copy your resources to the build directory, create an html wrapper and run FlexUnit tests.</p>
<p><strong>&#8220;Automated builds are more and more strategic in our industry and most of the Flex projects are industrialized. In your opinion, what are the key differentiators of GradleFx compared to Ant or Maven for instance?&#8221;</strong></p>
<p>Because GradleFx uses convention-over-configuration and builds scripts are written in Groovy your average build script will be a lot shorter and easier to read.</p>
<p>Another big advantage is the flexibility that Groovy offers, if you need to perform some custom functionality that isn&#8217;t available yet in any plugin then it&#8217;s much easier to write this yourself compared to Ant or Maven. Simple tasks like copying some files can be added in just a few lines of code.</p>
<p>GradleFx can use Ivy or Maven repositories to get its dependencies so you don&#8217;t need a separate repository for your existing Maven or Ant based build scripts.</p>
<p><strong>&#8220;Can you share with us a sample to manage several project and comment the code?&#8221;</strong></p>
<p>Ok, I&#8217;ll show you an example of a multi-project build which uses all the conventions provided by GradleFx.</p>
<p>This is the build script of the parent project and these settings are used by all sub-projects. This project doesn&#8217;t compile to a SWC or SWF.</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="groovy" style="font-family:monospace;"><span class="co1">//specify the GradleFx plugin as a dependency for this build script. Maven Central will be used to get it.</span>
buildscript <span class="br0">&#123;</span>
	repositories <span class="br0">&#123;</span>
		mavenCentral<span class="br0">&#40;</span><span class="br0">&#41;</span>
	<span class="br0">&#125;</span>
	dependencies <span class="br0">&#123;</span>
		classpath group: <span class="st0">'org.gradlefx'</span>, name: <span class="st0">'gradlefx'</span>, version: <span class="st0">'0.3.2'</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">//specify settings common to all subprojects</span>
subprojects <span class="br0">&#123;</span>
&nbsp;
	<span class="co1">//apply the GradleFx plugin to this project</span>
	apply plugin: <span class="st0">'gradlefx'</span>
&nbsp;
	version <span class="sy0">=</span> <span class="st0">'1.0-SNAPSHOT'</span>
&nbsp;
	<span class="co1">//define the repositories from which the project dependencies</span>
	<span class="co1">//should be downloaded</span>
    	repositories <span class="br0">&#123;</span>
        		mavenCentral<span class="br0">&#40;</span><span class="br0">&#41;</span>
        		mavenRepo name: <span class="st0">'yoolab-releases'</span>,      url: <span class="st0">&quot;http://projects.yoolab.org/maven/content/repositories/releases&quot;</span>
        		mavenRepo name: <span class="st0">'yoolab-snapshots'</span>,     url: <span class="st0">&quot;http://projects.yoolab.org/maven/content/repositories/snapshots&quot;</span>
    	<span class="br0">&#125;</span>
&nbsp;
	<span class="co1">// specify the project dependencies. Notice the 'external' marker,</span>
	<span class="co1">// which means that the library will not be compiled in the</span>
	<span class="co1">// swc of the subprojects</span>
   	dependencies <span class="br0">&#123;</span>
        		external group: <span class="st0">'org.as3commons'</span>, name: <span class="st0">'as3commons-collections'</span>,
			version: <span class="st0">'1.1'</span>, ext: <span class="st0">'swc'</span>
        		external group: <span class="st0">'org.as3commons'</span>, name: <span class="st0">'as3commons-lang'</span>,
			version: <span class="st0">'0.3.2'</span>, ext: <span class="st0">'swc'</span>
    	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Then we have the build script of a library subproject which will compile to a SWC.</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="groovy" style="font-family:monospace;"><span class="co1">//specify the type of flex project</span>
type <span class="sy0">=</span> <span class="st0">'swc'</span>
&nbsp;
dependencies <span class="br0">&#123;</span>
	<span class="co1">// specifies a dependency to another subproject. This will compile</span>
	<span class="co1">// the other project before compiling this one and use its</span>
	<span class="co1">// compiled SWC in this project.</span>
	external project<span class="br0">&#40;</span><span class="st0">':util'</span><span class="br0">&#41;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>And finally we have the build script of the application project which compiles to a SWF.</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="groovy" style="font-family:monospace;"><span class="co1">//specify the type of flex project</span>
type <span class="sy0">=</span> <span class="st0">'swf'</span>
&nbsp;
dependencies <span class="br0">&#123;</span>
	<span class="co1">// specify two dependencies to library projects. These will be compiled</span>
	<span class="co1">// into the SWF file since they belong to the &quot;merged&quot; configuration.</span>
	merged project<span class="br0">&#40;</span><span class="st0">':util'</span><span class="br0">&#41;</span>
	merged project<span class="br0">&#40;</span><span class="st0">':domain'</span><span class="br0">&#41;</span>
&nbsp;
	<span class="co1">//override the dependencies specified in the parent project so they</span>
	<span class="co1">//use the &quot;merged&quot; configuration</span>
	merged group: <span class="st0">'org.as3commons'</span>, name: <span class="st0">'as3commons-collections'</span>,
		version: as3commons_collections_version, ext: <span class="st0">'swc'</span>
	merged group: <span class="st0">'org.as3commons'</span>, name: <span class="st0">'as3commons-lang'</span>,
		version: as3commons_lang_version, ext: <span class="st0">'swc'</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">// add another source directory for the locale files. The srcDirs property is a</span>
<span class="co1">// GradleFx property which by default has the value ['src/main/actionscript']. This</span>
<span class="co1">// is the directory where you need to put your actionscript and mxml files.</span>
srcDirs.<span class="me1">add</span><span class="br0">&#40;</span><span class="st0">'src/main/locales/{locale}'</span><span class="br0">&#41;</span>
&nbsp;
additionalCompilerOptions <span class="sy0">=</span> <span class="br0">&#91;</span>
		<span class="st0">'-locale=en_US'</span>
<span class="br0">&#93;</span></pre></div></div>
<p>That&#8217;s it for this example. You can find more examples in our GradleFx examples repository: <a href="https://github.com/GradleFx/GradleFx-Examples">https://github.com/GradleFx/GradleFx-Examples</a></p>
<p><strong>&#8220;What are you working on and what will be the next features of GradleFx?&#8221;</strong></p>
<p>I just released version 0.4 which contains support for AIR projects.</p>
<p>Upcoming features are mobile projects support, project file generation for Eclipse and Intellij IDEA, automatic downloading of the Flex SDK and AS3Doc generation.</p>
<p><strong>&#8220;GradleFx is open-source. How can we contribute?&#8221;</strong></p>
<p>You can contribute in a number of ways.</p>
<p>One is by trying out the project and giving feedback on our support forum and/or log issues in our issue tracker on Github.  Or if you feel some documentation is missing, feel free to add it to our wiki on Github (or just tell us so we can add it). It&#8217;s the feedback that we get that also makes this project better and we always try to do something with it.</p>
<p>Another way is by forking the project on GitHub, add a feature or improve the code and apply a &#8220;pull request&#8221;. Then we can integrate those changes and put them in an official release.</p>
<p><strong>&#8220;How do we know when a new version of GradleFx is released?&#8221;</strong></p>
<p>You can follow me or Steven on twitter, this is where we announce all things related to GradleFx.<br />
Yennick: @SlevinBE<br />
Steven: @stevendick</p>
<p>Some useful links to get started:</p>
<ul>
<li>Site: <a href="http://gradlefx.github.com/">http://gradlefx.github.com/</a></li>
<li>Documentation: <a href="https://github.com/GradleFx/GradleFx/wiki">https://github.com/GradleFx/GradleFx/wiki</a></li>
<li>Examples: <a href="https://github.com/GradleFx/GradleFx-Examples">https://github.com/GradleFx/GradleFx-Examples</a></li>
<li>Help &amp; Support: <a href="http://gradlefx.tenderapp.com/home">http://gradlefx.tenderapp.com/home</a></li>
<li>Bug Tracking: <a href="https://github.com/GradleFx/GradleFx/issues">https://github.com/GradleFx/GradleFx/issues</a></li>
<li>Changelog: <a href="https://github.com/GradleFx/GradleFx/blob/master/CHANGELOG.textile">https://github.com/GradleFx/GradleFx/blob/master/CHANGELOG.textile</a></li>
</ul>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/12/gradlefx-automated-builds/&text=GradleFx+automated+builds&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/12/gradlefx-automated-builds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Game of Flex&#8221; on tablets</title>
		<link>http://www.riagora.com/2011/12/game-of-flex-on-tablets/</link>
		<comments>http://www.riagora.com/2011/12/game-of-flex-on-tablets/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 12:23:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[flexorg]]></category>
		<category><![CDATA[game of flex]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[playbook]]></category>
		<category><![CDATA[samples]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=881</guid>
		<description><![CDATA[I&#8217;m very happy to announce that &#8220;Game of Flex&#8221; is available for iPad and Android tablets users (it will be soon available for BlackBerry PlayBook users). Last week, we released Flex 4.6 with great additions to build cross-platform tablet applications. &#8220;Game of Flex&#8221; is a game built with Flex 4.6 and inspired by Tour de [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very happy to announce that <strong>&#8220;Game of Flex&#8221;</strong> is available for iPad and Android tablets users <em>(it will be soon available for BlackBerry PlayBook users)</em>. Last week, we released Flex 4.6 with great additions to build cross-platform tablet applications. &#8220;Game of Flex&#8221; is a game built with Flex 4.6 and inspired by Tour de Mobile Flex. As you may know, Tour de Mobile Flex has never been available on the App Store. Let me tell you why: the application has been rejected by Apple because it&#8217;s a demo application which violates the developer guidelines. That&#8217;s why I had to find another way to showcase Flex on iOS devices using&#8230; a game! Gamification is so trendy that it worked! It has been directly approved by Apple. It&#8217;s actually a quiz with 16 questions, and it&#8217;s a real game, which means that if you correctly answer all the questions, you get a chance to win a copy of Flash Builder 4.6!!!</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2011/12/screenshotRiagora.png"><img class="aligncenter size-full wp-image-882" title="screenshotRiagora" src="http://www.riagora.com/wp-content/uploads/2011/12/screenshotRiagora.png" alt="" width="570" height="356" /></a></p>
<p>&#8220;Game of Flex&#8221; is not just a game, it&#8217;s also a great way for us to <strong>showcase the great performance of Flex</strong> on tablet devices, and for you to discover the new components and features of our latest release of Flex! Indeed, Game of Flex is also a learning tool. At anytime, you can click on the &#8220;Snippet&#8221; button and read the source code of the current sample. You can also click on &#8220;Tutorial&#8221; to read an online tutorial about the current sample.</p>
<h3>Download the game and the source code</h3>
<p><a href="https://market.android.com/details?id=air.com.riagora.flexgame" target="_blank"><img class="size-full wp-image-883 alignnone" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px; margin: 0px;" title="dlAndroid" src="http://www.riagora.com/wp-content/uploads/2011/12/dlAndroid.png" alt="" width="205" height="269" /></a><a href="http://itunes.apple.com/us/app/game-of-flex/id483389384" target="_blank"><img class="alignnone size-full wp-image-884" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px; margin: 0px;" title="dlIpad" src="http://www.riagora.com/wp-content/uploads/2011/12/dlIpad.png" alt="" width="190" height="269" /></a><img class="alignnone size-full wp-image-885" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px; margin: 0px;" title="dlPlaybook" src="http://www.riagora.com/wp-content/uploads/2011/12/dlPlaybook.png" alt="" width="150" /></p>
<p>The direct links to the application are:</p>
<p><strong>Android tablets: </strong><a href="https://market.android.com/details?id=air.com.riagora.flexgame" target="_blank">https://market.android.com/details?id=air.com.riagora.flexgame<br />
</a><strong>iPad:</strong> <a href="http://itunes.apple.com/us/app/game-of-flex/id483389384?ls=1&amp;mt=8" target="_blank">http://itunes.apple.com/us/app/game-of-flex/id483389384<br />
</a><strong>BlackBerry Playbook:</strong> soon</p>
<p>You can also download the source code of the application. Install Flash Builder 4.6 and import this Flash Builder Project (FXP file): <a href="http://riagora.com/pvt_content/flexgame/FlexGame-source.fxp" target="_blank">FLEXGAME.FXP</a></p>
<p>&nbsp;</p>
<h3>Some tips inside the code</h3>
<p>If you want to check the source code of the app, you&#8217;ll learn&#8230;:</p>
<ul>
<li>How to use the new SplitViewNavigator architecture (portrait and landscape layouts on tablet devices)</li>
<li>How to display HTML content inside a Flex app</li>
<li>How to access the camera to take pictures</li>
<li>How to use the BusyIndicator, ToggleSwitch and List components</li>
<li>How to enable multi-touch</li>
<li>How to manage your views</li>
<li>How to use the accelerometer</li>
<li>How to create custom AS3 item renderers for your lists</li>
<li>How to access the local SQLite database</li>
<li>How to use native extensions</li>
<li>How to set up the new DateSpinner component</li>
<li>How to display callout popups</li>
<li>How to set up the software keyboard to match your needs</li>
<li>How to declare spinner lists</li>
</ul>
<div>Have fun !!!</div>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/12/game-of-flex-on-tablets/&text=%E2%80%9CGame+of+Flex%E2%80%9D+on+tablets&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/12/game-of-flex-on-tablets/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Flex 4.6 is out!</title>
		<link>http://www.riagora.com/2011/11/flex-4-6-is-out/</link>
		<comments>http://www.riagora.com/2011/11/flex-4-6-is-out/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 15:08:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[4.6]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[native extensions]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=872</guid>
		<description><![CDATA[The Flex 4.6 SDK is available for download here. If you are using Flash Builder 4.5, download and upgrade your IDE for free. You can download Flash Builder 4.6 here. Since Flex 4.5, you can develop desktop AND mobile applications with a native experience on iOS, Android and BlackBerry devices. Flex mobile applications aim to perform [...]]]></description>
			<content:encoded><![CDATA[<p>The Flex 4.6 SDK is available for <span style="color: #0000ff;"><a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flexsdk" target="_blank"><span style="color: #0000ff;">download here</span></a></span>. If you are using Flash Builder 4.5, download and upgrade your IDE <strong>for free</strong>. You can <span style="color: #0000ff;"><a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash_builder" target="_blank"><span style="color: #0000ff;">download Flash Builder 4.6 here</span></a></span>. Since Flex 4.5, you can develop desktop AND mobile applications with a native experience on iOS, Android and BlackBerry devices. Flex mobile applications aim to perform and look like native applications. The new features of Flex 4.6 will help you to achieve great performance and experience. If you take your existing Flex 4.5 mobile project and recompile it with Flex 4.6, you should feel great performance improvements, especially with scrolling lists and transitions between views. But the Flex SDK team also worked on new components. Here are the list of some new features available in Flex 4.6 and Flash Builder 4.6:</p>
<h2>New set of mobile components</h2>
<p>Tablet devices are incredibly successful. The Apple iPad introduced new ways to structure applications and new user interactions. The new set of components available in Flex 4.6 is inspired by classic tablet applications. As you&#8217;re targeting a larger screen than a smartphone, you need to review your UI navigation. I&#8217;ve already shared some thoughts on this in my <span style="color: #0000ff;"><a href="http://www.riagora.com/2011/06/adaptive-ui-mobile-vs-tablet/" target="_blank"><span style="color: #0000ff;">post named &#8220;Adaptive UI&#8221;</span></a></span>. Thanks to the new SplitViewNavigator, you can manage the layout of multiple views. The &#8216;Adaptive UI&#8217; is managed by the component and is based on the device orientation.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2011/11/adaptiveSplit.png"><img class="aligncenter size-full wp-image-873" title="adaptiveSplit" src="http://www.riagora.com/wp-content/uploads/2011/11/adaptiveSplit.png" alt="" width="550" height="302" /></a></p>
<p>How to use SpitViewNavigator:</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="mxml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;s:SplitViewNavigator</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span> id=<span class="st0">&quot;splitViewNavigator&quot;</span> autoHideFirstViewNavigator=<span class="st0">&quot;true&quot;</span><span class="re2">&gt;</span></span>
		<span class="sc3"><span class="re1">&lt;s:ViewNavigator</span> id=<span class="st0">&quot;vnList&quot;</span> firstView=<span class="st0">&quot;views.ListQuestions&quot;</span> width=<span class="st0">&quot;300&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">/&gt;</span></span>
		<span class="sc3"><span class="re1">&lt;s:ViewNavigator</span> id=<span class="st0">&quot;vnFull&quot;</span> firstView=<span class="st0">&quot;views.FullView&quot;</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
&nbsp;
			<span class="sc3"><span class="re1">&lt;s:actionContent</span>.portrait<span class="re2">&gt;</span></span>
				<span class="sc3"><span class="re1">&lt;s:Button</span> id=<span class="st0">&quot;navigatorButton&quot;</span>   label=<span class="st0">&quot;Show questions&quot;</span> click=<span class="st0">&quot;splitViewNavigator.showFirstViewNavigatorInPopUp(navigatorButton)&quot;</span> <span class="re2">/&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;/s:actionContent</span>.portrait<span class="re2">&gt;</span></span>
		<span class="sc3"><span class="re1">&lt;/s:ViewNavigator</span><span class="re2">&gt;</span></span>
	<span class="sc3"><span class="re1">&lt;/s:SplitViewNavigator</span><span class="re2">&gt;</span></span></pre></div></div>
<p>More components are also available and directly inspired from iOS applications: the CallOutButton (popup related to a component), the SpinnerList, the ToggleSwitch and the famous DateSpinner.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2011/11/compo.png"><img class="aligncenter size-full wp-image-874" title="compo" src="http://www.riagora.com/wp-content/uploads/2011/11/compo.png" alt="" width="550" height="175" /></a></p>
<h2>Soft keyboard parameters</h2>
<p>You can easily enhance the behavior of your soft keyboard. If you&#8217;re building a form, with a text input field that is waiting for a phone number, then you can modify the look of your mobile/tablet soft keyboard to display numbers only. You can also customize the label of the &#8220;return&#8221; key on the soft keyboard (and display &#8220;Join&#8221;, &#8220;Go&#8221; or &#8220;Search&#8221; for example). It&#8217;s a very nice feature <a href="http://devgirl.org/2011/11/29/flex-mobile-development-flex-4-6-cool-new-soft-keyboard-features-sample-w-source/" target="_blank">detailed by Holly in this post</a>.</p>
<p>You can set different values for the softKeyboardType property: number, email, punctuation, url, contact or default. For instance, to display numbers on the keyboard, just add a parameter to your TextInput component:</p>
<p><code> </code><code>&lt;</code><code>s:TextInput</code> <code>softKeyboardType</code><code>=</code><code>"number"</code> <code>width</code><code>=</code><code>"180"</code><code>/&gt;</code></p>
<p><a href="http://www.riagora.com/wp-content/uploads/2011/11/number-keyboard.png"><img class="aligncenter size-full wp-image-875" title="number-keyboard" src="http://www.riagora.com/wp-content/uploads/2011/11/number-keyboard.png" alt="" width="500" height="333" /></a></p>
<h2>AIR 3, native extensions and captive runtime</h2>
<p>Air 3.1 is attached to Flex 4.6 developments. It means that you can easily embed ActionScript Native Extensions within your Flex mobile project. ANE are a bridge between your Flex mobile app and a native library that can extend the capabilities of the Flex SDK. A <span style="color: #0000ff;"><a href="http://www.adobe.com/devnet/air/native-extensions-for-air.html" target="_blank"><span style="color: #0000ff;">list of native extensions are available on adobe.com </span></a></span>such as the Gyroscope API, Vibration, Notification, Kinnect&#8230; To import an ActionScript Native Extension within your project, just open the new tab in Flash Builder 4.6 dedicated to ANE.</p>
<p style="text-align: center;"><a href="http://www.riagora.com/wp-content/uploads/2011/11/Screen-shot-2011-11-30-at-3.46.22-PM1.png"><img class="aligncenter size-full wp-image-877" title="Screen shot 2011-11-30 at 3.46.22 PM" src="http://www.riagora.com/wp-content/uploads/2011/11/Screen-shot-2011-11-30-at-3.46.22-PM1.png" alt="" width="550" /></a></p>
<p>Remember that you can also use the new captive runtime option while packaging a mobile application OR a desktop application. It will create a standalone application that is embedding the AIR runtime. On the desktop, it means that you can actually copy your application on a USB stick and launch it without administration rights! It&#8217;s a fantastic new way for deploying AIR apps. On mobile devices, we were already using this technic on iOS. Now you can use the same technic on Android and generate an .apk file that will embed a specific version of the AIR runtime.</p>
<h2>Test Flex 4.6 apps on your device</h2>
<p>There are already some Flex 4.6 apps available on the Android Market and on the App Store. If you have an iPhone, you can download the free music application called <span style="color: #0000ff;"><a href="http://itunes.apple.com/tw/app/radio-x-track/id467964868?mt=8" target="_blank"><span style="color: #0000ff;">&#8220;Radio X-track&#8221;</span></a></span>. It&#8217;s a Flex 4.6 app I&#8217;ve been working on, I&#8217;ll share more information about this app soon on this blog. <span style="color: #0000ff;"><a href="http://itunes.apple.com/us/app/narcissus/id472974421?mt=8" target="_blank"><span style="color: #0000ff;">Narcissus</span></a></span> is also compiled with Flex 4.6 by the way and offers great performance on iPad tablets. Christophe and Holly shared <span style="color: #0000ff;"><a href="http://devgirl.org/2011/10/31/flex-mobile-development-building-tablet-apps-full-example-with-source-code/" target="_blank"><span style="color: #0000ff;">an open-source tablet application</span></a></span> to manage your expenses.I&#8217;ve also been working on a Flex 4.6 application for tablet users and Flex developers&#8230; This application is already secretly available on the Android Market but the app is still &#8220;in review&#8221; on the app store. As soon as it&#8217;s available for both iPad and Android tablets, I&#8217;ll showcase this application. More to come&#8230;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/11/flex-4-6-is-out/&text=Flex+4.6+is+out%21&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/11/flex-4-6-is-out/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Flexcursion with Apache</title>
		<link>http://www.riagora.com/2011/11/flex-is-open/</link>
		<comments>http://www.riagora.com/2011/11/flex-is-open/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 16:59:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Moods]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[falcon]]></category>
		<category><![CDATA[falconjs]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=857</guid>
		<description><![CDATA[What a week! Adobe made a lot of announcements which raised a lot of questions on the web, and led to a lot of WTF (which meant&#8221;What The Flex&#8221; right?). I feel that since MAX, the Flex community was expecting some clarification about the future of Flex. The strategic shift made by Adobe precipitated our [...]]]></description>
			<content:encoded><![CDATA[<p>What a week! Adobe made a lot of announcements which raised a lot of questions on the web, and led to a lot of WTF <em>(which meant&#8221;What The Flex&#8221; right?)</em>. I feel that since MAX, the Flex community was expecting some clarification about the future of Flex. The strategic shift made by Adobe precipitated our communication to unveil the overall plan. Unfortunately, it has been shared in the middle of a wave of changes <em>(the lay-off, the Flash mobile story, the HTML5 commitment&#8230;)</em>. There was a lot of misunderstanding, so let me give you <strong>my personal opinion</strong> on this as a Flex developer and as an Adobe Evangelist. First, here is the official article that provides details about the future of Flex: <span style="color: #3366ff;"><a href="http://www.adobe.com/devnet/flex/articles/flex-announcements.html" target="_blank"><span style="color: #3366ff;">http://www.adobe.com/devnet/flex/articles/flex-announcements.html</span></a> </span></p>
<h2>The evolution of Flex</h2>
<p>This is a fairly long post, if you don’t have time to read it all right now, you may want to skip directly to What’s next for Flex. I&#8217;m French, I talk too much, and I&#8217;m not Victor Hugo&#8230; Whatever <img src='http://www.riagora.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So feel free to skip this paragraph to focus on our future. But the history of Flex might help you understanding the difference between our past strategy and the new one.</p>
<p>Flex 1 was released in 2004. To develop and deploy a Flex app, you had to use a 15000$ server. I remember that I started looking at Flex 1.5 in 2005 at my previous company. Because of this economic model, I didn&#8217;t even try to develop a prototype. Then, after the acquisition of Macromedia, Flex 2 was launched with a free business model and an IDE based on Eclipse. It was 2006, when I started coding Flex projects and when I joined Adobe to promote this technology. In 2007, Flex 3 was open-sourced under the MPL license. Flex 4 introduced the Spark architecture that lets you skin visual components very easily and with a lot of freedom. Thanks to Flex 4.5.1 (and soon Flex 4.6) you can build &#8220;native-like&#8221; mobile apps and deploy them on Android, iOS and QNX. So what&#8217;s next?</p>
<p>I&#8217;m very close to the Java and the PHP community <em>(I&#8217;m currently writing this post from the fantastic DEVOXX conference with 3200 Java developers around me)</em>. When we used to present Flex as an open-source technology, it was more a &#8220;you can view my source&#8221; one. That was a huge step, and it helped our community to understand how the framework works. After a few months, it also generated some frustration. Flex developers and strategic customers who are Flex masters wanted to contribute actively, optimize the code, etc&#8230; Some of them even started their own branches. The Spoon project is the expression of this will and the expression of our lack of efficiency in accepting contributions, which I think was because Flex was perceived and promoted as a product. What I want to express is that we were defining the new Flex features on our side, to (somewhat) surprise our community and generate excitement. It was of course based on customer and user feedback, but then the new features were only shared during main conferences <em>(360Flex or MAX for instance)</em>, and this was related sometimes to our product strategy. And this system works very well to spur adoption and generate a lot of excitement: Flex is very successful in the Enterprise today thanks to this strategy.</p>
<h2>What&#8217;s next for Flex ?</h2>
<p>At the same time, HTML5 is moving very very fast &#8212; faster than most anyone would have predicted two years ago. This is mainly due to the success of the iPad. That&#8217;s why Adobe believes that within 3 to 5 years, depending on the complexity of your RIA, HTML5 should be able to enable decent Enterprise Application user experiences for desktop users, associated with a professional coding experience. What I would add, as an Enterprise consultant, is that we can easily add 2 or 3 years to this period of time. A significant part of the Enterprise customers I&#8217;m interacting with are still running on Windows XP. This is a reflection of the tempo of the Enterprise world that cannot be synced with the outside world for security, maintenance, training, and auditing reasons. So even if HTML5 integrates some key RIA concepts within 5 years, it means that browsers still have to implement them and that companies need to update to a recent browser&#8230; well, you know the story.</p>
<p>Flex is and will remain the leading framework for first-class Enterprise applications for many years. And by the way, don&#8217;t be scared. We&#8217;re not blind and we must accept the fact that HTML5 is making fantastic progress. That&#8217;s GREAT! And our community has A LOT of time to anticipate this shift and make the most of this transition. Adobe won&#8217;t let you down. We&#8217;ll contribute to open standards, and at the same time, Adobe, starting with my team, will make sure that you&#8217;ll make it through &#8212; and even thrive during &#8212; any shift in our industry. Don&#8217;t worry, if HTML5 becomes the standard for RIA apps, then the best HTML5 RIA developers of tomorrow will be today&#8217;s Flex developers. Why? Because RIA development is not just a matter of language. RIA developers have a lot of specific skills<em> (design awareness, client-side architectures, service exposure architecture, user-experience, mobile applications conception and optimization to name a few)</em>. You have a unique knowledge of the market that goes beyond knowing a technology inside and out. Adobe is already a key player in the HTML industry, and we&#8217;ll deliver more and more advanced tools and technologies (you can already look at PhoneGap, Edge&#8230;).</p>
<p>That&#8217;s why we need to define the best strategy for the Flex framework and establish it as an Enterprise standard today! There are two options. The first option is to invest in more new features and hire more engineers on the Flex SDK team. For the long term, I don&#8217;t believe in this strategy. It&#8217;s the traditional way to proceed for software products but not for application development frameworks. The more committed and talented developers you have in the community, the more you need to let them interact with the source code of your technology. The more you have mission critical Flex apps deployed in large organizations, the more strategic customers need to trust the future of your technology. Open source can fulfill these needs. We all know that Flex is deeply linked to the Flash Player which boosted the innovation on the web, and then, consequently, in Rich Internet Applications. I believe that the Flex framework is very mature in terms of features and can answer pretty much all the current Enterprise needs. It can also answer  future needs as we can now rapidly build native apps for iOS, Android and QNX since Flex 4.5.</p>
<p>The second option is to consolidate the current SDK and transition to the next level of openness. That&#8217;s why we decided to propose incubating the Flex SDK to the Apache Software Foundation. I&#8217;m very happy and excited about this move for several reasons:</p>
<ul>
<li>Apache is a very respected foundation by developers and by large organizations. A lot of mission-critical Enterprise applications are already relying on Apache software: Axis, Ant, Maven, JackRabbit, Tomcat, Geronimo, ActiveMQ, Felix&#8230;</li>
<li>We are not only proposing the Flex SDK, we&#8217;re also pushing BlazeDS <em>(Java server libraries for data serialization and real-time messaging)</em>. In 2012, we&#8217;ll propose Falcon, a new generation compiler. We&#8217;ll also unveil and propose FalconJS, an experimental and advanced Flex to JavaScript compiler. More projects may also be proposed to Apache to build a first-class open Enterprise RIA stack.</li>
<li>For the first time, Adobe won&#8217;t be the sole influencer on the Flex roadmap. We&#8217;ll still have engineers working on it but the effort will also be advanced directly by work of top Flex developers in the community <em>(join the Spoon project if you&#8217;re one of them)</em>.</li>
</ul>
<div>
<h2>So Flex or HTML5 ?</h2>
<p>I&#8217;ve been working on Rich Enterprise applications for more than 6 years and I can tell you that it requires a lot of different skills and specialized knowledge. RIA developers, and especially Flex developers, know how complex it is to combine an efficient user experience with a maintainable client architecture. Flex is really the only cross-platform solutions on the desktop for rich applications. Today, 90% of Flex applications are internal apps <em>(statistics from what I see on the field)</em> available on the intranet and on the extranet to share the screens with external partners or customers. Flex apps won&#8217;t run in mobile browsers as Apple and MSFT don&#8217;t host plugins on their tablets<em> (we&#8217;re still waiting for the MSFT one by the way)</em> and as Adobe announced its intent to discontinue Flash in mobile browsers. Thanks to this decision, Adobe engineers are now focusing on Adobe AIR, the runtime that can execute and package your Flex applications as native iOS, Android and QNX (BlackBerry) apps. With the arrival of Flex 4.6 at the end of November, Flex apps will perform even better to deliver &#8220;native-like&#8221; experiences on smartphones and tablet devices. So what&#8217;s the market for Flex? Well it&#8217;s huge because we are focusing on Enterprise apps and not on Customer apps, we&#8217;re focusing on Enterprise data-driven apps, on rebranding and re-architecting existing Enterprise apps developed with Web 1.0 technologies or even client-server ones. That&#8217;s a growing market in all industries. Tablets will accelerate this need of user-oriented architectures, because if you deliver a bad user experience on tablets, you&#8217;ll immediately fail. The potential of RIA for desktop and tablet users is higher than ever because it unlocks ROI <em>(increase the productivity of your company, improve the decision making processes, reduce the learning curve and then the training costs for employees&#8230;)</em>. I know that today you&#8217;ll hear a lot of people talking about the growing role of tablet devices in our daily life, that tablets will replace PCs, etc&#8230; Who cannot agree? I&#8217;d like just to add that the Enterprise world is evolving at a different tempo. Believe me, you won&#8217;t see large organizations replacing all PCs by tablets next year. If it happens and if it makes sense, it will take years, maybe decades. Desktop users will still represent the main population of Enterprise apps end users for a very long time. With Flex, you can already target 100% of your desktop users without migrating to a new operating system or a new browser, and you can target 99% of tablet devices as you can now generate iOS and Android native apps.</p>
<p>This is regarding the market for Flex, but there&#8217;s also the &#8220;developer experience&#8221;. Flex has been designed for Enterprise developers who are used to working with object-oriented languages like Java, first-class debugging experiences (on the desktop and on mobile devices), continuous integration, agile development, modular applications managed by several development teams, productive tools based on Enterprise standard IDEs like Eclipse, etc&#8230; It&#8217;s by far the best and the most efficient coding experience on the market and that&#8217;s not trivial. Before developing a mission-critical application, you have to measure/estimate the development time. Flex is usually way faster than other solutions, for a better result at the end. That&#8217;s why it&#8217;s considered the leading RIA framework on the market. So, don&#8217;t be scared, Flex is not dead. I was not surprised to see some posts on the web promoting this idea. It&#8217;s a classic trend in our industry. Just to illustrate that point, I googled some queries. Here is my TOP 5 list of the dead technologies:</p>
<ol>
<li>&#8220;.NET is dead&#8221; is the big winner with 576000 search results on Google. Congratulations.</li>
<li>&#8220;JAVA is dead&#8221; is following with 138.000 results. I can hardly feel this trend from Devoxx and the 3200 Java developers around me <img src='http://www.riagora.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>&#8220;PHP is dead&#8221; is a little child with only 35.600 results.</li>
<li>&#8220;Ruby is dead&#8221; is in the same range with 30.700 results.</li>
<li>&#8220;AJAX is dead&#8221; generates 6500 results.</li>
</ol>
<div>So we are newbies in this competition as &#8220;Flex is dead&#8221; only displays 5000 results <img src='http://www.riagora.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  I&#8217;m kidding of course, it&#8217;s a stupid analysis but it highlights that you shouldn&#8217;t always trust online articles about technologies lives. Try it with Flash, you&#8217;ll be amazed. Flash is a damned zombie <img src='http://www.riagora.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Ok&#8230; no more stupid games, let me go back to the future of Flex.</div>
<div>
<h2>How can I contribute ?</h2>
<p>After the announcement of our proposal to the Apache foundation, I received several emails from Flex developers and customers who want to contribute, to play a role in the roadmap, to fix bugs, etc&#8230; We&#8217;re still defining the process, so I cannot share any information on that today. But as soon as everything is defined, I&#8217;ll be the first writing tutorials to explain how to contribute. It&#8217;s such a big opportunity for the Flex community. It&#8217;s also a huge change of strategy and I&#8217;m aware of that, and some of you may be a little bit nervous. But Flex won&#8217;t be the only project in collaboration with Apache. We acquired Day software, and the engineers at Day are Apache masters, true open-source contributors. I like that. PhoneGap will also become an Apache project. Adobe is one of the top contributing companies to the Apache Foundation, and I fully embrace this strategy. I want Flex to become as popular as Tomcat in Enterprise architecture!</p>
<p>Let&#8217;s embrace this strategy together. Adobe is proud of Flex and super proud of what you achieve everyday with this framework. Based on the emotional reactions perceived on social networks this week, I can tell that we are all true and passionate Flex lovers. So let&#8217;s continue to build on that passion and work together on the future of Flex.</p>
</div>
</div>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/11/flex-is-open/&text=Flexcursion+with+Apache&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/11/flex-is-open/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Narcissus, segment your followers</title>
		<link>http://www.riagora.com/2011/10/narcissus-segment-your-followers/</link>
		<comments>http://www.riagora.com/2011/10/narcissus-segment-your-followers/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 13:17:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Moods]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[analyze]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[circles]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[followers]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[store]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=835</guid>
		<description><![CDATA[UPDATE: Twitter modified its API in the night. The desktop version has been updated (1.0.2). I&#8217;m still waiting for Apple to review my update 1.0.2.  I&#8217;ve been working on a Flex mobile application called Narcissus, and I finally found the time to finalize and publish it on the App Store. Narcissus is a free application, [...]]]></description>
			<content:encoded><![CDATA[<p><em><span style="text-decoration: underline;">UPDATE</span>: Twitter modified its API in the night. The desktop version has been updated (1.0.2). I&#8217;m still waiting for Apple to review my update 1.0.2. </em></p>
<p>I&#8217;ve been working on a <strong>Flex mobile application</strong> called Narcissus, and I finally found the time to finalize and <a href="http://itunes.apple.com/us/app/narcissus/id472974421?mt=8" target="_blank">publish it on the App Store</a>. Narcissus is a free application, available <a href="http://itunes.apple.com/us/app/narcissus/id472974421?mt=8" target="_blank">on the App Store</a> for iPad users, and <a href="http://www.riagora.com/narcissus/Narcissus.air" target="_blank">on your desktop</a> thanks to the Adobe AIR runtime. Narcissus can analyze and segments the followers of a Twitter account. Inspired by Google + circles, Narcissus categorizes your followers in circles based on their activity on twitter (the number of tweets they sent) and their influence (the number of followers they get). It helps to understand who&#8217;s following you, how active your followers are on Twitter  and how influential they are. If you want your content to be re-tweeted and seen by a maximum of Twitter users, you&#8217;ll discover that you just need to focus on few people of your network. I&#8217;ve recorded a video that showcases the basic features of Narcissus.</p>
<p><object width="580" height="423" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/2ZEfBlLGdXk?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed width="580" height="423" type="application/x-shockwave-flash" src="http://www.youtube.com/v/2ZEfBlLGdXk?version=3&amp;hl=en_US" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object></p>
<p>This application has been developed with the Flex 4.5.1 framework and Flash Builder. It performs very well on all platforms (iPad, Android and the PlayBook), that&#8217;s why I want to share some tricks I&#8217;ve learnt building this app.</p>
<h3>Design Driven Development</h3>
<p>I&#8217;m clearly not a designer, but as I was the only person involved in this project, I forced myself to use the <strong>Design Driven Development</strong> methodology. It implies designing the full user-experience before writing one single line of code. As this project is a &#8220;data-visualization&#8221; application, the design process was obvious. The goal of a dashboard is to<strong> transform data into information</strong>. I know the data I can get from Twitter and I know what&#8217;s the user problem which is in this case: &#8220;how can I know better who&#8217;s following me on Twitter to be more efficient on my social network ?&#8221;. The UI of the application must bring solutions to that question. As it&#8217;s a dashboard application, I decided to use the &#8220;drill-down&#8221; strategy: start with a global view <em>(using circles)</em> and give the ability to drill-down <em>(analyze the list of followers per category and get the details about a follower)</em>. I think I spent at least <strong>4 hours in Photoshop</strong> to design the main screen, place the elements, design the circles, the callout popups, the icons&#8230; Then the second step is &#8220;what&#8217;s the best UI architecture to serve this design?&#8221;. I rapidly decided to use the new ViewNavigator class of Flex 4.5 and the IconItemRenderer to get the best performance on tablet devices. So I&#8217;m using a classic &lt;s:Application&gt; root tag that contains eight &lt;s:ViewNavigator&gt; components, one per circle. I spent two days on coding the application. Then I tested it on an iPAD, optimized the code <em>(mainly my database code)</em> and fixed some bugs.</p>
<h3>Optimizing SQLite calls</h3>
<p>When you test your application on your PC, SQLite always acts very well. When Narcissus retrieves the list of followers for one account, it needs to save all the ids in one table. So, if you analyze an account that has 2000 followers, it means that you need to fire 2000 INSERT SQL queries. On the desktop, it&#8217;s okay, it takes less than one second to Adobe AIR to save these 2000 lines. On the iPAD 1, it&#8217;s another story. It takes more or less 10 seconds, and it can freeze the UI. Very bad user-experience. That&#8217;s why I decided to use SQLite transactions. If you need to execute a batch of INSERT, DELETE or UPDATE queries, always use transactions. In other words, if you need to execute SQL queries that don&#8217;t return a result, you can use transactions. <strong>It reduced the SQLite processing time by 90% in my case.</strong> Here is a <span style="color: #3366ff;"><a href="http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7d47.html" target="_blank"><span style="color: #3366ff;">link to the doc</span></a></span> that explains how it works, and the code I&#8217;m using in the application.</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="kw2">var</span> sqlS<span class="sy0">:</span>SQLStatement = <span class="kw1">new</span> SQLStatement<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			sqlS<span class="sy0">.</span>sqlConnection = sqlc<span class="sy0">;</span>
			sqlS<span class="sy0">.</span><span class="kw7">text</span> = <span class="st0">&quot;INSERT INTO &quot;</span><span class="sy0">+</span> tableName<span class="sy0">+</span><span class="st0">&quot;(idUser,screenName,name,url,description,circle,nbFollowers,statusCount,picture) VALUES (@IDUSER,@SCREENNAME,@NAME,@URL,@DESCRIPTION,@CIRCLE,@NBFOLLOWERS,@STATUSCOUNT,@PICTURE)&quot;</span><span class="sy0">;</span>
&nbsp;
			sqlc<span class="sy0">.</span>begin<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
			<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">:</span><a href="http://www.google.com/search?q=int%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:int.html"><span class="kw5">int</span></a> = <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> arrayFollowers<span class="sy0">.</span><span class="kw7">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				objUser = arrayFollowers<span class="sy0">.</span>getItemAt<span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@IDUSER'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span>idUser<span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@SCREENNAME'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span>screenName<span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@NAME'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span><span class="kw7">name</span><span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@URL'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span><span class="kw7">url</span><span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@DESCRIPTION'</span><span class="br0">&#93;</span> = myDescription<span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@CIRCLE'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span>circle<span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@NBFOLLOWERS'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span>nbFollowers<span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@STATUSCOUNT'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span>statusCount<span class="sy0">;</span>
				sqlS<span class="sy0">.</span><span class="kw7">parameters</span><span class="br0">&#91;</span><span class="st0">'@PICTURE'</span><span class="br0">&#93;</span> = objUser<span class="sy0">.</span>picture<span class="sy0">;</span>
				sqlS<span class="sy0">.</span>execute<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="br0">&#125;</span>
			sqlc<span class="sy0">.</span>commit<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<p>I&#8217;m also using incremental savings (auto-save) for performance and user-experience reasons.</p>
<p>&nbsp;</p>
<h3>How to persist simple parameters</h3>
<p>I wanted to persist the settings <em>(activity and influence thresholds)</em> in a cleaner way than using a SQLite database. I started using the classic File API. The only directory that works on tablet devices is the Documents one. Here is some code that works both on desktop and tablet apps:</p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="kw2">var</span> file<span class="sy0">:</span>File = File<span class="sy0">.</span>documentsDirectory<span class="sy0">.</span>resolvePath<span class="br0">&#40;</span><span class="st0">'settingsNarcissus.inf'</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="kw1">if</span> <span class="br0">&#40;</span>file<span class="sy0">.</span>exists<span class="br0">&#41;</span> file<span class="sy0">.</span>deleteFile<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	<span class="kw2">var</span> fileStream<span class="sy0">:</span>FileStream = <span class="kw1">new</span> FileStream<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//create a file stream</span>
	fileStream<span class="sy0">.</span><span class="kw7">open</span><span class="br0">&#40;</span>file<span class="sy0">,</span> FileMode<span class="sy0">.</span>WRITE<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// and open the file for write</span>
	fileStream<span class="sy0">.</span><span class="kw7">writeObject</span><span class="br0">&#40;</span>object<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//write the object to the file</span>
	fileStream<span class="sy0">.</span><span class="kw7">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<p>But I&#8217;m not a big fan of the Files approach. That&#8217;s why I decided to use the Persitence Manager API. This class is so easy to use and so efficient!!! Here is how you can easily save and load settings from anywhere in your mobile project:</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="co1">//SAVE</span>
&nbsp;
<span class="kw2">var</span> object<span class="sy0">:</span>SettingsObj = <span class="kw1">new</span> SettingsObj<span class="br0">&#40;</span>thresholdTweets<span class="sy0">,</span>thresholdFollowers<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw2">var</span> persistenceMan<span class="sy0">:</span>PersistenceManager = <span class="kw1">new</span> PersistenceManager<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	persistenceMan<span class="sy0">.</span><span class="kw7">setProperty</span><span class="br0">&#40;</span><span class="st0">&quot;settings&quot;</span><span class="sy0">,</span>object<span class="br0">&#41;</span><span class="sy0">;</span>
	persistenceMan<span class="sy0">.</span><span class="kw7">save</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">//LOAD</span>
&nbsp;
<span class="kw2">var</span> persistenceMan<span class="sy0">:</span>PersistenceManager = <span class="kw1">new</span> PersistenceManager<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	<span class="kw1">try</span><span class="br0">&#123;</span>
		<span class="kw2">var</span> object<span class="sy0">:</span><a href="http://www.google.com/search?q=object%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:object.html"><span class="kw5">Object</span></a> = persistenceMan<span class="sy0">.</span><span class="kw7">getProperty</span><span class="br0">&#40;</span><span class="st0">&quot;settings&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
		thresholdFollowers = object<span class="sy0">.</span>savedThresholdFollowers<span class="sy0">;</span>
		thresholdTweets = object<span class="sy0">.</span>savedThresholdTweets<span class="sy0">;</span>
	<span class="br0">&#125;</span><span class="kw1">catch</span><span class="br0">&#40;</span>e<span class="sy0">:</span><a href="http://www.google.com/search?q=error%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:error.html"><span class="kw5">Error</span></a><span class="br0">&#41;</span><span class="br0">&#123;</span>
		<span class="co1">//error management if empty</span>
	<span class="br0">&#125;</span></pre></div></div>
<h3>Animations</h3>
<p>Some developers asked me how I managed the animations and the transitions with the circles. For the animations, I&#8217;m simply declaring basic MXML sequences. When I get the profile image picture of a Twitter account, I&#8217;m assigning it to a circle, and then I change the xTo and yTo coordinates of the &#8216;moveProfile&#8217; object. Here is how I declared the sequence.</p>
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="mxml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;s:Sequence</span> id=<span class="st0">&quot;seqAnimationProfile&quot;</span> target=<span class="st0">&quot;{profileImageComp}&quot;</span> effectEnd=<span class="st0">&quot;seqAnimationProfile_effectEndHandler(event)&quot;</span><span class="re2">&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;s:Fade</span>  alphaFrom=<span class="st0">&quot;0&quot;</span> alphaTo=<span class="st0">&quot;100&quot;</span> duration=<span class="st0">&quot;500&quot;</span><span class="re2">/&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;s:Move</span> id=<span class="st0">'moveProfile'</span>  xFrom=<span class="st0">&quot;480&quot;</span> yFrom=<span class="st0">&quot;380&quot;</span> duration=<span class="st0">&quot;800&quot;</span><span class="re2">&gt;</span></span>
				<span class="sc3"><span class="re1">&lt;s:easer</span><span class="re2">&gt;</span></span>
&nbsp;
					<span class="sc3"><span class="re1">&lt;s:Sine</span><span class="re2">/&gt;</span></span>
&nbsp;
				<span class="sc3"><span class="re1">&lt;/s:easer</span><span class="re2">&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;/s:Move</span><span class="re2">&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;s:Fade</span> alphaFrom=<span class="st0">&quot;100&quot;</span> alphaTo=<span class="st0">&quot;0&quot;</span> duration=<span class="st0">&quot;500&quot;</span><span class="re2">/&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;s:Move</span>  xTo=<span class="st0">&quot;480&quot;</span> yTo=<span class="st0">&quot;380&quot;</span> duration=<span class="st0">&quot;50&quot;</span><span class="re2">/&gt;</span></span>
		<span class="sc3"><span class="re1">&lt;/s:Sequence</span><span class="re2">&gt;</span></span></pre></div></div>
<p>Regarding the circles, I&#8217;m using the default transitions of the ViewNavigator object. To enjoy the background image, I&#8217;m placing eight ViewNavigator with a transparent background which load views with transparent background. Just set the backgroundAlpha property to 0 in the ViewNavigator tags AND in the View tags. The circles are also animated. To do so, I&#8217;m playing with MXML graphic properties. The static parts are PNG files (the background and the reflection effet at the top of the circle), the animated part is a Spark Graphic component. Here is the MXML code for a circle:</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="mxml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;s:Image</span> horizontalCenter=<span class="st0">&quot;0&quot;</span> source=<span class="st0">&quot;assets/images/circleBack.png&quot;</span>   verticalCenter=<span class="st0">&quot;-20&quot;</span><span class="re2">/&gt;</span></span>
	<span class="sc3"><span class="re1">&lt;s:Graphic</span> id=<span class="st0">&quot;theCircle&quot;</span>  version=<span class="st0">&quot;2&quot;</span> horizontalCenter=<span class="st0">&quot;0&quot;</span> verticalCenter=<span class="st0">&quot;-20&quot;</span><span class="re2">&gt;</span></span>
		<span class="sc3"><span class="re1">&lt;s:Ellipse</span> height=<span class="st0">&quot;{radiusCircle}&quot;</span> width=<span class="st0">&quot;{radiusCircle}&quot;</span><span class="re2">&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
				<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;{data.colorCircle}&quot;</span><span class="re2">/&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
		<span class="sc3"><span class="re1">&lt;/s:Ellipse</span><span class="re2">&gt;</span></span>
	<span class="sc3"><span class="re1">&lt;/s:Graphic</span><span class="re2">&gt;</span></span>
	<span class="sc3"><span class="re1">&lt;s:Image</span> horizontalCenter=<span class="st0">&quot;0&quot;</span> source=<span class="st0">&quot;assets/images/circleReflect.png&quot;</span> verticalCenter=<span class="st0">&quot;-87&quot;</span><span class="re2">/&gt;</span></span></pre></div></div>
<p>To animate the circles with some easing, I declared a Resize effect.</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="sy0">&lt;</span>fx<span class="sy0">:</span>Declarations<span class="sy0">&gt;</span>
		<span class="sy0">&lt;!--</span> Place non<span class="sy0">-</span>visual <span class="kw7">elements</span> <span class="br0">&#40;</span>e<span class="sy0">.</span>g<span class="sy0">.,</span> services<span class="sy0">,</span> <span class="kw7">value</span> objects<span class="br0">&#41;</span> here <span class="sy0">--&gt;</span>
		<span class="sy0">&lt;</span>s<span class="sy0">:</span>Resize id=<span class="st0">&quot;fxResize&quot;</span>  duration=<span class="st0">&quot;500&quot;</span>  <span class="kw7">target</span>=<span class="st0">&quot;{theCircle}&quot;</span><span class="sy0">&gt;</span>
			<span class="sy0">&lt;</span>s<span class="sy0">:</span>easer<span class="sy0">&gt;</span>
&nbsp;
				<span class="sy0">&lt;</span>s<span class="sy0">:</span>Sine<span class="sy0">/&gt;</span>
&nbsp;
			<span class="sy0">&lt;/</span>s<span class="sy0">:</span>easer<span class="sy0">&gt;</span>
		<span class="sy0">&lt;/</span>s<span class="sy0">:</span>Resize<span class="sy0">&gt;</span>
&nbsp;
	<span class="sy0">&lt;/</span>fx<span class="sy0">:</span>Declarations<span class="sy0">&gt;</span></pre></div></div>
<p>Leveraging the MXML tags of the Flex framework, you can very quickly build a professional iPAD application. Narcissus has been immediately approved by Apple on the App Store.</p>
<h3>Links</h3>
<p>If you want to use Narcissus on your desktop (MAC &amp; Windows), install this AIR application:</p>
<p><a href="http://www.riagora.com/narcissus/Narcissus.air" target="_blank">http://www.riagora.com/narcissus/Narcissus.air</a></p>
<p>If you have an iPAD, then you can find it on the App Store:</p>
<p><a href="http://itunes.apple.com/us/app/narcissus/id472974421?mt=8" target="_blank">http://itunes.apple.com/us/app/narcissus/id472974421?mt=8</a></p>
<p><strong>Feel free to add a nice review on the App Store.</strong> If you don&#8217;t like the app, don&#8217;t say anything <img src='http://www.riagora.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Narcissus is just a small app that showcases how creative you can be with basic Flex components on tablet devices. I&#8217;m working on the Android version <em>(I just need to fix some relative coordinates stuff to accept all screen resolutions)</em>.</p>
<p>I hope you&#8217;ll like it. Enjoy  !</p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/10/narcissus-segment-your-followers/&text=Narcissus%2C+segment+your+followers&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/10/narcissus-segment-your-followers/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Analytics in your Flex mobile apps</title>
		<link>http://www.riagora.com/2011/10/analytics-in-your-flex-mobile-apps/</link>
		<comments>http://www.riagora.com/2011/10/analytics-in-your-flex-mobile-apps/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 08:54:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[omniture]]></category>
		<category><![CDATA[tracking]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=826</guid>
		<description><![CDATA[Analytics is a natural asset of an efficient website. If you don&#8217;t collect, measure and analyze your internet data, you cannot maintain and optimize your web applications. Surprisingly, analytics are rarely used for Enterprise applications, and that&#8217;s shocking. IT services deliver complex applications, with a lot of screens, tabs and advanced navigation components and they [...]]]></description>
			<content:encoded><![CDATA[<p>Analytics is a natural asset of an efficient website. If you don&#8217;t collect, measure and analyze your internet data, you cannot maintain and optimize your web applications. Surprisingly, analytics are rarely used for Enterprise applications, and that&#8217;s shocking. IT services deliver complex applications, with a lot of screens, tabs and advanced navigation components and they just never analyze how their RIAs are used. Internal apps would benefit so much from analytics solutions. I feel that we are reproducing the same mistake with mobile applications. As we are living the early-ages of mobile apps, it&#8217;s time so standardize analytics in Flex mobile apps. Adobe Omniture is the most professional analytics solution of the market. As you can guess, it&#8217;s very easy to add analytics tags in a Flex application. We even developed an Omniture extension for Flash Builder. Check this article is you are Omniture customers: <a href="http://www.adobe.com/devnet/flex/articles/sitecatalyst_extension_flashbuilder.html" target="_blank">http://www.adobe.com/devnet/flex/articles/sitecatalyst_extension_flashbuilder.html</a> I know that you are not all Omniture customers, and for simple needs you may choose a free solution such as Google Analytics that would answer your basic needs.</p>
<p>Google Analytics is also trying to ease the addition of tracking events inside Flex applications. Unfortunately, the current version of the<a href="http://code.google.com/apis/analytics/docs/tracking/flashTrackingIntro.html" target="_blank"> Google Analytics Tracker library</a> doesn&#8217;t support Flex mobile projects. As I really needed this feature for a mobile app (that I will unveil next week), I modified the source code of the GATracker library and now it works like a charm. You can track everything, I mean everything:</p>
<p>- If you have HTTPService requests, you can track how many successful results your users get and  compared this number with the number HTTP fault events.</p>
<p>- If you have 5 tabs in your mobile apps, measure what is the most used tab, check if they are all used. You can also imagine to track the most common path for your app and track scenarios such as &#8220;the user hits tab 1, then tab 3 and then tab 2, is the main use case&#8221;.</p>
<p>Your mission is to defined what makes sense in your application, and which information will help optimizing it. Here are the steps I used to add Google Analytics tracking information in my mobile application:</p>
<p>1. Download the source (not the SWC) of the Google Analytics for Flash library:  <a href="http://code.google.com/p/gaforflash/">http://code.google.com/p/gaforflash/</a></p>
<p>2. Open your Flex mobile project and add the code inside your project. It will create a com.google.analytics package with a lot of AS3 classes.</p>
<p>In your Google Analytics console, you need to measure an existing website (in my case riagora.com) and add the classic Google Analytics JavaScript library. Then your website will be validated and you&#8217;ll be given an ID for your website by Google. We&#8217;ll surcharge the tracking information of your website with mobile tracking information. The ID of your website should look like this chain of characters: UA-2999999-2.</p>
<p>3. On the application level (your root MXML file), create an AnalyticsTracker variable and instantiate a GATracker. The tracking variable is public. Add this code for instance:</p>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="kw1">public</span> <span class="kw2">var</span> tracker<span class="sy0">:</span>AnalyticsTracker<span class="sy0">;</span>
<span class="kw1">protected</span> <span class="kw3">function</span> viewnavigatorapplication1_creationCompleteHandler<span class="br0">&#40;</span>event<span class="sy0">:</span>FlexEvent<span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span>
<span class="br0">&#123;</span>
	<span class="co1">// TODO Auto-generated method stub</span>
	tracker = <span class="kw1">new</span> GATracker<span class="br0">&#40;</span><span class="kw1">this</span><span class="sy0">,</span><span class="st0">&quot;YOUR_GOOGLE_ANALYTICS_WEBSITE_ID&quot;</span><span class="sy0">,</span><span class="st0">&quot;AS3&quot;</span><span class="sy0">,</span><span class="kw1">false</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>4. If you want to track something, just call the trackPageview method. It&#8217;s waiting for the name of the HTML page as a parameter. Create custom names such as &#8220;/mobileApp-Success&#8221;, or &#8220;/mobileApp-tab1&#8243;.</p>
<div id="wpshdo_13" class="wp-synhighlighter-outer"><div id="wpshdt_13" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_13"></a><a id="wpshat_13" class="wp-synhighlighter-title" href="#codesyntax_13"  onClick="javascript:wpsh_toggleBlock(13)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_13" onClick="javascript:wpsh_code(13)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_13" onClick="javascript:wpsh_print(13)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_13" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="kw1">protected</span> <span class="kw3">function</span> button1_clickHandler<span class="br0">&#40;</span>event<span class="sy0">:</span><a href="http://www.google.com/search?q=mouseevent%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:mouseevent.html"><span class="kw5">MouseEvent</span></a><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span>
<span class="br0">&#123;</span>
	<span class="co1">// TODO Auto-generated method stub</span>
					FlexGlobals<span class="sy0">.</span>topLevelApplication<span class="sy0">.</span>tracker<span class="sy0">.</span>trackPageview<span class="br0">&#40;</span><span class="st0">'/mobileApp-tab1'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>5. Now if you compile your project, you&#8217;ll get error messages such as the famous TypeError #1009, also known as &#8220;the error that doesn&#8217;t help&#8221;. Let&#8217;s start modifying the Google Analytics code.</p>
<p>6. Open the class components/FlexTracker.as</p>
<p>7. Search and replace this code:</p>
<div id="wpshdo_14" class="wp-synhighlighter-outer"><div id="wpshdt_14" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_14"></a><a id="wpshat_14" class="wp-synhighlighter-title" href="#codesyntax_14"  onClick="javascript:wpsh_toggleBlock(14)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_14" onClick="javascript:wpsh_code(14)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_14" onClick="javascript:wpsh_print(14)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_14" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="kw2">var</span> appclass<span class="sy0">:</span><a href="http://www.google.com/search?q=object%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:object.html"><span class="kw5">Object</span></a> = <span class="kw7">getDefinitionByName</span><span class="br0">&#40;</span> <span class="st0">&quot;mx.core::Application&quot;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
 _app = appclass<span class="sy0">.</span>application<span class="sy0">;</span></pre></div></div>
<p>by code that doesn&#8217;t refer to MX Application. In Flex 4.5, we don&#8217;t use MX applications anymore, but we can use the FlexGlobals class <img src='http://www.riagora.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="wpshdo_15" class="wp-synhighlighter-outer"><div id="wpshdt_15" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_15"></a><a id="wpshat_15" class="wp-synhighlighter-title" href="#codesyntax_15"  onClick="javascript:wpsh_toggleBlock(15)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_15" onClick="javascript:wpsh_code(15)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_15" onClick="javascript:wpsh_print(15)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_15" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;">appclass = <span class="kw7">getDefinitionByName</span><span class="br0">&#40;</span> <span class="st0">&quot;mx.core::FlexGlobals&quot;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
_app = appclass<span class="sy0">.</span>topLevelApplication<span class="sy0">;</span></pre></div></div>
<p>8. Then we need to add the root URL of our virtual website (in my case riagora.com). By default, the library tries to get the URL from browser information&#8230; well this cannot work with a mobile app running in AIR, so we&#8217;ll hard-code the URL Open the GATracker.as class. Comment the _env.url line and add your own root URL.</p>
<div id="wpshdo_16" class="wp-synhighlighter-outer"><div id="wpshdt_16" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_16"></a><a id="wpshat_16" class="wp-synhighlighter-title" href="#codesyntax_16"  onClick="javascript:wpsh_toggleBlock(16)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_16" onClick="javascript:wpsh_code(16)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_16" onClick="javascript:wpsh_print(16)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_16" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="co1">//_env.url = _display.stage.loaderInfo.url;</span>
_env<span class="sy0">.</span><span class="kw7">url</span> = <span class="st0">&quot;http://www.riagora.com/&quot;</span><span class="sy0">;</span></pre></div></div>
<p>9. We still have to deal with small &#8216;stage&#8217; issues. Open the core/IdleTimer.as class and comment two lines of code that deal with the Stage:</p>
<div id="wpshdo_17" class="wp-synhighlighter-outer"><div id="wpshdt_17" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_17"></a><a id="wpshat_17" class="wp-synhighlighter-title" href="#codesyntax_17"  onClick="javascript:wpsh_toggleBlock(17)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_17" onClick="javascript:wpsh_code(17)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_17" onClick="javascript:wpsh_print(17)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_17" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;">_debug      = debug<span class="sy0">;</span>
         <span class="co1">//   _stage      = display.stage;</span>
            _buffer     = buffer<span class="sy0">;</span>
            _lastMove   = <span class="kw7">getTimer</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            _inactivity = inactivity <span class="sy0">*</span> <span class="nu0">1000</span><span class="sy0">;</span> <span class="co1">//milliseconds</span>
&nbsp;
            _loop<span class="sy0">.</span><span class="kw7">addEventListener</span><span class="br0">&#40;</span> <a href="http://www.google.com/search?q=timerevent%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:timerevent.html"><span class="kw5">TimerEvent</span></a><span class="sy0">.</span><span class="kw8">TIMER</span><span class="sy0">,</span> checkForIdle <span class="br0">&#41;</span><span class="sy0">;</span>
            _session<span class="sy0">.</span><span class="kw7">addEventListener</span><span class="br0">&#40;</span> <a href="http://www.google.com/search?q=timerevent%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:timerevent.html"><span class="kw5">TimerEvent</span></a><span class="sy0">.</span><span class="kw8">TIMER_COMPLETE</span><span class="sy0">,</span> endSession <span class="br0">&#41;</span><span class="sy0">;</span>
          <span class="co1">//  _stage.addEventListener( MouseEvent.MOUSE_MOVE, onMouseMove );</span></pre></div></div>
<p>10. And that&#8217;s it!!! Within the Google Analytics console, you can now create custom dashboards, filtering the visited pages that starts with &#8220;/mobileApp&#8221;.<a href="http://www.riagora.com/wp-content/uploads/2011/10/analyticsTracking.jpg"><br />
</a></p>
<p>11. You can download this sample Flex 4.5.1 project that contains my updated Google Analytics library. Here is the link to this Flash Builder project: <a href="http://riagora.com/pvt_content/android/GoogleAnalytics.fxp" target="_blank">http://riagora.com/pvt_content/android/GoogleAnalytics.fxp</a></p>
<p><strong>WARNING:</strong> Google Analytics doesn&#8217;t display the results in real-time ! You have to wait for 24 hours before seeing some tracking results.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/10/analytics-in-your-flex-mobile-apps/&text=Analytics+in+your+Flex+mobile+apps&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/10/analytics-in-your-flex-mobile-apps/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Tablet devices and Enterprise apps</title>
		<link>http://www.riagora.com/2011/10/tablet-devices-and-enterprise-apps/</link>
		<comments>http://www.riagora.com/2011/10/tablet-devices-and-enterprise-apps/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 10:10:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Moods]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[adobemax]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=816</guid>
		<description><![CDATA[My talk at Adobe MAX was about the future role of tablet devices in large organizations, and the impact of this new generation of devices on IT services. Tablets will rapidly become a tremendous business opportunity for Flex developers. I was happily surprised by the number of sessions about tablets at MAX. A lot of [...]]]></description>
			<content:encoded><![CDATA[<p>My talk at Adobe MAX was about the future role of tablet devices in large organizations, and the impact of this new generation of devices on IT services. Tablets will rapidly become a tremendous business opportunity for Flex developers. I was happily surprised by the number of sessions about tablets at MAX. A lot of Flex developers such as Christophe gave some nice technical tips on how to develop engaging mobile apps. For my session, I wanted to give some tips but also to explain why tablet devices will play a key role.</p>
<p>When you look at how humans have interacted with enterprise knowledge over the years and even today, paper is still very present. You often interact directly with the knowledge on a horizontal plan using a pen, but this can hardly be centralized. Collaboration on a whiteboard is also an interesting case. You share and review the knowledge on a vertical plane. Often this knowledge is lost as collaboration is thought of as a temporary step in an enterprise workflow or a decision making process. These two interactions (paper and whiteboard) are still very common in large organizations, and that&#8217;s how we learn things at school. Personal computers introduced a different approach due to the rise of mice and keyboards. You move your mouse on an horizontal plane, it acts on a vertical plane that hosts the knowledge. For the first time the knowledge could be easily centralized and shared beyond the firewall (the extended company) with partners and external customers. Inspired by typewriters, PCs are not mobile at all, even less mobile than paper. The laptop was the first attempt of mobility. It automatically extended our work area and let us interact with the enterprise knowledge from home and on the road. But it also introduced some of the worst interactions ever (trackpad, balls, etc&#8230;). Smartphones are the real truly mobile device, the first that can answer the &#8220;anywhere and at any time&#8221; requirement. But the typing experience is bad and the small screens don&#8217;t let you review documents for instance. For all these reasons, you can see why tablets are a natural evolution. Although there&#8217;s still progress to be made, tablets are fully mobile, the typing experience is good, the large screen lets you review documents, and for the first time, and you can combine pleasure and work on the same device.</p>
<p>The rise of tablet devices in large organizations introduces new challenges for IT services. They have to define new processes to secure the configuration and deployment of apps, they have to ensure that mobile apps are auditable and compliant, and, most of all, they have to run existing applications. On the other side, end users are already tablet ninjas. That&#8217;s why there will be a gap between what IT services can deliver and users&#8217; expectations. I also believe that native applications deliver the experience that people expect. If you deliver a classic web app on a tablet, employees won&#8217;t feel the benefits and they will wait until they are in front of a PC to interact with your app. By the way, I don&#8217;t think that tablet devices will replace laptops or PC. Sometimes, it will be complementary, and sometimes yes, there will be some cannibalization. If you look at the enterprise apps developed on tablets in 2011, they were mainly targeting three populations: the top managers, the sales force and the inspectors. Top managers need a real-time access to strategic information. They want dashboards to accelerate and improve their decision making time. The sales force uses tablets for two reasons. It&#8217;s a fantastic device to showcase the products  you&#8217;re selling, and it&#8217;s also a nice way to interact with the CRM. Inspectors, or employees that need to audit external environments, are naturally using tablets to access technical information, capture data in the field and collaborate. Tomorrow, anyone is a potential tablet candidate. Even I as a developer, I can imagine having a tablet with a companion app, helping me browsing the AS3 doc for instance (I think that someone had this idea before me&#8230; more to come&#8230;).</p>
<p>Flex developers can answer these new needs very easily. We are in pole position. If we embrace a Design-Driven Development methodology, we&#8217;ll be very successful. DDD consists of defining the technical infrastructure of your solution based on the user experience. The UI is here to solve end users&#8217; problems, and the system serves the UI. If you build a system-centric application on a tablet, with a UI that reflects the system, then you&#8217;ll fail. I hope that tablets will boost the Design-Driven methodology in large organizations. It would also increase the number of Rich Internet Applications. Today, RIA frameworks (and especially Flex) are much more mature than enterprise IT services.  Even with the best technology, if IT services stick to their traditional way of developing products, they will fail again and again. Flex developers need to become DDD sponsors.</p>
<p>Here is the recording of my presentation. You&#8217;ll also find my slides (hosted by SlideShare) at the end of this article.</p>
<p>&nbsp;</p>
<p><iframe title="AdobeTV Video Player" src="http://tv.adobe.com/embed/803/11325/" frameborder="0" scrolling="no" width="480" height="296"></iframe></p>
<div id="__ss_9558667" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Enterprise Flex applications on tablet devices" href="http://www.slideshare.net/mchaize/enterprise-flex-applications-on-tablet-devices" target="_blank">Enterprise Flex applications on tablet devices</a></strong> <object id="__sse9558667" width="425" height="355" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=adobemaxtablets-111005095326-phpapp02&amp;stripped_title=enterprise-flex-applications-on-tablet-devices&amp;userName=mchaize" /><param name="allowscriptaccess" value="always" /><param name="allowfullscreen" value="true" /><embed id="__sse9558667" width="425" height="355" type="application/x-shockwave-flash" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=adobemaxtablets-111005095326-phpapp02&amp;stripped_title=enterprise-flex-applications-on-tablet-devices&amp;userName=mchaize" allowFullScreen="true" allowScriptAccess="always" allowscriptaccess="always" allowfullscreen="true" /> </object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/mchaize" target="_blank">Michael Chaize</a></div>
</div>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/10/tablet-devices-and-enterprise-apps/&text=Tablet+devices+and+Enterprise+apps&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/10/tablet-devices-and-enterprise-apps/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Back From MAX: my feelings</title>
		<link>http://www.riagora.com/2011/10/back-from-max-my-feelings/</link>
		<comments>http://www.riagora.com/2011/10/back-from-max-my-feelings/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 20:49:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Moods]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[max]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=804</guid>
		<description><![CDATA[MAX is over. I got a fever on the last day (literally… 40°c) so I spent some time in bed after this crazy event. It gave me some time to digest what happened during this year&#8217;s edition of MAX and gather my thoughts. First, what a success! I was happy to see that all the [...]]]></description>
			<content:encoded><![CDATA[<p>MAX is over. I got a fever on the last day <em>(literally… 40°c)</em> so I spent some time in bed after this crazy event. It gave me some time to digest what happened during this year&#8217;s edition of MAX and gather my thoughts. First, what a success! I was happy to see that all the community leaders were there, and that more and more people from Europe are traveling to LA to attend Adobe MAX. A lot of developers who couldn&#8217;t attend the conference attended the keynotes online. I received a lot of messages from developers about the content of the keynotes, and that&#8217;s why I wanted to share my thoughts on MAX.</p>
<h3>The Keynotes</h3>
<p>The Keynote on DAY 1 was magnificent. The introduction with the two dancers was mind-blowing. A classic dancer was answering the moves of a contemporary dancer. It was expressing the shift that is taking place in the creative industry and how the Creative Suite would help our community to make this transition. Creative Suite is moving to the cloud which enables new advanced workflows for pros or amateurs like myself. I was also happy to see that the new generation of Touch Apps are built on top of Adobe AIR on tablet devices. I guess that they are using the AIR 3 native extensions to process the large image filters and AS3 for the UI (which is super cool by the way, especially the Photoshop Touch toolbar). So… it was a great Day 1 Keynote leaded by our CTO.</p>
<p>The second keynote focused on Flex (5%), HTML (75%) and Flash (20%). As Flex 4.6 was already announced before MAX, there wasn&#8217;t much to add during the keynote. Ben Forta highlighted the new features of AIR 3 (captive runtime and native extensions), and launched a cool video of a customer (Johnson Controls) who used Flex to code an RIA that runs in the browser and on mobile devices. I met Jeff Boothe, the architect of the project. He&#8217;s a great guy and great asset for our community. Here is the video showcasing this cool Flex project:</p>
<p><object width="560" height="315" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/VUCBMWpFM84?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed width="560" height="315" type="application/x-shockwave-flash" src="http://www.youtube.com/v/VUCBMWpFM84?version=3&amp;hl=en_US" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object></p>
<p>But, the DAY 2 Keynote was definitely not all about Flex. It was an opportunity for us to showcase that Adobe is the engine of innovation of the web, the laboratory for first-class user experiences, regardless of the end-user technology in use. We&#8217;ll innovate for Flash and Web standards at the same time. With the acquisition of Nitobi, Adobe is clearly indicating its intent to become the leading software editor of HTML5. Innovations such as CSS regions and <span style="color: #0000ff;"><a href="http://www.adobe.com/devnet/html5/articles/css-shaders.html" target="_blank"><span style="color: #0000ff;">CSS shaders</span></a></span> are also highlighting our desire to share our knowledge with the W3C. The demos were quite impressive and Adobe tools<em> (such as Edge and Muse)</em> should be the first to leverage these innovations. We also admit that these innovations won&#8217;t be standardized and available in all browsers by the end of the week: that&#8217;s why Flash will still have a major and strategic place in the web for people who want to innovate today and deliver first-class experiences to the masses. Among these new areas of innovation, there&#8217;s gaming, an industry that is exploding on the web thanks to social networks. Because of its maturity, its community and its technical architecture, Flash will become the console of the web. The Flash 3D (Unreal engine) and 2D (Angy Birds) games demonstrations were just amazing. It&#8217;s a new playground for Flash developers and it offers new business opportunities. I think that this keynote had a great impact in the press. A lot of journalists (finally) understood that Flash is not dead and that Adobe is not the enemy of HTML. Adobe is now the official user-experience innovator of the web (well… it has always been the case but some people forgot it).</p>
<p>Flash is the new console of the web, but it will also remain the &#8220;Ferrari&#8221; of the web. Brands that need to differentiate themselves from the competition by delivering first-class experiences will still use Flash. That&#8217;s the case of <span style="color: #0000ff;"><a href="http://www.nissan-stagejuk3d.com/" target="_blank"><span style="color: #0000ff;">Nissan</span></a></span>, and it&#8217;s also illustrated by the interactive agency <span style="color: #0000ff;"><a href="http://www.leschinois.com/" target="_blank"><span style="color: #0000ff;">Les Chinois</span></a></span>. Gaming will become a big focus, but I don&#8217;t think that it will crowd out other uses.</p>
<h3>So where was Flex ?</h3>
<p>One video about Flex during the keynote… you may be think that that&#8217;s not much attention for a core technology. So where was Flex ? Actually, Flex was everywhere during MAX, and was more present than ever. On Sunday, I attended a Q&amp;A session with the user-group leaders. The big majority of them were Flex developers, and most of their questions were about Flex and Enterprise applications. Then the sessions and labs: more than 75 sessions and labs were about Flex coding!!!</p>
<p>A lot of sessions were focused on Flex mobile development. It was great to see that the major part of our community have already developed and published mobile apps using Flex, although it has been released recently. When you look at where Flex mobile was one year ago… it was nothing… just an illusion. Today, we can develop and publish &#8220;native-like&#8221; applications. Adobe is still working on performance improvements and you&#8217;ll feel these improvements with Flex 4.6, but still, developers demonstrated me very cool high-performance Flex apps. PhoneGap is the Adobe AIR of HTML developers: a cool wrapper for your HTML app with some APIs and the ability to build your own plugins (native extensions). But in the end, it&#8217;s still HTML and JS. So it will primarily target content-centric applications in my opinion, and it&#8217;s not a framework, so you&#8217;ll have to rely on something like jQuery to ease your development. For &#8220;native-like&#8221; experiences and data-centric apps, Flex is still the first-choice platform and Flash Builder the best coding/debugging experience by far.</p>
<p>If you want to check a session about the future of Flex, get some information about our upcoming new compiler and some cool future features such as ActionScript workers (multi-thread), check this video about the future of the Flash Platform:</p>
<p><a href="http://tv.adobe.com/watch/max-2011-develop/flash-platform-roadmap-flex-flash-builder-flash-player-air/" target="_blank">http://tv.adobe.com/watch/max-2011-develop/flash-platform-roadmap-flex-flash-builder-flash-player-air/</a></p>
<p>Flex was also central during the Sneaks which is the moment when our top engineers unveil innovative stuff. I can easily say that it was the best Sneaks so far in MAX history. Two Sneaks deal with Flex. The first one is about reverse debugging. I can&#8217;t wait to have this feature in Flash Builder.</p>
<p><object width="560" height="315" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/5hyI8yKTOmQ?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed width="560" height="315" type="application/x-shockwave-flash" src="http://www.youtube.com/v/5hyI8yKTOmQ?version=3&amp;hl=en_US" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object></p>
<p>The second one is Monocle, a new tool to profile the behavior of the Flash Player. It will be a great addition to our existing tools.</p>
<p><object width="560" height="315" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/yLECXpF1cUg?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed width="560" height="315" type="application/x-shockwave-flash" src="http://www.youtube.com/v/yLECXpF1cUg?version=3&amp;hl=en_US" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object></p>
<h3>The community is the key</h3>
<p>Adobe MAX always reminds me of something: the community has the final word. Adobe enables innovative technologies, but our community innovates even more: finding new use-cases, pushing the boundaries of our platform, and sharing its creativity openly. Every time we launch a new API, we&#8217;re happily surprised by how the community uses it. Stage3D is already used for 2D gaming (check <a href="http://www.adobe.com/devnet/flashplayer/articles/introducing_Starling.html" target="_blank">Starling</a>)! So I trust the community. Developers shared with me some amazing experimental projects they&#8217;re doing with Flex, AIR and Stage3D during Adobe MAX, I hope I&#8217;ll be able to show them as soon as possible on this blog. The technology is out, now let&#8217;s play.</p>
<p>If you live near Paris, Berlin or London, come and see us at the Back From MAX events at the end of October !!! Check this website: <span style="color: #0000ff;"><a href="http://www.backfrommax.com" target="_blank"><span style="color: #0000ff;">http://www.backfrommax.com</span></a></span></p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2011/10/back-from-max-my-feelings/&text=Back+From+MAX%3A+my+feelings&via=mchaize&related=richardxthripp%2Ctweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2011/10/back-from-max-my-feelings/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 4.371 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-04 12:00:46 -->
<!-- Compression = gzip -->
