<?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>Théâtre magique &#187; Flash/Flex</title>
	<atom:link href="http://www.noirmatstudios.com/blog/index.php/category/flashflex/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.noirmatstudios.com/blog</link>
	<description>Tout le monde n'est pas autorisé à entrer</description>
	<lastBuildDate>Sat, 27 Mar 2010 14:53:14 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Flash Builder 4 is here and the CS5 is close</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2010/03/27/the-flash-builder-4-is-here-and-the-cs5-is-close/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2010/03/27/the-flash-builder-4-is-here-and-the-cs5-is-close/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 14:51:44 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[CS5 Suite]]></category>
		<category><![CDATA[Flash Builder 4]]></category>
		<category><![CDATA[Flash Catalyst]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=240</guid>
		<description><![CDATA[Articles on this blog usually focus on useful documentation rather than buzzing around like most blogs on the web. Once in a while though, we do it. So Flash Builder 4 is finally available ! The pricing is around the same as the previous version, Flex Builder 3. $250 for the standard version and $700 [...]]]></description>
			<content:encoded><![CDATA[<p>Articles on this blog usually focus on useful documentation rather than buzzing around like most blogs on the web.</p>
<p>Once in a while though, we do it. So Flash Builder 4 is finally <a title="Flash Builder 4" href="http://www.adobe.com/products/flashbuilder/">available</a> ! The pricing is around the same as the previous version, Flex Builder 3. $250 for the standard version and $700 for the premium.</p>
<p>Among the huge improvements in the Flash workflow, the data-centric, skinning and styling features are just what we needed. Have a look at the <a title="Flex features grid" href="http://www.adobe.com/products/flex/upgrade/">grid of features</a> for more details.</p>
<p>Flash Catalyst wasn’t mentioned anywhere but I guess it will be part of the CS5 release. Until then you can still play around with Catalyst beta 2.</p>
<p>Talking about buzz-like news, Adobe made a <a title="CS5 Launch" href="http://cs5launch.adobe.com/">countdown for the CS5 launch</a> with a wooden font. Now 16 days : 01 hours : 08 minutes : 21 seconds. You got that much time to buy a new 64-bit computer for After Effects CS5. Yes, Adobe asks you to contribute to the rampant consumerism. What will your answer be ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2010/03/27/the-flash-builder-4-is-here-and-the-cs5-is-close/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When Flex Builder doesn’t want to build</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2010/01/27/when-flex-builder-doesnt-want-to-build/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2010/01/27/when-flex-builder-doesnt-want-to-build/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 17:18:01 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[stupid]]></category>
		<category><![CDATA[tired]]></category>
		<category><![CDATA[unable]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=196</guid>
		<description><![CDATA[A very short article here about a problem that is not a problem that still remains a problem. Say you got a nice shiny Flex project with Locales and internationalization all around. You want to transfer the whole project to another developer’s workspace on another machine. The target has got a fresh Flex Builder install, [...]]]></description>
			<content:encoded><![CDATA[<p>A very short article here about a problem that is not a problem that still remains a problem.</p>
<p>Say you got a nice shiny Flex project with Locales and internationalization all around. You want to transfer the whole project to another developer’s workspace on another machine. The target has got a fresh Flex Builder install, nothing customized and all. You import your project within the workspace and everything’s fine EXCEPT Flex Builder starts yelling about its inability to open a Locale (in this case a Frog).</p>
<p>A quick google-pet-sniffing tells the poor target that he has to run a script on DOS or on the Terminal to copy a bunch of files (see <a title="Adobe labs runtime localization" href="http://labs.adobe.com/wiki/index.php/Flex_3:Feature_Introductions:_Runtime_Localization">Adobe labs</a> and <a title="Herreman's article on localization" href="http://www.herrodius.com/blog/123">Herreman’s article</a>). Fine, he’s got a French locale. So he goes on the Flex Builder again which is still yelling with a deadly cross. First thing you do : close the project and re-open it. Second : close Flex and re-open it. Third : close the computer and re-open it. Fourth : close the office and…(what would you do next ?)</p>
<p>I’ll save you a couple of minutes here. <strong>The only solution is to kill the project, delete it (not the files, just the project) and import it anew</strong>. And THAT WORKS ! Don’t ask me why.</p>
<p>It happened to us a few times, not only in this case but on some other configurations where Flex Builder shows PTSD symptoms and still wants to display a white on red cross when everything’s fine. Here, the fact that we imported the project <strong>after</strong> the modification fixed something. But sometimes you haven’t done anything like that and Flex Builder (or I’d rather say Eclipse) is stuck in a state with your project. Just create it again even if it’s a hassle.</p>
<p>By the way, it’s not limited to the Flex Builder. Flash got similar problems sometimes. Like you want to save a class and compile but nothing looks like the changes were applied, except your file IS saved. You’d have to recreate an .fla and it’d work.</p>
<div id="attachment_198" class="wp-caption alignnone" style="width: 510px"><a href="http://www.noirmatstudios.com/blog/wp-content/uploads/2010/01/the-answer.jpg"><img class="size-full wp-image-198" title="the-answer" src="http://www.noirmatstudios.com/blog/wp-content/uploads/2010/01/the-answer.jpg" alt="The Answer" width="500" height="247" /></a><p class="wp-caption-text">The Answer</p></div>
<p>That’s about the same solution as kicking a device to make it work properly again. I can’t wait to see in the next bad movie a hacker closing the project and importing it again. “Haha look at that !”. He might not look as cool as beating an engine in a spatial module with a wrench (remember Armageddon, that risible movie ?) but given what you can see in blockbusters, I say, why not ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2010/01/27/when-flex-builder-doesnt-want-to-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR crashes upon PDF display on MacOSX</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2010/01/16/air-crashes-upon-pdf-display-on-macosx/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2010/01/16/air-crashes-upon-pdf-display-on-macosx/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 12:37:16 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[htmlloader]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[snow leopard]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=129</guid>
		<description><![CDATA[Working with pdf documents is really nice now that it’s part of the workflow of a majority of companies. But the Adobe AIR team still has a lot of work ahead of them to let flash handle pdf. Now, the only possibility we have to communicate with a pdf within an air application requires four [...]]]></description>
			<content:encoded><![CDATA[<p>Working with pdf documents is really nice now that it’s part of the workflow of a majority of companies. But the Adobe AIR team still has a lot of work ahead of them to let flash handle pdf. Now, the only possibility we have to communicate with a pdf within an air application requires four platforms/languages : as3-&gt;html-&gt;javascript-&gt;pdf. No wonder there are bugs coming one after the other.</p>
<h1>Toxic snow contaminates the AIR</h1>
<p>Or is it the other way around ?</p>
<p>We recently put to use the feature of dynamic pdf loading in AIR and we met a little problem. If you try to open a pdf document within the HTMLLoader on a MacOSX Snow Leopard, your application miserably crashes. I’m surprised I didn’t find much information but a few forum threads about this.</p>
<div id="attachment_146" class="wp-caption alignnone" style="width: 510px"><a href="http://www.noirmatstudios.com/blog/wp-content/uploads/2010/01/leopdf2.jpg"><img class="size-full wp-image-146" title="leopdf2" src="http://www.noirmatstudios.com/blog/wp-content/uploads/2010/01/leopdf2.jpg" alt="-" width="500" height="284" /></a><p class="wp-caption-text">Random fact n°2401 : snow leopards do eat anything you throw at them</p></div>
<p>You can read about it on <a title=" Trying to display PDF crashes application " href="http://groups.google.com/group/air-tight/browse_thread/thread/26b947eff5b2b211?pli=1">google groups</a> but you won’t find any clue to a solution whatsoever. Doing what Hitomi Kudo from the AIR team advises doesn’t change anything.</p>
<p>The problem either comes from Adobe air + pdf or from Snow Leopard. There were many changes under the hood of Snow Leopard. The after effects were quite similar to the release of Vista. A lot of things didn’t work and required new drivers and blabla. So I wouldn’t be surprised Adobe didn’t see this one coming. — Just like Apple’s sly attempts to avoid the Flash Player on the iPhone — (subliminal message).</p>
<p>Still we’re stuck with this problem and there is no way to display a pdf in an air application under snow leopard.</p>
<p>We also tried an advice on <a title="Thread on Adobe's forum about PDF loading" href="http://forums.adobe.com/thread/508265">this post on the adobe</a> forum without success. It basically says you should add “file://” when you call a file on MacOSX. <code><br />
</code></p>
<h1>Alpha…ville</h1>
<p>It is only natural that you would enable the alpha on your application so that your rounded borders or whatever look nice. Well forget that if you intend to use pdf documents ! Enabling the alpha on the application level is cause to so many issues that it reminds me of the “transparent wmode” beast to avoid at all cost on websites. This isn’t the web though. Perhaps if we shout all together at once “we want alpha”, some Adobe developers will hear us wherever they lurk.</p>
<p>WE-WANT-ALPHA ! *pretty please !*</p>
<h1>Überlays</h1>
<p>To complete the picture, we found yet another annoying bug. In the same configuration, an air application with a pdf within an htmlloader, the htmlloader is masking everything that should be on top of it. So if you have a combobox just over your htmlloader, try and click on the combobox and the panel which expends down will be masked, as if it were in a lesser child index than the htmlloader instance. What a drag.</p>
<p>Integrating the PDF reader into AIR does seem to be a huge task for the amount of bugs we get with each update…</p>
<p>How about AIR 1.5.4 ? or AIR 2.0 ? Let us be patient.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2010/01/16/air-crashes-upon-pdf-display-on-macosx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sound spectrum visualizer from a NetStream in AS3</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2009/12/30/sound-spectrum-visualizer-from-a-netstream-in-as3/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2009/12/30/sound-spectrum-visualizer-from-a-netstream-in-as3/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 16:44:48 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[m4a]]></category>
		<category><![CDATA[netstream]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[sound spectrum]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=59</guid>
		<description><![CDATA[We recently had to work on some sound spectrum in AS3 for DJ ANDY’s new website and the idea was to use the RSS feed of his existing iTunes podcast on the infamous m4a format. Here I found out a silly thing. You can’t load anything else than mp3s in a Sound instance. I know [...]]]></description>
			<content:encoded><![CDATA[<p>We recently had to work on some sound spectrum in AS3 for DJ ANDY’s new website and the idea was to use the RSS feed of his existing iTunes podcast on the infamous m4a format. Here I found out a silly thing. You can’t load anything else than mp3s in a Sound instance. I know the sound geeks will crucify me but it’s like the old Flash who could only load some jpeg images and was unable to load pngs. Everything looks complicated when it comes to the Sound.<br />
<a href="http://www.noirmatstudios.com/blog/wp-content/uploads/2009/12/dj-andy-sound-spectrum-e1262187077406.jpg"><img class="alignnone size-full wp-image-75" title="dj-andy-sound-spectrum" src="http://www.noirmatstudios.com/blog/wp-content/uploads/2009/12/dj-andy-sound-spectrum-e1262187077406.jpg" alt="" width="500" height="226" /></a></p>
<p>Anyway, I figured I’d use a NetStream to load the m4a song. My google pet told me there were other helpless people asking how to pull a SoundChannel out of a NetStream but it doesn’t seem to be the way to do it.</p>
<p>The answer is rather simple but its implementation is a bit weird :</p>
<pre class="brush: as3">var ba:ByteArray;
//computeSpectrum(output:ByteArray, FFTMode:Boolean=false, stretchFactor:int=0)
SoundMixer.computeSpectrum(ba);</pre>
<p>Basically you’ll need to start the usual NetConnection and NetStream stuff, grab your song and listen on ENTER_FRAME events to analyze the sound spectrum with this method.</p>
<p>Here’s what the doc says about it :</p>
<blockquote><p>Takes a snapshot of the current sound <strong>wave </strong>and places it into the specified ByteArray object. The values are formatted as normalized floating-point values, in the range –1.0 to 1.0. The ByteArray object passed to the outputArray parameter is overwritten with the new values. The size of the ByteArray object created is fixed to 512 floating-point values, where the first 256 values represent the left channel, and the second 256 values represent the right channel.</p></blockquote>
<p>If you want to use this bytearray as a source for a spectrum visualizer, you’ll have to experiment doing some maths and bitwise calculations, all that in some loops. Using ba.readFloat() will give you the next value in the byte array. So your loop will likely perform 512 (or 256 if you only want one channel) iterations to use all the values of the spectrum.</p>
<p>This method of analyzing the sound spectrum on the fly has two major weaknesses :</p>
<ol>
<li>if you got multiple sounds playing, you can’t tell them apart with this method as it gives you a spectrum for all the sounds together.</li>
<li>if you intend to use it for serious sound applications, you’ll want to enable FFT (using a Fourier transformation) and the calculation will generate a noticeable lag, making your analyzer appear unsynchronized, late.</li>
</ol>
<p>Luckily for us and in most applications, the sound spectrum is meant as a visual entertainment, nothing more.</p>
<p>There’s a very good sample on <a title="Another compute spectrum sample" href="http://www.todaycreate.com/2009/01/17/another-computespectrum-example">todaycreate.com</a> with insightful comments in case you don’t really know where to start.</p>
<p>Additional and detailed explanations are available on the <a title="Accessing Raw Sound Data" href="http://livedocs.adobe.com/flex/3/html/help.html?content=Working_with_Sound_14.html">Flex 3 language reference</a>.</p>
<p>A great thing however, is the way you can get a lot of information on an m4a input. There are three events currently supported :</p>
<ul>
<li>onTextData gives you the current text of the playing m4a. It could be anything and in our case it’s the name of the current track.</li>
<li>onImageData gives you the current image of the podcast. Just like the texts, the image can change if your podcast got chapters.</li>
<li>onMetaData is important to get the duration of the stream. Additionally, the event object tells you of a lot of things about the stream like the sample rate, the channels, the tags, etc.</li>
</ul>
<p>Depending on how the m4a is documented by the podcast creator and the software one’s using, you could even chapterize a podcast in order to get something similar to cue points in the chapters property in the metadata. You won’t get everything you want though. I would have appreciated to get a list of all the text data and their seek time but you can’t get them beforehand. You must play the stream in order to get the events one by one so if you really need a list of the “text points” (they aren’t cue points), you’ll have to make one manually…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2009/12/30/sound-spectrum-visualizer-from-a-netstream-in-as3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thermo turned to be a Catalyst</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2008/11/29/thermo-turned-to-be-a-catalyst/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2008/11/29/thermo-turned-to-be-a-catalyst/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 18:02:42 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=17</guid>
		<description><![CDATA[Neither Thermostat nor Thermonuclear, just Thermo. Adobe Thermo. A weird name for a product that many have been waiting for. It was introduced at Adobe MAX Chicago in 2007 but apart from a few screenshots and one or two videos, it was hard to find detailed information about this “upcoming” software. At that time, Sean [...]]]></description>
			<content:encoded><![CDATA[<p>Neither Thermostat nor Thermonuclear, just Thermo. Adobe Thermo. A weird name for a product that many have been waiting for. It was introduced at Adobe MAX Chicago in 2007 but apart from a few screenshots and one or two videos, it was hard to find detailed information about <a title="Adobe wiki - Thermo" href="http://labs.adobe.com/wiki/index.php/Thermo" target="_blank">this “upcoming” software</a>.</p>
<p>At that time, Sean Corfield wrote a <a title="Adobe MAX Day Two" href="http://corfield.org/blog/index.cfm/do/blog.entry/entry/MAX_Day_Two" target="_blank">good summary of Thermo</a>.</p>
<blockquote><p>Starting with a Photoshop PSD file, Thermo imported this and converted it to MXML. Design elements can then be selected and with a simple right-click they can be converted from artwork to Flex controls. The automatic inference of design-time data sets so you could test UI interactions with “real” data was very impressive.</p></blockquote>
<p><span class="artText">Mark Anders,                      vice president of engineering for Adobe, also told this.<br />
</span></p>
<blockquote><p><span class="artText">Thermo, which is in the early stages of development, is built on the Flex Builder development environment, a tool the company already offers to help bridge the gap between developers and designers. Flex provides workflows developers can recognize to render visual parts of the application so it’s easier for them to add visual elements to an RIA. Designers using Thermo don’t have to write code for their applications, but they can choose to view the source code and see it in a Flex Builder editor that they can work with if they want to, Anders said.</span></p></blockquote>
<p>Rejoice (should we ?) for it is called Thermo no more. From now on, it’s Adobe Catalyst. The name isn’t bad considering it will speed up project developments (hopefully !).</p>
<p>Waiting for the release, you can already drool over the <a title="Adobe Catalyst" href="http://labs.adobe.com/technologies/flashcatalyst/" target="_blank">video that Adobe published on their Labs website</a>.</p>
<p>As it seems focused on Flex, I wonder what will become of Flash itself as Catalyst will fill the gap between graphic designers and flex developers but not between graphic designers and flash developers.</p>
<p>An early release of Catalyst was available to those attending MAX at San Fransico but it’s still gone public. You can signup on Labs if you want to be noticed of the release.</p>
<p>For more concrete samples, go take a look at <a title="Catalyst team blog" href="http://thermoteamblog.com/category/started/" target="_blank">the Catalyst team blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2008/11/29/thermo-turned-to-be-a-catalyst/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Search reaches out to Flash content</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2008/07/06/google-search-reaches-out-to-flash-content/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2008/07/06/google-search-reaches-out-to-flash-content/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 14:25:31 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[crawler]]></category>
		<category><![CDATA[deep linking]]></category>
		<category><![CDATA[flash content]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[indexing]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=22</guid>
		<description><![CDATA[In my previous article about RIAs and SEO, I talked about a solution to expose HTML pages through XSL transformation of dynamic content. I also mentioned an attempt of Google to crawl Flash content, inefficient as it could only read static data. Well now the situation evolved and looks very promising. Adobe, with it’s recent [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous article about RIAs and SEO, I talked about a solution to expose HTML pages through XSL transformation of dynamic content. I also mentioned an attempt of Google to crawl Flash content, inefficient as it could only read static data. Well now the situation evolved and looks very promising.</p>
<p>Adobe, with it’s recent “open mania”, has lifted the <a title="SWF format specifications" href="http://www.adobe.com/devnet/swf/" target="_blank">SWF (and FLV) format specifications</a> and created <a title="Adobe Open Screen project" href="http://www.adobe.com/openscreenproject/" target="_blank">the Open Screen project</a> on the fly to help Adobe increase the Flash Player embedding into various devices (anything with a screen basically). Following this, Adobe has been working in cooperation with Google in order to make Flash more indexable by search engines.</p>
<h1>Pros</h1>
<p>Google was given a special version of the Flash Player so that its indexing robots could retrieve data directly from a SWF. The player just behaves like a standard human user and accesses data, writes it in a comprehensive robot-language and gives it back to the robot. So Googlebot is now able to <strong>crawl dynamic data !</strong></p>
<p>Soon Yahoo will follow in the venture and probably other vendors as well.</p>
<p>Here are a few articles you’ll want to read :</p>
<ul>
<li>Google Webmaster Central Blog :<a title="Google improved Flash indexing" href="http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html" target="_blank"> improved Flash indexing</a></li>
<li>Adobe’s article : <a title="SWF Searchability FAQ" href="http://www.adobe.com/devnet/flashplayer/articles/swf_searchability.html" target="_blank">SWF Searchability FAQ<br />
</a></li>
<li>Adobe press release : <a title="Adobe press release - enhanced search results for RIA" href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200806/070108AdobeRichMediaSearch.html" target="_blank">enhanced search results for RIA</a></li>
</ul>
<p>Google sums it up with this <a title="Google learns to crawl Flash" href="http://googleblog.blogspot.com/2008/06/google-learns-to-crawl-flash.html" target="_blank">short news</a> :</p>
<blockquote><p>Now that we’ve launched our Flash indexing algorithm, web designers can expect improved visibility of their published Flash content, and you can expect to see better search results and snippets.</p></blockquote>
<h1>Cons</h1>
<p>Ron Adler and Janis Stipins from Google relieve the designers :</p>
<blockquote><p>Basically, you don’t need to do anything. The improvements that we have made do not require any special action on the part of web designers or webmasters. If you have Flash content on your website, we will automatically begin to index it, up to the limits of our current technical ability.</p></blockquote>
<p>So they say. Oh wait. Perhaps it’s not that simple. There are two important problems.  Ron and Janis said there are still three technical limitations, two of them being the following.</p>
<blockquote><p>1. Googlebot does not execute some types of JavaScript. So if your web page loads a Flash file via JavaScript, Google may not be aware of that Flash file, in which case it will not be indexed.</p></blockquote>
<p>If you’re a Flash designer, you’ll immediately think of SWFObject which is actually based on Javascript. Lots of Flash web sites use it. We don’t know whether it is of a type that won’t be executed by Googlebot.</p>
<blockquote><p>2. We currently do not attach content from external resources that are loaded by your Flash files. If your Flash file loads an HTML file, an XML file, another SWF file, etc., Google will separately index that resource, but it will not yet be considered to be part of the content in your Flash file.</p></blockquote>
<p>It is a major problem because a lot of ActionScript developers use a light SWF files that loads the rest of the application on demand. Sections are often broken down into several modules, sometimes meant for re-usability (an Object Oriented convenience).</p>
<h1>Searchability</h1>
<p>Andrea Hill wrote some <a title="Andrea's article about Flash indexing" href="http://www.afhill.com/blog/2008/07/01/flash-indexing/" target="_blank">interesting thoughts on this topic</a>.</p>
<blockquote><p>Another major challenge in opening applications up to search is being able to direct the searcher to the relevant section within the experience.</p></blockquote>
<p>I couldn’t agree more with that. There is a huge difference between RIAs and HTML in that the RIAs aren’t accessible automatically, you have to decide what is to be accessible. Adobe’s answer is in the SWF Searchability FAQ (listed above) :</p>
<blockquote><p>To generate URLs at runtime that reflect the specific state of SWF content or RIA, developers can use Adobe Flex components that will update the location bar of a browser window with the information that is needed to reconstruct the state of the application.</p>
<p>For complex sites that have a finite number of entry points, you can highlight the specific URLs to a search spider using techniques such as site map XML files. Even for sites that use a single SWF, you can create multiple HTML files that provide different variables to the SWF and start your application at the correct subsection. By creating multiple entry points, you can get the benefits of a site that is indexed as a suite of pages but still only need to manage one copy of your application. For more information on deep-linking best practices, visit <a href="http://www.sitemaps.org/faq.php" target="_blank">www.sitemaps.org/faq.php</a>.</p></blockquote>
<p>With all this in mind, it is not safe yet to think Flash web sites will be indexed easily. Google is already working on the limitations of the Googlebot and I’m looking forward to hearing news of their progresses.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2008/07/06/google-search-reaches-out-to-flash-content/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Are you Singularity ?</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2008/06/22/are-you-singularity/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2008/06/22/are-you-singularity/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 15:22:13 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[Aral Balkan]]></category>
		<category><![CDATA[Singularity]]></category>
		<category><![CDATA[web conference]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=15</guid>
		<description><![CDATA[What is Singularity ? It is a (huge) web conference, scheduled on October 24–26, 2008. This event is organized by Aral Balkan, an active fellow in the Flash community, and he’s planning to gather thousands of people for this large-scale video streaming conference. The speakers list is already impressive. Update on 23 July 2008 : [...]]]></description>
			<content:encoded><![CDATA[<p>What is Singularity ? It is a (huge) web conference, scheduled on October 24–26, 2008.  This event is organized by Aral Balkan, an active fellow in the Flash community, and he’s planning to gather thousands of people for this large-scale video streaming conference. The <a title="Singularity speakers list" href="http://singularity08.com/speakers" target="_blank">speakers list</a> is already impressive.</p>
<p><span style="color: #ff0000;">Update on 23 July 2008</span> : “<a href="http://www.singularity08.com/tickets/">Reserve your tickets today.</a> Early-bird tickets to Singularity are just $99 USD <small>(inc. VAT)</small> until the end of August.”</p>
<p><img class="alignright" style="float: right;" src="http://www.noirmatstudios.com/blog/wp-content/uploads/images/Singularity_Sneak_Peek.jpg" alt="Singularity sneak peek" width="140" height="450" /></p>
<p>A <a title="Singularity on Google app engine" href="http://si.appspot.com/" target="_blank">site teaser</a> has been released some days ago on <a title="Google app engine" href="http://code.google.com/appengine/" target="_blank">Google app engine</a>. As Aral wrote :</p>
<blockquote><p>You can sign up for the site, which will go live in July, and register your interest in the conference[…]</p></blockquote>
<p>Even though it’s a web conference, it does not mean it’ll be free. The attendees will have to buy tickets that will be on sale on July 1, 2008 with the launch of the new site.  The pricing is still unknown but Aral said <a title="Singularity is affordable" href="http://singularity08.com/about" target="_blank">it’s affordable</a>.</p>
<blockquote><p>Can’t make a certain session? No worries, it’s all recorded. And attendees have exclusive access to the sessions for six months, at which time the recordings for the 2008 conference will be released under a Creative Commons license for the benefit of all and to form a time capsule defining Web ’08 as presented by our amazing line-up of speakers.</p></blockquote>
<p>If you want to hear some words of him, the <a title="Interview of Aral Balkan" href="http://singularity08.com/40" target="_blank">Télévision Suisse interviewed Aral</a> while he was attending the LIFT conference some months ago.</p>
<p><span style="color: #ff0000;"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2008/06/22/are-you-singularity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3D engines for Flash</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2008/06/18/3d-engines-for-flash/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2008/06/18/3d-engines-for-flash/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 15:52:07 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Alternativa]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Away3D]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[FIVe3D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Papervision]]></category>
		<category><![CDATA[Sandy]]></category>
		<category><![CDATA[WoWEngine]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=16</guid>
		<description><![CDATA[I’ve been following from afar the progresses in 3D engines for Flash for some years. Recently I wanted to dive in the Z dimension, be it fake nevertheless. So here’s an overview of the current situation. The good Performances Until the likes of Papervision, dynamic 3D rendering was rarely used in Flash websites. The latest [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been following from afar the progresses in 3D engines for Flash for some years. Recently I wanted to dive in the Z dimension, be it fake nevertheless. So here’s an overview of the current situation.</p>
<h1>The good</h1>
<h2>Performances</h2>
<p>Until the likes of Papervision, dynamic 3D rendering was rarely used in Flash websites. The latest Flash Players brought some consequent changes upon processing speed. Hence it allowed some 3D engines with reasonable performances to peek their nose in the community.</p>
<p>3D engines give an extra dimension to creativity, though they aren’t fit for complex scenes yet. Even the Alternativa engine has its limits, those of the Flash Player. It’s been a few years since the community asked for hardware support so that we can get rid of some slow performances. Well, with the Flash Player 10, you will be able to choose different display modes like normal, direct and GPU. You have to be very careful if you decide to set the GPU mode.</p>
<blockquote><p>These modes in general should be considered still in beta, there may be a lot of bugs until possibly Flash Player 11 so use caution.</p></blockquote>
<p>This quote is by Jody Brewster who gives some precious <a title="Flash Player 10 GPU acceleration tips" href="http://blog.jodybrewster.net/2008/05/17/flash-player-10-gpu-acceleration-tip/" target="_blank">Flash Player 10 GPU acceleration tips</a> on his blog.</p>
<h2>Gimme the sources</h2>
<p>Most of the 3D engines in Flash are free, both for personal and commercial use. And most of them are open source (except Alternativa, to my knowledge).</p>
<h1>The bad</h1>
<h2>Looks</h2>
<p>3D engines also mean an extra dimension of complexity, and increased risks to make bad visual designs. This can lead to an “UGH” factor where the 3D looks either dull or slow or complicated.</p>
<p>It usually holds true that the bigger the scene, the slower and laggier. Same goes for details and the amount of objects on the scene. Your bitmaps may also look very jaggy or aliaised so you will loose the “smooth” graphics factor. You can always try to make up with nice 3D motions.</p>
<p>Do not expect your 3D to look as smooth as a 3D video render from a software like 3DSMax. Depending on the engine, you might as well endure backface culling problems, basically meaning some polygons of your 3D object won’t show up when supposed to do so.</p>
<p><img src="http://www.noirmatstudios.com/blog/wp-content/uploads/images/Flash_3D_Weirdness.jpg" alt="Flash 3D display problems" width="400" height="414" /></p>
<p>In the image above, you can see a part of <a title="Msnbc Spectra" href="http://www.msnbc.msn.com/id/24207533/" target="_blank">msnbc Spectra</a>. You can easily distinguish that the text on the violet panel is weirdly distorted with the Papervision engine. The “wow” effect is here but this visual bug makes it a little less impressive. FIVe3D would have been commandable here as it displays fonts using the vector API of Flash. That “detail” aside, Spectra is still a very nice example of a good 3D user interface.</p>
<p><span style="color: #ff0000;">Update on 23 July 2008 (by Seb)</span> :</p>
<blockquote><p>The reason for that distortion is that the FlashPlayer can only perform skew transformations on bitmaps; in order to get any kind of 3D stretch we need to resort to using <a onclick="javascript:pageTracker._trackPageview('/outbound/comment/www.sebleedelisle.com');" rel="nofollow" href="http://www.sebleedelisle.com/?page_id=7">this hack</a>.</p>
<p>Things are however improved with FlashPlayer version 10 — we now have the ability to do proper 3D perspective stretching on bitmaps, and so this horrible distortion should be a thing of the past.</p></blockquote>
<h2>Overkill</h2>
<p>You have seen it coming, why not build 3D Flash banners ? A 3D engine (in activity) consumes a lot of CPU power. Think twice before going all out with a super-3d-banner-of-the-death which plays continuously heavy 3D stuff. Who said common sense ?</p>
<h2>Hack and slack</h2>
<p>In the end, Flash is still not ready for 3D. The Z dimension is now affordable thanks to the devoted work of some flashers but their engines are built on a weak platform, that is the Flash Player. It still cannot handle bitmap processing quickly, which is the biggest barrier to 3D. Alex Cove (author of the 2D physics engine APE), asks  <a title="Does it always have to be a hack ?" href="http://tech.cove.org/?p=6" target="_blank">“does it always have to be a hack ?”</a> truthfully. Is Adobe waiting for some miracles from the community to move on to 3D ? Flash Player 10 is a beginning to this but it doesn’t even include Z-sorting so you end up doing it manually…You end up taking Away3D and waiting for the Flash Player 11 patiently.</p>
<p>Still, Adobe has been listening a tad bit to the community’s requests (business obliges), as Macromedia did in the past. Changes like that take some time, especially for the Flash Player which wasn’t meant for 3D in the first place.</p>
<h1>3D real time engines</h1>
<h2>Sandy</h2>
<p><strong>Sample</strong> : <a title="Telenor Body Language" href="http://www.fromstockholmwithlove.com/entries/telenor/" target="_blank">Telenor Body Language</a>, <a title="Sandy 3.0.2 demo" href="http://www.flashsandy.org/demos/v302" target="_blank">Sandy demo</a></p>
<p>Originally, the project had several members but it is bit of a rundown now, with only one member left, Thomas Pfeiffer.</p>
<p>Sandy is not to be overlooked however. It’s the first open source 3D engine and it has some very powerful features with light rendering.</p>
<h2>Papervision</h2>
<p><strong>Samples</strong> : <a title="Audi Rhythm of lines" href="http://www.rhythmoflines.co.uk/" target="_blank">Audi Rhythm of lines</a> and <a title="MSNBC Spectra" href="http://www.msnbc.msn.com/id/24207533/" target="_blank">msnbc Spectra</a></p>
<p>Papervision rose with a better communication and is backed by some notorious Flash personalities. All that Sandy didn’t have.</p>
<p>It’s by far the most famous of the 3D engines available, and one of the most complete too. It is available at version 1.5 on the <a title="Papervision 3D blog" href="http://blog.papervision3d.org/" target="_blank">blog’s download links</a>. The next Papervision 2, called GreatWhite, is in beta currently and only available on SVN repository.</p>
<h2>Away3D</h2>
<p><strong>Sample</strong> : <a title="Fifa Street 3" href="http://www.fifastreet3.com/" target="_blank">Fifa Street 3</a></p>
<p>It is considered as an extension of Papervision, though the two authors had to rewrite a lot of the base classes. The project is hosted on <a title="Away3D.com" href="http://away3d.com/" target="_blank">away3d.com</a>.</p>
<p>Away3D still lacks documentation a lot. From what <a title="Rob Bateman interview about Away3D" href="http://www.sharingb.com/programming/3d/interview-with-rob-bateman-away3d" target="_blank">Rob Bateman said</a>, this will be solved soon.</p>
<p><span style="text-decoration: line-through;">As announced in <a title="Away3D to merge with Papervision" href="http://blog.papervision3d.org/2007/05/16/papervision3d-to-merge-away3d-features/" target="_blank">an article on Papervision’s blog</a>, Away3D is planned to merge with Papervision GreatWhite</span>. <span style="color: #ff0000;">Update on 12 July 2008 (thanks Seb)</span> : Papervision has by now integrated a part of Away3D’s features. Both projects are still on going.</p>
<p><img src="http://www.noirmatstudios.com/blog/wp-content/uploads/images/Fifa_Street_3.jpg" alt="Fifa Street 3" width="560" height="416" /></p>
<h2>WoWEngine</h2>
<p><strong>Sample</strong> : <a title="WoWEngine technical advanced demo" href="http://seraf.mediabox.fr/wow-engine/wow-engine-technical-advanced-demo-picture/" target="_blank">technical demo </a></p>
<p>Jerôme Birembaut developped the WoWEngine and nicely made it <a title="WoWEngine homepage" href="http://seraf.mediabox.fr/wow-engine/" target="_blank">available to everyone on his blog</a>.</p>
<p>This engine is very interesting because it mixes some bases of Sandy with an extension Jerome wrote of the <a title="APE Engine" href="http://www.cove.org/ape/index.htm" target="_blank">2D physics engine APE</a>. The result is a 3D engine with physics features like collisions, cloth and rope simulations to name a few.</p>
<p>It is very likely you’ll use this engine if you want both 3D and physics interactions within your application.</p>
<h2>Alternativa</h2>
<p><strong>Sample</strong> : <a title="Alternativa's engine" href="http://alternativaplatform.com/en/alternativa3d/" target="_blank">3 demos on their website</a>.</p>
<p>This engine is a killer. It is developped by a russian team. They’re invited at the coming Adobe MAX at Milan, in december (2008), one extra reason to attend this huge event.</p>
<p>Alternativa has been publicly released but it is free for personal use only. Licences must be purchased for commercial use. You should take a look at what this engine can do. One word for them : Отлично !</p>
<h2>FIVe3D</h2>
<p><strong>Samples</strong> : <a title="FIVe3D homepage" href="http://five3d.mathieu-badimon.com/" target="_blank">FIVe3D homepage</a> itself which includes 5 samples</p>
<p>Mathieu Badimon wrote a small 3D Engine as “an open source code for the conception of interactive vector-based 3D animations”. The FIVe3D homepage is a good implementation of the engine.</p>
<p>This engine relies upon the Flash Player to handle vectors, rather than bitmaps with the aforementionned engines.</p>
<p>One of its strengths, aside from being very light (10KB), comes from the way the engine handles fonts. With FIVe3D, you can use any font you want to any size without barely any aliaising or <a title="Papervision and dynamic texts" href="http://blog.zupko.info/?p=117" target="_blank">ugly text artifacts</a> you might see in Papervision. A good choice for titles and headers. The little shortcoming to this is that you have to use additional font data (stored as an AS3 class). It is fortunately generated automatically by the tool Mathieu provided on the FIVe3D web site but it still weighs around 50KB for simple fonts.</p>
<p><img src="http://www.noirmatstudios.com/blog/wp-content/uploads/images/FIVe3D_Sample.jpg" alt="FIVe3D render sample" width="460" height="314" /></p>
<p><span style="color: #ff0000;">Update on 23 July 2008 (thanks Seb, again)</span> : attempting to render a lot of text with FIVe3D will result in a framerate drop due to the heavy calculations that the vectors imply for the Flash Player.</p>
<h1>What engine shall I pick for my project ?</h1>
<p>You don’t necessarily have to choose only one 3D engine. You can easily use multiple engines, each for a different use. This point was discussed last month at the AUGG (Adobe User Group of Geneva) meeting about <a title="AUGG meeting" href="http://augg.ch/blog/uncategorized/real-time-3d-in-flash-and-flex-welcoming/" target="_blank">real time 3D engines</a>.</p>
<p>So for instance you could make some intro with large titles with FIVe3D, then display some simple textured objects with Papervision and constraint them physically with WoWEngine. Even among the samples listed above, there are certainly some cases where several engines were used together.</p>
<p>Not to mention many projects don’t rely on sole 3D but also blend some videos of 3D renders as you can see in the Fifa Street 3 sample.</p>
<h1>Can I import 3D models ?</h1>
<p>Yes you can. Sandy, Papervision and Away3D can import Collada files to display complex meshes (read less simple than just a sphere or a few boxes).</p>
<p>Some 3D softwares <span style="text-decoration: line-through;">can’t export</span> do not have a built-in exporter for Collada files yet. If you want to export using this format, you’ll certainly find some free exporters since Collada is an open standard based on XML.</p>
<p>Another possibility is to use the AS3 Geom Class Exporter either for <a title="3DSMax exporter" href="http://seraf.mediabox.fr/showcase/as3-geom-class-exporter-for-3ds-max-english/" target="_blank">3DSMax</a> or <a title="Blender Collada exporter" href="http://rozengain.com/?postid=54" target="_blank">Blender</a>. It will generate .as files and the advantage is that the engine won’t have to parse the file since it’s ActionScript already.</p>
<h1>Isn’t Flash CS4 going to wipe out those engines ?</h1>
<p>No it isn’t. If ever Adobe adds a fully fledged 3D platform within the Flash Player, the 3D engines of then will adapt and make use of its new benefits. Some engines like FIVe3D might be in direct challenge with the next Flash CS4 features. However I don’t think Flash CS4 will be released before late 2008 and it’s not even sure if the so-called “3D” features will be as easy to use for coders as what’s available currently through open source projects.</p>
<h1>Is it worth it to go 3D finally ?</h1>
<p>Without a doubt, yes it is ! Just imagine : you can dynamically render basic 3D. For instance, the amount of CoverFlow components for Flash/Flex has exploded thanks to those 3D engines listed above. A proof that simple and effective UIs are also relevant in 3D sometimes.</p>
<p>And it is not limited to commercial entertainment websites at all. Embedded user interfaces are yet another market you can target. The <a title="InteliSea Demo" href="http://www.intelisea.com/demo/demo.htm" target="_blank">InteliSea application</a> presented last year at MAX 2007 includes some simple 3D to display the sea state for a boat. Another proof you can make “serious” applications with 3D (and sometimes it might be mandatory).</p>
<p>I will talk in a further article about GIS (Geographic Information System) and 3D with Flex. It’ll be a nice follow-up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2008/06/18/3d-engines-for-flash/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>RIA, SEO and deep linking</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2008/06/05/ria-seo-and-deep-linking/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2008/06/05/ria-seo-and-deep-linking/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 21:56:51 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[cloaking]]></category>
		<category><![CDATA[deep linking]]></category>
		<category><![CDATA[detection]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[user agent]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/?p=12</guid>
		<description><![CDATA[This post is an analysis of the current situation about those entwined matters, quite uselessly controverted I dare say. The technology I’ll focus on is Flash/Flex but it applies for Silverlight and other platforms as well. In this article, when I talk about different “views”, I mean different technologies used to display some content, be [...]]]></description>
			<content:encoded><![CDATA[<p>This post is an analysis of the current situation about those entwined matters, quite uselessly controverted I dare say. The technology I’ll focus on is Flash/Flex but it applies for Silverlight and other platforms as well.</p>
<p>In this article, when I talk about different “views”, I mean different technologies used to display some content, be it Flash, Silverlight, Java FX, etc.</p>
<h1>Content crawling</h1>
<h2>Earlier practises</h2>
<p>The idea of presenting a multiple views (or aspects) for some content isn’t new at all. It has been a common practise for a some web agencies to develop two websites for their clients, one in HTML and one in Flash. The very purpose of that is to be (supposedly) <strong>accessible to 100% of the web users</strong> and also to be search engine optimized.</p>
<p>The Flash view would provide more interactive content to the visitors on broad band whilst the HTML website would be focused on clarity, quick information look up and accessibility. Building a Flash and an HTML website for the same content (more or less) involves duplication of similar work BUT different skills. Such a strategy consumes more time and more people, more resources. In return, you can optimize your HTML view for search engines and page ranking for the benefits of the Flash view.</p>
<p>The huge advantage of this is that your <strong>dynamic (and static) </strong><strong>HTML content is crawled by search engines</strong> and you can propose a redirection to the visitors who may like to browse the Flash view instead.</p>
<h2>Recent evolution</h2>
<p>Ever since Google and other search engines were able to look into .swf files, some people have thought “fine ! all the content within my Flash website will be indexed !”. They need to know <strong>what is static and dynamic content</strong>. They also need to know the very basic thing : how an RIA works.</p>
<p>Static content is embedded content, you find it in the resulting file, .swf for Flash or Flex. Dynamic content is loaded from external sources like databases, so data is NOT in the application itself.</p>
<p><strong>Most of the RIAs work dynamically. Search engines CANNOT index dynamic content</strong>, meaning directly from the databases. What do search engines see when they look into my Flash web site then ? Almost nothing. They can see the title and description and a few <strong>static </strong>things in the Flash library. That’s all.</p>
<h2>Nowadays</h2>
<p>It is often the case currently that Flash web sites remain in Flash alone for the HTML view is a loss of time compared to its development cost. With the rising of RIAs on the web, more people are looking for SEO solutions.</p>
<p>A recent trend among Flash and Flex developers is to talk about some ultimate SEO weapon called XSLT. It’s actually not a big deal. However, we can use it to make what was a huge bother before : <strong>a second view of the same data model</strong>.</p>
<p>First of all, XSLT works on XML documents and is quite powerful to transform them into any result you need, like HTML. In most cases however, the web site’s data is stored in a relational SQL database so it’s an extra step to retrieve data and transform it into XML to then feed it to XSLT. And logically, you’d use the same XML for your RIA but it’s not mandatory indeed.</p>
<p>Even though XLST transforms data, you still have to write and test the whole thing and XSLT is quite touchy, there’s no room for errors. Depending on the complexity of your output, it may be quite a pain. The point is that it still consumes less time than the former HTML view development I discussed about <strong>BECAUSE the raison d’être of the HTML version for RIAs is not the same anymore</strong>. The XSLT output is meant for <strong>search engine bots </strong>and<strong> accessibility</strong>.</p>
<p>If you look at the HTML view from the current XSLT implementations, it’s very simple, even without layout sometimes. Standard users without the Flash Player wouldn’t want to surf on such plain and boring HTML. So why isn’t it focused on those users ? Because it would be the same as the former solution. The purpose of the XSLT implementation here is to provide an average solution, <strong>a first step towards SEO for RIAs on the web</strong>.</p>
<p>To my knowledge, there aren’t many websites with such an implementation yet. A “reference” in the matter is the <a title="Flex directory" href="http://directory.onflex.org/" target="_blank">Flex directory</a>. If you display the HTML sources, you’ll see numerous div layers containing the directory data.</p>
<h1>Deep linking</h1>
<p>Talking about deep linking a few years ago was only a mean to emphasize that Flash websites just couldn’t do it.</p>
<p>The solution has come with Actionscript’s ExternalInterface : <strong>anchors handled by Javascript for deep linking</strong>.</p>
<p>Currently, this method is more and more used in Flash and Flex web applications for it’s quite easy to implement. As stated above, deep linking is achieved through HTML anchors. Why is that ? Because anchors avoid the browser from reloading the window, thus restarting your whole web application. However, anchors aren’t the perfect answer to the problem.</p>
<p>Consider this deep linking example :</p>
<p>HTML web site : www.yoursite.com/article/roundup-is-lethal</p>
<p>RIA web site : www.yoursite.com/#article/roundup-is-lethal</p>
<p>Obviously, the first URL is better. There’s no workaround at the moment but it’s a little sacrifice considering you can deep link an RIA. How it works ? Javascript listens to changes in the URL and notifies the RIA if something happens. The RIA can also call a Javascript method to update, or rather rewrite the URL when the RIA state changed.</p>
<p>Talking about Flash, there is a nice library called <a title="SWFAddress web site" href="http://www.asual.com/swfaddress/" target="_blank">SWFAddress</a> that provides you with those functionalities (for Flex, there is also a built-in library). Be aware that implementing deep linking in an RIA must be planned. It is not a lot of work but <strong>you have to decide what will be deep linked</strong> or not and architect your application accordingly.</p>
<h1>Search engine bots</h1>
<h2>Detection</h2>
<p>The strategy above requires to detect search engine bots. You need to know who’s coming on your web application in order to serve either HTML content or the rich application itself.</p>
<p>There is no absolute mean to detect every single search engine bot because there are thousands of them. So you will probably use a smaller listing of <a title="Search engine bot detection script" href="http://www.nes-emulator.com/x_bot.php" target="_blank">the most important search engines bots on the web</a>.<a title="Search engine bot detection script" href="http://www.nes-emulator.com/x_bot.php" target="_blank"><br />
</a></p>
<h2>Fake user agent</h2>
<p>Ineluctably, the ways to detect the real user agent of a given visitor aren’t perfect. <strong>The motto for security related matters is to minimize most of the critical weaknesses, not to build the perfect defense</strong>. It is possible to verify the identity of a user agent to some extent, and that will be sufficient for most of the evil and violent crawlers. You can do it with <a title="Verify search engine crawler" href="http://www.tellinya.com/read/2007/08/25/68.html" target="_blank">DNS lookup and MySQL caching</a> for instance.</p>
<h1>Search engine optimization</h1>
<h2>Cloaking</h2>
<p>First of all, I saw a lot of talks about cloaking when it comes to provide both Flash and HTML views of a website. It is often used to introduce the killing line “it could get you banned from Google !!”.</p>
<p>I even found a redundant post among several SEO sites that happily emphasize that <a title="SWFObject dangerous ?" href="http://www.searchmatters.net/2007/07/16/google-flash-fixes-can-be-%e2%80%9cdangerous%e2%80%9d/" target="_blank"><strong>SWFObject is considered “dangerous”</strong></a>. If that statement is true, many Flash websites have a problem as SWFObject is famous right now. However, those alerting posts you can read are all dated from 2007 and many things change in one year so it might not be dangerous anymore.</p>
<p>Google bot (I don’t know for the other bots) dislikes that we hide content, be it by css or like SWFObject does, by <strong>using DIV layers to hide the HTML under the Flash layer</strong>.</p>
<p>Nevertheless, if your content in HTML matches what you can find in your Flash view, there shouldn’t be any problem. <em>But you’re still at risk</em>.</p>
<h2>Rumors and gossip</h2>
<p>As I was looking up the web for insights about Flash and SEO, I read <a title="Google forum - a talk about Flash SEO" href="http://groups.google.com/group/Google_Webmaster_Help-Indexing/browse_thread/thread/a5768cf831d7a127/f425c1a7eb744b74" target="_blank">on Google’s forum some comments</a> whose author sometimes doesn’t know what he/she’s talking about, hindering the discussion about <strong>how to better designs so that RIAs can be search engine optimized.<br />
</strong></p>
<p>It is a fact that human beings dislike changes. It is also a fact that people often do not seek further than what is affirmed. They like an idea or not and if you confront them, they will fight for it. In case of the SEO community, talking about Flash and SEO will never fail to generate a few worthless comments like “consider using gifs instead of Flash”.</p>
<p>To the people who still do not understand and keep thinking about the current situation as a war between HTML and Flash, I’ll write this : given a situation, a context, a full-flash website or RIA is a relevant answer to a problem, as it might not be in another situation. That’s all there is to it.</p>
<p>It’s no use telling <a href="http://googlewebmastercentral.blogspot.com/2007/07/best-uses-of-flash.html" target="_blank">“Try to use Flash only where it is needed”</a>. You can find this very “advice” on Google’s website but it’s quite stupid to write that under the “Best use of flash” title. The same statement about “using something only when needed” is valid for everything anyway.</p>
<h2>RIA and search engine</h2>
<p>With the spread of RIAs, search engines are likely to collaborate with Adobe and Microsoft as <a title="Interview of Matt Cutts, head of Google's webspam team" href="http://www.stephanspencer.com/search-engines/matt-cutts-interview" target="_blank">Google did with the Adobe Search Engine SDK</a>. It’s merely the beginning of a new era of visual content though. Some day, I believe search engines will provide support and crawl dynamic content, with the collaboration of both the data holders and indexers. On top of this, video contents are spreading on the web. Indexing their content (not only their titles as Dailymotion, Youtube and the likes do) is going to be one of the next challenges for search engines too.</p>
<h1>Accessibility</h1>
<h2>Upsetting matter</h2>
<p>Why talk about accessibility now of all times ? It’s not totally off-topic. SEO is a kind of accessibility for search engines after all.</p>
<p>As a part of the talks about ergonomic designs in Flash, accessibility is something everyone knows but vaguely. You can easily find a few people who argue that screen readers can’t read Flash content, the bottom line being “Flash is bad, make your website in HTML because it’s accessible”.</p>
<p>First of all, <strong>Flash does have accessibility features</strong>. However, they’re often ignored because it’s even less likely designers will care for the blind people when their application is more visually-oriented than HTML websites.</p>
<h2>Blind people</h2>
<p>We had a meeting one month ago with the president of the Swiss Federation of the Blind and Visually Impaired. He showed us how he, as a blind, “sees” the web. He got a screen reader and it was my first time listening to one such equipment. I was stunned. The voice was fast, so insanely fast that anyone but a trained ear like his could understand.</p>
<p>So he went on and told us many HTML websites aren’t properly accessible to blind people.</p>
<p>Take for instance those ugly HTML web sites that pile texts and news everywhere possible in the layout. Even at an alien-like voice speed, the screen reader seems to talk without cease. Better yet : the menus in Javascript. Let’s assume we have a complex menu with a hundred buttons nested in categories. They are hidden by javascript and show up only on rollover/click on a category in the main bar. On the other hand, the screen reader reads the HTML so it tells the whole hundred buttons’ label. Unbearable.</p>
<p>Then he went onto some Flash websites and although the screen reader had to wait for some animations to end, it enumerated the buttons and the content correctly. It is not an idyll though. HTML is still more supported by screen readers in general.</p>
<h1>Conclusion</h1>
<p>You can optimize your RIA for search engines with the solution discussed above. It increases accessibility as well because you expose HTML to the crawlers and people who don’t have the RIA plugin. Nevertheless, bear in mind that its primary objective is not to be a replacement of the RIA itself.</p>
<p><span style="color: #ff0000;">Update 1 on 24 June 2008</span> : If you want to test an example with code, Ahmet wrote<a title="Metah - SEO Model for Flash and Flex content" href="http://www.metah.ch/blog/2008/04/holy-grail-seo-model-for-flash-and-flex-content/" target="_blank"> a nice article about this concept</a>, based on what he found in the Flex directory. There’s even a schema. <img src='http://www.noirmatstudios.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="color: #ff0000;">Update 2</span><span style="color: #ff0000;"> on 6 July 2008</span> : The situation has evolved quite a bit, with Googlebot attempting to crawl dynamic data. You might want to read <a title="Google reaches out to Flash content" href="http://www.noirmatstudios.com/blog/index.php/2008/07/06/google-search-reaches-out-to-flash-content/" target="_blank">my article about that</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2008/06/05/ria-seo-and-deep-linking/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>First steps with PureMVC</title>
		<link>http://www.noirmatstudios.com/blog/index.php/2008/03/22/first-steps-in-puremvc/</link>
		<comments>http://www.noirmatstudios.com/blog/index.php/2008/03/22/first-steps-in-puremvc/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 09:54:39 +0000</pubDate>
		<dc:creator>Nicolas Antille</dc:creator>
				<category><![CDATA[Flash/Flex]]></category>
		<category><![CDATA[Command]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Mediator]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://www.noirmatstudios.com/blog/index.php/2008/03/22/first-steps-in-puremvc/</guid>
		<description><![CDATA[After a first leap into design patterns driven development with pixlib in AS2, followed later by an implementation of Cairngorm, I decided to look for AS3 frameworks so I browsed the web and found this article talking about a so-called PureMVC. I disliked the name at first (as if it matters !), not to mention [...]]]></description>
			<content:encoded><![CDATA[<p>After a first leap into design patterns driven development with pixlib in AS2, followed later by an implementation of Cairngorm, I decided to look for AS3 frameworks so I browsed the web and found this <a title="PureMVC frustrations" href="http://www.jessewarden.com/2007/12/puremvc-frustrations-and-code-behind-thoughts.html" target="_blank">article</a> talking about a so-called PureMVC. I disliked the name at first (as if it matters !), not to mention the article wasn’t praising the framework at all. It made me curious. I had to try it.</p>
<p>I took a look at the <a title="PureMVC Diagram" href="http://puremvc.org/component/option,com_wrapper/Itemid,34/" target="_blank">puremvc’s diagram</a> and wondered if I had missed something essential in my learning of design patterns since I had never <span style="text-decoration: line-through;">thought this far</span> seen such an implementation of MVC. I got the big picture thanks to the documentation and samples on puremvc.org. I really appreciated the noteworthy efforts put in documentation. The <a title="PureMVC best practices" href="http://http//puremvc.org/component/option,com_wrapper/Itemid,30/" target="_blank">best practices document</a> is maybe one of the most useful documents that answered (some of) my many questions as everything was hazy in the beginning. Also, I have come across <a title="10 tips for working with PureMVC" href="http://www.websector.de/blog/2007/12/25/10-tips-for-working-with-puremvc/" target="_blank">10 tips for working with PureMVC</a> which is very useful.</p>
<p>For a time, it was good. Problems appeared later on.</p>
<h2>Abstraction</h2>
<p>This framework motivates me because it helps (forces) thinking a level above in terms of abstraction. Notwithstanding this, it is still cloudy in my mind. I often have found myself wondering what to do. For example let’s say I have a section of a website, SectionMediator, that wants to populate its view with a list of buttons whose data is loaded into SectionRemotingProxy. Let’s suppose all the classes I talk about below are registered to the ApplicationFacade. My options :</p>
<ol>
<li>Sending a Notification (without body) that the SectionMediator listens to, then retrieves the SectionRemotingProxy and gets the data it needs from the proxy by accessing it directly</li>
<li>Sending a Notification, whose body is an Array of ItemDataVO (variable object), that the SectionMediator listens to, then use the array of variable objects to populate its viewComponent</li>
<li>Sending a Notification that will trigger a Command which will retrieve both the SectionMediator and SectionRemotingProxy instances so as to get the data of the latter to transmit it to a method of the former. Basically, the command does the job of updating the SectionMediator’s viewComponent.</li>
<li>Mixing options 2 and 3 : send a Notification whose body is the VO that will trigger a Command that needs only to retrieve the SectionMediator and feed it the variable object from the Notification’s body.</li>
</ol>
<p>Option 3 augments loose coupling but is that really the best choice ? I read that Commands should be used as much as possible and a Command should know the least possible the classes it’s using. So Option 4 might as well be my choice. But wait ! It’s actually a complication of Option 2…which in turn is a complication of Option 1. Am I back to the beginning ? It may be so.</p>
<p>I still don’t know what is my choice. I’ll experiment some more and see what happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noirmatstudios.com/blog/index.php/2008/03/22/first-steps-in-puremvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
