<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Subotnik Dev</title>
	<atom:link href="http://www.subotnik.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.subotnik.com/blog</link>
	<description>notes by Fredrik Sandberg</description>
	<lastBuildDate>Fri, 14 Jan 2011 15:45:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Mobile Facebook OAUTH authentication with Air 2.5</title>
		<link>http://www.subotnik.com/blog/2011/01/mobile-facebook-oauth-authentication-with-air-2-5/</link>
		<comments>http://www.subotnik.com/blog/2011/01/mobile-facebook-oauth-authentication-with-air-2-5/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 14:44:00 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[flex for android]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=289</guid>
		<description><![CDATA[The current version (1.5) of the Facebook-Actionscript API doesn´t support Air 2.5 for Mobile. The authentication process requires you to launch some html with buttons where the user can acccept or deny access by your app, but: The Mobile package of Facebook-Actionscript API is using External Interface which is not available. The Desktop package of [...]]]></description>
			<content:encoded><![CDATA[<p>The current version (1.5) of the <a href="http://code.google.com/p/facebook-actionscript-api/">Facebook-Actionscript API</a> doesn´t support Air 2.5 for Mobile. The authentication process requires you to launch some html with buttons where the user can acccept or deny access by your app, but:</p>
<ul>
<li>The Mobile package of <a href="http://code.google.com/p/facebook-actionscript-api/">Facebook-Actionscript API</a> is using <em><a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html">External Interface</a></em> which is not available.</li>
<li>The Desktop package of <a href="http://code.google.com/p/facebook-actionscript-api/">Facebook-Actionscript API</a> is using the <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/html/HTMLLoader.html"><em>HTMLLoader</em> </a>class which is not available.</li>
</ul>
<p>Instead you can call the authentication url (remember to register your app´s redirect uri &#8211; which should be one of the params &#8211; in your application settings at Facebook):</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">public</span> static const FACEBOOK_AUTHORIZE_URL<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;">&quot;&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
			<span style="color: #990000;">&quot;https://graph.facebook.com/oauth/authorize?&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
			<span style="color: #990000;">&quot;client_id=&quot;</span><span style="color: #000066; font-weight: bold;">+</span>APP_ID<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;&amp;&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
			<span style="color: #990000;">&quot;redirect_uri=&quot;</span><span style="color: #000066; font-weight: bold;">+</span>APP_URL<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;&amp;&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
			<span style="color: #990000;">&quot;display=touch&quot;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>with the <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/StageWebView.html">StageWebView</a> class. Listen for the LocationChangeEvent when you get redirected and catch the access code from the new url string, something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> onLocationChange<span style="color: #000000;">&#40;</span>event<span style="color: #000066; font-weight: bold;">:</span>LocationChangeEvent<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> codeUrl<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = APP_URL <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #990000;">&quot;?code=&quot;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">code</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = event<span style="color: #000066; font-weight: bold;">.</span>location<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">substr</span><span style="color: #000000;">&#40;</span>codeUrl<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #6699cc; font-weight: bold;">var</span> fb<span style="color: #000066; font-weight: bold;">:</span>FacebookAirAndroid = <span style="color: #0033ff; font-weight: bold;">new</span> FacebookAirAndroid<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	fb<span style="color: #000066; font-weight: bold;">.</span>login<span style="color: #000000;">&#40;</span><span style="color: #004993;">code</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>By making a FacebookAirAndroid subclass of <a href="http://facebook-actionscript-api.googlecode.com/svn/release/current/docs/com/facebook/graph/core/AbstractFacebook.html">AbstractFacebook</a> from the <a href="http://code.google.com/p/facebook-actionscript-api/">Facebook-Actionscript API</a> you can write a public login method that takes this access code and builds a url, which now is fired by the URLLoader class.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> login<span style="color: #000000;">&#40;</span><span style="color: #004993;">code</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">url</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;">&quot;&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
		<span style="color: #990000;">&quot;https://graph.facebook.com/oauth/access_token?&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
		<span style="color: #990000;">&quot;client_id=&quot;</span><span style="color: #000066; font-weight: bold;">+</span>APP_ID<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;&amp;&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
		<span style="color: #990000;">&quot;redirect_uri=&quot;</span><span style="color: #000066; font-weight: bold;">+</span>APP_URL<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;&amp;&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
		<span style="color: #990000;">&quot;client_secret=&quot;</span><span style="color: #000066; font-weight: bold;">+</span>APP_SECRET<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;&amp;&quot;</span> <span style="color: #000066; font-weight: bold;">+</span>
		<span style="color: #990000;">&quot;code=&quot;</span><span style="color: #000066; font-weight: bold;">+</span> <span style="color: #004993;">code</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;&quot;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #6699cc; font-weight: bold;">var</span> req<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">URLRequest</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">URLRequest</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">url</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">loader</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">URLLoader</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">URLLoader</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #004993;">loader</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">COMPLETE</span><span style="color: #000066; font-weight: bold;">,</span> onUrlLoaded<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #004993;">loader</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">IOErrorEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">IO_ERROR</span><span style="color: #000066; font-weight: bold;">,</span> onIOError<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #004993;">loader</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span>req<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>When the URLLoader dispatches Event.COMPLETE you should now have received an access token which you keep by setting the FacebookSession variable:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> onUrlLoaded<span style="color: #000000;">&#40;</span>event<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">loader</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">URLLoader</span> = event<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">currentTarget</span> <span style="color: #0033ff; font-weight: bold;">as</span> <span style="color: #004993;">URLLoader</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">data</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #004993;">loader</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">data</span> <span style="color: #0033ff; font-weight: bold;">as</span> <span style="color: #004993;">String</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> token<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #004993;">data</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">split</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;=&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
	token = token<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">split</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;&amp;&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span>session = <span style="color: #0033ff; font-weight: bold;">new</span> FacebookSession<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	session<span style="color: #000066; font-weight: bold;">.</span>accessToken = token<span style="color: #000066; font-weight: bold;">;</span>
	session<span style="color: #000066; font-weight: bold;">.</span>secret = APP_SECRET<span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Now you can use the inherited api method in your subclass to call Facebook with whatever you want. Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2011/01/mobile-facebook-oauth-authentication-with-air-2-5/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Habitz App now on the Android Market</title>
		<link>http://www.subotnik.com/blog/2010/12/habitz-app-now-on-the-android-market/</link>
		<comments>http://www.subotnik.com/blog/2010/12/habitz-app-now-on-the-android-market/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 17:45:31 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[flex for android]]></category>
		<category><![CDATA[frameworks]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=251</guid>
		<description><![CDATA[Today I released my first app &#8211; Habitz &#8211; on Android Market. Info and QR can be found here. It has been built on the Flex Hero framework, and is using the Robotlegs micro-architecture.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.subotnik.com/blog/wp-content/uploads/2010/12/habitz.png"><img class="size-full wp-image-255 alignnone" title="Habitz" src="http://www.subotnik.com/blog/wp-content/uploads/2010/12/habitz.png" alt="" width="512" height="512" /></a></p>
<p><a href="http://www.subotnik.com/blog/wp-content/uploads/2010/12/habitz.png"></a>Today I released my first app &#8211; Habitz &#8211; on Android Market. Info and QR can be found <a href="http://www.subotnik.com/blog/habitz-app/">here</a>.</p>
<p>It has been built on the <a href="http://labs.adobe.com/technologies/flex/mobile/">Flex Hero framework</a>, and is using the <a href="http://www.robotlegs.org/">Robotlegs</a> micro-architecture.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2010/12/habitz-app-now-on-the-android-market/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Great pure actionscript projects: a gallery demo.</title>
		<link>http://www.subotnik.com/blog/2010/01/great-pure-actionscript-projects-a-gallery-demo/</link>
		<comments>http://www.subotnik.com/blog/2010/01/great-pure-actionscript-projects-a-gallery-demo/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 20:31:03 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[as3 -general]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=185</guid>
		<description><![CDATA[As a developer of flex applications I have often received critique for the size of the applications, and of course it could be a problem if they should be loaded fast with limited bandwidth. There are techniques for removing classes that are not needed, but another alternative is to choose a new “Actionscript project” instead [...]]]></description>
			<content:encoded><![CDATA[<p>As a developer of flex applications I have often received critique for the size of the applications, and of course it could be a problem if they should be loaded fast with limited bandwidth. There are techniques for removing classes that are not needed, but another alternative is to choose a new “Actionscript project” instead of creating a new “Flex Project”. Maybe you don´t need all the fancy things from Flex: the ResourceManager, the StyleManager, and the DataGrid. Instead of building your layout with the declarative mxml you can perhaps add TextFields, SimpleButtons and other components, as well as making cool drawings in a fla file. You have to give the components instance names if you would like to access them from your application. Then embed the compiled swf into a class variable for instantiation in your application code.<br />
I have created a simple gallery application that shows how you can use Flash for creating the gui and FlashBuilder´s &#8220;Actionscript project&#8221; for controlling it. The size of the application is just around 30 kB. Because the application is very simple and a small size was one of the goals for this project I didn´t use any MVC framework (like <a href="http://www.robotlegs.org/">Robotlegs</a>, or the modification of Swiz for plain as3 projects, from <a href="http://negdis.com/blog/index/Swiz-in-plain-AS3-projects" target="_blank">Negdis</a>), but nevertheless followed some MVC pattern by a controller, and a model.</p>
<p>You can view the source code and <a href="http://www.subotnik.com/abcgallery/srcview/ImageGallery.zip">download a zip</a> of the application below by right clicking in the app and select “<a href="http://www.subotnik.com/abcgallery/srcview/">view source</a>”.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ImageGallery_2038695117"
			class="flashmovie"
			width="600"
			height="450">
	<param name="movie" value="http://subotnik.com/abcgallery/ImageGallery.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://subotnik.com/abcgallery/ImageGallery.swf"
			name="fm_ImageGallery_2038695117"
			width="600"
			height="450">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>As <a href="http://www.moock.org/blog/archives/000294.html">the integration between Flash CS5 and FlashBuilder</a> will be heavily improved (with features like compiling a fla file from FlashBuilder), it will become more and more important to make an intelligent decision about what roles the two IDE´s should play in the next Flash project. What is the easiest thing to do? Where do we have our competences?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2010/01/great-pure-actionscript-projects-a-gallery-demo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optimizing Collada files for Papervision with Ant</title>
		<link>http://www.subotnik.com/blog/2010/01/optimizing-collada-files-for-papervision-with-ant/</link>
		<comments>http://www.subotnik.com/blog/2010/01/optimizing-collada-files-for-papervision-with-ant/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 09:55:10 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[ant]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=182</guid>
		<description><![CDATA[Recently I have been developing a very large flex/papervision3d project. The guy who´s making the 3d models is an external resource, frequently committing new collada files to our repository. One of the problems with these files are that his exporter is generating so much junk, and it has become necessary to do something about the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have been developing a very large flex/papervision3d project. The guy who´s making the 3d models is an external resource, frequently committing new collada files to our repository. One of the problems with these files are that his exporter is generating so much junk, and it has become necessary to do something about the sizes of the files.</p>
<p>For this reason I have added a subscript to my main build.xml, using the XmlTask from <a href="http://www.oopsconsultancy.com/software/xmltask" target="_blank">OopsConsultancy</a>.</p>
<p>My script works like this:<br />
<code></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">basedir</span>=<span style="color: #ff0000;">&quot;.&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;optimize&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;xmltask&quot;</span> <span style="color: #000066;">classname</span>=<span style="color: #ff0000;">&quot;com.oopsconsultancy.xmltask.ant.XmlTask&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;XML.DIR&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;../MainApp/assets/3d&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;MODEL.A320&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;a320&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;optmize&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;file&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${XML.DIR}/${MODEL.A320}/${MODEL.A320}.DAE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xmltask</span> <span style="color: #000066;">source</span>=<span style="color: #ff0000;">&quot;${file}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${file}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:asset&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:library_cameras/:camera/:optics&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:library_cameras/:camera/:extra&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:library_materials/:material/:extra&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:library_effects/:effect/:profile_COMMON&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:library_effects/:effect/:extra&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:library_visual_scenes/:visual_scene/:node/:instance_geometry/:bind_material&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remove</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;/:COLLADA/:library_visual_scenes/:visual_scene/:extra&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xmltask<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Most probably there are more things to clean up than the content above, but with this I managed to get rid of about 30% of the overhead from the files.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2010/01/optimizing-collada-files-for-papervision-with-ant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FlexUnit 4</title>
		<link>http://www.subotnik.com/blog/2009/05/flexunit-4/</link>
		<comments>http://www.subotnik.com/blog/2009/05/flexunit-4/#comments</comments>
		<pubDate>Mon, 04 May 2009 07:58:51 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=168</guid>
		<description><![CDATA[You can already now download an alpha-release of FlexUnit 4 from Digital Primates (the group behind Fluint and earlier dpuint), which: &#8230;represents the best features of the FlexUnit project combined with the best features of the Fluint project. It is built on top of a newly created foundation designed to support the latest techniques used [...]]]></description>
			<content:encoded><![CDATA[<p>You can already now download an alpha-release of FlexUnit 4 from <a href="http://blogs.digitalprimates.net/codeSlinger/enclosures/FlexUnit4TurnkeyAlpha_1.0.zip">Digital Primates</a> (the group behind Fluint and earlier dpuint), which:</p>
<p><em>&#8230;represents the best features of the FlexUnit project combined with the best features of the Fluint project. It is built on top of a newly created foundation designed to support the latest techniques used in the JUnit testing community, but written for the specific requirements and needs of the Flash Player.</em></p>
<p>[<a href="http://blogs.digitalprimates.net/codeSlinger/index.cfm/2009/5/3/FlexUnit-4-in-360-seconds">http://blogs.digitalprimates.net/codeSlinger/index.cfm/2009/5/3/FlexUnit-4-in-360-seconds</a>]</p>
<p>After been working with the Swiz framework for a while now, and been quite fond of the strengths of custom meta-data I was very happy to see the extensive use of the convenient concept. You mark your test cases by [Test]. Instead of overriding setup and teardown methods you can now use the [Before] and [After] metadata. I am very much looking forward to this, and also hope that FlexUnit will contain an improved version of FlexUnitTask for CIServers, like Hudson and TeamCity (which <a href="http://weblogs.macromedia.com/pmartin/archives/2006/06/flexunit_ant.html">Peter Martin </a>released for the earlier FlexUnit versions).</p>
<p>Read more about FlexUnit4 and see some examples of it in the above link.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2009/05/flexunit-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex Team Plugin for Hudson</title>
		<link>http://www.subotnik.com/blog/2009/04/flex-team-plugin-for-hudson/</link>
		<comments>http://www.subotnik.com/blog/2009/04/flex-team-plugin-for-hudson/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 15:00:39 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[hudson]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=161</guid>
		<description><![CDATA[I have finally configured my environment enough for setting up a basic Hudson plugin. Basically I have followed the brief overview from here: http://wiki.hudson-ci.org/display/HUDSON/Plugin+tutorial. The biggest problem I had where that the mvn hpi:create didn´t recognize  the systemPath to tools.jar in the JAVA_HOME lib folder. When running the command in debug mode I found out [...]]]></description>
			<content:encoded><![CDATA[<p>I have finally configured my environment enough for setting up a basic Hudson plugin. Basically I have followed the brief overview from here: <a href="http://wiki.hudson-ci.org/display/HUDSON/Plugin+tutorial">http://wiki.hudson-ci.org/display/HUDSON/Plugin+tutorial</a>. The biggest problem I had where that the mvn hpi:create didn´t recognize  the systemPath to tools.jar in the JAVA_HOME lib folder. When running the command in debug mode I found out that the pom somehow expected the JAVA_HOME to be pointing to the JRE subfolder. When changing this I succeeded to create a project, download a skeleton project, make some changes, deploy it and run a locale debug instance of Hudson with the changes reflected. Great!</p>
<p>I am considering to write a plugin dedicated to Flex application build jobs. Are there any special needs out there, that could be covered by a such plugin?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2009/04/flex-team-plugin-for-hudson/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Twitter widget</title>
		<link>http://www.subotnik.com/blog/2009/04/test/</link>
		<comments>http://www.subotnik.com/blog/2009/04/test/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 10:25:36 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[ambient display]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[public API´s]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=149</guid>
		<description><![CDATA[A small, but highly configurable, twitter widget, using the Swiz framework, and Efflex. 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_TwitterWidget_287882438"
			class="flashmovie"
			width="420"
			height="210">
	<param name="movie" value="flash/twitter/TwitterWidget.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="flash/twitter/TwitterWidget.swf"
			name="fm_TwitterWidget_287882438"
			width="420"
			height="210">
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>]]></description>
			<content:encoded><![CDATA[<p>A small, but highly configurable, twitter widget, using the <a href="http://code.google.com/p/swizframework/">Swiz</a> framework, and <a href="http://code.google.com/p/efflex/">Efflex</a>.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_TwitterWidget_1898366717"
			class="flashmovie"
			width="420"
			height="210">
	<param name="movie" value="flash/twitter/TwitterWidget.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="flash/twitter/TwitterWidget.swf"
			name="fm_TwitterWidget_1898366717"
			width="420"
			height="210">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2009/04/test/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fascinating Twitter Searches</title>
		<link>http://www.subotnik.com/blog/2009/04/fascinating-twitter-search-api/</link>
		<comments>http://www.subotnik.com/blog/2009/04/fascinating-twitter-search-api/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 17:47:40 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[public API´s]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=126</guid>
		<description><![CDATA[As the community of twittering people grows really fast, the Twitter Search API is becoming increasingly fascinating. After the Pirate Bay trial you could for example follow the twitterstorm from hour to hour when using the API. Today I have been trying out the API with a very simple Flex application. It was amazingly easy [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.subotnik.com/twitter/TwitterSearch.html"><img class="alignleft size-medium wp-image-135" title="twitterapp" src="http://www.subotnik.com/blog/wp-content/uploads/2009/04/twitterapp-300x167.png" alt="" width="300" height="167" /></a></p>
<p>As the community of twittering people grows really fast, the <a href="http://apiwiki.twitter.com/Search+API+Documentation">Twitter Search API</a> is becoming increasingly fascinating. After the Pirate Bay trial you could for example follow the twitterstorm from hour to hour when using the API.</p>
<p>Today I have been trying out the API with a very simple Flex application. It was amazingly easy to set up. By the use of HTPPService I call a couple of JSON formatted services for retrieving popular topics. I used the JSON decoder in the <a href="http://code.google.com/p/as3corelib/">as3corelib</a>. But the decoded object needed some parsing before beeing useful as a dataprovider for my Repeater:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> parseJSONResult<span style="color: #66cc66;">&#40;</span>jsonResult:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Array</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> p1:<span style="color: #0066CC;">String</span> <span style="color: #b1b100;">in</span> jsonResult<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">var</span> p2:<span style="color: #0066CC;">String</span> <span style="color: #b1b100;">in</span> jsonResult<span style="color: #66cc66;">&#91;</span>p1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>jsonResult<span style="color: #66cc66;">&#91;</span>p1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>p2<span style="color: #66cc66;">&#93;</span> is <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">return</span> jsonResult<span style="color: #66cc66;">&#91;</span>p1<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>p2<span style="color: #66cc66;">&#93;</span> as <span style="color: #0066CC;">Array</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">null</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>When selecting a topic I also used the HTTPService. In order to resolve the Atom feed I used the resultFormat &#8220;e4x&#8221; and then declared the namespace:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> namespace atom = <span style="color: #ff0000;">&quot;http://www.w3.org/2005/Atom&quot;</span>;
use namespace atom;</pre></div></div>

<p>And this is how <a href="http://www.subotnik.com/twitter/TwitterSearch.html" target="_blank">the app</a> looks like. Right-click on the app and select &#8220;view source&#8221; if you are interested in the details.</p>
<p>And, by the way, you can always follow my own twitterings on <a href="http://twitter.com/fsandx">@fsandx</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2009/04/fascinating-twitter-search-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Swiz framework for Flex</title>
		<link>http://www.subotnik.com/blog/2009/01/swiz-framework-for-flex/</link>
		<comments>http://www.subotnik.com/blog/2009/01/swiz-framework-for-flex/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 10:08:26 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[RIA Project Setup]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=123</guid>
		<description><![CDATA[In a discussion thread at the LinkedIn Adobe Flex Developers Group, about what framework to use for developing large Flex applications someone mentioned Swiz: - an Inversion of Control framework so you don&#8217;t end app with any singleton references in your project code but you can wire your objects together using metadata annotation in your [...]]]></description>
			<content:encoded><![CDATA[<p>In a discussion thread at the LinkedIn Adobe Flex Developers Group, about what framework to use for developing large Flex applications someone mentioned <a href="http://code.google.com/p/swizframework/">Swiz</a>:</p>
<p><em><span class="text">- an Inversion of Control framework so you don&#8217;t end app with any singleton references in your project code but you can wire your objects together using metadata annotation in your classes</span></em></p>
<p><em>- no repetitive folder layouts, and no boilerplate code on your development</em></p>
<p>As I am currently doing some heavy refactoring of a prototype project in order to take the application to the next level, the above statements really seems promising, and it would have been great if I could have these benefits.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2009/01/swiz-framework-for-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Office automation</title>
		<link>http://www.subotnik.com/blog/2008/12/office-automation/</link>
		<comments>http://www.subotnik.com/blog/2008/12/office-automation/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 17:15:01 +0000</pubDate>
		<dc:creator>Fredrik</dc:creator>
				<category><![CDATA[hudson]]></category>

		<guid isPermaLink="false">http://www.subotnik.com/blog/?p=114</guid>
		<description><![CDATA[As one of our projects have a focus on home automation, an office automation setup of the project, like this, would be very cool. Very much configurable with Hudson. It lights lava lamps based on the status of the Hudson RSS feed- if the most recent of any builds fails, the red lamp will light; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.subotnik.com/blog/wp-content/uploads/2008/12/green_bubbles.jpg"><img class="size-medium wp-image-115 aligncenter" title="green_bubbles" src="http://www.subotnik.com/blog/wp-content/uploads/2008/12/green_bubbles.jpg" alt="" width="240" height="293" /></a></p>
<p style="text-align: center;">As one of our projects have a focus on home automation, an office automation setup of the project, like <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/BubbleBubbleBuildsInTrouble.rdoc">this</a>, would be very cool. Very much <a href="http://hudson.gotdns.com/wiki/display/HUDSON/Hudson+Build+Status+Lava+Lamps">configurable with Hudson</a>. It lights lava lamps based on the status of the Hudson RSS feed- if the most recent of any builds fails, the red lamp will light; if the most recent of each builds succeeds, the program will light the green lamp.</p>
<p style="text-align: center;">And, yes, I agree..email noficications are so 90´s!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subotnik.com/blog/2008/12/office-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

