<?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>Mrinal Wadhwa &#187; RIA</title>
	<atom:link href="http://weblog.mrinalwadhwa.com/category/ria/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.mrinalwadhwa.com</link>
	<description>en route to a richer Internet</description>
	<lastBuildDate>Sat, 29 May 2010 05:48:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Data Binding with Signals</title>
		<link>http://weblog.mrinalwadhwa.com/2010/05/29/data-binding-with-signals/</link>
		<comments>http://weblog.mrinalwadhwa.com/2010/05/29/data-binding-with-signals/#comments</comments>
		<pubDate>Sat, 29 May 2010 04:01:12 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[binding]]></category>
		<category><![CDATA[blu]]></category>
		<category><![CDATA[crayons]]></category>
		<category><![CDATA[data binding]]></category>
		<category><![CDATA[factors]]></category>
		<category><![CDATA[mrinal wadhwa]]></category>
		<category><![CDATA[signals]]></category>
		<category><![CDATA[signals and slots]]></category>
		<category><![CDATA[slots]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1449</guid>
		<description><![CDATA[<p>I haven&#8217;t talked much about our startup project <strong>factors</strong> on this blog yet, but you will hear more and more about it from me over the coming weeks. Today, we&#8217;re <a href="http://github.com/mrinalwadhwa/crayons.data.binding">open sourcing</a> a very small but quite interesting part of the factors web client code. The client is built mostly in AS3 using an in house framework we call crayons. Crayons provides an application architecture as well as a library of user interface components along with a component architecture, you could think of it as a mixture of functionality provided by flex framework and cairngorm, but several times lighter since it only implements functionality we need for factors and doesn&#8217;t try to be too generic.</p>
<p>Among other things Crayons has a built in <a href="http://github.com/mrinalwadhwa/crayons.data.binding">data binding framework</a> which we&#8217;re open sourcing today. Data binding in crayons in based on <a href="http://en.wikipedia.org/wiki/Signals_and_slots">Signals</a> where an object dispatches a specialized <strong>ChangeSignal</strong> whenever a bindable property changes, for example the setter of a bindable property data in SomeModel object would look like this &#8230;<!--more--></p>
<p><script src="http://gist.github.com/417951.js?file=gistfile1.as"></script></p>
<p>When an object signals a change in a property it has to pass in the old value of the property and the new value of the property. Unlike Flex, there is no [Bindable] metadata tag, an object can make one of its properties bindable by dispatching a ChangeSignal whenever that property changes. The <a href="http://github.com/mrinalwadhwa/crayons.data.binding/blob/master/src/crayons/signals/ChangeSignal.as">ChangeSignal implementation</a> is inspired by <a href="http://jacksondunstan.com/articles/585">Jackson Dunstan&#8217;s TurboSignals</a> instead of <a href="http://github.com/robertpenner/as3-signals">Rob Penner&#8217;s more flexible AS3Signals library</a> because using a specialized signal made sense in this scenario .. just like flex, signaling a change in a property is something we do a lot in a crayons application, for example to signal change in model data or change in the property of a component, for data binding  etc. so taking advantage of <a href="http://jacksondunstan.com/articles/585">the speed of a specialized signal</a> seemed reasonable. Also this especially helps data binding, since a <a href="http://github.com/mrinalwadhwa/crayons.data.binding/blob/master/src/crayons/data/binding/Binding.as">Binding</a> is really an implmentation of a <a href="http://github.com/mrinalwadhwa/crayons.data.binding/blob/master/src/crayons/signals/ChangeSlot.as">ChangeSlot</a> and Jackson&#8217;s <a href="http://jacksondunstan.com/articles/585">already shown</a> that such specialized slots are extremely fast. While in most cases its hard to justfy implementing a Slot interface just to add a listener and I would almost always go with adding a function listener, but in case of data binding since this is only used internally within the binding framework and the user of data binding is not bothered with it, implmentating a ChangeSlot was perfectly reasonable.</p>
<p>Now to use crayons data binding you can use a <a href="http://github.com/mrinalwadhwa/crayons.data.binding/blob/master/src/crayons/data/binding/Binder.as">Binder</a> object to bind a source ChangeSignal to a target property as follows &#8230;</p>
<p><script src="http://gist.github.com/417981.js?file=Example.as"></script>      </p>
<p>The <a href="http://github.com/mrinalwadhwa/crayons.data.binding/blob/master/src/crayons/data/binding/Binder.as">Binder</a> class provides some other interesting apis to remove binding or to check if a binding exists. This <a href="http://github.com/mrinalwadhwa/crayons.data.binding/tree/master/src/crayons/data/binding/">binding implementation</a> is heavily inspired from <a href="http://www.ericfeminella.com/blog/2010/03/22/as3-signals-simulated-data-binding/">Eric Feminella&#8217;s implementation</a> where he&#8217;s used as3signals. I refactored it for use with ChangeSignal and ChangeSlot and changed some other APIs for our needs.</p>
<p>That&#8217;s about it, you can get the complete crayons binding framework source code <a href="http://github.com/mrinalwadhwa/crayons.data.binding">here on Github</a>, do let me know what you think, any feedback would be very welcome.</p>
<p>Finally, I want to say thank you to Jackson Dunstan, Eric Feminella and Rob Penner who&#8217;s great work and research helped me implement this. I&#8217;ll buy you guys beer whenever we get a chance to meet <img src='http://weblog.mrinalwadhwa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2010/05/29/data-binding-with-signals/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Preloaders in AS3</title>
		<link>http://weblog.mrinalwadhwa.com/2010/04/02/preloaders-in-as3/</link>
		<comments>http://weblog.mrinalwadhwa.com/2010/04/02/preloaders-in-as3/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 16:19:37 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[application loader]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[preloader]]></category>
		<category><![CDATA[pure as3]]></category>
		<category><![CDATA[systemmanager]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1425</guid>
		<description><![CDATA[<p><strong>Update:</strong> Troy Gilbert suggested a much <a href="http://troygilbert.com/2010/04/minimal-preloader-for-as3/">better solution</a> for this in the comments below that uses -frame compiler option over the [Frame] metadata tag, I suggest you use his approach since it stops the compiler from bundling in Flex framework specific code like IFlexModuleFactory that you don&#8217;t really need.</p>
<p><strong>Update:</strong> Troy further improved his class <a href="http://troygilbert.com/2010/04/preloader-base-class/">here</a> </p>
<p>***</p>
<p>Today, I needed to create a preloader for a pure AS3 application compiled with mxmlc. I couldn&#8217;t find much documentation on the topic but this <a href="http://www.bit-101.com/blog/?p=946">post by Keith Peters</a> describes the solution in good detail, except his post is some what old and the code there doesn&#8217;t work with the latest compiler.. </p>
<p>As Keith <a href="http://www.bit-101.com/blog/?p=946">describes</a>, the first thing you need to do to implement a preloader is move your application to the second frame of the movie, this is done by adding a <strong>[Frame]</strong> metadata tag above your document class and providing it with a factory class that will initialize your application, in case of Flex this factory is <strong>mx.core.SystemManager</strong> ..<!--more--> we will have to write our own.</p>
<p>Your document class would now look something like this &#8230;</p>
<p><script src="http://gist.github.com/353181.js"></script></p>
<p>Our ApplicationLoader factory class has to extend MovieClip (not Sprite) and has to implement the interface mx.core.IFlexModuleFactory (this is the main change since Keith&#8217;s post). In the below code, I&#8217;ve stubbed out functions from IFlexModuleFactory and you can leave the code as is for most applications, you will only need to change this if your application loads other SWF&#8217;s at runtime or if you&#8217;re building an AIR application. </p>
<p>When we compile our Example application the compiler will generate a class (<a href="http://weblog.mrinalwadhwa.com/2007/07/09/flex-tip-of-the-day-keep-generated-actionscript/">you can see it with -keep</a>) that subclasses our ApplicationLoader factory and implements some additional functionality .. an instance of this sits in the first frame of our movie, loads the second frame that has our application and shows a preloader while the application loads &#8230;</p>
<p><script src="http://gist.github.com/353185.js"></script></p>
<p>You may change the look of your preloader in the onEnterFrame method but since this first frame needs to load quickly keep it light and avoid using any classes that are not native to Flash Player.</p>
<p>Finally thank&#8217;s to Keith for his <a href="http://www.bit-101.com/blog/?p=946">post that got me started</a> and also for all the other cool stuff I&#8217;ve learned from him over the years. </p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2010/04/02/preloaders-in-as3/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SWF Machine: generating SWF binary from Erlang</title>
		<link>http://weblog.mrinalwadhwa.com/2010/03/17/swfmachine/</link>
		<comments>http://weblog.mrinalwadhwa.com/2010/03/17/swfmachine/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 22:38:27 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[bit-syntax]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[instructions]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[swf-format]]></category>
		<category><![CDATA[swfmachine]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1409</guid>
		<description><![CDATA[<p>SWF Machine is an Erlang program I&#8217;ve been writing, to generate SWF files from Erlang. This program takes a custom instruction set as input and generates SWF binary instructions, which once saved in an SWF file can be  run in the Flash Player, here&#8217;s a quick demo of SWFMachine in action &#8230;</p>
<p><embed src="http://blip.tv/play/AYHN80oA" type="application/x-shockwave-flash" width="640" height="510" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<p>A similar <a href="http://propella.blogspot.com/2009/03/learning-erlang-and-adobe-flash-format.html">attempt by Takashi Yamamiya</a> and the <a href="http://code.google.com/p/eswf/">eswf</a> library on google code  were quite helpful in getting me started, so thanks to them for sharing.</p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2010/03/17/swfmachine/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Magic in Graphs</title>
		<link>http://weblog.mrinalwadhwa.com/2010/02/28/magic-in-graphs/</link>
		<comments>http://weblog.mrinalwadhwa.com/2010/02/28/magic-in-graphs/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 09:36:07 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[RIA]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[1939]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[data visualization]]></category>
		<category><![CDATA[Graphic Presentation]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[Henry D. Hubbard]]></category>
		<category><![CDATA[Williard C. Brinton]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1384</guid>
		<description><![CDATA[<p>I found a <a href="http://www.archive.org/stream/graphicpresentat00brinrich#page/n0/mode/2up">digital copy</a> of Williard C. Brinton&#8217;s 1939 book <strong>&#8220;Graphic Presentation&#8221;</strong> via <a href="http://twitter.com/mrinal/status/9717416581">twitter</a> and as I read through the book, it amazed me how little our data visualization techniques have evolved since Brinton wrote the book 70+ years ago. What was even more fascinating was this quote from the preface to the book by Henry D. Hubbard who worked for the U.S, National Bureau of Standards &#8230;   </p>
<blockquote><p>&#8220;There is a magic in graphs. The profile of a curve reveals in a flash a whole situation —the life history of an epidemic, a panic, or an era of prosperity. <strong>The curve informs the mind, awakens the imagination, convinces.</strong>&#8221;  </p>
<p><strong>&#8211; Henry D. Hubbard</strong></p></blockquote>
<p>These words so aptly describe the power of visualizing data.</p>
<p>Here are some interesting snapshots from <a href="http://www.archive.org/stream/graphicpresentat00brinrich#page/n0/mode/2up">the book</a>, which I highly recommend checking out &#8230;</p>
<p><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2010/02/graphic_presentation_4.png" alt="snapshot from Williard C. Brinton's 1939 book Graphic Presentation" width="100%" /><br />
<!--more--><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2010/02/william_playfair.png" alt="William Playfair - first exponent for graphic charts" width="100%" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2010/02/graphic_presentation_1.png" alt="snapshot from Williard C. Brinton's 1939 book Graphic Presentation" width="100%" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2010/02/graphic_presentation_2.png" alt="snapshot from Williard C. Brinton's 1939 book Graphic Presentation" width="100%" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2010/02/graphic_presentation_3.png" alt="snapshot from Williard C. Brinton's 1939 book Graphic Presentation" width="100%" /></p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2010/02/28/magic-in-graphs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>An Introduction to Rich Internet Applications</title>
		<link>http://weblog.mrinalwadhwa.com/2010/01/24/an-introduction-to-rich-internet-applications/</link>
		<comments>http://weblog.mrinalwadhwa.com/2010/01/24/an-introduction-to-rich-internet-applications/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 20:48:19 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[acm]]></category>
		<category><![CDATA[compute]]></category>
		<category><![CDATA[compute2010]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[rich internet applications]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1334</guid>
		<description><![CDATA[<p>I had the opportunity to present a 4.5 hr lecture on <strong>Building Rich Internet Applications</strong> at <a href="http://compute.acmbangalore.org/">ACM&#8217;s Compute 2010</a> today. We started out by defining <a href="http://weblog.mrinalwadhwa.com/2008/10/24/what-is-an-ria/">what an RIA is</a> and exploring the various RIA platforms available, we then further explored the Flash Platform in more detail, wrote some <a href="http://github.com/mrinalwadhwa/flash-player-internals">experimental code</a> to understand the internals of Flash Player, looked at Flex 4 and its various new features and also spent some time understanding the <a href="http://weblog.mrinalwadhwa.com/2009/12/01/custom-components-in-flex-4/">Flex Component Lifecycle</a> </p>
<p>Here&#8217;s the slide deck from beginning of the lecture which tries to define what an RIA is and explores the architecture a typical RIA platform &#8230;</p>
<div style="width:640px;text-align:left" id="__ss_2978421"><object style="margin:0px" width="640" height="535"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=anintroductiontorichinternetapllications-100123132503-phpapp01&#038;rel=0&#038;stripped_title=an-introduction-to-rich-internet-apllications" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=anintroductiontorichinternetapllications-100123132503-phpapp01&#038;rel=0&#038;stripped_title=an-introduction-to-rich-internet-apllications" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="535"></embed></object></div>
<p>&nbsp;</p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2010/01/24/an-introduction-to-rich-internet-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Going Commando in Flash Builder</title>
		<link>http://weblog.mrinalwadhwa.com/2009/12/03/going-commando-in-flash-builder/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/12/03/going-commando-in-flash-builder/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 01:49:35 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[cfeclipse]]></category>
		<category><![CDATA[commando]]></category>
		<category><![CDATA[flash builder]]></category>
		<category><![CDATA[flex builder]]></category>
		<category><![CDATA[flexbuilder]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[shortcuts]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[sniptreeview]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1286</guid>
		<description><![CDATA[<p>Along with the <a href="http://weblog.mrinalwadhwa.com/2009/12/01/custom-components-in-flex-4/">Custom Components in Flex 4</a> presentation I shared yesterday, I also gave a 15 minute lightening talk at <a href="endtoend.in/apps/forms/adobe/DevSummitNovDec09/home.html">Adobe DevSummit</a> on <strong>Keyboard Productivity in Flash Builder</strong>, this was just a quick show and tell where I walked people through various ways of what <a href="http://www.codinghorror.com/">Jeff Atwood</a> calls <a href="http://www.codinghorror.com/blog/archives/000825.html">Going Commando</a> &#8230;<!--more--></p>
<p>
<h4>Shortcuts</h4>
<p>Here are some Flash Builder Keyboard shortcuts I use very frequently, if you have suggestions on others that are especially handy, please let me know &#8230;  </p>
<table border="0" width="100%">
<tr>
<td><strong>CMD + 3</strong></td>
<td>- <a href="http://en.wikipedia.org/wiki/Swiss_Army_knife">the swiss knife</a> of a commando, jump to anywhere inside eclipse</td>
</tr>
<tr>
<td><strong>CMD + SHIFT + T</strong> </td>
<td>- find type</td>
</tr>
<tr>
<td><strong>CMD + SHIFT + R</strong> </td>
<td>- find resource</td>
</tr>
<tr>
<td><strong>CMD + O</strong></td>
<td>- find/jump within class</td>
</tr>
<tr>
<td><strong>CMD + E</strong></td>
<td>- switch editors (CMD 3 also works for this)</td>
</tr>
<tr>
<td><strong>CMD + D</strong></td>
<td>- delete line which has cursor, without having to select</td>
</tr>
<tr>
<td><strong>ALT + Up/Down Arrows</strong></td>
<td>- Move Line/Selection Up/Down</td>
</tr>
<tr>
<td><strong>ALT + CMD + Up/Down Arrows</strong></td>
<td>- Copy Line/Selection Up/Down</td>
</tr>
<tr>
<td><strong>CMD + W</strong></td>
<td>- Close tab</td>
</tr>
</table>
<p><em>* CMD on OSX = CTRL on Windows</em></p>
<p>
<h4>Customize</h4>
<p>If you press CMD+3 and type &#8220;keys&#8221;, you&#8217;ll see the keyboard customization preferences panel for Flash Builder, I recommend spending some time customizing Builder for your own needs, for example I use CMD+1 and CMD+2 to switch between Develop/Debug perspectives. I barely use the NumPad on my keyboard so I&#8217;ve customized it to be all keyboard shortcuts, pressing CMD+0 inserts snippets </p>
<p>
<h4>Snippets</h4>
<p>Having a good snippets plugin can greatly improve a developer&#8217;s productivity, I love how Snippets work in <a href="http://macromates.com/">TextMate</a>, I&#8217;m still searching for a good solution for this in Flash Builder, till now I&#8217;ve been using <a href="http://www.andymcintosh.com/?p=116">CFEclipse&#8217;s SnipTreeView</a> but the problem is it only works with AS3 code and can&#8217;t handle MXML. I was so desperate one day that I figured out that it fails because  the CFEclipse <a href="http://trac.cfeclipse.org/browser/org.cfeclipse.cfml/trunk/src/org/cfeclipse/cfml/editors/actions/InsertSnippetAction.java">InsertSnippetAction class on Line No 71</a> assumes that the editor is an ITextEditor, while this is true for most Eclipse editors, the MXML editor is actually made of 2 editors a Design Editor and an ITextEditor, so the type cast on Line 71 fails &#8230; I never got to building CFEclipse on my own though. But, it looks like <a href="http://theflashblog.com/">Lee Brimelow</a> did, he has released <a href="http://theflashblog.com/?p=1494">a fix which makes SnipTreeView work</a> with MXML editor, unfortunately though Lee&#8217;s fix doesn&#8217;t work for me because of a Java version issue on OSX Leopard.        </p>
<p>Another handy Mac only tool is <a href="http://www.smileonmymac.com/TextExpander/">TextExpander</a>. It sometimes breaks your formatting in eclipse, but that has gotten better with Flash Builders new auto formatting improvements.
</p>
<p>
<h4>Multi Clipboard</h4>
<p>A multi-clipboard tool is another must have for all developers, I use <a href="http://jumpcut.sourceforge.net/">Jumpcut</a> on OSX and it is a big big productivity boost to not have switch between files and applications when copying and pasting. I don&#8217;t know any good equivalent for Windows, so if you know of one, please let me know. </p>
<p>Finally, I have to thank <a href="http://www.riageeks.com/">Chetan Sachdev</a> because he got me hooked to optimizing my workflow using the keyboard while we were working together on a project earlier this year.
</p>
<p>I would love to know if you have any other handy tips on Going Commando. </p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/12/03/going-commando-in-flash-builder/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Custom Components in Flex 4</title>
		<link>http://weblog.mrinalwadhwa.com/2009/12/01/custom-components-in-flex-4/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/12/01/custom-components-in-flex-4/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 11:21:21 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[components]]></category>
		<category><![CDATA[custom components]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[halo]]></category>
		<category><![CDATA[spark]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1252</guid>
		<description><![CDATA[<p>I gave a presentation on <strong>Custom Components in Flex 4</strong> at <a href="http://endtoend.in/apps/forms/adobe/DevSummitNovDec09/home.html">Adobe Devsummit</a> last week in Chennai and today in Hyderabad, here&#8217;s the slidedeck where we create an <a href="http://en.wikipedia.org/wiki/Imperial_stormtrooper">Imperial StormTrooper</a> component</p>
<div style="width:640px;text-align:left" id="__ss_2622384"><object style="margin:0px" width="640" height="535"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=customcomponentsinflex4-091201050800-phpapp02&#038;stripped_title=custom-components-in-flex-4" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=customcomponentsinflex4-091201050800-phpapp02&#038;stripped_title=custom-components-in-flex-4" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="535"></embed></object></div>
<p></p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/12/01/custom-components-in-flex-4/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Flash, Erlang and Realtime Collaborative Interfaces</title>
		<link>http://weblog.mrinalwadhwa.com/2009/11/28/flash-erlang-and-realtime-collaborative-interfaces/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/11/28/flash-erlang-and-realtime-collaborative-interfaces/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 02:49:20 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[amf]]></category>
		<category><![CDATA[bangalore]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[sapteched09]]></category>
		<category><![CDATA[teched]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1215</guid>
		<description><![CDATA[<p>I&#8217;ve been learning <a href="http://www.erlang.org/">Erlang</a> for the past few weeks and loving the simplicity and beauty of the language. As part of <a href="http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/16881">a discussion at SAP TechEd</a>, last week, I ended up creating a simple, rather rudimentary prototype of a realtime messaging server that enables collaborative user interfaces where multiple users can simultaneously work with the same interface &#8230; </p>
<p>Here&#8217;s a video of the code in action &#8230; </p>
<p><embed src="http://blip.tv/play/AYGysw4C" type="application/x-shockwave-flash" width="650" height="396" allowscriptaccess="always" allowfullscreen="true"></embed> </p>
<p>As you watch the above video, note as I drag a rectangle in any one Flash application, its sends AMF encoded binary messages to the server and the server multicasts these messages to other connected clients and those clients update in almost realtime. While in the example above all the application instances are running on the same system, they could just as easily be running on different systems and still communicate via the server.</p>
<p>Here the code for the Erlang server &#8230;</p>
<pre>
<span style="color:#90a729">0001 </span><span style="color:#0000de">-</span><span style="color:#000000; font-weight:bold">module</span><span style="color:#0000de">(</span>server<span style="color:#0000de">)</span>.
<span style="color:#90a729">0002 </span><span style="color:#0000de">-</span><span style="color:#000000; font-weight:bold">export</span><span style="color:#0000de">([</span>start<span style="color:#0000de">/</span><span style="color:#0da344">1</span><span style="color:#0000de">,</span>stop<span style="color:#0000de">/</span><span style="color:#0da344">0</span><span style="color:#0000de">])</span>.
<span style="color:#90a729">0003 </span>
<span style="color:#90a729">0004 </span><span style="color:#0000de">-</span><span style="color:#000000; font-weight:bold">define</span><span style="color:#0000de">(</span>TCP_OPTIONS<span style="color:#0000de">,[</span><span style="color:#c42638; font-weight:bold">binary</span><span style="color:#0000de">,</span>
<span style="color:#90a729">0005 </span>                     <span style="color:#0000de">{</span>packet<span style="color:#0000de">,</span> <span style="color:#0da344">0</span><span style="color:#0000de">},</span>
<span style="color:#90a729">0006 </span>                     <span style="color:#0000de">{</span>active<span style="color:#0000de">,</span> false<span style="color:#0000de">},</span>
<span style="color:#90a729">0007 </span>                     <span style="color:#0000de">{</span>reuseaddr<span style="color:#0000de">,</span> true<span style="color:#0000de">}])</span>.
<span style="color:#90a729">0008 </span>
<span style="color:#90a729">0009 </span><span style="color:#000000; font-weight:bold">start</span><span style="color:#0000de">(</span>Port<span style="color:#0000de">) -&gt;</span>
<span style="color:#90a729">0010 </span>	 Pid <span style="color:#0000de">=</span> <span style="color:#c42638; font-weight:bold">spawn</span><span style="color:#0000de">(</span><span style="color:#0a7f6d; font-weight:bold">fun</span><span style="color:#0000de">() -&gt;</span> <span style="color:#000000; font-weight:bold">manage</span><span style="color:#0000de">([])</span> <span style="color:#0a7f6d; font-weight:bold">end</span><span style="color:#0000de">),</span>
<span style="color:#90a729">0011 </span>    <span style="color:#c42638; font-weight:bold">register</span><span style="color:#0000de">(</span>client_manager<span style="color:#0000de">,</span> Pid<span style="color:#0000de">),</span>
<span style="color:#90a729">0012 </span>	 <span style="color:#0000de">{</span>ok<span style="color:#0000de">,</span> Socket<span style="color:#0000de">} =</span> gen_tcp<span style="color:#0000de">:</span><span style="color:#000000; font-weight:bold">listen</span><span style="color:#0000de">(</span>Port<span style="color:#0000de">,</span> ?TCP_OPTIONS<span style="color:#0000de">),</span>
<span style="color:#90a729">0013 </span>    <span style="color:#000000; font-weight:bold">accept</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">)</span>.
<span style="color:#90a729">0014 </span>
<span style="color:#90a729">0015 </span><span style="color:#000000; font-weight:bold">stop</span><span style="color:#0000de">() -&gt;</span> todo.
<span style="color:#90a729">0016 </span>
<span style="color:#90a729">0017 </span><span style="color:#000000; font-weight:bold">accept</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">) -&gt;</span>
<span style="color:#90a729">0018 </span>  	 <span style="color:#0000de">{</span>ok<span style="color:#0000de">,</span> NewSocket<span style="color:#0000de">} =</span> gen_tcp<span style="color:#0000de">:</span><span style="color:#000000; font-weight:bold">accept</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">),</span>
<span style="color:#90a729">0019 </span>    <span style="color:#c42638; font-weight:bold">spawn</span><span style="color:#0000de">(</span><span style="color:#0a7f6d; font-weight:bold">fun</span><span style="color:#0000de">() -&gt;</span> <span style="color:#000000; font-weight:bold">recieve</span><span style="color:#0000de">(</span>NewSocket<span style="color:#0000de">)</span> <span style="color:#0a7f6d; font-weight:bold">end</span><span style="color:#0000de">),</span>
<span style="color:#90a729">0020 </span>    client_manager <span style="color:#0000de">! {</span>connected<span style="color:#0000de">,</span> NewSocket<span style="color:#0000de">},</span>
<span style="color:#90a729">0021 </span>    <span style="color:#000000; font-weight:bold">accept</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">)</span>.
<span style="color:#90a729">0022 </span>
<span style="color:#90a729">0023 </span><span style="color:#000000; font-weight:bold">recieve</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">) -&gt;</span>
<span style="color:#90a729">0024 </span>    <span style="color:#0a7f6d; font-weight:bold">case</span> gen_tcp<span style="color:#0000de">:</span><span style="color:#000000; font-weight:bold">recv</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">,</span> <span style="color:#0da344">0</span><span style="color:#0000de">)</span> <span style="color:#0a7f6d; font-weight:bold">of</span>
<span style="color:#90a729">0025 </span>        <span style="color:#0000de">{</span>ok<span style="color:#0000de">,</span> Data<span style="color:#0000de">} -&gt;</span>
<span style="color:#90a729">0026 </span>            client_manager <span style="color:#0000de">! {</span>multicast<span style="color:#0000de">,</span>Socket<span style="color:#0000de">,</span>Data<span style="color:#0000de">},</span>
<span style="color:#90a729">0027 </span>            <span style="color:#000000; font-weight:bold">recieve</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">);</span>
<span style="color:#90a729">0028 </span>        <span style="color:#0000de">{</span>error<span style="color:#0000de">,</span> closed<span style="color:#0000de">} -&gt;</span>
<span style="color:#90a729">0029 </span> 		 client_manager <span style="color:#0000de">! {</span>disconnect<span style="color:#0000de">,</span> Socket<span style="color:#0000de">}</span>
<span style="color:#90a729">0030 </span>    <span style="color:#0a7f6d; font-weight:bold">end</span>.
<span style="color:#90a729">0031 </span>
<span style="color:#90a729">0032 </span><span style="color:#000000; font-weight:bold">manage</span><span style="color:#0000de">(</span>Sockets<span style="color:#0000de">) -&gt;</span>
<span style="color:#90a729">0033 </span>    <span style="color:#0a7f6d; font-weight:bold">receive</span>
<span style="color:#90a729">0034 </span>        <span style="color:#0000de">{</span>connected<span style="color:#0000de">,</span> Socket<span style="color:#0000de">} -&gt;</span>
<span style="color:#90a729">0035 </span>            NewSockets <span style="color:#0000de">= [</span>Socket <span style="color:#0000de">|</span> Sockets<span style="color:#0000de">];</span>
<span style="color:#90a729">0036 </span>        <span style="color:#0000de">{</span>disconnected<span style="color:#0000de">,</span> Socket<span style="color:#0000de">} -&gt;</span>
<span style="color:#90a729">0037 </span>            NewSockets <span style="color:#0000de">=</span> lists<span style="color:#0000de">:</span><span style="color:#000000; font-weight:bold">delete</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">,</span> Sockets<span style="color:#0000de">);</span>
<span style="color:#90a729">0038 </span>        <span style="color:#0000de">{</span>multicast<span style="color:#0000de">,</span>Socket<span style="color:#0000de">,</span> Data<span style="color:#0000de">} -&gt;</span>
<span style="color:#90a729">0039 </span>            <span style="color:#000000; font-weight:bold">multicast</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">,</span> Sockets<span style="color:#0000de">,</span> Data<span style="color:#0000de">),</span>
<span style="color:#90a729">0040 </span>            NewSockets <span style="color:#0000de">=</span> Sockets
<span style="color:#90a729">0041 </span>    <span style="color:#0a7f6d; font-weight:bold">end</span><span style="color:#0000de">,</span>
<span style="color:#90a729">0042 </span>    <span style="color:#000000; font-weight:bold">manage</span><span style="color:#0000de">(</span>NewSockets<span style="color:#0000de">)</span>.
<span style="color:#90a729">0043 </span>
<span style="color:#90a729">0044 </span><span style="color:#000000; font-weight:bold">multicast</span><span style="color:#0000de">(</span>FromSocket<span style="color:#0000de">,</span> ToSockets<span style="color:#0000de">,</span> Data<span style="color:#0000de">) -&gt;</span>
<span style="color:#90a729">0045 </span>    SendData <span style="color:#0000de">=</span> <span style="color:#0a7f6d; font-weight:bold">fun</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">) -&gt;</span> gen_tcp<span style="color:#0000de">:</span><span style="color:#000000; font-weight:bold">send</span><span style="color:#0000de">(</span>Socket<span style="color:#0000de">,</span> Data<span style="color:#0000de">)</span> <span style="color:#0a7f6d; font-weight:bold">end</span><span style="color:#0000de">,</span>
<span style="color:#90a729">0046 </span>    Sockets <span style="color:#0000de">= [</span> S <span style="color:#0000de">||</span> S <span style="color:#0000de">&lt;-</span> ToSockets<span style="color:#0000de">,</span> S <span style="color:#0000de">/=</span> FromSocket<span style="color:#0000de">],</span>
<span style="color:#90a729">0047 </span>    lists<span style="color:#0000de">:</span><span style="color:#000000; font-weight:bold">foreach</span><span style="color:#0000de">(</span>SendData<span style="color:#0000de">,</span> Sockets<span style="color:#0000de">)</span>.
</pre>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/11/28/flash-erlang-and-realtime-collaborative-interfaces/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The state of Enterprise UIs : &#8220;It&#8217;s a design thinking problem&#8221;</title>
		<link>http://weblog.mrinalwadhwa.com/2009/09/08/the-state-of-enterprise-ui/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/09/08/the-state-of-enterprise-ui/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 16:46:22 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[RIA]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Accenture]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[deloitte]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[enterprise ui]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[james governer]]></category>
		<category><![CDATA[redmonk]]></category>
		<category><![CDATA[thomas otter]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1160</guid>
		<description><![CDATA[<p><a href="http://www.redmonk.com/jgovernor/">James Governor</a> of RedMonk yesterday kicked off an interesting <a href="http://www.redmonk.com/jgovernor/2009/09/04/front-ends-portal-plasticity-glue-to-putty-sap-to-adobe-2/">discussion about the state of Enterprise User Interfaces</a>, more specifically Enterprise Portals and points out &#8230;</p>
<blockquote><h3><em>&#8220;&#8230; That’s right- less painful for users. Products like IBM WebSphere Portal and SAP Netweaver Portal were supposed to bring much improved user interaction models to enterprise IT, but unfortunately traditional systems-focused IT departments, rather than user interaction specialists and their web brethren, did the work &#8230;&#8221;</em></h3>
</blockquote>
<p> James eludes to the crux of the problem in the above quote and <a href="http://blogs.gartner.com/thomas_otter/">Thomas Otter</a> highlights it further in a <a href="http://www.redmonk.com/jgovernor/2009/09/04/front-ends-portal-plasticity-glue-to-putty-sap-to-adobe-2/#comment-541238">comment</a> saying &#8230;</p>
<blockquote><h3><em>I sense that most of the problems/challenges with enterprise UI are not just a tool challenge. It is a design thinking problem. Until design thinking permeates enterprise application development, UI will be a sore point.</em></h3>
</blockquote>
<p>Thomas is right, it is <strong>a design thinking problem</strong>, more precisely, the problem is that <strong>there are no design thinkers in most teams</strong> that build or customize enterprise software&#8230;.<!--more--> A quick search for Job posts with keywords &#8220;interaction designer SAP&#8221; and other related terms on various reputed job boards <a href="http://scncareercenter.jobtarget.com/c/search_results.cfm?t730=designer&#038;t737=&#038;t15195=&#038;t15174=&#038;t731=&#038;t732=&#038;max=25&#038;site_id=8446&#038;search=Find+Jobs">here</a>, <a href="http://www.indeed.co.in/jobs?q=interaction+designer+sap&#038;l=">here</a>, <a href="http://seeker.dice.com/jobsearch/servlet/JobSearch?op=300&#038;N=0&#038;Hf=0&#038;NUM_PER_PAGE=30&#038;Ntk=JobSearchRanking&#038;Ntx=mode+matchall&#038;AREA_CODES=&#038;AC_COUNTRY=1525&#038;QUICK=1&#038;ZIPCODE=&#038;RADIUS=64.37376&#038;ZC_COUNTRY=0&#038;COUNTRY=1525&#038;STAT_PROV=0&#038;METRO_AREA=33.78715899%2C-84.39164034&#038;TRAVEL=0&#038;TAXTERM=0&#038;SORTSPEC=0&#038;FRMT=0&#038;DAYSBACK=30&#038;LOCATION_OPTION=2&#038;FREE_TEXT=interaction+designer+sap&#038;WHERE=">here</a> and a few other places revealed almost no relevant results .. clearly we don&#8217;t even realize yet that we need to design the interaction a user has with the software we build .. so it should be no surprise that our business software is a pain to use.</p>
<p>It is easy to blame vendors like SAP and IBM in this scenario though &#8230; our company portal is a pain to use, SAP must not have done a good job building it .. this is not always the right assumption, software like SAP portal etc. are platforms that allow an extreme amount of customization and often its this team doing the customization that puts together most of what a user will experience .. believe it or not SAP portal is HTML and JavaScript in your browser &#8230; yes the same HTML and JavaScript that powers GMail, Google Reader, Apple.com or numerous other engaging experiences on the Internet that you can find listed on various web showcases like <a href="http://notcoffee.net/">this</a> and <a href="http://usejquery.com/">this</a>.</p>
<p>I bet if the same people who build these experiences on the web were part of the team building and customizing your corporate portal we would not be having this conversation. Yet, I&#8217;ve been on this side of similar conversations many times before and this is right about the time where you hear the words &#8230;</p>
<blockquote><h3><em>&#8220;&#8230; but, I don&#8217;t need all this <strong>flashy</strong> stuff on my business app &#8230;&#8221;</em></h3>
</blockquote>
<p>Unfortunately, many business decision makers very often fail to see beyond the commercial glitz of well designed applications on the Internet and quickly dismiss or underrate the need of an Interaction designer on their team. They miss to see that Interaction design is about thinking and researching how a users interacts with your software, how he feels and how can his feelings be optimized to pleasure, comfort and satisfaction. Its not about rounded corners or gradients or &#8220;flashy&#8221; animations .. those are just some visual design tools that sometimes (not always) help enhance how a user feels when using software.  </p>
<p>Things are changing though, as <a href="http://www.yojibee.com/">Anne</a> points out in <a href="<a href="http://www.redmonk.com/jgovernor/2009/09/04/front-ends-portal-plasticity-glue-to-putty-sap-to-adobe-2/#comment-541173">a comment on James&#8217; post</a> .. the last year or so has seen a lot of new interest in the business value of good user interfaces and James&#8217; post mentions that companies like Deloitte and Accenture realize this value and &#8220;have built practices dedicated to using Adobe technology to make existing enterprise applications and their portal front ends less painful for users&#8221;. He goes on to quote Jaco Von Eeden from Deloitte &#8230;</p>
<blockquote><h3><em>“Virtually every ERP deal we see we ask where can we use Adobe. We have a reasonable revenue flow and fantastic pipeline.”</em></h3>
</blockquote>
<p>This increasing interest in the value of good user interfaces is great for the industry, but I&#8217;m not sure if the above approach that Deloitte is embracing is the right way to go .. we should not be force fitting a particular technology into a solution, but instead asking what is the best way to solve a problem and what is the best technology to build that solution.</p>
<p>Adobe&#8217;s technologies can be used to build some great solutions but this choice of using a particular technology should not be made by business drivers &#8230; instead, it should be based on proper understanding of what is needed. Remember, it is very easy to use these so called <a href="http://weblog.mrinalwadhwa.com/2008/10/24/what-is-an-ria/">Rich Internet Applications</a> technologies to build a <strong>Not So Rich Internet Application</strong>.</p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/09/08/the-state-of-enterprise-ui/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Flex 4: Random Layout and Step Layout</title>
		<link>http://weblog.mrinalwadhwa.com/2009/08/22/flex-4-random-layout-and-step-layout/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/08/22/flex-4-random-layout-and-step-layout/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 14:01:00 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[gumbo]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[spark]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1142</guid>
		<description><![CDATA[<p>Yesterday at the <a href="http://bangalorefx.org">Bangalore Flex User Group</a> Meeting after <a href="http://www.thepixelcode.com/development/data-services/model-driven-development-using-lcds-3">Khan&#8217;s excellent talk</a> on LCDS3, Fiber and the Modeler Plugin we had some time left to so I decided to show everyone how cool and easy <a href="http://opensource.adobe.com/wiki/display/flexsdk/Spark+Horizontal+and+Vertical+Layout">layouts in Flex 4</a> are .. </p>
<p>Here are two quick layouts we wrote during the meeting as I showed everyone how easy it is to write a custom layout &#8230;</p>
<h4>Random Layout</h4>
<p><object width="650" height="380"><param name="movie" value="http://experiments.mrinalwadhwa.com/Flex4Layouts/RandomLayoutExample.swf"><embed src="http://experiments.mrinalwadhwa.com/Flex4Layouts/RandomLayoutExample.swf" width="650" height="380"></embed></param></object></p>
<h4>Step Layout</h4>
<p><object width="650" height="380"><param name="movie" value="http://experiments.mrinalwadhwa.com/Flex4Layouts/StepLayoutExample.swf"><embed src="http://experiments.mrinalwadhwa.com/Flex4Layouts/StepLayoutExample.swf" width="650" height="380"></embed></param></object></p>
<p>These layouts are currently somewhat crude but the idea was to convey how easy it is to write your own layouts &#8230; here the code for RandomLayout &#8230; just one simple function &#8230;<!--more--></p>
<p><iframe src ="http://experiments.mrinalwadhwa.com/Flex4Layouts/srcview/source/com/mrinalwadhwa/layouts/RandomLayout.as.html" width="100%" height="300"><br />
</iframe></p>
<p>Of course, these layout algorithms can get more complex &#8230; here&#8217;s the StepLayout code &#8230; </p>
<p><iframe src ="http://experiments.mrinalwadhwa.com/Flex4Layouts/srcview/source/com/mrinalwadhwa/layouts/StepLayout.as.html" width="100%" height="300"><br />
</iframe></p>
<p>For more elaborate examples you may want to checkout the <a href="http://weblog.mrinalwadhwa.com/2009/08/16/flex-4-concentric-layout/">ConcentricLayout</a> example I posted last week or Ryan Campbell&#8217;s very<a href="http://www.bobjim.com/2009/06/16/heres-5-3d-layouts-for-flex-4/"> cool 3D Layouts</a>. Evtim, an engineer on the Flex SDK team also has some <a href="http://evtimmy.com/category/custom-layout/">detailed posts on how to write Layouts</a> on his blog.  </p>
<p>Flex 4 is awesome.</p>
<hr />
<p><strong>UPDATE:</strong> You can view the complete source of the above example <a href="http://experiments.mrinalwadhwa.com/Flex4Layouts/srcview/">here</a> or download it from <a href="http://experiments.mrinalwadhwa.com/Flex4Layouts/srcview/Flex4layouts.zip">here.</a> </p>
<hr />
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/08/22/flex-4-random-layout-and-step-layout/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Flex 4 Concentric Layout</title>
		<link>http://weblog.mrinalwadhwa.com/2009/08/16/flex-4-concentric-layout/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/08/16/flex-4-concentric-layout/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 16:16:49 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[concentric layout]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[gumbo]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[layouts]]></category>
		<category><![CDATA[spark]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1121</guid>
		<description><![CDATA[<p><a href="http://opensource.adobe.com/wiki/display/flexsdk/Spark+Horizontal+and+Vertical+Layout">Layouts in Flex 4</a> are decoupled from containers and its quite simple to define your own layout. Yesterday I wrote ConcentricLayout. </p>
<p><strong>ConcentricLayout</strong> arranges layout elements in such a way that their centers are aligned and their size sequentially decreases. The width of each layout element is less than the previous element by a value specified using the <em>horizontalGap</em> property and the height of each layout element is less than the previous element by a value specified using the <em>verticalGap</em> property. If the element has an explicit width or an explicit height it still aligns its center but is not resized. You can tell the layout to force a resize of all elements and ignore their explicitly specified size using the <em>forceResize</em> flag</p>
<p>Here&#8217;s a quick example: </p>
<p><object width="550" height="400"><param name="movie" value="http://experiments.mrinalwadhwa.com/ConcentricLayout/ConcentricLayout.swf"><embed src="http://experiments.mrinalwadhwa.com/ConcentricLayout/ConcentricLayout.swf" width="650" height="380"></embed></param></object></p>
<h3><a href="http://experiments.mrinalwadhwa.com/ConcentricLayout/srcview/">View Source</a></h3>
<h3><a href="http://experiments.mrinalwadhwa.com/ConcentricLayout/srcview/ConcentricLayout.zip">Download Source</a></h3>
<p>&nbsp;</p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/08/16/flex-4-concentric-layout/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Gradient fidelity and FXG generation tools</title>
		<link>http://weblog.mrinalwadhwa.com/2009/08/02/gradient-fidelity-and-fxg/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/08/02/gradient-fidelity-and-fxg/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 23:39:10 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[catalyst]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[fxg]]></category>
		<category><![CDATA[generate]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1079</guid>
		<description><![CDATA[<p>Last week I got some <a href="http://www.adobe.com/products/illustrator/">Illustrator</a> files from the designer on our team, which I had to convert into Flex 4 skins. When we had planned this, we thought this would be easy &#8230; the designer makes the skins in Illustrator, we export FXG directly from Illustrator or we import them into <a href="http://labs.adobe.com/technologies/flashcatalyst/">Catalyst</a>, do some tweaking and then export to get FXG that we can use in SparkSkins .. unfortunately it wasn&#8217;t that simple, I&#8217;m documenting some of the gotchas and workarounds I learned for anyone else who may run into the same situation.</p>
<p>Most of the problems we had were related to gradients, here are some snapshots &#8230;</p>
<p><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai.png" alt="Original Graphic created in Illustrator" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg.png" alt="FXG Exported from Illustrator" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg-catalyst.png" alt="FXG Exported from Catalyst" />  </p>
<ol>
<li>The first strip is original graphic created in Illustrator</li>
<li>The second strip FXG Exported from Illustrator</li>
<li>The third strip is original Illustrator file imported into Catalyst and then FXG exported from Catalyst</li>
</ol>
<p>Clearly, all of them are different.<!--more--> While this difference may not feel significant when looked at in this isolated manner, if you have many gradients in your design it can significantly affect the fidelity of the design.</p>
<p>Here&#8217;s the code generated by Illustrator&#8217;s FXG export feature ..<br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai-fxg-code.png" alt="Code of FXG exported from Illustrator" />  </p>
<p>Here&#8217;s the code generated by first importing the Illustrator file into Catalyst and then exporting FXG ..<br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/catalyst-fxg-code.png" alt="Code of FXG exported from Catalyst" /> </p>
<p>Note that the colors exported by each are different.</p>
<p><em><strong>Suggestion:</strong> Illustrator&#8217;s FXG export should have a way to add namespace prefixes while exporting, would be helpful</em>  </p>
<p>At this point, I asked about this problem on an Adobe forum and one of the team members replied and suggested I should &#8230; In Illustrator, convert colors to SRGB and turn off color management. So I did that.<br />
Here&#8217;s the original followed by what it looks like with the new settings &#8230; </p>
<p><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai.png" alt="Original Graphic created in Illustrator" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai-colormanagementoff.png" alt="Original with Color Management turned off" />  </p>
<p>So, our designer will have to redo some work in the new settings to create the original look, that&#8217;s fine, as long as we can get the exact same look in out final Flex application. But that didn&#8217;t work out either ..</p>
<ol>
<li>The original graphic with the new color settings applied</li>
<li>FXG exported from illustrator</li>
<li>FXG exported from Catalyst</li>
<li>The original graphic without the new color settings</li>
</ol>
<p><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai-colormanagementoff.png" alt="Original with Color Management turned off" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg-catalyst-c.png" alt="FXG exported from Illustrator with Color Management turned off" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg-catalyst-c.png" alt="FXG exported from Catalyst" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai.png" alt="Original Graphic created in Illustrator" />   </p>
<p>Here&#8217;s the code of FXG exported from Illustrator &#8230;<br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg-ci-code-c.png" alt="" /> </p>
<p>Here&#8217;s the code of FXG exported from Catalyst &#8230;<br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg-catalyst-code-c.png" alt="" /> </p>
<p>Note that this time both the FXGs are exactly the same except they still don&#8217;t look like the desired look drawn in Illustrator. Even if we use different color settings.</p>
<p>Now I noticed that Illustrator also allows exporting to <a href="http://www.w3.org/Graphics/SVG/">SVG</a> so I exported my original graphic as SVG &#8230;</p>
<ol>
<li>Original</li>
<li>SVG exported from Illustrator</li>
</ol>
<p><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai.png" alt="Original Graphic created in Illustrator" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/svg.png" alt="SVG" />   </p>
<p>So that&#8217;s not perfect either but its much closer than any of the FXG output above &#8230;</p>
<p>When I looked at the code of the exported SVG  &#8230;<br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/svg-code.png" alt="SVG" />   </p>
<p>Clearly there is more color detail in there, it has 10 gradient stops as opposed to only 3 in the FXG output we got, this explains lower fidelity of our FXG output .. so I translated this SVG <strong>manually</strong> to FXG ..</p>
<p><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg-modified-code.png" alt="SVG" />   </p>
<p>Here&#8217;s the original followed by the final FXG I created manually &#8230;  </p>
<p><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/ai.png" alt="Original Graphic created in Illustrator" /><br />
<img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/08/fxg-modified.png" alt="Modified FXG" />   </p>
<p>Not perfect, but fairly close.</p>
<p><em><strong>Suggestion:</strong> Illustrator and Catalyst FXG export should not drop gradient stops</em></p>
<p>Since, Catalyst is still in beta, I think Adobe will probably fix this by the time it releases but till then you can use the SVG workaround if you run into a similar situation.</p>
<p>I had to convince our designer to settle at &#8220;fairly close&#8221; for now, but if this Designer-Developer Workflow thing has to work, we need to get better at generating the exact look a designer draws in his/her design tool, at the click of  a button. </p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/08/02/gradient-fidelity-and-fxg/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Flex4/FXG EllipticalArc Primitive</title>
		<link>http://weblog.mrinalwadhwa.com/2009/07/21/fxg-ellipticalarc-primitive/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/07/21/fxg-ellipticalarc-primitive/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 22:37:30 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[degrafa]]></category>
		<category><![CDATA[ellipticalarc]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[fxg]]></category>
		<category><![CDATA[gumbo]]></category>
		<category><![CDATA[primitive]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1025</guid>
		<description><![CDATA[<p>Flex 4 does not have an EllipticalArc primitive yet, but I needed one today .. thankfully <a href="http://degrafa.org">Degrafa</a> already has an <a href="http://degrafa.googlecode.com/svn/branches/Origin/Degrafa/com/degrafa/geometry/EllipticalArc.as">EllipticalArc Class</a>, I translated that to work with Flex 4.</p>
<p>EllipticalArc is a <a href="http://livedocs.adobe.com/flex/gumbo/langref/spark/primitives/supportClasses/FilledElement.html">FilledElement</a> so it can have a Fill and a Stroke just like other FilledElements  <a href="http://livedocs.adobe.com/flex/gumbo/langref/spark/primitives/Rect.html">Rect</a>, <a href="http://livedocs.adobe.com/flex/gumbo/langref/spark/primitives/Ellipse.html">Ellipse</a> etc.</p>
<p><object width="650" height="900"><param name="movie" value="http://experiments.mrinalwadhwa.com/EllipticalArc/Example.swf"><embed src="http://experiments.mrinalwadhwa.com/EllipticalArc/Example.swf"  width="650" height="900"></embed></param></object></p>
<h4><a href="http://experiments.mrinalwadhwa.com/EllipticalArc/">View Example</a></h4>
<h4><a href="http://code.google.com/p/ellipticalarc/source/browse/trunk/src/com/mrinalwadhwa/primitives/EllipticalArc.as">View Source</a></h4>
<p>I haven&#8217;t yet implemented some of the layout related functionality that other primitives like Rect, Ellipse etc implement &#8230; but it seems to work fine with basic layouts, which is what I needed for now. The class is <a href="http://code.google.com/p/ellipticalarc/">hosted on Google code</a> under the Apache 2.0 License, just in case someone wants to improve it.</p>
<p>Thank you to the <a href="http://degrafa.org">Degrafa</a> team for sharing their amazing work that saves me loads of time every now and then.</p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/07/21/fxg-ellipticalarc-primitive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disappointed.</title>
		<link>http://weblog.mrinalwadhwa.com/2009/07/19/disappointed/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/07/19/disappointed/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 13:25:07 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[India]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[cmmunity]]></category>
		<category><![CDATA[comunity]]></category>
		<category><![CDATA[evangelism]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=1005</guid>
		<description><![CDATA[<p>I sent an email to the Adobe India Community Champions mailing list about the direction of Adobe&#8217;s evangelism efforts in India, the email was originally intended for the 10 or so Community Champions, but since people from Adobe have started <a href="http://twitter.com/hsivaram">reacting in public</a> without reacting on the list first, I feel its better to post my thoughts in public as well.</p>
<p>Here is how Adobe evangelist <a href="http://blog.flexgeek.in">Harish Sivaramakrish</a> chose to react to my thoughts <a href="http://twitter.com/hsivaram">on twitter</a>, I feel that its unfortunate that this is Adobe&#8217;s reaction to genuine critique &#8230;<!--more--></p>
<p> <img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/07/harish-adobe-tweets.jpg" alt="Adobe's reaction to critique" /> </p>
<p>I believe that Adobe&#8217;s various community programs like the User Group Program, Community Champions program etc are meant to obtain genuine feedback and its sad to receive such a personally attacking reaction when you speak your mind.     </p>
<p>I have not asked other members of the list for their permission to post their parts of the thread in public .. so I am only posting my thoughts and not the whole thread but there were at least 4 other champions who agreed with me on many of my points but not everything .. </p>
<p>Here&#8217;s the email I sent on Thursday &#8230;</p>
<blockquote><p>
I am disappointed by the consistent failure of Adobe India to support community, user groups, community mailing lists, community events, community leaders etc.</p>
<p>I just got an email about <a href="http://www.endtoend.in/apps/forms/adobe/DevSummit09/registration.htm">Adobe devsummit</a> &#8230; yes the same event that gives flex builder to everyone who attends and draws the maximum audience of all Flex related events throughout the year.</p>
<p>Last year in August when I first heard of the same event &#8230; I had written to the Adobe evangelism team .. congratulating them on organizing a large scale event that would draw audiences from outside our regular community &#8230; I also suggested that they should include community speakers in the event to add to their existing content &#8230; I personally offered to present a talk on Advanced concepts in AIR (AIR was completely not present in that agenda). My intention at the time was to help improve the quality of the content that would be presented at the event .. because well I was and still am tired of the &#8220;Intro&#8221; like talks we hear at all Adobe events in India &#8230; you cannot blame Adobe for this because these talks are presented by evangelists and not by developers who use Flex to build real stuff &#8230; hence I suggested Adobe should include community experts who have more experience in the trenches than Adobe evangelists.</p>
<p>The reply I got to that email last year stated that it was too late for what I was proposing and they would include community in future events .. yet, here we are a year down the line with an email about the same event in my Inbox and <strong>no prior communication to the community</strong> that I know off.</p>
<p>I&#8217;ve attended Adobe events outside of India and community takes center stage at those events &#8230;. I was at the AIR Bus tour in Washington DC in 2007 and at the venue the local DC Flex user group had been given a special pod (the only pod there) to promote their group &#8230; adobe presenters advertised the group after their presentations and encouraged people to join &#8230;. I have attended several Adobe events in India &#8230; none of them mentioned the local user group.<br />
I attended MAX in Chicago and there as well I <strong>saw special focus on community</strong> and user groups &#8230; if devsummit is the main event in India .. <strong>why doesn&#8217;t that include community in any form?</strong></p>
<p>While Adobe India events continue to be <strong>boring marketing gimmicks (there I said it) </strong>.. primarily I feel because they don&#8217;t include community  &#8230; its not just about the events &#8230;</p>
<p>1. Adobe India members are not active on flex-india or any user group mailing list &#8230; they just use flex-india as an advertisement medium. Local Indian Flex team members do not contribute to any local mailing lists, while I constantly see them active on flexcoders, flex sdk list and other international forums</p>
<p>2. Indian Flex team members are not active on the local user groups (the evangelists are) .. but why don&#8217;t I see the Flex engineers at out BangaloreFx meetings which happens in their own building?</p>
<p>3. Adobe evangelist go out and give presentations to several companies every day &#8230; I don&#8217;t think any of them mention the local Flex User Group or Flex India .. where all these new adopters could get help and gain knowledge.</p>
<p>I could go on &#8230;</p>
<p><strong>In short I feel while Adobe on the whole does a great job of including community &#8230; Adobe India has been completely ignoring it.</strong></p>
<p>I&#8217;m disappointed.
</p></blockquote>
<p>Himanshu Modi from <a href="http://www.teknopoint.info/">Tekno Point </a>agreed with some of my points but suggested that we as community champions should step up organize things on our own  &#8230; here&#8217;s my reaction his thoughts &#8230;</p>
<blockquote><p>
Hi Himanshu,</p>
<p>Thank you for replying.<br />
I see your point, .. but the events we organize as community champions is a whole other discussion .. yes we should do that and many of us have been &#8230;  RIA Connect, initRIA, User Group Tours/Meetings etc.</p>
<p>My point here is different &#8230; I&#8217;m disappointed because none of Adobe India&#8217;s existing efforts seem to include community &#8230; its as if they organize/plan everything forgetting that there is an active community out there that can help &#8230; I&#8217;m not requesting any new events here &#8230; I&#8217;m questioning why community is not included in exiting efforts &#8230; we see Adobe world wide do this beautifully everyday .. community is included at a very early stage .. take MAX for example or the launch of Adobe Groups.</p>
<p>I receive info about an event in San Fransisco 2 months in advance &#8230; in contrast .. I receive info about an event in Bangalore 18 days before the event along with public announcement  with obviously no room for suggestion and no inclusion of community whatsoever even though I had suggested that last year<br />
All Adobe India events have tech talks only from Adobe speakers .. <strong>why don&#8217;t they take advantage of expertise in the community?</strong></p>
<p>Also, why don&#8217;t I see adobe india .. support/promote/contribute to existing efforts of the community &#8230; user groups, mailing lists etc &#8230; did anyone from Adobe India help you promote RIA Connect?
</p></blockquote>
<p>John Koch from Adobe who has been very helpful to the Indian Community and has all my respect, acknowledged that he saw my frustration and would communicate my thoughts to all concerned .. here&#8217;s my reply to him &#8230;</p>
<blockquote><p>Hi John,</p>
<p>Thank you for replying &#8230;.. I know you understand my point of view &#8230; anyone who has spent some time thinking about community, its effects and its benefits should see what I&#8217;m saying.</p>
<p>What&#8217;s surprising to me is that there is team at Adobe India whose job is to focus on community and yet they repeated fail to see the obvious.</p>
<p>I&#8217;m picking on one particular team here &#8230; I know everyone in that team &#8230; <strong>they are all great guys and gals .. but I feel I&#8217;m obligated to point out their mistakes in the interest of a common goal </strong></p>
<p>I&#8217;m sorry to have put you in this position of having to communicate my strongly worded comments &#8230; I was about to put this in a blog post and let them know directly how I feel, but then I thought that saying something like that in public would put a lot of people on the defensive &#8230; and that is not what we need here. <strong>I would love to have this discussion be direct so if you just want to forward this thread to all concerned and have an all hands discussion I&#8217;m open to that.</strong></p>
<p>Thank you as always for helping.<br />
Mrinal
</p></blockquote>
<p>Anantharaman Mani who runs the <a href="http://groups.google.com/group/chennai-flex-user-group">Chennai Flex User Group</a> also agreed with me on some counts but made a point that there are cultural differences between India and abroad and it is somewhat unfair to single out one team at adobe when there is less community focus in all of India Software industry &#8230; here is my reply to his thoughts &#8230;</p>
<blockquote><p>
Hi Ananth,</p>
<p>Thank you for replying &#8230; you&#8217;ve raised a very good point about culture &#8230; but here&#8217;s as I see it &#8230;</p>
<p>Adobe India is impacted by two cultures &#8230;. 1. The culture of corporate India and 2. The culture of Adobe &#8230;.  you&#8217;re right most corporates in India don&#8217;t get community &#8230; but what surprises me is how Adobe India is not able to gain from its own world wide culture of nurturing communities &#8230; Adobe worldwide oozes with understanding of community &#8230; I mean big decisions a are made by including community &#8230; see the Flex SDK, see the Adobe Groups initiative, see the activity of Flex team members on mailing lists, twitter et al. &#8230; so how come Adobe India misses this and their evangelism efforts continue be <strong>one sided marketing messages </strong>&#8230; I mean that team might as well be called Adobe Marketing.</p>
<p>While they&#8217;re almost the same, there is a cultural difference between those two words &#8212;  <strong>Marketing and Evangelism.     </strong><br />
<strong><br />
(In a separate email, I said &#8230;)</strong></p>
<p>Why I&#8217;m singling out just team is because I want this one team to change their approach &#8230; that change will greatly help improve our ecosystem &#8230; blaming the society won&#8217;t get us anywhere.</p>
</blockquote>
<p>There were other valuable reactions on the thread from <a href="http://www.abdulqabiz.com/blog/">Abdul Qabiz</a> and others, but I will leave it to the other contributors of the discussion if they want to make their thoughts public. </p>
<p>Adobe community in India is small knit and I guess I&#8217;ve stepped on a few toes here .. but I feel that the reason Adobe runs various community programs is to solicit genuine critique and feedback, so being part of the community champions program, I feel obligated to share my thoughts and that is what I am doing here, unfortunate that people are <a href="http://twitter.com/hsivaram/status/2720912746">reacting the way they are</a>.   </p>
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/07/19/disappointed/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Presenting Flex 4 Component Lifecycle at FlexMania</title>
		<link>http://weblog.mrinalwadhwa.com/2009/07/04/flexmania/</link>
		<comments>http://weblog.mrinalwadhwa.com/2009/07/04/flexmania/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 00:52:09 +0000</pubDate>
		<dc:creator>Mrinal Wadhwa</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[brazil]]></category>
		<category><![CDATA[flex mania]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[flexmania]]></category>
		<category><![CDATA[mania]]></category>
		<category><![CDATA[mrinal]]></category>
		<category><![CDATA[mrinal wadhwa]]></category>
		<category><![CDATA[mrinalwadhwa]]></category>
		<category><![CDATA[present]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://weblog.mrinalwadhwa.com/?p=989</guid>
		<description><![CDATA[<p><a href="http://www.flexmania.com.br/"><img src="http://weblog.mrinalwadhwa.com/wp-content/uploads/2009/07/flexmania.jpg" alt="FlexMania" width="100%"/></a></p>
<p><a href="http://www.flexmania.com.br/">FlexMania</a> is a Brazilian online event organized by <a href="http://www.igorcosta.org/">Igor Costa</a>. The event is focused on the Flash Platform and has a great collection of Flash/Flex/AIR related <a href="http://www.flexmania.com.br/calendario.html">talks</a>.</p>
<p>Although, most of the talks are in portuguese, there are some interesting english sessions as well like Laura Arguello on <a href="http://mate.asfusion.com/">Mate Framework</a>, Stephen Downs (a.k.a Tink) on <a href="http://www.efflex.org/">Efflex</a> and Iiley Chen on <a href="http://www.aswing.org/">AsWing</a>    </p>
<p>I will also be presenting in english, my talk is &#8220;A Flex 4 Component&#8217;s Lifecycle&#8221; on Monday, July 6th at 15:30 GMT. </p>
<hr />
<strong>RECORDING: </strong>Here&#8217;s the 1hr long <a href="http://go.mrinalwadhwa.com/flext4"> Adobe Connect recording </a> of the talk from FlexMania</p>
<p><strong>SLIDES AND CODE: </strong>The <a href="http://weblog.mrinalwadhwa.com/2009/06/21/flex-4-component-lifecycle/">slides and code</a> from the talk can be found <a href="http://weblog.mrinalwadhwa.com/2009/06/21/flex-4-component-lifecycle/">here</a></p>
<hr />
]]></description>
		<wfw:commentRss>http://weblog.mrinalwadhwa.com/2009/07/04/flexmania/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
