<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<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/"
	>

<channel>
	<title>Qi Labs</title>
	<link>http://labs.qi-ideas.com</link>
	<description>Directly from the labs of Qi</description>
	<pubDate>Mon, 07 Jul 2008 16:06:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>Using Google Maps within CS3</title>
		<link>http://labs.qi-ideas.com/2008/06/19/using-google-maps-within-cs3/</link>
		<comments>http://labs.qi-ideas.com/2008/06/19/using-google-maps-within-cs3/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 20:45:35 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Actionscript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2008/06/19/using-google-maps-within-cs3/</guid>
		<description><![CDATA[A friend of mine asked me if I knew a way to get google maps working within CS3. At the moment google made this flex only. If you&#8217;ve carefully read my previous articles you already know the drill. 
This is what you need to do to get it working within CS3:
1. download the sdk from: [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://posthuma.nu">friend</a> of mine asked me if I knew a way to get google maps working within CS3. At the moment google made this flex only. If you&#8217;ve carefully read my <a href="http://labs.qi-ideas.com/2007/12/25/using-flex-compiled-code-within-flash/">previous articles </a>you already know the drill. </p>
<p>This is what you need to do to get it working within CS3:<br />
1. download the sdk from: http://code.google.com/apis/maps/documentation/flash/<br />
2. copy the google swc to the flexsdk/frameworks/libs folder, where the other swc&#8217;s reside<br />
3. create a library.as (read my previous article) from the HelloWorld google example and compile an swf and swc from that<br />
4. run HelloWorld.as within your CS3 IDE</p>
<p>Download my example <a href='http://labs.qi-ideas.com/wp-content/uploads/2008/06/googlemaps.zip' title='googlemaps.zip'>here</a> to see it in action!</p>
<p>Good luck! </p>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2008/06/19/using-google-maps-within-cs3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Intrinsic Library maker for Flash CS3</title>
		<link>http://labs.qi-ideas.com/2008/01/29/library-maker-001-for-as-30/</link>
		<comments>http://labs.qi-ideas.com/2008/01/29/library-maker-001-for-as-30/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 13:59:35 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Actionscript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2008/01/29/library-maker-001-for-as-30/</guid>
		<description><![CDATA[
Jesse Warden had a post about the new Gaia Beta framework created by his friend Steven Sacks. In his post he commented and talked about my library solution. Let&#8217;s quote him:


There are just certain audiences that totally agree with what your doing, and others who are like, “That’s too much trouble”. We need to satiate [...]]]></description>
			<content:encoded><![CDATA[<p>
Jesse Warden had a <a href="http://jessewarden.com/2008/01/gaia-arguments-real-world-bridge-pattern-and-gaia_internal.html">post</a> about the new Gaia Beta framework created by his friend Steven Sacks. In his post he commented and talked about my <a href="http://labs.qi-ideas.com/2007/12/25/using-flex-compiled-code-within-flash">library solution</a>. Let&#8217;s quote him:
</p>
<p>
<em>There are just certain audiences that totally agree with what your doing, and others who are like, “That’s too much trouble”. We need to satiate those peeps. Yes, compiling a separate library is hard; it’s an extra step. If you make this shiz easy for Flash peeps, it rocks. Stay tuned…</em>
</p>
<p>
To be honest, in the end I totally agree with what he says. So I sat down with my colleague <a href="http://www.qi-ideas.com/people/31">Paul</a> and we came up with a solution that automates the process of creating this &#8216;intrinsic&#8217; library, in the form of a panel within Flash CS3!
</p>
<p>Here are the screenshots that do all the talking:</p>
<table>
<tr>
<td><img src='http://labs.qi-ideas.com/wp-content/uploads/2008/01/libmaker_screen1.gif' alt='Libmaker general configuration' /></td>
<td>&nbsp;</td>
<td><img src='http://labs.qi-ideas.com/wp-content/uploads/2008/01/libmaker_screen2.gif' alt='Libmaker project configuration' />
<td></tr>
</table>
<p>
This is the first version, it has no Apple support just yet. In the next version I promiss we&#8217;ll add Apple support and an auto import feature my other colleagues came up with.
</p>
<p>To make the install as easy as possible we&#8217;ve created an mxp. So for now, download version 0.0.1 <a href="http://labs.qi-ideas.com/wp-content/uploads/2008/01/libmaker.zip">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2008/01/29/library-maker-001-for-as-30/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Flex compiled code within Flash!</title>
		<link>http://labs.qi-ideas.com/2007/12/25/using-flex-compiled-code-within-flash/</link>
		<comments>http://labs.qi-ideas.com/2007/12/25/using-flex-compiled-code-within-flash/#comments</comments>
		<pubDate>Tue, 25 Dec 2007 04:33:38 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Actionscript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2007/12/25/using-flex-compiled-code-within-flash/</guid>
		<description><![CDATA[Why did I put effort in combining Flash and Flex generated swf’s?
A major AS 3.0 obstacle for me is the fact that the flex RPC sources are not available. This means we can only use rpc.swc supplied within the Flex framework or use a third party library. Another big thing I’ve been messing around with [...]]]></description>
			<content:encoded><![CDATA[<p>Why did I put effort in combining Flash and Flex generated swf’s?</p>
<p>A major AS 3.0 obstacle for me is the fact that the flex RPC sources are not available. This means we can only use rpc.swc supplied within the Flex framework or use a third party library. Another big thing I’ve been messing around with is the idea of using <a target="_blank" href="http://labs.adobe.com/wiki/index.php/Cairngorm">cairngorm </a>within the Flash authoring environment. As we all know <a target="_blank" href="http://labs.adobe.com/wiki/index.php/Cairngorm">cairngorm</a> depends heavily on databinding, one can simulate databinding using simple macros and a <a href="http://labs.qi-ideas.com/2007/12/19/simple-actionscript-preprocessor/">preprocessor</a> or one can let the flex compiler do all the hard work and embed the flex generated library into flash. I’ve been trying hard and succeeded in both, just read on…</p>
<p>As I was messing around with flex (compc) generated swc’s and things like playerglobal.swc, flex.swc, rpc.swc, etc… I came to found out that Flash actually compiles code against swc’s!! Yes, that’s compiling, this means NO linking! So, the linking part has to be done manually… Do you remember ‘intrinsic classes’ back in the good old AS 2.0 days? This result is the same, but you’re not dealing with exclusion xml’s and or the ASI files!<br />
In short, what do you need to do?:</p>
<ol>
<li>First create a class that will import your needed dependencies (mx.*, whatever you<span> </span>need!)</li>
<li>Now create your component library from your class file with ‘compc’, for ex:<br />
‘compc -source-path . -include-classes FooLib -output=./example.swc’<br />
You should now have an swc file which you can use to compile against. In the flash authoring environment the swc is only used for type checking, think of it as an intrinsic package!</li>
<li>Now you’ll compile the library that you’ll dynamically load to access your classes:<br />
mxmlc -source-path . -o ./bin/library.swf ./FooLib.as</li>
<li>Before you’re ready to compile against your newly created library you need to load the library at runtime. As far as I can tell there are two options, my favorite is to link against it as a shared library. This allows all your swf’s to run quickly without any actual code! First you make a link to the library and when you’re done you put the movieclip on the first frame of your application. The other option (which is excellent as a preloader btw.) is to use a standard flash.display.Loader. (Just don’t forget to set the ApplicationDomain in the loadercontext or you’re classes will not be accessible!)</li>
<li>And finally you’re ready to compile your Flash classes against the classes flex compiled for you.</li>
</ol>
<p>As a proof of concept I’ve converted (read quick &amp; dirty) the <a target="_blank" href="http://cairngormdocs.org/blog/?p=19">cairngorm cafetownsend</a> mxml views to Flash. The views have dependencies on cairngorm and the flex framework (mx.rpc.*, mx.validators.StringValidator, etc..), but they compile without any of these classes in the path just because the swc sits besides the fla! You can download this package <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/12/flash_cafetownsend.zip" title="Flash &amp; Cairngorm Cafetownsend example">here</a>. After you&#8217;ve <a href="http://download.macromedia.com/pub/flex/sdk/flex2_sdk_hf1.zip" target="_blank">downloaded</a> the flex sdk to your favorite location you need to run ‘compile.cmd’ (put the flex sdk &#8216;bin&#8217; folder to your path, or you need to edit compile.cmd and at the path in front of compc and mxmlc), this will automate step 2 &amp; 3. Now you can open cafetownsend.fla and compile without any errors.</p>
<div align="center">[kml_flashembed FVERSION=&#8221;9.0.45&#8243; movie=&#8221;/wp-content/uploads/2007/12/main.swf&#8221; base=&#8221;/wp-content/uploads/2007/12/&#8221; height=&#8221;380&#8243; width=&#8221;360&#8243; /]</div>
<p>
If you&#8217;re only interested in getting webservices support in Flash then download the examples <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/12/flash_rpc_examples.zip" title="Webservices example">here</a>.</p>
<p>Now let&#8217;s use cairngorm within our Flash authoring environment :-)</p>
<p>
For &#8216;Jon Bradley&#8217; from the FlashCoders maillist I tested some flex controls. And yes, that&#8217;s possible as well although you need some style classes initialized before adding controls to your view. My first attempt involved custom flex initialization,  download that one <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/12/flex_controls_in_flash.zip" title="Flex Controls in flash">here</a>. My second attempt has a better workflow: you create a basic flex application which is compiled against your library.swc. This basic flex application is used for initialization when you want it to! The trick involves the overriding of the flex application. If you want to look into this method further then download a working example <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/12/flex_controls_in_flash_v2.zip" title="Flex Controls in flash part (2)">here</a>.</p>
<p>As far as I (or google) can tell this is the first proper solution to use your flex classes within Flash! </p>
<p>[Edit1]As Geoff van den Ouden found out, this solution does not work instantly with the Flex 3 SDK! You need to add &#8220;-compute-digest=false&#8221; to as an extra parameter to compc. Or you should download <a href="http://download.macromedia.com/pub/flex/sdk/flex2_sdk_hf1.zip">flex 2.0.2</a>.[/Edit1]</p>
<p>[Edit2]Julian Kussman got AIR crashing while using this method. It turns out AIR doesn’t like the shared library option. You can download a working AIR rpc example <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/12/air_rpc.zip">here</a>.[/Edit2]</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2007/12/25/using-flex-compiled-code-within-flash/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Simple Actionscript Preprocessor</title>
		<link>http://labs.qi-ideas.com/2007/12/19/simple-actionscript-preprocessor/</link>
		<comments>http://labs.qi-ideas.com/2007/12/19/simple-actionscript-preprocessor/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 13:06:23 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2007/12/19/simple-actionscript-preprocessor/</guid>
		<description><![CDATA[I was looking for a &#8217;simple&#8217; C preprocessor for actionscript. The best thing out there which is out of the box compatible with actionscript is &#8220;EnLarge&#8221; from Asual.
But even EnLarge is to complicated for me! I don&#8217;t want to make an ant build for every little thing I do. All I want is a preprocessor [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for a &#8217;simple&#8217; C preprocessor for actionscript. The best thing out there which is out of the box compatible with actionscript is &#8220;<a target="_blank" href="http://www.asual.com/enlarge/">EnLarge</a>&#8221; from <a target="_blank" href="http://www.asual.com/">Asual</a>.</p>
<p>But even EnLarge is to complicated for me! I don&#8217;t want to make an ant build for every little thing I do. All I want is a preprocessor that takes an input folder and processes every single file to a specified output folder. So I took a peek on google and found &#8220;<a target="_blank" href="http://en.nothingisreal.com/wiki/GPP">GPP</a>&#8220;, which is a general-purpose preprocessor &#8216;almost&#8217; perfect for my needs. Yes, &#8216;almost&#8217; perfect because it&#8217;s missing some of my fundamental needs to process a folder for ex. So after some small modifications I&#8217;ve recompiled <a target="_blank" href="http://en.nothingisreal.com/wiki/GPP">GPP</a> to fit my needs. Download my binaries <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/12/gpp.zip" title="Compiled Patched GPP 2.24 for Win32">here</a>, and get my patches for GPP 2.24 <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/12/gpp-224patch.zip" title="GPP 2.24 Patch">here</a>.</p>
<p><a target="_blank" href="http://en.nothingisreal.com/wiki/GPP">GPP</a> now supports the following syntax:<br />
gpp.exe &#8211;source .\src_p &#8211;dest .\src &#8211;nocurinc &#8211;stdinclude .\macros</p>
<p>We&#8217;re using this in <a target="_blank" href="http://www.flashdevelop.org">FlashDevelop</a> using a shortcut key (F11) within the FlashDevelop menu, if you want this as well then copy gpp.exe to your FlashDevelop tools folder and modify MainMenu.xml with the following:</p>
<p><code type="html">&lt;button label="Preprocess src_p" click="RunProcess" shortcut="F11" tag="$(Quote)$(BaseDir)\Tools\gpp\gpp.exe$(Quote);--source $(Quote)$(ProjectDir)\src_p$(Quote) --dest $(Quote)$(ProjectDir)\src$(Quote) --nocurinc --stdinclude $(Quote)$(BaseDir)\Tools\gpp$(Quote)" /&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2007/12/19/simple-actionscript-preprocessor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>to super or not to super</title>
		<link>http://labs.qi-ideas.com/2007/12/17/to-super-or-not-to-super/</link>
		<comments>http://labs.qi-ideas.com/2007/12/17/to-super-or-not-to-super/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 09:48:23 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2007/12/17/to-super-or-not-to-super/</guid>
		<description><![CDATA[Sometimes there are reasons for not calling the base class constructor. A little trick in AS3.0 to not super() your base class is the following line of code:

if &#40;0&#41; super&#40;&#41;;

]]></description>
			<content:encoded><![CDATA[<p>Sometimes there are reasons for not calling the base class constructor. A little trick in AS3.0 to not super() your base class is the following line of code:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript"><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2007/12/17/to-super-or-not-to-super/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NellyMoser decoding support in ffmpeg!</title>
		<link>http://labs.qi-ideas.com/2007/10/17/nellymoser-decoding-support-in-ffmpeg/</link>
		<comments>http://labs.qi-ideas.com/2007/10/17/nellymoser-decoding-support-in-ffmpeg/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 07:28:04 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2007/10/17/nellymoser-decoding-support-in-ffmpeg/</guid>
		<description><![CDATA[I&#8217;ve been following the thread on the conversion of the anonymous nellymoser project to native support within ffmpeg. Since the 15th of october the patch has been approved and applied to the ffmpeg svn trunk. This is great news, we can now finally convert our FMS stored audio to anything we like!
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been following the <a target="_blank">thread</a> on the conversion of the <a target="_blank" href="http://code.google.com/p/nelly2pcm/">anonymous nellymoser project</a> to native support within <a target="_blank" href="http://ffmpeg.mplayerhq.hu/">ffmpeg</a>. Since the 15th of october the patch has been <a target="_blank" href="http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-October/036766.html">approved</a> and <a target="_blank" href="http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-October/036846.html">applied</a> to the ffmpeg svn trunk. This is great news, we can now finally convert our FMS stored audio to anything we like!</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2007/10/17/nellymoser-decoding-support-in-ffmpeg/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flash &#038; Server Side object/face recognition</title>
		<link>http://labs.qi-ideas.com/2007/08/23/flash-server-side-image-processing/</link>
		<comments>http://labs.qi-ideas.com/2007/08/23/flash-server-side-image-processing/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 14:35:04 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flash Media Server]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2007/08/23/flash-server-side-image-processing/</guid>
		<description><![CDATA[Ever had a project where you needed to process a webcam image? We had a project for Heineken.nl called cloning. We wanted to do object recognition for objects like beer cans, bottles, etc&#8230; The objects would be placed in front of the webcam. When recognized the user would see a &#8216;clone&#8217; of the object. As [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Ever had a project where you needed to process a webcam image? We had a project for Heineken.nl called <a target="_blank" href="http://www.heineken.nl/main.html#view=HOME&amp;loc=nl_NL&amp;subview=ACTION_CLONING">cloning</a>. We wanted to do object recognition for objects like beer cans, bottles, etc&#8230; The objects would be placed in front of the webcam. When recognized the user would see a &#8216;clone&#8217; of the object. As we came to found out this process requires some serious processing power. At that time Flash (7/8) wasn&#8217;t up for the job. I even doubt the current ActionScript Virtual Machine (AVM2) in Flash Player 9 is powerful enough to handle such calculations.</p>
<p>The solution we came up with was to process the image by the server, but we wanted a fast way to send an image to the server. Unlike the method of <a target="_blank" href="http://www.gskinner.com/blog/archives/2006/03/saving_bitmapda.html">storing a bitmapdata structure </a>to the <a target="_blank">server</a> we wanted to use the oh so fast built in Sorenson Squeeze encoder. Flash Media Server came to the rescue to handle this process, this is how it would look in theory (and afterwards in practice):</p>
<p style="text-align: center"><img src="http://labs.qi-ideas.com/wp-content/uploads/2007/08/diagram.jpg" alt="diagram" /></p>
<p>The Flash player makes a connection to the FMS and publishes it&#8217;s webcam stream to the server. After this process FMS makes a soap/xml/loadvars connection to the object recognition service which in turn runs through the stored flv and returns the objects recognized. Now comes the interesting part.. :-)</p>
<p>To share this method with the community I&#8217;ve hacked together an example of this recognition process. The programming part isn&#8217;t complicated at all (at least not on my part :-)), to follow my source code reusing philosophy it&#8217;s a matter of combining what&#8217;s already out there. Our example server will be able to process an flv, recognize the faces (and eyes) which are in the flv and return the data in xml. This xml must of course be served through a http daemon so FMS can do something with it.</p>
<p>Ok, so what do we need to put this all together?</p>
<ul>
<li><a target="_blank" href="http://">MingW</a> GCC is the best open source compiler available.</li>
<li><a target="_blank" href="http://ffmpeg.mplayerhq.hu/">FFMPEG</a> (LGPL or GPL) handles the Sorenson Squeeze codec</li>
<li><a target="_blank" href="http://nullwebmail.sourceforge.net/httpd/">Null HTTPD</a> (GPL) provides us with the built-in web server to serve the xml</li>
<li><a target="_blank" href="http://mplab.ucsd.edu/grants/project1/free-software/MPTWebSite/introduction.html">The Machine Perception Toolbox</a> (BSD License) does the actual face recognition</li>
<li><a target="_blank" href="http://sourceware.org/pthreads-win32/">POSIX Threads for Win32</a> (LGPL) Null HTTPD uses posix threads to handle the load</li>
</ul>
<p>And here is the result of combining the whole lot together, my colleague Paul in front of the webcam :-)</p>
<p style="text-align: center"><img align="center" width="320" src="http://labs.qi-ideas.com/wp-content/uploads/2007/08/webcam.jpg" alt="my colleague Paul in front of the webcam" height="240" style="float: none" /></p>
<p align="left">I will not be going into any details of the actual c/c++ source code. But to get things compiling on your machine you need to do the following (please note, we&#8217;re compiling on windows here, but all libraries used are unix compatible):</p>
<ol>
<li>Extract the <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/08/facerecognition_sourcecodetar.gz">source code </a>into one folder</li>
<li>Download and compile the latest <a target="_blank" href="http://ffmpeg.mplayerhq.hu/">FFMpeg</a> version into the ffmpeg folder</li>
<li>Download and compile the latest version of the <a target="_blank" href="http://sourceware.org/pthreads-win32/">WIN32 POSIX threads </a>library into the pthreads folder</li>
<li>Run make within the nullhttpd folder</li>
<li>To finish things off run a &#8216;make&#8217; in the root folder</li>
<li>You should now have a working &#8216;flv processing httpd daemon&#8217;</li>
</ol>
<p align="left">If the process above was to complicated for you can download the binaries <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/08/facerecognition_binariestar.gz" title="facerecognition binaries">here</a>. And to top it of download the <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/08/facerecognition_clienttar.gz" title="facerecognition_clienttar.gz">flash client source</a> and the <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/08/facerecognition_fmstar.gz" title="facerecognition_fmstar.gz">FMS sources</a> as well.</p>
<p>Two big site notes here:</p>
<ol>
<li>The <a href="http://labs.qi-ideas.com/wp-content/uploads/2007/08/facerecognition_sourcecodetar.gz" title="facerecognition_sourcecodetar.gz">source code</a> hasn&#8217;t been thoroughly tested for thread safety issues, memory leaks, etc&#8230; so don&#8217;t try run this in your production environment.</li>
<li>This is a proof of concept solution only, if you want to start using this then respect the possible differences in licensing.</li>
</ol>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2007/08/23/flash-server-side-image-processing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Please No, Not Another framework</title>
		<link>http://labs.qi-ideas.com/2007/07/28/please-no-not-another-framework/</link>
		<comments>http://labs.qi-ideas.com/2007/07/28/please-no-not-another-framework/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 12:33:53 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Qi Framework]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2007/07/28/please-no-not-another-framework/</guid>
		<description><![CDATA[Take a quick peek on osflash and you’ll see tons of cool frameworks available. This begs to ask the question, why develop another open source framework?
Each framework has its own strengths and weaknesses. But most important, it’s a matter of personal choice! For us there is not a single framework out there that fits our [...]]]></description>
			<content:encoded><![CDATA[<p>Take a quick peek on <a href="http://www.osflash.org">osflash</a> and you’ll see tons of cool frameworks available. This begs to ask the question, why develop another open source framework?</p>
<p>Each framework has its own strengths and weaknesses. But most important, it’s a matter of personal choice! For us there is not a single framework out there that fits our needs. We do not believe in re-inventing the wheel, that’s why we started to develop our own framework based on others and or combined with our own modifications. </p>
<p>So here&#8217;s a very short list of our personal pros and cons from other opensource frameworks. Again we’re not trying to judge or flame here, it’s all a matter of personal choice, right? </p>
<p><a href="http://osflash.org/projects/arp">ARP</a>/<a href="http://theresidentalien.typepad.com/ginormous/2005/10/extending_arp.html">ARPX</a></p>
<ul>
Pros:</p>
<ul>
<li>Decoupling of business logic is cool</li>
<li>Well documented</li>
</ul>
<p>Cons:</p>
<ul>
<li>We don’t want to add a controller for each and every view, Grant Davies (<a href="http://theresidentalien.typepad.com/ginormous/2005/10/extending_arp.html">ARPX</a>) CommandController is superior in this</li>
<li>CommandController (<a href="http://theresidentalien.typepad.com/ginormous/2005/10/extending_arp.html">ARPX</a>), we dislike the dependency on <a href="http://www.xfactorstudio.com/">xfactor studio XPATH</a></li>
</ul>
</ul>
<p><a href="http://www.gugga.com/GuggaFlashFramework/">GUGGA</a></p>
<ul>
	Pros:</p>
<ul>
<li><a href="http://www.gugga.com/flashblog/blogarchive/2006_10_01_blogarchive.html">TaskManager</a> is the best task manager available, period.</li>
</ul>
<p>Cons:</p>
<ul>
<li>difficult learning curve (must not use the word ‘steep’ here)</li>
</ul>
</ul>
<p><a href="http://casaframework.org/">CASA</a></p>
<ul>
Pros:</p>
<ul>
<li>Good utility base</li>
<li>Excellent set of loaders</li>
</ul>
<p>Cons:</p>
<ul>
<li>Uses it’s own eventobserver structure, we like ours to be mx compatible</li>
<li>personally we dislike it’s package structure, ASAP’s structure is superior</li>
</ul>
</ul>
<p><a href="http://asapframework.org/">ASAP</a></p>
<ul>
Pros:</p>
<ul>
<li>Good utility base</li>
<li>Excellent package structure</li>
<li>We like the event bubbling mechanism of ui components to the LocalController</li>
</ul>
<p>Cons:</p>
<ul>
<li>Within our LocalController we don’t want to assign the timeline to a variable, we want to extend the timeline</li>
<li>UI components are not that well evolved, we prefer the far superior <a href="http://www.metaliq.com/mcom/">Metaliq mCOM Component</a> set</li>
<li>Actionqueue is cool, but gugga’s taskManager is far <a href="http://groups.google.com/group/guggaff/browse_thread/thread/bd7e471e98467d72">superior</a></li>
</ul>
</ul>
<p>So what does this all boil down to? In short:</p>
<ul>
<li>One namespace, no external dependencies</li>
<li>ARP/ARPX used for business logic</li>
<li>ARP commands can be encapsualted within an ARPTask (Gugga ITask compatible), so commands can be used in a flow</li>
<li>For dispatching ARP commands we use a modified ARPX CommandController without the xfactor studio dependency</li>
<li>Our LocalController (ASAP naming convention) is an extended version of ARPForm, we&#8217;ve added doLater, findNearestLocalController functions etc..</li>
<li>Our logger system is a modified version of pixlib&#8217;s logger (modified to use our eventdispatcher)</li>
<li>Loaders have been taken from CASA and have been made ITask compatible</li>
<li>Our user interface components are NOT publicly available they are within the metaliq mCOM component set or inherit from metaliqs UIObject</li>
<li>Each and every class has been converted to use our own EventDispatcher (which is based on Grant skinners GDispatcher and is fully mx compatible)</li>
<li>There should not be two utilities having the same functionality. All classes have been modified to use the same utility, for ex. Delegate, Framedelay, etc..</li>
</ul>
<p>What needs to be done? Lot&#8217;s of things, write documentation / tutorials but most important evolve&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2007/07/28/please-no-not-another-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Qi&#8217;s framework release</title>
		<link>http://labs.qi-ideas.com/2007/07/28/qis-very-first-framework-release/</link>
		<comments>http://labs.qi-ideas.com/2007/07/28/qis-very-first-framework-release/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 12:21:00 +0000</pubDate>
		<dc:creator>Sander Wichers</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Qi Framework]]></category>

		<guid isPermaLink="false">http://labs.qi-ideas.com/2007/07/28/qis-very-first-framework-release/</guid>
		<description><![CDATA[The very first release of our own Qi framework has been made available for download through the Google Code download area. 
Our own source code is released under MIT license and will be maintained in our private svn repository. Other parts of the framework come from a variety of other frameworks, which forces us to [...]]]></description>
			<content:encoded><![CDATA[<p>The very first release of our own <a href="http://www.qi-ideas.com">Qi</a> framework has been made available for <a href="http://code.google.com/p/qi-framework/downloads/list">download</a> through the Google Code download area. </p>
<p>Our own source code is released under <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a> and will be maintained in our private svn repository. Other parts of the framework come from a variety of other frameworks, which forces us to include the following licenses:</p>
<ul>
<li><a href="http://www.mozilla.org/MPL/MPL-1.1.html">MOZILLA PUBLIC LICENSE 1.1</a></li>
<li><a href="http://www.gnu.org/licenses/lgpl-3.0.txt">GNU Lesser General Public</a></li>
<li><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://labs.qi-ideas.com/2007/07/28/qis-very-first-framework-release/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
