<?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>Remus Stratulat - On the Stre@m &#187; Programming</title>
	<atom:link href="http://www.stratulat.com/blog/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.stratulat.com/blog</link>
	<description>This is my personal blog</description>
	<lastBuildDate>Sat, 10 Jul 2010 07:07:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Omniture Test&amp;Target for Flash Professional CS5 &#8211; how-to in images</title>
		<link>http://www.stratulat.com/blog/omniture-testtarget-for-flash-professional-cs5-how-to-in-images</link>
		<comments>http://www.stratulat.com/blog/omniture-testtarget-for-flash-professional-cs5-how-to-in-images#comments</comments>
		<pubDate>Fri, 04 Jun 2010 09:09:38 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Adobe Flash Professional]]></category>
		<category><![CDATA[CS5]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[Omniture integration]]></category>
		<category><![CDATA[Omniture Test&Target]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=258</guid>
		<description><![CDATA[Returning to my previous post, I have promised to continue talking about these extensions. The first one is Omniture Test&#38;Target for Flash Professional CS5. As a picture is a thousand words, this article is a very long one . For this demo I will use a simple add that shows an image, some text and [...]]]></description>
			<content:encoded><![CDATA[<p>Returning to my previous post, I have promised to continue talking about these extensions. The first one is Omniture Test&amp;Target for Flash Professional CS5. As a picture is a thousand words, this article is a very long one <img src='http://www.stratulat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>For this demo I will use a simple add that shows an image, some text and a button to click on. My goal is to have two variations for this add, both in the same SWF and the targeting for this ad to be done using Test&amp;Target.</p>
<div id="attachment_261" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/call_to_action.png"><img class="size-medium wp-image-261" title="Create campaign and flashbox" src="http://www.stratulat.com/blog/wp-content/call_to_action-300x215.png" alt="Create campaign and flashbox" width="300" height="215" /></a><p class="wp-caption-text">Create campaign and flashbox</p></div>
<p>As you can see in the image, I am already logged in and I can choose to work on an existing campaign or to create a new one. I will create a new one.</p>
<div id="attachment_262" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/campaign.png"><img class="size-medium wp-image-262" title="Create campaign and flashbox" src="http://www.stratulat.com/blog/wp-content/campaign-300x215.png" alt="Create campaign and flashbox" width="300" height="215" /></a><p class="wp-caption-text">Create campaign and flashbox</p></div>
<p>After creating the campaign I will create two experiences that will hold the two variations I want for this ad.</p>
<div id="attachment_263" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/experiences.png"><img class="size-medium wp-image-263" title="Create experiences" src="http://www.stratulat.com/blog/wp-content/experiences-300x215.png" alt="Create experiences" width="300" height="215" /></a><p class="wp-caption-text">Create experiences</p></div>
<p>So, one variation is exactly what the ad is showing right now and I&#8217;ve called it <strong>&#8220;Local Picks&#8221;</strong>. The other variation called <strong>&#8220;Subscription&#8221;</strong> will use the same ad as a template (design and animation) but will have a different image, text and button label. The first thing I will change is the text. The text is a symbol in this case so I will go inside the symbol and using the <strong>Include</strong> button I will include the text into the Test&amp;Target workflow, making it part of both experiences.</p>
<div id="attachment_259" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/add_element.png"><img class="size-medium wp-image-259" title="Add text to experiences" src="http://www.stratulat.com/blog/wp-content/add_element-300x215.png" alt="Add text to experiences" width="300" height="215" /></a><p class="wp-caption-text">Add text to experiences</p></div>
<p>To have variations between the two experiences I will select the <strong>Subscription</strong> experience from the Test&amp;Target panel, go inside the text symbol and change the text to <em>&#8220;Subscribe to our magazine&#8221;</em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<div id="attachment_264" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/subscribe_text.png"><img class="size-medium wp-image-264" title="Change the text" src="http://www.stratulat.com/blog/wp-content/subscribe_text-300x215.png" alt="Change the text" width="300" height="215" /></a><p class="wp-caption-text">Change the text</p></div>
<p>I will do the same thing with the buttons&#8217;s label and with the image.</p>
<div id="attachment_260" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/add_image.png"><img class="size-medium wp-image-260" title="Add image to experience" src="http://www.stratulat.com/blog/wp-content/add_image-300x215.png" alt="Add image to experience" width="300" height="215" /></a><p class="wp-caption-text">Add image to experience</p></div>
<p>When adding an image to the Test&amp;Target workflow, the image is transformed into a symbol and a labeled keyframe is created on that symbol timeline for each experience present into the panel. To change the image for the <strong>Subscription</strong> experience I will go inside the symbol and for the second keyframe I will swap the image with a different one from the <strong>Library</strong> panel.</p>
<div id="attachment_266" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/swap_image.png"><img class="size-medium wp-image-266" title="Swap the image" src="http://www.stratulat.com/blog/wp-content/swap_image-300x215.png" alt="Swap the image" width="300" height="215" /></a><p class="wp-caption-text">Swap the image</p></div>
<div id="attachment_265" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/swap_done.png"><img class="size-medium wp-image-265" title="Swap the image" src="http://www.stratulat.com/blog/wp-content/swap_done-300x215.png" alt="Swap the image" width="300" height="215" /></a><p class="wp-caption-text">Swap the image</p></div>
<p>After this, I sync my work with the Test&amp;Target server. By doing so, all the information necessary to present the two variations for this ad are saved on the Test&amp;Target server.</p>
<div id="attachment_267" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/tt_edit.png"><img class="size-medium wp-image-267" title="My campaign and flashbox on the Test&amp;Target server." src="http://www.stratulat.com/blog/wp-content/tt_edit-300x215.png" alt="My campaign and flashbox on the Test&amp;Target server." width="300" height="215" /></a><p class="wp-caption-text">My campaign and flashbox on the Test&amp;Target server.</p></div>
<p>On the server, I can still edit the text present in the ad WITHOUT the need to recompile the SWF. I can create new experiences if I want to test different tag lines also WITHOUT recompiling the SWF. The only limitation is that I can not select for these experiences images that are not already embedded in the SWF, at least not in the way I have created this demo. This is possible if a <strong>Loader</strong> object is used and the experiences will hold the URL to a remote image.</p>
<p>I will create some very simple targeting rules for my ad: I want my site to show the <strong>Local Picks</strong> experience for all the new users arriving on it and to show the <strong>Subscription</strong> experience for all the returning ones.</p>
<div id="attachment_268" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/tt_target.png"><img class="size-medium wp-image-268" title="Add targeting rules" src="http://www.stratulat.com/blog/wp-content/tt_target-300x215.png" alt="Add targeting rules" width="300" height="215" /></a><p class="wp-caption-text">Add targeting rules</p></div>
<p>All I need to do now is approve the campaign and I&#8217;m set.</p>
<blockquote><p><a href="http://pc.de/pages/omniture-testtarget-be">Belorussian</a> provided by <a href="http://pc.de/">PC</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/omniture-testtarget-for-flash-professional-cs5-how-to-in-images/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Omniture SiteCatalyst and Test&amp;Target extensions</title>
		<link>http://www.stratulat.com/blog/omniture-sitecatalyst-and-testtarget-extensions</link>
		<comments>http://www.stratulat.com/blog/omniture-sitecatalyst-and-testtarget-extensions#comments</comments>
		<pubDate>Fri, 30 Apr 2010 06:55:53 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Omniture]]></category>
		<category><![CDATA[SiteCatalyst]]></category>
		<category><![CDATA[Test&Target]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=252</guid>
		<description><![CDATA[We&#8217;ve been working hard for the last couple of months, after the Omniture was acquired by Adobe, to create an integration between Omniture products and Adobe products. The result was the Omniture SiteCatalyst and Test&#38;Target extensions. First, a short description taken from the release notes: Omniture SiteCatalyst extension for Adobe Flash Professional CS5 &#8211; Visually add [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been working hard for the last couple of months, after the Omniture was acquired by Adobe, to create an integration between Omniture products and Adobe products. The result was the <a href="http://www.adobe.com/products/creativesuite/omniture/">Omniture SiteCatalyst and Test&amp;Target extensions</a>.</p>
<p>First, a short description taken from the release notes:</p>
<ul>
<li><strong>Omniture SiteCatalyst extension for Adobe Flash Professional CS5</strong> &#8211; Visually add tracking to Flash content, directly from the creative workflow, without manually tagging each piece of content. This will dramatically shorten analytics implementation times, allowing you to focus on the impact of your creative work.</li>
<li><strong>Omniture Test&amp;Target extension for Adobe Flash Professional CS5</strong> &#8211; Easily create and manage Flash content variations for online marketing campaigns directly from your creative workflow, without duplicating effort or writing ActionScript code.</li>
<li><strong>Omniture Test&amp;Target extension for Adobe Dreamweaver CS5 </strong>- Visually create and manage HTML content for online marketing campaigns, without having to write HTML code.</li>
</ul>
<p>And now, lets present the Flash Pro extensions using some images:</p>
<div id="attachment_253" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/extensions_login.png"><img class="size-medium wp-image-253" title="extensions_login" src="http://www.stratulat.com/blog/wp-content/extensions_login-300x225.png" alt="login " width="300" height="225" /></a><p class="wp-caption-text">login </p></div>
<div id="attachment_254" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/extensions_p1.png"><img class="size-medium wp-image-254" title="extensions_p1" src="http://www.stratulat.com/blog/wp-content/extensions_p1-300x225.png" alt="call to action" width="300" height="225" /></a><p class="wp-caption-text">call to action</p></div>
<div id="attachment_255" class="wp-caption alignnone" style="width: 310px"><a href="http://www.stratulat.com/blog/wp-content/extensions_p2.png"><img class="size-medium wp-image-255" title="extensions_p2" src="http://www.stratulat.com/blog/wp-content/extensions_p2-300x225.png" alt="working environment" width="300" height="225" /></a><p class="wp-caption-text">working environment</p></div>
<p>Soon I will start to create some small demos to showcase how to work with this extensions on a real working scenario. Stay tuned..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/omniture-sitecatalyst-and-testtarget-extensions/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Cookbooks @ Adobe</title>
		<link>http://www.stratulat.com/blog/cookbooks_adobe</link>
		<comments>http://www.stratulat.com/blog/cookbooks_adobe#comments</comments>
		<pubDate>Fri, 25 Sep 2009 14:17:27 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Cookbooks]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=241</guid>
		<description><![CDATA[Adobe has rolled out the next generation of it&#8217;s development recipes portal: Adobe Cookbooks There are two major stories delivered with this new version: Contributing has become a lot easier. The prominence and recognition for community members who actively participate in Cookbooks was increased. In detail, there is a set of new features that are [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe has rolled out the next generation of it&#8217;s development recipes portal: <a title="Adobe Cookbooks" href="http://cookbooks.adobe.com/home" target="_blank">Adobe Cookbooks</a></p>
<p>There are two major stories delivered with this new version:</p>
<ol>
<li><strong>Contributing has become a lot easier.</strong></li>
<li><strong>The prominence and recognition for community members who actively participate in Cookbooks was increased.</strong></li>
</ol>
<p>In detail, there is a set of new features that are making the experience more enjoyable and productive.</p>
<ul>
<li>Support for “topics” and “tags”.</li>
<li>17 technologies &amp; products, including non-Adobe ones: AIR, Flash Professional, ColdFusion, LiveCycle, Dreamweaver, Flash Catalyst, ActionScript, Mobile and Devices, Video, PHP  and more.</li>
<li>Improved content discoverability:
<ul>
<li>Search engine optimization</li>
<li>Ability to drill-down by tag, or do a full-text search</li>
<li>“data visualizer” – the Flash widget you see on the homepage, which is a fun way to explore the content and the community behind it.</li>
<li>Related articles recommended for each recipe.</li>
<li>Leader board featuring the most active and the most recent contributors, including integration with Community Help profiles.</li>
<li>A new way to pull in new recipes, called “recipe requests”: users can ask for a help on a task or topic, and receive solutions from the other members of the community.</li>
<li>Slicker design, improved performance, etc.</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/cookbooks_adobe/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe Developer Day in Romania</title>
		<link>http://www.stratulat.com/blog/adobe-developer-day</link>
		<comments>http://www.stratulat.com/blog/adobe-developer-day#comments</comments>
		<pubDate>Mon, 13 Apr 2009 13:10:19 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[event]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=204</guid>
		<description><![CDATA[Adobe Romania is organizing a developer day in Bucharest on 19th May. More information can be found on Adobe Romania site. It is about Flex, Flash, AIR, web technologies, RIA, ColdFusion and a lot more. You will have the chance to meet with Ben Forta &#8211; Senior Evangelist, Digby Horner &#8211; SVP Emerging Markets and [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe Romania is organizing a developer day in Bucharest on 19th May. More information can be found on <a href="http://myadobe.ro/2009/04/13/mama-tuturor-flex-camp-urilor/">Adobe Romania site.</a> It is about Flex, Flash, AIR, web technologies, RIA, ColdFusion and a lot more. </p>
<p>You will have the chance to meet with Ben Forta &#8211; Senior Evangelist, Digby Horner &#8211; SVP Emerging Markets and lots of Adobe Romania people. </p>
<p><script type="text/javascript"><!--
eventbrite_event = "325715223";
eventbrite_view = "tickets";
eventbrite_width = "600";
eventbrite_height = "300";
// --></script><br />
<script src="http://www.eventbrite.com/static/js/events.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/adobe-developer-day/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>replace vs. split and join performance in ActionScript 3</title>
		<link>http://www.stratulat.com/blog/replace-vs-split-and-join-performance-in-actionscript-3</link>
		<comments>http://www.stratulat.com/blog/replace-vs-split-and-join-performance-in-actionscript-3#comments</comments>
		<pubDate>Fri, 30 Jan 2009 14:55:25 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[split]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/replace-vs-split-and-join-performance-in-actionscript-3</guid>
		<description><![CDATA[In the previous article inside the source code for the regular expression tester you can find the following line: var htmlString:String = string.split("\n").join("&#60;br /&#62;"); I have found this in an ActionScript 3 example at one time and I remembered this as it is a nice construct. However there is another, more common way to write [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous article inside the source code for the regular expression tester you can find the following line: </p>
<pre class="csharpcode"><span class="kwrd">var</span> htmlString:String = <span class="kwrd">string</span>.split(<span class="str">"\n"</span>).join(<span class="str">"&lt;br /&gt;"</span>);</pre>
<p>I have found this in an ActionScript 3 example at one time and I remembered this as it is a nice construct. However there is another, more common way to write this:</p>
<pre class="csharpcode">var htmlString:String = <span class="kwrd">string</span>.replace(/\n/g, <span class="str">"&lt;br /&gt;"</span>);</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>So I start questioning myself, which one is faster?</p>
<p>After running some tests the results are: <strong>split and join ~ 1100ms, replace ~ 800ms</strong>. The test was run on a generated string of 16 mil. characters. So, unless you are planning to do this operation on a large data set the difference is not that big and it does not matter which one you will use. For 100k characters both score around 15ms. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/replace-vs-split-and-join-performance-in-actionscript-3/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex Regular Expression Tester &#8211; source code</title>
		<link>http://www.stratulat.com/blog/flex-regular-expression-tester-source-code</link>
		<comments>http://www.stratulat.com/blog/flex-regular-expression-tester-source-code#comments</comments>
		<pubDate>Wed, 14 Jan 2009 13:47:28 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[flex 4]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[regular expressions]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/flex-regular-expression-tester-source-code</guid>
		<description><![CDATA[There are a lot of improvements that can be made to this piece of code and when I will get some time I will move forward with the changes. Until then I will post here the source code as it is still small and developers new to the world of regular expressions may learn something [...]]]></description>
			<content:encoded><![CDATA[<p>There are a lot of improvements that can be made to this piece of code and when I will get some time I will move forward with the changes. Until then I will post here the source code as it is still small and developers new to the world of regular expressions may learn something from it. </p>
<p>BTW, I have used Flex 4 <img src='http://www.stratulat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>(updated on 04.15.2009)</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>&lt;?xml version=<span class="str">"1.0"</span> encoding=<span class="str">"utf-8"</span>?&gt;</pre>
<pre><span class="lnum">   2:  </span>&lt;s:Application xmlns:fx=<span class="str">"http://ns.adobe.com/mxml/2009"</span> </pre>
<pre class="alt"><span class="lnum">   3:  </span>    xmlns:s=<span class="str">"library://ns.adobe.com/flex/spark"</span> pageTitle=<span class="str">"Flex Regular Expressions"</span> </pre>
<pre><span class="lnum">   4:  </span>    xmlns:mx=<span class="str">"library://ns.adobe.com/flex/halo"</span> height=<span class="str">"400"</span> </pre>
<pre class="alt"><span class="lnum">   5:  </span>    viewSourceURL=<span class="str">"srcview/index.html"</span> creationComplete=<span class="str">"init()"</span>&gt;</pre>
<pre><span class="lnum">   6:  </span>    </pre>
<pre class="alt"><span class="lnum">   7:  </span>    &lt;s:layout&gt;</pre>
<pre><span class="lnum">   8:  </span>        &lt;s:BasicLayout/&gt;</pre>
<pre class="alt"><span class="lnum">   9:  </span>    &lt;/s:layout&gt;</pre>
<pre><span class="lnum">  10:  </span>    </pre>
<pre class="alt"><span class="lnum">  11:  </span>    &lt;fx:Script&gt;</pre>
<pre><span class="lnum">  12:  </span>        &lt;![CDATA[</pre>
<pre class="alt"><span class="lnum">  13:  </span>        import mx.skins.spark.ButtonSkin;</pre>
<pre><span class="lnum">  14:  </span>        <span class="kwrd">private</span> <span class="kwrd">var</span> error:String;</pre>
<pre class="alt"><span class="lnum">  15:  </span>    </pre>
<pre><span class="lnum">  16:  </span>        <span class="kwrd">protected</span> <span class="kwrd">function</span> test_btn_clickHandler(<span class="kwrd">event</span>:MouseEvent):<span class="kwrd">void</span></pre>
<pre class="alt"><span class="lnum">  17:  </span>        {</pre>
<pre><span class="lnum">  18:  </span>            <span class="kwrd">var</span> restr:String = regexpInput.text;</pre>
<pre class="alt"><span class="lnum">  19:  </span>            <span class="kwrd">var</span> input:String = textInput.text;</pre>
<pre><span class="lnum">  20:  </span>            <span class="kwrd">var</span> igstr:String = modifInput.text;</pre>
<pre class="alt"><span class="lnum">  21:  </span>            </pre>
<pre><span class="lnum">  22:  </span>            <span class="kwrd">this</span>.error = <span class="kwrd">null</span>;</pre>
<pre class="alt"><span class="lnum">  23:  </span>            </pre>
<pre><span class="lnum">  24:  </span>            <span class="kwrd">if</span>(restr != <span class="kwrd">null</span> &amp;&amp; restr != <span class="str">''</span> &amp;&amp; input != <span class="kwrd">null</span> &amp;&amp; input != <span class="str">''</span>) {</pre>
<pre class="alt"><span class="lnum">  25:  </span>                <span class="kwrd">var</span> myPattern:RegExp = <span class="kwrd">new</span> RegExp(restr, igstr);</pre>
<pre><span class="lnum">  26:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  27:  </span>                <span class="kwrd">var</span> result:Object = myPattern.exec(input);</pre>
<pre><span class="lnum">  28:  </span>                </pre>
<pre class="alt"><span class="lnum">  29:  </span>                <span class="kwrd">var</span> a:String = <span class="str">''</span>;</pre>
<pre><span class="lnum">  30:  </span>                <span class="kwrd">var</span> b:String = <span class="str">'&lt;br /&gt;'</span>;</pre>
<pre class="alt"><span class="lnum">  31:  </span>                <span class="kwrd">var</span> index:<span class="kwrd">int</span> = 0;</pre>
<pre><span class="lnum">  32:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  33:  </span>                <span class="kwrd">while</span> (result != <span class="kwrd">null</span>) {</pre>
<pre><span class="lnum">  34:  </span>                    <span class="rem">// copy string from last match</span></pre>
<pre class="alt"><span class="lnum">  35:  </span>                    a += <span class="str">'&lt;span&gt;'</span> + encode(input.substring(index, result.index)) + <span class="str">'&lt;/span&gt;'</span>;</pre>
<pre><span class="lnum">  36:  </span>                    index = result.index;</pre>
<pre class="alt"><span class="lnum">  37:  </span>                    </pre>
<pre><span class="lnum">  38:  </span>                    <span class="rem">// copy the matching parts</span></pre>
<pre class="alt"><span class="lnum">  39:  </span>                    a += <span class="str">'&lt;span color="#339933"&gt;'</span> + encode(result[0]) + <span class="str">'&lt;/span&gt;'</span></pre>
<pre><span class="lnum">  40:  </span>                    index += result[0].length;                </pre>
<pre class="alt"><span class="lnum">  41:  </span>&nbsp;</pre>
<pre><span class="lnum">  42:  </span>                    <span class="rem">// create the trace string</span></pre>
<pre class="alt"><span class="lnum">  43:  </span>                    b += <span class="str">'&lt;br /&gt; '</span> + result.index + <span class="str">'\t'</span>; </pre>
<pre><span class="lnum">  44:  </span>                    <span class="kwrd">for</span>(<span class="kwrd">var</span> i:<span class="kwrd">int</span> = 0; i&lt;result.length; i++) {</pre>
<pre class="alt"><span class="lnum">  45:  </span>                        b += result[i] + <span class="str">','</span>;</pre>
<pre><span class="lnum">  46:  </span>                    }</pre>
<pre class="alt"><span class="lnum">  47:  </span>                    </pre>
<pre><span class="lnum">  48:  </span>                    <span class="kwrd">if</span>(igstr.indexOf(<span class="str">'g'</span>) == -1) {</pre>
<pre class="alt"><span class="lnum">  49:  </span>                        a+= input.substr(index);</pre>
<pre><span class="lnum">  50:  </span>                        <span class="kwrd">break</span>;</pre>
<pre class="alt"><span class="lnum">  51:  </span>                    }</pre>
<pre><span class="lnum">  52:  </span>                    result = myPattern.exec(input);</pre>
<pre class="alt"><span class="lnum">  53:  </span>                }</pre>
<pre><span class="lnum">  54:  </span>                            </pre>
<pre class="alt"><span class="lnum">  55:  </span>                a += <span class="str">''</span>;</pre>
<pre><span class="lnum">  56:  </span>                resultText.content = a + b;</pre>
<pre class="alt"><span class="lnum">  57:  </span>            }</pre>
<pre><span class="lnum">  58:  </span>        }</pre>
<pre class="alt"><span class="lnum">  59:  </span>                    </pre>
<pre><span class="lnum">  60:  </span>        <span class="kwrd">protected</span> <span class="kwrd">function</span> encode(<span class="kwrd">string</span>:String):String {</pre>
<pre class="alt"><span class="lnum">  61:  </span>            <span class="kwrd">var</span> htmlString:String = <span class="kwrd">string</span>.replace(/\n/g, <span class="str">"&lt;br /&gt;"</span>);</pre>
<pre><span class="lnum">  62:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  63:  </span>            <span class="kwrd">return</span> htmlString;</pre>
<pre><span class="lnum">  64:  </span>        }</pre>
<pre class="alt"><span class="lnum">  65:  </span>        ]]&gt;</pre>
<pre><span class="lnum">  66:  </span>    &lt;/fx:Script&gt;</pre>
<pre class="alt"><span class="lnum">  67:  </span>&nbsp;</pre>
<pre><span class="lnum">  68:  </span>    &lt;s:Panel id=<span class="str">"contentPane"</span> width=<span class="str">"100%"</span> height=<span class="str">"100%"</span> left=<span class="str">"0"</span> </pre>
<pre class="alt"><span class="lnum">  69:  </span>        title=<span class="str">"Flex Regular Expressions"</span> &gt;</pre>
<pre><span class="lnum">  70:  </span>        </pre>
<pre class="alt"><span class="lnum">  71:  </span>        &lt;s:TextArea left=<span class="str">"10"</span> right=<span class="str">"10"</span> height=<span class="str">"150"</span> top=<span class="str">"10"</span> </pre>
<pre><span class="lnum">  72:  </span>            text=<span class="str">"She sells seashells by the seashore"</span> id=<span class="str">"textInput"</span> /&gt;</pre>
<pre class="alt"><span class="lnum">  73:  </span>        &lt;s:TextInput text=<span class="str">"(\w*)sh(\w*)"</span> id=<span class="str">"regexpInput"</span> left=<span class="str">"10"</span> top=<span class="str">"168"</span> right=<span class="str">"175"</span>/&gt;</pre>
<pre><span class="lnum">  74:  </span>        &lt;s:TextInput id=<span class="str">"modifInput"</span> text=<span class="str">"ig"</span> right=<span class="str">"85"</span> top=<span class="str">"168"</span> width=<span class="str">"78"</span>/&gt;</pre>
<pre class="alt"><span class="lnum">  75:  </span>        &lt;s:Button label=<span class="str">"test"</span> id=<span class="str">"test_btn"</span> right=<span class="str">"10"</span> top=<span class="str">"168"</span> </pre>
<pre><span class="lnum">  76:  </span>            click=<span class="str">"test_btn_clickHandler(event)"</span>/&gt;</pre>
<pre class="alt"><span class="lnum">  77:  </span>        &lt;s:TextArea id=<span class="str">"resultText"</span> left=<span class="str">"10"</span> right=<span class="str">"10"</span> top=<span class="str">"198"</span> bottom=<span class="str">"10"</span>/&gt;</pre>
<pre><span class="lnum">  78:  </span>    &lt;/s:Panel&gt;</pre>
<pre class="alt"><span class="lnum">  79:  </span>    </pre>
<pre><span class="lnum">  80:  </span>&lt;/s:Application&gt;</pre>
</div>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/flex-regular-expression-tester-source-code/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex Regular Expressions Tester &#8211; a new version</title>
		<link>http://www.stratulat.com/blog/flex-regular-expressions-tester-a-new-version</link>
		<comments>http://www.stratulat.com/blog/flex-regular-expressions-tester-a-new-version#comments</comments>
		<pubDate>Mon, 12 Jan 2009 13:36:13 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[regular expressions]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=191</guid>
		<description><![CDATA[Some time ago I have created a Flex regular expressions tester. When I have moved my site to ICE I have decided to improve a little bit this tester and right now there is a new small Flex application that can be used to play around with some neat symbols http://www.stratulat.com/Regular_Expressions_Flex.html]]></description>
			<content:encoded><![CDATA[<p>Some time ago I have created a Flex regular expressions tester. When I have moved my site to ICE I have decided to improve a little bit this tester and right now there is a new small Flex application that can be used to play around with some neat symbols <img src='http://www.stratulat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a title="flex regular expressions" href="http://www.stratulat.com/Regular_Expressions_Flex.html">http://www.stratulat.com/Regular_Expressions_Flex.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/flex-regular-expressions-tester-a-new-version/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&quot;Bended&quot; Spaz &#8211; a practical application for Pixel Bender</title>
		<link>http://www.stratulat.com/blog/bended-spaz-a-practical-application-for-pixel-bender</link>
		<comments>http://www.stratulat.com/blog/bended-spaz-a-practical-application-for-pixel-bender#comments</comments>
		<pubDate>Thu, 27 Nov 2008 13:14:23 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Spaz]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=179</guid>
		<description><![CDATA[I have written before about Spaz &#8211; the Twitter client I use. Because it is written in AIR and because is open source and AIR 1.5 just got out with new interesting features, I thought, why not &#8220;bend&#8221; a little Spaz, just for fun. I say just for fun because it was not something done [...]]]></description>
			<content:encoded><![CDATA[<p>I have written before about <a href="http://funkatron.com/spaz">Spaz</a> &#8211; the Twitter client I use.</p>
<p>Because it is written in AIR and because is open source and AIR 1.5 just got out with new interesting features, I thought, why not &#8220;bend&#8221; a little Spaz, just for fun.</p>
<p>I say just for fun because it was not something done after a careful consideration of the usefulness of adding this effect in Spaz.</p>
<p>I have used as a starting point the BlaskBookSafe application described in my previous post. The changes made in Spaz were as follows:</p>
<ol>
<li>I have updated <em><strong>spaz/assets/air/AIRAliases.js</strong></em> with the last one provided by Adobe AIR SDK 1.5
<li>I have copied the <strong><em>bender </em></strong>folder from BlackBookSafe into spaz
<li>I have copied <em><strong>BenderEffect.js</strong></em> and <em><strong>Tween.js</strong></em> from BBS to <em><strong>spaz/assets/lib </strong></em>folder
<li>I have added some small pieces of code in <strong><em>spaz/index.html</em></strong> and <strong><em>spaz/assets/assets/spaz.prefs.js</em></strong> </li>
</ol>
<p>The added code in index.html was of course importing those two scripts added in the lib folder. We need them in order to create the effect and also to &#8220;tween&#8221; it, to transform the bend into an animation.</p>
<p>The code from spaz.prefs.js is a little more complicated and it creates the bend effect and starts the tween:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="str">'window-alpha'</span>: {</pre>
<pre><span class="lnum">   2:  </span>    setUI: <span class="kwrd">function</span>(value) {</pre>
<pre class="alt"><span class="lnum">   3:  </span>        $(<span class="str">'#window-alpha'</span>).val(parseInt(value));</pre>
<pre><span class="lnum">   4:  </span>    },</pre>
<pre class="alt"><span class="lnum">   5:  </span>    onChange: <span class="kwrd">function</span>(value) {</pre>
<pre><span class="lnum">   6:  </span>        <span class="rem">//alert(percentage+"%");</span></pre>
<pre class="alt"><span class="lnum">   7:  </span>        percentage = parseInt(value);</pre>
<pre><span class="lnum">   8:  </span>        <span class="kwrd">if</span> (isNaN(percentage)) {</pre>
<pre class="alt"><span class="lnum">   9:  </span>            percentage = 100;</pre>
<pre><span class="lnum">  10:  </span>        }</pre>
<pre class="alt"><span class="lnum">  11:  </span>        <span class="kwrd">if</span> (percentage &lt; 25) {</pre>
<pre><span class="lnum">  12:  </span>            percentage = 25;</pre>
<pre class="alt"><span class="lnum">  13:  </span>        }</pre>
<pre><span class="lnum">  14:  </span>        <span class="kwrd">var</span> val = parseInt(percentage) / 100;</pre>
<pre class="alt"><span class="lnum">  15:  </span>        <span class="kwrd">if</span> (isNaN(val)) {</pre>
<pre><span class="lnum">  16:  </span>            val = 1;</pre>
<pre class="alt"><span class="lnum">  17:  </span>        } <span class="kwrd">else</span> <span class="kwrd">if</span> (val &gt;= 1) {</pre>
<pre><span class="lnum">  18:  </span>            val = 1;</pre>
<pre class="alt"><span class="lnum">  19:  </span>        } <span class="kwrd">else</span> <span class="kwrd">if</span> (val &lt;= 0) {</pre>
<pre><span class="lnum">  20:  </span>            val = 1;</pre>
<pre class="alt"><span class="lnum">  21:  </span>        }</pre>
<pre><span class="lnum">  22:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  23:  </span>        <span class="rem">/*  the bending code */</span></pre>
<pre><span class="lnum">  24:  </span>        BlenderEffect.get(<span class="str">'app:/bender/page.pbj'</span>, <span class="kwrd">function</span>(shader){</pre>
<pre class="alt"><span class="lnum">  25:  </span>            <span class="kwrd">var</span> tween = BlenderEffect.createShaderTransition(window.htmlLoader, </pre>
<pre><span class="lnum">  26:  </span>                shader , 1200, Tween.effects.elasticEase);</pre>
<pre class="alt"><span class="lnum">  27:  </span>            tween.hideOnFinish = <span class="kwrd">false</span>; </pre>
<pre><span class="lnum">  28:  </span>            tween.start(<span class="kwrd">true</span>);</pre>
<pre class="alt"><span class="lnum">  29:  </span>        });</pre>
<pre><span class="lnum">  30:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  31:  </span>        window.htmlLoader.alpha = val;</pre>
<pre><span class="lnum">  32:  </span>    },</pre>
<pre class="alt"><span class="lnum">  33:  </span>    check: <span class="kwrd">function</span>() {</pre>
<pre><span class="lnum">  34:  </span>.....</pre>
<pre class="alt"><span class="lnum">  35:  </span>}</pre>
</div>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>The addition was inside the <em>onChange</em> method for the <em>window-alpha</em> setting.</p>
<p>The reason I choose this method was to have a visual indication for changing the alpha setting from preferences. With all this in place, when changing the alpha setting for Spaz a nice effect will warp a little bit the window. I will let you to discover this as an image will not do it.</p>
<p>In the mean time I will send an email to Funkatron, maybe they will be interested in incorporating this in a more useful way <img src='http://www.stratulat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/bended-spaz-a-practical-application-for-pixel-bender/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Adobe AIR 1.5 is out, now we can bend some pixels.</title>
		<link>http://www.stratulat.com/blog/adobe-air-15-is-out-now-we-can-bend-some-pixels</link>
		<comments>http://www.stratulat.com/blog/adobe-air-15-is-out-now-we-can-bend-some-pixels#comments</comments>
		<pubDate>Tue, 18 Nov 2008 08:34:07 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Pixel Bender]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=171</guid>
		<description><![CDATA[The last version of Adobe AIR is 1.5 and brings a lot new features especially through integrating Flash Player 10 and updating the included WebKit. More about this can be read on Adobe AIR team blog. What I want to talk about is a new sample made specially to show the new capabilities of this [...]]]></description>
			<content:encoded><![CDATA[<p>The last version of Adobe AIR is 1.5 and brings a lot new features especially through integrating Flash Player 10 and updating the included WebKit. More about this can be read on <a title="Adobe AIR team blog" href="http://blogs.adobe.com/air/">Adobe AIR team blog</a>.</p>
<p>What I want to talk about is a new sample made specially to show the new capabilities of this release, <a title="BlackBookSafe" href="http://www.adobe.com/devnet/air/ajax/samples.html#blackbooksafe">BlackBookSafe</a>. It is an HTML/JavaScript application using jQuery framework and leveraging the encrypted local database, 3d transformations and Pixel Bender effects. Indeed, with the new AIR you can &#8220;bend pixels&#8221; <img src='http://www.stratulat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<div id="attachment_172" class="wp-caption alignnone" style="width: 349px"><img class="size-full wp-image-172" title="bbs1" src="http://www.stratulat.com/blog/wp-content/bbs1.jpg" alt="BlackBookSafe screen" width="339" height="488" /><p class="wp-caption-text">BlackBookSafe screen</p></div>
<div id="attachment_174" class="wp-caption alignnone" style="width: 368px"><img class="size-full wp-image-174" title="bbs2" src="http://www.stratulat.com/blog/wp-content/bbs2.jpg" alt="BlackBookSafe bended screen" width="358" height="490" /><p class="wp-caption-text">BlackBookSafe bended screen</p></div>
<p>The effect was created using the <a title="Adobe Pixel Bender" href="http://labs.adobe.com/technologies/pixelbender/">Adobe Pixel Bender</a> available in Flash Player. And yes, I said that BlackBookSafe was created using HTML and JavaScript. You want to find out how was it done? <a href="http://corlan.org/">Mihai Corlan</a>, an Adobe Platform Evangelist wrote an article detailing exactly how this application was created in <a title="BlackBookSafe: Anatomy of an AIR 1.5 application" href="http://www.adobe.com/devnet/air/ajax/articles/blackbooksafe_anatomy.html">BlackBookSafe: Anatomy of an AIR 1.5 application</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/adobe-air-15-is-out-now-we-can-bend-some-pixels/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Twitter client in AIR</title>
		<link>http://www.stratulat.com/blog/twitter-client-in-air</link>
		<comments>http://www.stratulat.com/blog/twitter-client-in-air#comments</comments>
		<pubDate>Mon, 25 Aug 2008 10:43:41 +0000</pubDate>
		<dc:creator>Remus Stratulat</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Spaz]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.stratulat.com/blog/?p=143</guid>
		<description><![CDATA[I am not a big user of Twitter, however I wanted to have a Twitter client installed on my laptop, just in case. And, of course , I searched for an AIR one. What I found was Spaz, a Twitter client written in JavaScript as an AIR application.]]></description>
			<content:encoded><![CDATA[<p>I am not a big user of Twitter, however I wanted to have a Twitter client installed on my laptop, just in case. And, of course <img src='http://www.stratulat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , I searched for an AIR one. What I found was <a href="http://funkatron.com/spaz">Spaz</a>, a Twitter client written in JavaScript as an AIR application.</p>
<div id="attachment_144" class="wp-caption alignnone" style="width: 296px"><a href="http://funkatron.com/spaz"><img class="size-full wp-image-144" title="spaz" src="http://www.stratulat.com/blog/wp-content/spaz.jpg" alt="Spaz is a Twitter client for users who value free, open-source software, attractive design, and customizability" width="286" height="664" /></a><p class="wp-caption-text">Spaz is a Twitter client for users who value free, open-source software, attractive design, and customizability.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.stratulat.com/blog/twitter-client-in-air/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
