<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>The kaustic lab __</title>
	<link>http://compiler.kaustic.net/lab</link>
	<description>ActionScript / Flex / Flash / AIR / Processing</description>
	<pubDate>Tue, 24 Aug 2010 06:45:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>Flash 10.1 avmplus.*</title>
		<link>http://compiler.kaustic.net/lab/?p=49</link>
		<comments>http://compiler.kaustic.net/lab/?p=49#comments</comments>
		<pubDate>Mon, 23 Aug 2010 19:17:43 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=49</guid>
		<description><![CDATA[If you introspect the Flash 10.1 playerglobal.swc (in Flash Builder for example) you will notice a package that was not there in Flash Player 10, namely avmplus.
The interesting part is that it contains a method describeTypeJSON(*, uint):Object (which is an internal function)
The first parameter is the object to describe and the second is a flags [...]]]></description>
			<content:encoded><![CDATA[<p>If you introspect the Flash 10.1 playerglobal.swc (in Flash Builder for example) you will notice a package that was not there in Flash Player 10, namely <strong>avmplus</strong>.</p>
<p>The interesting part is that it contains a method <strong>describeTypeJSON(*, uint):Object</strong> (which is an internal function)<br />
The first parameter is the object to describe and the second is a flags parameter (defined as uint constants in the very same package).</p>
<pre>
HIDE_NSURI_METHODS = 1
INCLUDE_BASES = 2
INCLUDE_INTERFACES = 4
INCLUDE_VARIABLES = 8
INCLUDE_ACCESSORS = 16
INCLUDE_METHODS = 32
INCLUDE_METADATA = 64
INCLUDE_CONSTRUCTOR = 128
INCLUDE_TRAITS = 256
USE_ITRAITS = 512
HIDE_OBJECT = 1024
FLASH10_FLAGS = 1535</pre>
<p>By doing a little monkey-patch-hacking (creating something in the same package so that it can access the internals), it is possible to expose this method for all yer class inspection purposes&#8230; *grin*</p>
<p>Example:</p>
<pre>
package avmplus
{
    public function getInterfaces(object:*):Array
    {
        return describeTypeJSON(object, INCLUDE_TRAITS | INCLUDE_INTERFACES).traits.interfaces;
    }
}</pre>
<p>Update August 24th 2010: Till Schneidereit&#8217;s <a href="http://www.tillschneidereit.de/2009/11/22/improved-reflection-support-in-flash-player-10-1/">in-depth article</a> on the subject.</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=49</wfw:commentRss>
		</item>
		<item>
		<title>FLAC playback in AIR 2.0</title>
		<link>http://compiler.kaustic.net/lab/?p=48</link>
		<comments>http://compiler.kaustic.net/lab/?p=48#comments</comments>
		<pubDate>Fri, 04 Jun 2010 22:09:49 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Audio Processing]]></category>

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=48</guid>
		<description><![CDATA[A little experiment with the NativeProcess API in AIR 2.0&#8230;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
&#60;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&#62;
&#60;s:WindowedApplication xmlns:fx=&#34;http://ns.adobe.com/mxml/2009&#34; 
					   xmlns:s=&#34;library://ns.adobe.com/flex/spark&#34; 
					   xmlns:mx=&#34;library://ns.adobe.com/flex/mx&#34;
					   applicationComplete=&#34;applicationCompleteHandler(event)&#34;&#62;
	&#60;fx:Script&#62;
		&#60;![CDATA[
			import flash.utils.getTimer;
&#160;
			import mx.events.FlexEvent;
&#160;
			public var process:NativeProcess;
			public var sound:Sound;
			public var channel:SoundChannel;
			public var buffer:ByteArray;
			public var bufferSize:int = 4096;
			public var pos:uint = 0;
			public var t:int;
&#160;
			protected function applicationCompleteHandler(event:FlexEvent):void
			{
				if (!NativeProcess.isSupported)
				{
					out.appendText(&#34;NativeProcess not supported&#34;);
					return;
				}
&#160;
				var file:File = File.applicationDirectory.resolvePath(&#34;bin/flac.exe&#34;);
				var info:NativeProcessStartupInfo = new [...]]]></description>
			<content:encoded><![CDATA[<p>A little experiment with the NativeProcess API in AIR 2.0&#8230;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
</pre></td><td class="code"><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:WindowedApplication xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; 
					   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; 
					   xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot;
					   applicationComplete=&quot;applicationCompleteHandler(event)&quot;&gt;
	&lt;fx:Script&gt;
		&lt;![CDATA[
			import flash.utils.getTimer;
&nbsp;
			import mx.events.FlexEvent;
&nbsp;
			public var process:NativeProcess;
			public var sound:Sound;
			public var channel:SoundChannel;
			public var buffer:ByteArray;
			public var bufferSize:int = 4096;
			public var pos:uint = 0;
			public var t:int;
&nbsp;
			protected function applicationCompleteHandler(event:FlexEvent):void
			{
				if (!NativeProcess.isSupported)
				{
					out.appendText(&quot;NativeProcess not supported&quot;);
					return;
				}
&nbsp;
				var file:File = File.applicationDirectory.resolvePath(&quot;bin/flac.exe&quot;);
				var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
&nbsp;
				info.executable = file;
				info.arguments.push(&quot;--decode&quot;);
				info.arguments.push(&quot;--stdout&quot;);
				info.arguments.push(&quot;--totally-silent&quot;);
				info.arguments.push(&quot;--force-raw-format&quot;);
				info.arguments.push(&quot;--endian=little&quot;);
				info.arguments.push(&quot;--sign=signed&quot;);
				info.arguments.push(File.applicationDirectory.resolvePath(&quot;test.flac&quot;).nativePath);
&nbsp;
				process = new NativeProcess();
				process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, process_outputDataHandler);
				process.addEventListener(Event.STANDARD_OUTPUT_CLOSE, process_outputCloseHandler);
				process.start(info);
&nbsp;
				buffer = new ByteArray();
				buffer.endian = Endian.LITTLE_ENDIAN;
&nbsp;
				sound = new Sound();
				sound.addEventListener(SampleDataEvent.SAMPLE_DATA, sound_sampleDataHandler);
				channel = sound.play();
&nbsp;
				out.appendText(&quot;Playing\n&quot;);
&nbsp;
				t = getTimer();
			}
&nbsp;
			protected function process_outputDataHandler(event:ProgressEvent):void
			{
				process.standardOutput.readBytes(buffer, buffer.length, process.standardOutput.bytesAvailable);
			}
&nbsp;
			protected function process_outputCloseHandler(event:Event):void
			{
				out.appendText(&quot;FLAC decoded in &quot; + (getTimer() - t) + &quot; ms\n&quot;);
			}
&nbsp;
			protected function sound_sampleDataHandler(event:SampleDataEvent):void
			{
				if (buffer.length &lt; (bufferSize * 4))
				{
					for (var i:int = 0; i &lt; (bufferSize * 2); ++i)
						event.data.writeFloat(0.0);
				}
				else if (buffer.position == buffer.length)
				{
					channel.stop();
					out.appendText(&quot;Stopped\n&quot;);
				}
				else
				{
					buffer.position = pos;
&nbsp;
					for (var j:int = 0; j &lt; (bufferSize * 2); ++j)
					{
						if (buffer.position == buffer.length)
							event.data.writeFloat(0.0);
						else
							event.data.writeFloat(buffer.readShort() / 32767.0);
					}
&nbsp;
					pos += (bufferSize * 4);
				}
			}
&nbsp;
		]]&gt;
	&lt;/fx:Script&gt;
&nbsp;
	&lt;s:TextArea id=&quot;out&quot;
				width=&quot;100%&quot;
				height=&quot;100%&quot;/&gt;
&nbsp;
&lt;/s:WindowedApplication&gt;</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=48</wfw:commentRss>
		</item>
		<item>
		<title>Flex Localised Resource Bundle Compiler</title>
		<link>http://compiler.kaustic.net/lab/?p=46</link>
		<comments>http://compiler.kaustic.net/lab/?p=46#comments</comments>
		<pubDate>Tue, 11 Aug 2009 21:45:08 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=46</guid>
		<description><![CDATA[The Flex compiler moaning Unable to resolve resource bundle &#8220;xxx&#8221; for locale &#8220;yy_ZZ&#8221; sound familiar?
If you&#8217;re lucky you get away with running copylocale, but i always stumble upon nastier stuff (most projects for Belgian clients are bi-lingual&#8230; erm&#8230; bi-local French/Dutch).
To solve this for once and for all i wanted to create an elegant ANT scripty [...]]]></description>
			<content:encoded><![CDATA[<p>The Flex compiler moaning <em>Unable to resolve resource bundle &#8220;xxx&#8221; for locale &#8220;yy_ZZ&#8221;</em> sound familiar?</p>
<p>If you&#8217;re lucky you get away with running copylocale, but i always stumble upon <a href="http://bugs.adobe.com/jira/browse/SDK-16142">nastier stuff</a> (most projects for Belgian clients are bi-lingual&#8230; erm&#8230; bi-local French/Dutch).</p>
<p>To solve this for once and for all i wanted to create an elegant ANT scripty that takes care of all my localisation woes&#8230; Something easy, as it should be (c).<br />
Thus i embarked on a (somewhat boring i must admit) adventure and started from the article <a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&amp;productId=2&amp;postId=12765">&#8220;Easily compile resource bundles using Ant&#8221;</a> which i improved a little here and there (uses compc.jar and not flexTasks, dynamically composes the -include-resource-bundles argument etc&#8230;) and did get some gratification i&#8217;d like to share.</p>
<p><a href="http://compiler.kaustic.net/lab/wp-content/uploads/2009/08/localisedresourcebundlecompiler.zip">Thou can download the project here.</a></p>
<p><strong>Configuration</strong>:<br />
- edit build.xml and change the FLEX_HOME property if needed<br />
- that&#8217;s it&#8230; the rest is automagically done for you&#8230; no locales or bundles to specify&#8230;</p>
<p><strong>Workflow</strong>:</p>
<p>Explode existing resource bundles<br />
- place .swc files under /src/main/resources/locale/{locale}/..<br />
- run ANT build script, target &#8220;explode-overwrite&#8221;</p>
<p>Compile resource bundles to swc or swf<br />
- place .properties files under /src/main/locale/{locale}/{bundle}/..<br />
- run ANT build script, target &#8220;compile-swc&#8221; (default) or target &#8220;compile-swf&#8221; (for runtime resource loading)</p>
<p><strong>Example</strong>:<br />
- copy the SDK compiled resource bundles under /src/main/resources/locale/en_US<br />
- run the &#8220;explore-overwrite&#8221; target<br />
- adapt the files under /src/main/locale/en_US to your liking + rename the en_US folder to your locale<br />
- run the &#8220;compile-swc&#8221; target</p>
<p>Et <em>voilà</em>! Happy multilingual times <em>verdekke nondedju</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=46</wfw:commentRss>
		</item>
		<item>
		<title>Arrangeball</title>
		<link>http://compiler.kaustic.net/lab/?p=45</link>
		<comments>http://compiler.kaustic.net/lab/?p=45#comments</comments>
		<pubDate>Mon, 01 Jun 2009 19:12:32 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=45</guid>
		<description><![CDATA[In the absence of more recent endeavours, here&#8217;s a flash-back (haha&#8230; erm&#8230;) that dates back to April 2002: Arrangeball
And here&#8217;s the cheesy manual&#8230; and here&#8217;s the original&#8230;
]]></description>
			<content:encoded><![CDATA[<p>In the absence of more recent endeavours, here&#8217;s a flash-back (haha&#8230; erm&#8230;) that dates back to April 2002: <a href="experiments/Arrangeball" target="_blank">Arrangeball</a></p>
<p>And <a href="experiments/Arrangeball/manual.jpg" target="_blank">here&#8217;s the cheesy manual</a>&#8230; and <a href="http://www.handheldmuseum.com/Misc/AOneArrangeBall.htm" target="_blank">here&#8217;s the original</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=45</wfw:commentRss>
		</item>
		<item>
		<title>Speaking at Flex Camp</title>
		<link>http://compiler.kaustic.net/lab/?p=43</link>
		<comments>http://compiler.kaustic.net/lab/?p=43#comments</comments>
		<pubDate>Tue, 09 Dec 2008 09:11:54 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=43</guid>
		<description><![CDATA[I will be speaking at Flex Camp next thursday December 11th in Antwerp, my topic&#8217;ll be Комитет Государственной Безопасности Secret Weapons: Messaging and AMF tricks. Aye komrads!
]]></description>
			<content:encoded><![CDATA[<p>I will be speaking at Flex Camp next thursday December 11th in Antwerp, my topic&#8217;ll be Комитет Государственной Безопасности Secret Weapons: Messaging and AMF tricks. Aye komrads!</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=43</wfw:commentRss>
		</item>
		<item>
		<title>MockRemoteObject</title>
		<link>http://compiler.kaustic.net/lab/?p=41</link>
		<comments>http://compiler.kaustic.net/lab/?p=41#comments</comments>
		<pubDate>Sun, 16 Nov 2008 19:30:09 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

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

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=41</guid>
		<description><![CDATA[When developing a business Flex application, you may sooner or later want to decouple the Flex side from the server side for (unit)testing purposes. With Cairngorm and PureMVC projects, i often see mock Delegates or Proxies appear (and some kind of injection). What i do most of the time is write the service implementation as [...]]]></description>
			<content:encoded><![CDATA[<p>When developing a business Flex application, you may sooner or later want to decouple the Flex side from the server side for (unit)testing purposes. With Cairngorm and PureMVC projects, i often see mock Delegates or Proxies appear (and some kind of injection). What i do most of the time is write the service implementation as an Interface and mock there instead of in the Proxy (PureMVC) or mock the ServiceLocator (Cairngorm) by using (in the case of Remoting) MockRemoteObjects.</p>
<p><a href="experiments/MockRemoteObject/">FlexUnit Example</a> [ <a href="experiments/MockRemoteObject/srcview">source</a> | <a href="experiments/MockRemoteObject/doc">documentation</a> | <a href="experiments/MockRemoteObject/Cortizone_MockRemoteObject.swc">library</a> ]</p>
<p><a href="experiments/MockRemoteObject_CairngormExample">Cairngorm Example</a> [ <a href="experiments/MockRemoteObject_CairngormExample/srcview">source</a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=41</wfw:commentRss>
		</item>
		<item>
		<title>Atari Punk Console + Pattern Sequencer</title>
		<link>http://compiler.kaustic.net/lab/?p=40</link>
		<comments>http://compiler.kaustic.net/lab/?p=40#comments</comments>
		<pubDate>Thu, 26 Jun 2008 21:11:11 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Audio Processing]]></category>

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

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=40</guid>
		<description><![CDATA[It&#8217;s not quite the next Hobnox Audiotool, but at least the code under the hood is starting to come together&#8230;
Build as a pure ActionScript Project in Flex Builder this time, check it out&#8230;
(Click the controller label and it changes the pattern for frequency, pulse width and volume. On the right there are CV&#8217;s for BPM, [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not quite the next <a href="?p=36">Hobnox Audiotool</a>, but at least the code under the hood is starting to come together&#8230;</p>
<p>Build as a pure ActionScript Project in Flex Builder this time, <a href="experiments/APC002" target="_blank">check it out</a>&#8230;</p>
<p>(Click the controller label and it changes the pattern for frequency, pulse width and volume. On the right there are CV&#8217;s for BPM, pan and master level.)</p>
<p>(Updated 080706 for Flash Player 10 Beta 2)</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=40</wfw:commentRss>
		</item>
		<item>
		<title>var apc:ISoundGenerator = new AtariPunkConsole();</title>
		<link>http://compiler.kaustic.net/lab/?p=39</link>
		<comments>http://compiler.kaustic.net/lab/?p=39#comments</comments>
		<pubDate>Sun, 25 May 2008 20:43:30 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Audio Processing]]></category>

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

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=39</guid>
		<description><![CDATA[After i placed a little noisemaker circuit originally drawn by Forrest M. Mims online as the &#8220;Atari Punk Console&#8220;, that name and circuit got a life on it&#8217;s own.
And now here&#8217;s the Flash software synth version in glorious pre-alpha rough fashion (Flash Player 10 required)!
I&#8217;ve got some ideas to turn this into something&#8230; stay tuned&#8230;
(Updated [...]]]></description>
			<content:encoded><![CDATA[<p>After i placed a little noisemaker circuit originally drawn by Forrest M. Mims online as the &#8220;<a href="http://compiler.kaustic.net/machines/apc" target="_blank">Atari Punk Console</a>&#8220;, that name and circuit <a href="http://en.wikipedia.org/wiki/Atari_Punk_Console" target="_blank">got a life on it&#8217;s own</a>.</p>
<p><a href="experiments/APC001" target="_blank">And now here&#8217;s the Flash software synth version in glorious pre-alpha rough fashion (Flash Player 10 required)!</a></p>
<p>I&#8217;ve got some ideas to turn this into something&#8230; stay tuned&#8230;</p>
<p>(Updated 080706 for Flash Player 10 Beta 2)</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=39</wfw:commentRss>
		</item>
		<item>
		<title>Behold, there&#8217;s noise coming out of my Astro!</title>
		<link>http://compiler.kaustic.net/lab/?p=38</link>
		<comments>http://compiler.kaustic.net/lab/?p=38#comments</comments>
		<pubDate>Sun, 18 May 2008 19:59:55 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Audio Processing]]></category>

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

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=38</guid>
		<description><![CDATA[Ahar me lads, the Flash Player 10 Beta is out of the bag and there&#8217;s a way to author content using the mxml compiler.
New features? Plenty&#8230;  One of them is real-time, dynamic audio processing. That&#8217;s right ladies and genetals! We&#8217;re talking synths and effects in Flash here!
This is so much fun, here&#8217;s one experiment [...]]]></description>
			<content:encoded><![CDATA[<p>Ahar me lads, the <a href="http://labs.adobe.com/technologies/flashplayer10/" target="_blank">Flash Player 10 Beta</a> is out of the bag and there&#8217;s a way to <a href="http://opensource.adobe.com/wiki/display/flexsdk/Targeting+Flash+Player+10+Beta+with+Flex+SDK+3.0.x" target="_blank">author content using the mxml compiler</a>.</p>
<p>New features? Plenty&#8230;  One of them is real-time, dynamic audio processing. That&#8217;s right ladies and genetals! We&#8217;re talking synths and effects in Flash here!</p>
<p>This is so much fun, here&#8217;s one <a href="experiments/SASLFOPT">experiment</a> (requires the Flash Player 10 and is loading a remix i&#8217;ll never finish&#8230;)</p>
<p>A big cheers to <a href="http://www.kaourantin.net/2008/05/adobe-is-making-some-noise-part-1.html" target="_blank">Tinic</a>, <a href="http://www.make-some-noise.info/" target="_blank">Joa and Andre</a>!</p>
<p>(Update 080706 Broken in Flash Player 10 Beta 2&#8230; i&#8217;ll fix this when i got a minute)</p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=38</wfw:commentRss>
		</item>
		<item>
		<title>Adobe, MAKE SOME NOISE</title>
		<link>http://compiler.kaustic.net/lab/?p=37</link>
		<comments>http://compiler.kaustic.net/lab/?p=37#comments</comments>
		<pubDate>Mon, 17 Mar 2008 19:50:16 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
		
		<category><![CDATA[Audio Processing]]></category>

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

		<guid isPermaLink="false">http://compiler.kaustic.net/lab/?p=37</guid>
		<description><![CDATA[A campaign for enhancing Flash audio
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobemakesomenoise.com/" target="_blank">A campaign for enhancing Flash audio</a></p>
]]></content:encoded>
			<wfw:commentRss>http://compiler.kaustic.net/lab/?feed=rss2&amp;p=37</wfw:commentRss>
		</item>
	</channel>
</rss>
