<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-35991522</id><updated>2012-01-16T23:37:39.863+11:00</updated><category term='Others'/><category term='Coding'/><category term='Coldfusion'/><category term='Flex'/><category term='Flash'/><category term='Ubuntu'/><category term='actionscript'/><category term='javascript'/><category term='General'/><category term='mooflair AIR'/><category term='AIR'/><title type='text'>Breaking the loop</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35991522.post-6786007689081144813</id><published>2008-10-24T21:56:00.003+11:00</published><updated>2008-10-24T22:20:50.799+11:00</updated><title type='text'>Passing custom objects between Flex and CF from children classes</title><content type='html'>In one of my previous post about "Passing custom objects between Flex and CF" my example was using some value object (vo) classes not inheriting from a parent class. It would still work fine with vo classes inheriting from a parent class but you have to add the &amp;lt;cfproperties /&amp;gt;tags of the parent class, otherwise the properties of the parent class would not be passed between CF and Flex.&lt;br /&gt;&lt;br /&gt;You still can use the CF wizard of Flex builder to create your CFC from an AS class but it won't detect that your AS class inherits from another class, so once your cfc is generated add the extends attribute in the cfcomponent tag, the opening tag should look like:&lt;br /&gt;&lt;br /&gt;&amp;lt;cfcomponent output="false" alias="vo.Child" extends="vo.Parent"&amp;gt;&lt;br /&gt;&lt;br /&gt;and again, don't forget to copy all the cfproperty tags from the cfc parent class to your child class.&lt;br /&gt;&lt;br /&gt;Et Voila !&lt;br /&gt;PS: I know I could have put some more detailed examples but I'm in the middle of a project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-6786007689081144813?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/6786007689081144813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=6786007689081144813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6786007689081144813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6786007689081144813'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/10/passing-custom-objects-between-flex-and.html' title='Passing custom objects between Flex and CF from children classes'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-3794504324916564633</id><published>2008-09-08T10:37:00.007+10:00</published><updated>2008-09-13T21:29:03.915+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><category scheme='http://www.blogger.com/atom/ns#' term='mooflair AIR'/><title type='text'>Thank you Adobe and hello Mac</title><content type='html'>I am honored that &lt;a href="http://www.mooflair.com" target="_blank"&gt;mooFlair&lt;/a&gt; is #4 on the list of the "&lt;a href="http://www.adobe.com/devnet/flex/articles/apps_students.html" target="_blank"&gt;Top 10 Adobe Flex and AIR applications for students&lt;/a&gt;". I thought this could only happen in my secret dreams. A big thank to Areez Gangji and Adobe to show my work in such a positive way. There are still some bugs and enhancement to be made in my application. A few tests on one of my friend's Mac showed me some discrepancies, so I decided it was time to buy a Mac in order to test and develop correctly for both platforms. Also after using my niece's IMac I found out what the "think different" was about and it opened my eyes on this inspiring piece of technology. I went for the latest MacBook Pro, and I must say... I love it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-3794504324916564633?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/3794504324916564633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=3794504324916564633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3794504324916564633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3794504324916564633'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/09/thank-you-adobe-and-hello-mac.html' title='Thank you Adobe and hello Mac'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-3127596102820227192</id><published>2008-07-26T02:34:00.010+10:00</published><updated>2008-08-13T01:20:59.744+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Passing custom objects between Flex and CF</title><content type='html'>When building Flex apps, it's a common practice to use VOs, and therefore the possibility to send those data to web services as object without having to do any conversion, is an obvious need. Not only to work faster and more efficiently but also to help producing a much cleaner and maintainable code. In case you didn't know, you can do that with Coldfusion, it's seamless.&lt;br /&gt;&lt;br /&gt;I'm going to describe how to use this feature in Coldfusion, assuming that you have already used Flex remoting with Coldfusion. Basically, there are no difference in the way you are building your Flex/CF application. There are just a few things to set up in your VO class and CFC bean.&lt;br /&gt;&lt;br /&gt;- In your actionscript class, add the RemoteClass metatag and set the alias value to  the location of the corresponding CFC bean from the webroot. Remove the cfc extension and replace the "/" with dots ".". &lt;br /&gt;For example if my CFC url is http://localhost/somePath/SomeVO.cfc, the value for the alias parameter is  "somePath.SomeVO"&lt;br /&gt;&lt;div style="font-size:80%; border-width:1px;border-style:solid;border-color:#999999"&gt;&lt;br /&gt;package com.tai.vo.SomeVO&lt;br /&gt;{&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import flash.utils.ByteArray;&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt;[RemoteClass(alias="somePath.SomeVO")] &lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;[Bindable]&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public class SomeVO&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;  &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public var id:int;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public var title:String;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public var thumbData:ByteArray;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;... // more properties here&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;- in you Coldfusion cfc, add the "alias" attribute in the cfcomponent tag matching the alias name of the actionscript class, here "somePath.SomeVO":&lt;br /&gt;&lt;div style="font-size:80%;border-width:1px;border-style:solid;border-color:#999999"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfcomponent output="false" &lt;span style="color:#ff0000"&gt;alias="somePath.SomeVO"&lt;/span&gt; hint="I'm a bean"&amp;gt;&lt;br /&gt;&amp;lt;!---&lt;br /&gt;These property definitions are used when calling this CFC as a web services&lt;br /&gt;NOTE: these cfproperty tags do not set any default property values.&lt;br /&gt;---&amp;gt;&lt;br /&gt;&amp;lt;cfproperty name="id" type="numeric" default="0"&amp;gt;&lt;br /&gt;&amp;lt;cfproperty name="title" type="string" default=""&amp;gt;&lt;br /&gt;&amp;lt;cfproperty name="id" type="numeric" default="0"&amp;gt;&lt;br /&gt;&amp;lt;cfproperty name="thumbData" type="binary" default=""&amp;gt;&lt;br /&gt;... &amp;lt;!--- more properties here ---&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt;  //Initialize the CFC with the default properties values.&lt;br /&gt;  this.id = 0;&lt;br /&gt;  this.title = "";&lt;br /&gt;  this.thumbData = "";&lt;br /&gt;                //more properties here&lt;br /&gt;... &lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/cfcomponent&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;- Finally in the remote method of the CFC, set the data type of the argument accordingly. In our example "somePath.SomeVO" &lt;br /&gt;&lt;div style="font-size:80%;border-width:1px;border-style:solid;border-color:#999999"&gt;&lt;br /&gt;&amp;lt;cfcomponent output="false" hint="I'm the webservice" &amp;gt;&lt;br /&gt;&amp;lt;cffunction name="receiveSomeVO" access="remote" returntype="any"&amp;gt;&lt;br /&gt;&amp;lt;cfargument name="obj" &lt;span style="color:#ff0000"&gt;type="somePath.SomeVO"&amp;gt;&lt;/span&gt;&lt;br /&gt;....&amp;lt;!--- logic goes here ---&amp;gt;&lt;br /&gt;&amp;lt;/cffunction&amp;gt;&lt;br /&gt;&amp;lt;/cfcomponent&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If you want to return an instance of a custom class to Flex, just set the return type of the cfc method. e.g. if you want to return a instance of SomeVO set the return type to "somePath.SomeVO".&lt;br /&gt;&lt;br /&gt;Now even better, you can create you cfc bean object by using the CF wizard in Flex Builder:&lt;br /&gt;- Just right click on the .as VO class and select "generate cfc (base on as class)" under the coldfusion wizards. &lt;br /&gt;- You will be asked to select a location where to save the cfc. &lt;br /&gt;- In the property scope, set the properties as public. &lt;br /&gt;- Click finish&lt;br /&gt;- Open the generated CFC and verify that the value of the "alias" attribute of in the cfcomponent tag matches is correct.&lt;br /&gt;&lt;br /&gt;Recapitulation: &lt;br /&gt;- In your actionscript VO class, set the RemoteClass metadata tag, &lt;br /&gt;- create a corresponding cfc bean object manually or by using the coldfusion wizard provided in Flex Builder, and check the "alias" attribute value in cfcomponent.&lt;br /&gt;-  In your webservice component set cfargument datatype and eventually the returned  data type in the method consumed by your Flex Application. &lt;br /&gt;&lt;br /&gt;I have a very simple working example on my computer, if you are interested to download it, just put a request in the comments and I'll make it available somewhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-3127596102820227192?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/3127596102820227192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=3127596102820227192' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3127596102820227192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3127596102820227192'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/07/passing-custom-objects-between-flex-and.html' title='Passing custom objects between Flex and CF'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-3464588083543406388</id><published>2008-05-07T05:12:00.006+10:00</published><updated>2008-05-07T18:41:13.718+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><title type='text'>Know how long you've been away with AIR.</title><content type='html'>I have coded a little AIR app that displays the time while you are at your computer doing something and the time you are away from it. This is made possible by using the nativeApplication.timeSinceLastUserInput property which gives the time since the user as made her/his last input with the mouse or the keyboard. It took less than 50 lines of code - including the mxml. &lt;br /&gt;&lt;br /&gt;This is the main action script code:&lt;br /&gt;&lt;div style="font-size:80%"&gt;&lt;br /&gt;[Bindable] public var activeTime:int = 0; &lt;br /&gt;   [Bindable] public var passiveTime:int = 0; &lt;br /&gt;   public var inactiveTime:uint = 15; // passive mode is triggered after this duration  &lt;br /&gt;   &lt;br /&gt;   public var timer:Timer = new Timer(1000,0);&lt;br /&gt;   &lt;br /&gt;   public function init():void{&lt;br /&gt;    timer.addEventListener(TimerEvent.TIMER,timerHandler);&lt;br /&gt;    timer.start();&lt;br /&gt;    nativeWindow.width = 130;&lt;br /&gt;    nativeWindow.height = 78;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public function timerHandler(event:TimerEvent):void{&lt;br /&gt;    nativeApplication.timeSinceLastUserInput &lt; inactiveTime ? activeTime++ : passiveTime++;&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   public function dragWin(event:MouseEvent):void{&lt;br /&gt;     this.nativeWindow.startMove();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I have considered that no action from the user after 15 secs means that she/he is away from the computer (variable inactiveTime). &lt;br /&gt;&lt;br /&gt;You can see it in action by downloading it &lt;a href="http://mxbase.googlepages.com/home" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;After you have installed and run the application, you can right click on it and access all the source code. It could be easily extended to a time tracking tool to check how long you have been working on a project by using SQLite (may be my next personal project), or to ensure that your employees are not sleeping in front of their computers (clearly not my next project).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-3464588083543406388?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/3464588083543406388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=3464588083543406388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3464588083543406388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3464588083543406388'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/05/know-how-long-youve-been-away-with-air.html' title='Know how long you&apos;ve been away with AIR.'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-6895369381860639552</id><published>2008-04-22T04:08:00.011+10:00</published><updated>2008-04-26T10:02:21.301+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><title type='text'>Full screen mode, security-related restrictions removed in AIR</title><content type='html'>There are several points that are good to know if you plan to use fullscreen mode in your flash based application embedded in an HTML page. There is a very good &lt;a href="http://www.adobe.com/devnet/flashplayer/articles/full_screen_mode.html" target="_blank"&gt;article&lt;/a&gt; by Tracy Stampfli on Adobe's website that covers this topic.&lt;br /&gt;&lt;br /&gt;The same security restrictions as the ones described in this article will apply if you are embedding your swf in the flex HTML control.&lt;br /&gt;&lt;br /&gt;However, in AIR applications based on Flex or Flash, it's a different story and some of the restrictions have been removed. &lt;br /&gt;&lt;br /&gt;The first one, obviously, is the allowFullScreen tag parameter that needs to be set to true, since you are not anymore in the web browser context, you don't need to worry about it.&lt;br /&gt;&lt;br /&gt;The second is the overlay dialog box that appears when the movie enters fullscreen mode, instructing the user how to exit and return to normal mode. In your AIR app, you are now responsible to inform (or not) the user how this is possible.&lt;br /&gt;&lt;br /&gt;The third and most interesting one. The actionScript that initiates full-screen mode does not need to be called only in response to a mouse click or keypress, it can be triggered from any other event. To give you an idea, you can now set the full screen mode at the end of an animation or on a timer event.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration:line-through;"&gt;Unfortunately, while in full screen mode, the keyboard is still restricted to the shortcuts to exit this mode so you still cannot play a game that needs keyboard inputs or simply enter text in a input text box. I wonder why this hasn't been removed... if anyone has an idea on this.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Less than 30 mins after my post, "anonymous" posted a comment with a link to the doc where it says you can use the FULL_SCREEN_INTERACTIVE constant instead of FULL_SCREEN to enable interactivity in full screen - only for AIR. There you go, another full screen security restriction bypassed by AIR. Thank you "anonymous" !&lt;br /&gt;&lt;br /&gt;And if you are still asking yourself why using full screen mode: &lt;br /&gt;Flash player scales with hardware acceleration and displays content more quickly than software scaling. For HD video content it's a valid argument to implement this feature. Full screen mode saves 10% of my CPU resource on a H.264 encoded video, it doesn't sound much on my computer (1.8 gh dual core), but on a lower end computer I bet this would be certainly much more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-6895369381860639552?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/6895369381860639552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=6895369381860639552' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6895369381860639552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6895369381860639552'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/04/full-screen-mode-security-related.html' title='Full screen mode, security-related restrictions removed in AIR'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-4337908941919788074</id><published>2008-04-10T01:48:00.010+10:00</published><updated>2008-04-10T03:12:47.894+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><title type='text'>AIR update and certificate</title><content type='html'>Once you have created your certificate and used it to for the release build, keep it in a safe place because it is unique, even if you have created it yourself you won't be able to replicate the same one, it is unique. This certificate is part of the signature used by the installer to check if it is the same application being updated. If you use a different certificate, the installer will ask you where you want to install the application as if it was a new application. The id string of the app.xml won't change a thing. Choosing the same installation path  will result with the following message:&lt;br /&gt;"&lt;span style="font-style:italic;"&gt;The application could not be installed because an application with that name already exists at the selected installation location. Try installing to a different location.&lt;/span&gt; ".&lt;br /&gt;If the user choose a different directory then the application will be installed twice - this is what I get on windows vista. &lt;br /&gt;Real certificates can only be delivered for companies and not for individuals, but at one of the onAIR tour sessions, I have heard that things might change.&lt;br /&gt;Morality: Every user will have to uninstall manually the previous version of your AIR app in order to install the new version if you are using a different certificate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-4337908941919788074?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/4337908941919788074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=4337908941919788074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4337908941919788074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4337908941919788074'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/04/air-update-and-certificate.html' title='AIR update and certificate'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-4177654275574250109</id><published>2008-04-03T09:37:00.005+11:00</published><updated>2008-04-03T10:19:09.473+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mooflair AIR'/><title type='text'>mooFlair finally updated</title><content type='html'>A lot of new features have been added to the original version of mooFlair: new player, importation of local files to the library, playlists, new RSS feeds and more categories and search is available for most of the feeds (5 out of 7). I'm sorry for those who have waited so long to have a version of mooFlair compatible with the public AIR v1.&lt;br /&gt;&lt;br /&gt;You can install it from &lt;a href="http://www.mooflair.com/download" targte="_blank"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For the automatic update feature I have used an updater that saves you the different tasks to create, deploy and parse an XML file. This updater reads directly in the xml application config file of the .air file to retrieve the version string. There is all you need &lt;a href="http://codeazur.com.br/lab/airremoteupdater/" target="_blank"&gt;there&lt;/a&gt; and some code that shows you how to use it within your AS3 AIR app.&lt;br /&gt;&lt;br /&gt;I have also used an AS 3 UUID class to generate unique string that you can find &lt;a href="http://www.vlideshow.com/opensourcedcode" target="_blank"&gt;there&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And of course the "unavoidable" &lt;a href="http://code.google.com/p/as3corelib/" target="_blank"&gt;AS3coreLib&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To help me working on SQLlite I have used &lt;a href="http://www.sharewareconnection.com/sqlite-maestro.htm"&gt;sqlLite maestro&lt;/a&gt; &lt;br /&gt;which provides probably anything you need to manage an SQLite database. It's not a free product but it definitely worths a try if you looking into a such a tool.&lt;br /&gt;&lt;br /&gt;go to &lt;a href="http://www.mooflair.com/download"&gt;http://www.mooflair.com/download&lt;/a&gt;&lt;br /&gt;and enjoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-4177654275574250109?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/4177654275574250109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=4177654275574250109' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4177654275574250109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4177654275574250109'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/04/mooflair-finally-updated.html' title='mooFlair finally updated'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-6019344200363633529</id><published>2008-03-11T02:23:00.002+11:00</published><updated>2008-03-11T02:31:17.706+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Linkbar temporary workaround</title><content type='html'>I have suggested a temporary workaround for a bug affecting the Linkbar component.&lt;br /&gt;The Linkbar component does not highlight the selected menu item when the dataprovider is an array. It currently only works when the dataprovider is a viewstack.&lt;br /&gt;&lt;br /&gt;This is one of the goodness of open source and OO, to have access to the code and override a function that does not work as expected. &lt;br /&gt;&lt;br /&gt;http://bugs.adobe.com/jira/browse/SDK-14857&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-6019344200363633529?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/6019344200363633529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=6019344200363633529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6019344200363633529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6019344200363633529'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/03/linkbar-temporary-workaround.html' title='Linkbar temporary workaround'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-710193133298068600</id><published>2008-02-26T11:13:00.003+11:00</published><updated>2008-02-26T12:20:25.170+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><title type='text'>AIR is in the ... air.</title><content type='html'>AIR is officially launched and I have installed almost all of the showcased applications from the Adobe website. After using them, it became so obvious to me that it's the way the application has been designed to invite the user to interact with the content that makes it an RIA. Also with a nice look and feel, an application without some interesting and useful functionalities is like a movie with only special effects and a poor story line. The responsiveness to the user gestures is also important, and on this point I think it's essential to test the performance on an average computer to ensure that the end user experience is guaranteed. &lt;br /&gt;Porting an application to AIR for the sake of using AIR is also simply wrong. It does not serve the technology and its purpose. And what I'm afraid of is that one day AIR might be assimilated to a technology created to use Flash without a web browser. &lt;br /&gt;What am I doing ? it's the first day of AIR official launch. Let's just give AIR a big hurray and congratulate the team behind it, because it's truly an amazing peace of technology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-710193133298068600?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/710193133298068600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=710193133298068600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/710193133298068600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/710193133298068600'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/02/air-is-in-air.html' title='AIR is in the ... air.'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-3397899836383011682</id><published>2008-02-26T10:49:00.006+11:00</published><updated>2008-02-26T11:11:32.937+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mooflair AIR'/><title type='text'>Mooflair new features and update soon</title><content type='html'>So far I have moved to native windows so the design has changed a bit. The code to get the movies has been also changed as some of the "video providers" have modified - or should I say secured - the way flvs url are retrieved. On a side note, I was wondering if I should not remove some of the RSS providers as it appears that the content is getting more and more protected by some very tricky calls and responses. Now, back to the updates: I have added blipTv.com and 5min.com to the feeds. I'm tackling the playlist this week. I should be able to release a new version at end of this weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-3397899836383011682?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/3397899836383011682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=3397899836383011682' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3397899836383011682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3397899836383011682'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/02/mooflair-new-features-and-update-soon.html' title='Mooflair new features and update soon'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-6307655360971072287</id><published>2008-02-23T10:44:00.007+11:00</published><updated>2008-02-26T11:12:47.422+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Inheritance with MXML</title><content type='html'>When creating a custom view, I always tend to extend from one of the Flex base classes - VBox, Canvas etc.. -  and not from any custom view or class  that I have created. This is truly a powerful feature. The reason why it's not often used is probably because these days composition is preferred over inheritance. But it's always good to remember that it is possible and really efficient in some situation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-6307655360971072287?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/6307655360971072287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=6307655360971072287' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6307655360971072287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6307655360971072287'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/02/inheritence-with-mxml.html' title='Inheritance with MXML'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-6026646260728436067</id><published>2008-02-16T11:28:00.005+11:00</published><updated>2008-02-26T12:52:59.277+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>4 good reasons why you should not use Flex</title><content type='html'>Or should I rather say, don't use Flex if you think:&lt;br /&gt; 1 - As a developer, I don't know how to design, but with Flex all my applications will look sexier.&lt;br /&gt; 2 - Building an application with Flex is building an RIA.&lt;br /&gt; 3 - Flex is a tool for designer to built applications.&lt;br /&gt; 4 - It's quicker to build an application with Flex.&lt;br /&gt;&lt;br /&gt;That's what I have met in my recent experience and the result is a lot of disappointment, waste of time and energy (and money).&lt;br /&gt;I'll make a post for each of the above statements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-6026646260728436067?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/6026646260728436067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=6026646260728436067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6026646260728436067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6026646260728436067'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/02/4-good-reasons-why-you-should-not-use.html' title='4 good reasons why you should not use Flex'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-1433826463044052503</id><published>2008-02-08T21:40:00.000+11:00</published><updated>2008-02-10T10:46:09.193+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Another way to use AS methods</title><content type='html'>I found this in the Flex docs (Proxy's class code example). &lt;br /&gt;I have modified it to demonstrate that classes methods are not "attached" to the instance.&lt;br /&gt;&lt;br /&gt;var _item:Array = new Array();&lt;br /&gt;var _item2:Array = new Array();&lt;br /&gt;_item["push"].apply(_item2, ["test1","test2"]);&lt;br /&gt;trace(_item2[1]);&lt;br /&gt;&lt;br /&gt;It works with any type of class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-1433826463044052503?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/1433826463044052503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=1433826463044052503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/1433826463044052503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/1433826463044052503'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/02/another-way-to-use-as-methods.html' title='Another way to use AS methods'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-7669744103949677711</id><published>2008-02-05T00:54:00.000+11:00</published><updated>2008-02-05T01:02:51.119+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mooflair AIR'/><title type='text'>Mooflair next update</title><content type='html'>I have planned to release an update of Mooflair the following day after AIR is officially launched (probably end of this month) . I know some people have been on the mooflair site but the current version is not working - because of changes with the current available AIR runtime. I'm currently fixing the bugs and adding some new features in. &lt;br /&gt;I will probably add it in the exchange section of the AIR apps if I'm happy enough with the result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-7669744103949677711?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/7669744103949677711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=7669744103949677711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/7669744103949677711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/7669744103949677711'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2008/02/mooflair-next-update.html' title='Mooflair next update'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-2175731717465529629</id><published>2007-10-27T22:21:00.000+10:00</published><updated>2008-02-01T09:28:06.076+11:00</updated><title type='text'>Annoying buggy stuffs</title><content type='html'>Flex VideoDisplay does not necessary fire complete event at the end of the movie. Well it does not seem to be a bug as the guys from Adobe don't seem to care. They don't care to mention that you could have an issue in some usage condition. I tried to post on the live docs and looks like it's not that important. I have lost 2 hours to figure it out why I was not getting the event. Same for the stateResponsive, I have posted &lt;a href="https://bugs.adobe.com/jira/browse/SDK-14480"&gt;there &lt;/a&gt;, but hey, now you need votes from the community to get a bug fix. What's really annoying is that you spend some time to report and build some sample codes that proves the bugs and at the end you have lost your time ... more importantly other developers will never get the benefit of it. Is that the spirit of open source ? &lt;br /&gt;While I'm at it, do you think that when you are changing the selectedIndex of a list component the change event should be fired ? well guess what, it's not firing up. For some "unexplainable" reasons I'm getting lazy of reporting stuff. &lt;br /&gt;bahh "they" must be too busy marketing v3 and hairy buddy. Wait and see&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-2175731717465529629?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/2175731717465529629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=2175731717465529629' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/2175731717465529629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/2175731717465529629'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/10/annoying-buggy-stuffs.html' title='Annoying buggy stuffs'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-6940591736871148856</id><published>2007-09-30T06:20:00.000+10:00</published><updated>2007-09-30T06:27:12.681+10:00</updated><title type='text'>mooflair next update</title><content type='html'>I need to update the app for the new release of the beta of AIR. I'm in the middle of updating the Flv player... but also in the middle of settling down in the south of France, in Nice more exactly. I hope I'll be able to release an update very soon. At least in a couple of weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-6940591736871148856?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/6940591736871148856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=6940591736871148856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6940591736871148856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6940591736871148856'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/09/mooflair-next-update.html' title='mooflair next update'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-8012816681646345964</id><published>2007-08-18T17:19:00.000+10:00</published><updated>2007-08-18T17:36:41.453+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>AIR Derby</title><content type='html'>I could not miss the opportunity to participate to this derby and even if I don't win any of the prizes, my programming skills have improved and I had great fun so far.&lt;br /&gt;"What application am I building?" is certainly the question. Well i'm competing in the "mash up application" category and has to do with video, rss. &lt;br /&gt;Here is briefly my to do list&lt;br /&gt;- FLV Player&lt;br /&gt;- FLV downloader&lt;br /&gt;- RSS reader&lt;br /&gt;- Playlist manager&lt;br /&gt;- user interface design&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One can argue that there is nothing very original. I would just say that it all lies in the number of original features and the overall quality of the application.&lt;br /&gt;IMO the user interface is clearly one of the most important part.&lt;br /&gt;Ok more details to come when will get closer to the deadline 5th of september.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-8012816681646345964?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/8012816681646345964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=8012816681646345964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/8012816681646345964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/8012816681646345964'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/08/air-derby.html' title='AIR Derby'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-4656232960425011780</id><published>2007-07-31T15:36:00.002+10:00</published><updated>2008-02-16T13:49:20.051+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><title type='text'>getMonth gotcha - javascript vs actionscript</title><content type='html'>I thought the translation from JS to AS had no "faux amis". &lt;br /&gt;In javascript the Date method getMonth returns a number from 1 to 12 and in Actionscript it returns a number from ... 0 to 11.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-4656232960425011780?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/4656232960425011780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=4656232960425011780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4656232960425011780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4656232960425011780'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/07/getmonth-catcha-javascript-to.html' title='getMonth gotcha - javascript vs actionscript'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-6446207539243611550</id><published>2007-05-30T01:49:00.001+10:00</published><updated>2007-05-30T02:24:54.023+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu, a free coldfusion development platform</title><content type='html'>I did an install of Ubuntu to run a coldfusion dev server. My impression is: I didn't know that linux could be so easy to use. Even verity runs like a charm. So if you have a spare box and need run more than one coldfusion instance simultaneously and  you don't want your laptop (or workstation) to run like a dog, well this is a very cost effective solution, Ubuntu + CF7 = approved and tested ! &lt;br /&gt;- After you have installed the OS, get and install the latest updates (one time process).&lt;br /&gt;- Install samba server (loads of resource on google)&lt;br /&gt;- You will need to install another version of apache, the one in the Ubuntu built seems to be a light version of apache. This is the only tricky part but if you follow the instructions of &lt;a href="http://www.daveshuck.com/blog/index.cfm/2006/6/12/Installing-CFMX7--Apache222-on-Ubuntu-606" target="_blank"&gt;Dave Shuck's blog&lt;/a&gt;, it should be painless. &lt;br /&gt;- Finally install coldfusion and there you go ! &lt;br /&gt;There are some very useful resources if you google coldfusion + ubuntu.&lt;br /&gt;My only advice is to set a common user for coldfusion, samba and your ubuntu user account. &lt;br /&gt;If you need to learn coldfusion without using windows. That's the way to go!&lt;br /&gt;&lt;br /&gt;If only adobe could release a linux version of Flex builder, I would probably consider switching all to Ubuntu... hmm wait there is still the CS3 suite...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-6446207539243611550?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/6446207539243611550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=6446207539243611550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6446207539243611550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/6446207539243611550'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/05/ubuntu-free-coldfusion-development.html' title='Ubuntu, a free coldfusion development platform'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-3054110701465350108</id><published>2007-05-30T01:43:00.000+10:00</published><updated>2007-05-30T01:48:15.659+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>2 hot fixes later</title><content type='html'>Finally, the latest hot fix is nailing this annoying bug in the tree component that was causing a mess in the tree when adding or deleting a leaf on an expanded node.&lt;br /&gt;Of course it fixes other bugs but more importantly I can get rid of my double install of flex builder 2.0.0 and 2.0.1 and start seriously my apollo project !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-3054110701465350108?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/3054110701465350108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=3054110701465350108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3054110701465350108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/3054110701465350108'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/05/2-hot-fixes-later.html' title='2 hot fixes later'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-4690281772632157034</id><published>2007-02-23T21:55:00.000+11:00</published><updated>2007-02-23T22:13:31.347+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Inside Farcry</title><content type='html'>Something that the guys from Daemon were crying for a while (including me), is the Farcry coapi manager. Without a doubt, one of the less functional interface when you have tons of types with a lot of discrepancies between the database and the type property definitions. I have spend some extra time to create a Flex interface that should make life easier to all developers when it comes to migrate data an existing Farcry application to a different database application server.&lt;br /&gt;This is the kind of application where the combination of Flex and Coldfusion shines.&lt;br /&gt;I did not have the time to skin the app but this will probably part of a project by itself as the integration of Flex module in Farcry should not stop here. May be a contest for the best skin in Farcry ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-4690281772632157034?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/4690281772632157034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=4690281772632157034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4690281772632157034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/4690281772632157034'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/02/inside-farcry.html' title='Inside Farcry'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-8021895482140107440</id><published>2007-02-20T04:52:00.000+11:00</published><updated>2007-10-09T09:12:09.532+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>unused import in class makes cast failing in silence</title><content type='html'>It took me 5 hours to realise that because I imported a unused package (mx.collections.ArrayCollection) in my AS bean Class I couldn't get my coldfusion component to be cast as the AS bean Class. The RPC result property was giving me an object with all the right properties but the instantiation in the code was failing giving me a null value for my object.&lt;br /&gt;In other words this line was not working at all:&lt;br /&gt;&lt;br /&gt;var currentProduct = event.result as Product; &lt;br /&gt;&lt;br /&gt;no compilation error&lt;br /&gt;An error was generated when I was trying to evaluate any property member of currentProduct. The debugging panel was giving me currentProduct = null&lt;br /&gt;&lt;br /&gt;Conclusion: NEVER import a package that you are not going to use...&lt;br /&gt;Flex should return an error when a casting operation fails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-8021895482140107440?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/8021895482140107440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=8021895482140107440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/8021895482140107440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/8021895482140107440'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/02/unused-import-generates-error-on-cast.html' title='unused import in class makes cast failing in silence'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-8685726662554644504</id><published>2007-02-14T02:24:00.000+11:00</published><updated>2007-02-18T12:03:02.810+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex 2.01 Tree component bug</title><content type='html'>I have the confirmation from Adobe that the Tree component is bugged in the latest update of Flex builder 2. The bug affects any addition or deletion at runtime of a leaf under a node when this node is expanded. The data is not affected but the display is messed up with a clone of the node that appears. &lt;br /&gt;The workaround from Adobe is:&lt;br /&gt;"Basically, in DefaultDataDescriptor, we reset the source of the child&lt;br /&gt;collection representing the children of each node. This results in a&lt;br /&gt;RESET type of collectionChange event which throws things out of wack.&lt;br /&gt;You can workaround the bug by writing a custom TreeDataDescriptor and in&lt;br /&gt;getChildren() ensure a RESET event is not fired."&lt;br /&gt;Would be better if patch could be publish for everyone.&lt;br /&gt;For the time being I have rolled back to FB 2.00. If I need to upgrade to 2.01, I'll work on the workaround. I first have to finish the current project I work on .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-8685726662554644504?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/8685726662554644504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=8685726662554644504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/8685726662554644504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/8685726662554644504'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2007/02/flex-201-tree-component-bug.html' title='Flex 2.01 Tree component bug'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-1556040046303311837</id><published>2006-11-30T05:29:00.001+11:00</published><updated>2008-02-16T11:48:26.324+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Microsoft push Adobe Flash 9 technology</title><content type='html'>This is really really good news. People who are using msn messenger have to download the latest flash 9 player in order to interact with other users using the animations - aka winks . The Flash 9 penetration among web users is likely to be boosted by this new requirement. In a same time this will make Flex 2 more accessible as it only run with the Flash  9 player. &lt;br /&gt; &lt;br /&gt;Knowing the war between MS and Adobe, it's a really interesting fact. As a matter of fact, users are not downloading from the Adobe website but from a special page from Microsoft website! I wonder how much they had to pay Adobe to have the right to make the player available from their website.&lt;br /&gt;&lt;br /&gt;I imagine the discussion:&lt;br /&gt;&lt;br /&gt;MS (reluctant): "we'd need to make FP9 available for download our msn user on our website"&lt;br /&gt;Adobe (smart arse): "Downloading Flash 9 on your website, why ? Your users can get it on our website, haven't you read our terms and conditions?"&lt;br /&gt;&lt;br /&gt;MS (embarrassed, but clever): "awe, yes but you know it's for the user experience sake.. using one of our product and being redirected to your site, it's confusing".&lt;br /&gt;&lt;br /&gt;Adobe (killing 2 birds with one stone): "yes the user experience, we totally understand, this is our mojo. That's fine, there will be just a little franchise of $xxxxxx to pay"&lt;br /&gt;&lt;br /&gt;MS (low tail between the legs): sure will sign the check  ( for obvious marketing reasons).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'd love to know the full real story behind this...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-1556040046303311837?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/1556040046303311837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=1556040046303311837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/1556040046303311837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/1556040046303311837'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2006/11/microsoft-push-adobe-flash-9-technology.html' title='Microsoft push Adobe Flash 9 technology'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-738063983305080036</id><published>2006-11-30T05:23:00.000+11:00</published><updated>2006-11-30T05:27:19.364+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>It all started with CF</title><content type='html'>I have moved to Sydney 6 years ago from France for a coldfusion job. And now I'm Australian citizen since last week. Aussie Aussie Aussie, oi oi oi!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-738063983305080036?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/738063983305080036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=738063983305080036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/738063983305080036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/738063983305080036'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2006/11/it-all-started-with-cf.html' title='It all started with CF'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-5032982931910752799</id><published>2006-11-01T00:26:00.000+11:00</published><updated>2007-02-20T05:15:13.684+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>12 good reasons for Flex + 2</title><content type='html'>They are not listed in any order, it just came out that way - except for the 2 last ones. There are probably more reasons you could find. Feel free to add in the comments.&lt;br /&gt;&lt;br /&gt;1. By following good code practice you can produce your library of re usable class and UI components very easily.&lt;br /&gt;2. Not every developer is a born designer, with Flex all your apps will have a sleek look and feel.&lt;br /&gt;3. Actionscript 3 is a real object oriented programming, very close to JAVA in the syntax and structure. (Java programmers are the best candidates to learn and use Flex 2.) Even if you are not Java developer this will sharpen your OO programming skills.&lt;br /&gt;4. A rich library of classes and UI components that will save you time and that you can extend very easily if you need more - and that will be the case.&lt;br /&gt;5. Flex 2 server integrates with with back end servers j2e, .net, coldfusion.&lt;br /&gt;6. No need for Flex server to compile and run your Flex 2 app (was the case for previous versions of Flex) if you don't need any back end integration.&lt;br /&gt;7. Free SDK. You don't need to pay anything to start learning and create Flex 2 apps.&lt;br /&gt;8. Applications you write will run on all platform running flash 9 (win, mac, linux)&lt;br /&gt;9. A very active community = a lot of resources on the web to learn.&lt;br /&gt;10. Push ! yes send data to the client without client request (Flex data service).&lt;br /&gt;11. Flex builder (built on top of Eclipse) is probably one of the best development editor that I have used, and yes there is a very powerful debugger, no need for 3rd party tools. (on Mac and PC)&lt;br /&gt;12. Integration with Apollo to build online/off line desktop applications.&lt;br /&gt;&lt;br /&gt;The next ones are for CF developers.&lt;br /&gt;13. Coldfusion 7.02 has a dedicated flash remoting gateway for Flex 2.&lt;br /&gt;14. Map coldfusion cfcs with AS3 Classes makes life easier.&lt;br /&gt;&lt;br /&gt;- Why not AJAX? &lt;br /&gt;When it comes to technology choice, it's the specs and the platform on which the app will run that determines the solution.   &lt;br /&gt;If you have a CF7 server and you are allowed to install Flash player 9 on the client side I'd say think Flex 2. Note that Flash 9 as a penetration rate of around 50%.&lt;br /&gt;If you already know AJAX, use AJAX, but there are stuff that will take ages to build in AJAX which will take only 2 clicks to build in Flex. And there are impossible stuff to build in AJAX that you can build in flex and vice versa. ha yes I should have mentioned that there is an ajax/flex bridge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-5032982931910752799?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/5032982931910752799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=5032982931910752799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/5032982931910752799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/5032982931910752799'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2006/11/12-good-reasons-for-flex-2-if-you-are.html' title='12 good reasons for Flex + 2'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-568256334293171627</id><published>2006-10-27T23:51:00.000+10:00</published><updated>2007-02-20T05:18:52.510+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Learning Cairngorm</title><content type='html'>Well it's time for me to dive into Cairngorm, the framework developed by Steve Webster for Flex. When our application starts to grow complexity - to many screens, events and global variables to manage - you feel the need of a framework such as Cairngorm. I have put a link to the cairngormdocs website which is with no doubt the best place to start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-568256334293171627?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/568256334293171627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=568256334293171627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/568256334293171627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/568256334293171627'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2006/10/starting-cairngorm.html' title='Learning Cairngorm'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-539324595129382824</id><published>2006-10-27T04:15:00.000+10:00</published><updated>2006-11-01T00:20:23.915+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Moving to beta</title><content type='html'>Just moved to the beta blogger to use the label feature same a the gmail one... Lots of nice little editing options like the spell checker with right click options (nope nope nope - this is a new feature of firefox 2.0). I haven't seen where to create direct links to filter content by categories, looks like I have to code the link by hand in the template.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-539324595129382824?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/539324595129382824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=539324595129382824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/539324595129382824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/539324595129382824'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2006/10/moving-to-beta.html' title='Moving to beta'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35991522.post-116117993896142528</id><published>2006-10-18T23:28:00.000+10:00</published><updated>2006-10-27T23:49:38.520+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coldfusion'/><title type='text'>CFC variables scoping</title><content type='html'>Cfc is what opens coldfusion to OO. It's not a new feature, cfc (or coldfusion component) is part of coldfusion since CF MX 6. I'm not going into the details but scoping has changed in cfc between v6 and v7.02.&lt;br /&gt;It's important to understand how scoping works in a cfc, if you want your variables to be accessible only thru getters and setters, as public properties or only within a method.&lt;br /&gt;To define a private variable use the prefix "variables."&lt;br /&gt;To define a public variable use the prefix "this."&lt;br /&gt;Both before creating any methods.&lt;br /&gt;&lt;br /&gt;To define a local variable use "var" in front of the name of the variable, but this can be only used in a method (cffunction) and right after the definition of the arguments of the method.&lt;br /&gt;&lt;br /&gt;  &amp;lt;cfcomponent name="person" hint="a person object"&amp;gt;&lt;br /&gt;  &amp;lt;cfset variables.age = 10 /&amp;gt;&lt;br /&gt;  &amp;lt;cfset this.activity= "working" /&amp;gt;&lt;br /&gt;  &amp;lt;cffunction name="getAge" returnType="Numeric"&amp;gt;&lt;br /&gt;    &amp;lt;cfreturn variables.age /&amp;gt;&lt;br /&gt;  &amp;lt;/cffunction&amp;gt;&lt;br /&gt;  &amp;lt;cffunction name="setOlder" returnType="Void"&amp;gt;&lt;br /&gt;    &amp;lt;cfargument name="years" type="Numeric" required="false" default="1" /&amp;gt;&lt;br /&gt;    &amp;lt;cfif this.activity eq "sleeping"&amp;gt;&lt;br /&gt;      &amp;lt;cfset variables.age = variables.age + arguments.years /&amp;gt;&lt;br /&gt;    &amp;lt;cfelse&amp;gt;&lt;br /&gt;      &amp;lt;cfset variables.age = variables.age + arguments.years + 1 /&amp;gt;&lt;br /&gt;    &amp;lt;/cfif&amp;gt;&lt;br /&gt;  &amp;lt;/cffunction&amp;gt;&lt;br /&gt;   &amp;lt;cffunction name="getAgeInYears" returnType="numeric"&amp;gt;&lt;br /&gt;      &amp;lt;cfreturn variables.age /&amp;gt;&lt;br /&gt;  &amp;lt;/cffunction&amp;gt; &lt;br /&gt;  &amp;lt;cffunction name="getAgeInMonths" returnType="numeric"&amp;gt;&lt;br /&gt;      &amp;lt;cfset var age = 0 /&amp;gt;&lt;br /&gt;      &amp;lt;cfset age = variables.age * 12 /&amp;gt;&lt;br /&gt;      &amp;lt;cfreturn age /&amp;gt;&lt;br /&gt;  &amp;lt;/cffunction&amp;gt; &lt;br /&gt; &amp;lt;/cfcomponent&amp;gt;&lt;br /&gt;&lt;br /&gt;save as person.cfc and run the followin code (same folder)&lt;br /&gt;&lt;br /&gt;&amp;lt;cfset oPerson = createObject("component","person")&amp;gt;&lt;br /&gt;&amp;lt;cfset variables.age = 8&amp;gt;&lt;br /&gt;&amp;lt;cfset oPerson.activity = "sleeping"&amp;gt;&amp;lt;!--- ---&amp;gt;&lt;br /&gt;&amp;lt;cfset oPerson.setOlder(1)&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfoutput&amp;gt;&lt;br /&gt; #oPerson.getAgeInMonths()#&amp;lt;br&amp;gt;&lt;br /&gt; #oPerson.getAgeInYears()#&amp;lt;br&amp;gt;&lt;br /&gt; #variables.age#&lt;br /&gt;&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;&lt;br /&gt;Bottom line: scope your variables in a cfc, this will save you headaches and time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35991522-116117993896142528?l=mxbase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mxbase.blogspot.com/feeds/116117993896142528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35991522&amp;postID=116117993896142528' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/116117993896142528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35991522/posts/default/116117993896142528'/><link rel='alternate' type='text/html' href='http://mxbase.blogspot.com/2006/10/cfc-variables-scoping.html' title='CFC variables scoping'/><author><name>Patrick Tai</name><uri>http://www.blogger.com/profile/17857117546735718488</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://4.bp.blogspot.com/_T137v-0rmn4/SgH_bkmmGlI/AAAAAAAAAx8/dncgL6G3coM/S220/_DSC0301.jpg'/></author><thr:total>1</thr:total></entry></feed>
