<?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>blog.joa-ebert.com - Blog of Joa Ebert &#187; news</title>
	<atom:link href="http://blog.joa-ebert.com/category/flash/news-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.joa-ebert.com</link>
	<description>Hacks, Cross-Compilers and other Weirdness.</description>
	<lastBuildDate>Fri, 15 Feb 2013 17:53:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Collateral Damage</title>
		<link>http://blog.joa-ebert.com/2012/03/28/collateral-damage/</link>
		<comments>http://blog.joa-ebert.com/2012/03/28/collateral-damage/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 17:05:28 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=874</guid>
		<description><![CDATA[I am no longer committed to supporting any Flash related open-source projects. Here is why. When I started using the Flash Player it was quite easy to reach its limits. However you were able to get around those limitations with clever hacks and debatable optimization techniques. I was always keen to share my knowledge with [...]]]></description>
				<content:encoded><![CDATA[<blockquote><p>I am no longer committed to supporting any Flash related open-source projects.</p></blockquote>
<p><!-- more -->Here is why. When I started using the Flash Player it was quite easy to reach its limits. However you were able to get around those limitations with clever hacks and debatable optimization techniques. I was always keen to share my knowledge with the community and to explore all possible options to achieve best performance.</p>
<p>The Flash Player has been hibernating for half a decade now. The only glimpse of performance was finally a set of specialized op-codes which allow you to modify an array of bytes. In layman&#8217;s terms this means it was finally possible to do <code>a[b] = c</code> with an acceptable performance. So I wrote a tool which allows you to do just that and many other things. I have spent a good time of my free time trying to improve the performance of the Flash Player and contributing all my code to the community.</p>
<p>As a reminder: I <a href="http://blog.joa-ebert.com/2009/09/28/fotb-recordings/">showed</a> some drastic performance improvements at Flash on the Beach in 2009. That was three years ago. It was not necessary to modify the Flash Player and it was not necessary to modify the ActionScript language. </p>
<p>The <a href="http://www.adobe.com/devnet/flashplatform/whitepapers/roadmap.html">Adobe roadmap for the Flash runtimes</a> states that Flash Player &#8220;Dolores&#8221;</p>
<ul>
<li>will support ActionScript Workers</li>
<li>comes with improved performance for Apple iOS</li>
<li>and  ActionScript 3 APIs to access the fast-memory op-codes</li>
</ul>
<p>This player should be released in the second half of 2012. The &#8220;Next&#8221; Flash Player will finally include</p>
<ul>
<li>modernizing the core of the Flash runtime</li>
<li>work on the VM</li>
<li>updates to the ActionScript language</li>
</ul>
<p>This is planned for 2013 apparently. And what can we expect? Type inference, static typing as a default, and hardware-oriented numeric types. Hooray, so it will be finally possible in 2013 to write <code>a[b] = c</code> without having to use some weird fast-memory op-codes. If we look back to the year 2009 this makes me really sad.</p>
<p>With the introduction of the <a href="http://ncannasse.fr/blog/adobe_announce_speed_tax">speed tax</a> you will now have to license your application. No matter if you make money out of it or not. Now I think that 9% is a decent number and I can understand Adobe&#8217;s position on this. In fact it is much more friendly than the 30% Google or Apple take. However the AppStore was an invention. What is the invention here? Squeezing money out of an already existing feature, and suddenly making it unavailable after people have been relying on it for years to push the boundaries of the platform and actually innovate?</p>
<p>But for the hell of it, <b><code>a[b] = c</code> is not a premium feature.</b> Nor are hardware accelerated graphics. That is what I would expect from any decent runtime.</p>
<p>Limiting the capabilities of a runtime &#8212; by defaulting back to software rendering for instance &#8212; will make it less attractive to use it in the first place. You are probably not interested to go through a signing progress for a small demo. So your performance might be crap, people will complain about the Flash Player taking 100% CPU because its using software rendering (YEY! 2013!), laptop fans will start to dance and you will look like a bad developer because that other guy got the same thing running with hardware acceleration. Or you could use a different technology.</p>
<p>Why is this bad? Because apparently this signing with a $50k threshold targets the enterprise and small developers seem to be acceptable collateral damage. However thinking about the next five to ten years: who is going to write ActionScript code if it is no longer attractive to play around with it in the first place?</p>
<p>We still rely on the Flash Player at <a href="http://www.audiotool.com/">audiotool.com</a>. I am still developing for it and we will probably have to use it as long as there is no alternative. Me no longer supporting open-source tools is just me no longer spending <strong>my</strong> personal time for a platform that I would not use for private stuff. Work is of course not always about fun. But fortunately I am able to spend 90% of my time writing Scala code.</p>
<p>I will finish this blog post with some <a href="http://blogs.unity3d.com/2012/03/28/unity-flash-update/">bad karma</A>:</p>
<blockquote><p>It’s also worth noting that the new Adobe license will prohibit scenarios where you’d have the first level of a game in the Flash Player, and the full experience inside the Unity Web Player. Alas, this is something you’ll need to be aware of if you were considering such a route.</p></blockquote>
<p>You will not only pay for the features. You are also welcome to cede some of your rights.</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2012/03/28/collateral-damage/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2012/03/28/collateral-damage/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Apparat 1.0 RC7 Is Here</title>
		<link>http://blog.joa-ebert.com/2010/10/06/apparat-1-0-rc7-is-here/</link>
		<comments>http://blog.joa-ebert.com/2010/10/06/apparat-1-0-rc7-is-here/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 12:19:03 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[asmifier]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jitb]]></category>
		<category><![CDATA[lwjgl]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=681</guid>
		<description><![CDATA[I wanted to make a simple bug fix release for Apparat since I solved some bugs and issues. However there are two additional features that are worth mentioning. First of all Apparat comes now with an ASMifier tool. This allows you to let Apparat generate code from an existing SWF. It will create a file [...]]]></description>
				<content:encoded><![CDATA[<p>I wanted to make a simple bug fix release for Apparat since I solved some bugs and issues. However there are two additional features that are worth mentioning. First of all Apparat comes now with an ASMifier tool. This allows you to let Apparat generate code from an existing SWF. It will create a file that contains a basic class structure with statements that you can directly use for <code>__asm</code> optimizations. You can also suppress all log output and turn Apparat into quiet mode by specifying <code>-Dapparat.quiet=true</code>.</p>
<p>Also worth mentioning: JITB ships now by default with Apparat. What does it mean? <del datetime="2010-10-06T11:43:52+00:00">Quadruple-rainbow in your face.</del> You can now run your SWF files with JITB if you follow the five golden steps to pure happiness:</p>
<ol>
<li>Download and install <a href="http://www.scala-lang.org/downloads" target="_blank" title="Scala Download">Scala 2.8.0</a></li>
<li>Type <code>scala</code> in a terminal, then type <code>println(System getProperty "java.library.path" split java.io.File.pathSeparatorChar mkString "\n")</code> and remember one of the folders</li>
<li><a href="http://sourceforge.net/projects/java-game-lib/files/Official%20Releases/LWJGL%202.5/" target="_blank" title="LWJGL Download">Download LWJGL 2.5</a> and extract somewhere</li>
<li>Copy the native libraries which are located in <code>lwjgl-2.5/native/YOUR OS/</code> into one of the folders that the Scala command showed you</li>
<li>Open a terminal, go into the Apparat installation directory and type <code>./jitb some.swf</code> to launch JITB
</ol>
<p>Now here is the problem. JITB is not complete and so it will probably fail with your SWF &#8212; In fact I can nearly gaurantee you that it will not launch your SWF. I included JITB basically because it already allows you to use GLSL shaders very easy and I know a lot of people would like to play around with that.</p>
<p>However I have created an archive of all files I showed at FOTB besides the files that came from <a href="http://www.derschmale.com/" title="DerSchmale" target="_blank">David&#8217;s laptop</a> since I do not have them on my machine. You might be interested in checking out Example12.as which is the one that uses GLSL shaders. If you want to compile your own version you will need to link apparat-ersatz.swc as an external library since it contains the <code>ContinuousFileLoader</code> and <code>GLSLShader</code> class. Happy hacking!</p>
<ul>
<li><a href="http://code.google.com/p/apparat/downloads/detail?name=jitb_examples.zip" title="jitb_examples.zip" target="_blank">Download the JITB Examples</a></li>
<li><a href="http://apparat.googlecode.com/" target="_blank" title="Apparat">Apparat on GoogleCode</a></li>
</ul>
<p><b>Update:</b> Also read <a href="http://www.derschmale.com/2010/10/07/ray-tracing-with-pixel-bender-using-jitb/" target="_blank" title="Ray tracing with Pixel Bender using JITB">Ray tracing with Pixel Bender using JITB</a> by David Laenarts for details on the FOTB demos.</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/10/06/apparat-1-0-rc7-is-here/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/10/06/apparat-1-0-rc7-is-here/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Disappointment No. 3</title>
		<link>http://blog.joa-ebert.com/2010/10/01/disappointment-no-3/</link>
		<comments>http://blog.joa-ebert.com/2010/10/01/disappointment-no-3/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 14:43:35 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[as3doc]]></category>
		<category><![CDATA[as3v]]></category>
		<category><![CDATA[code coverage]]></category>
		<category><![CDATA[flexmojos]]></category>
		<category><![CDATA[jitb]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=661</guid>
		<description><![CDATA[I created a couple of programs like AS3doc and AS3V. Both have never really gotten any adoption because I canceled their development. The reason was that Adobe shortly before or after I finished my tool released a competitive tool. Given the fact that I work fulltime on audiotool.com it is hard for me to find [...]]]></description>
				<content:encoded><![CDATA[<p>I created a couple of programs like AS3doc and AS3V. Both have never really gotten any adoption because I canceled their development. The reason was that Adobe shortly before or after I finished my tool released a competitive tool. Given the fact that I work fulltime on <a href="http://www.audiotool.com/" target="_blank">audiotool.com</a> it is hard for me to find some time off to develop those applications. Some of them are even not written for myself &#8212; like the FlexMojos code coverage.</p>
<p>However it happened again. I write a tool that is not even fully released yet and there comes Adobe around the corner with something that must have been in development for a while. Enough time to tell us that we can decide if we want to continue working on it or not.</p>
<p>I have no problem with Adobe developing such products. In fact I second that they have a Flex QA team which develops tools like FlexPMD and the recent coverage plug-in. However the way this process happens really frustrates me. Why would I want to work on something that Adobe is already developing somewhere silently and release it without giving anyone notice? But they do not owe me an explanation for what they do. It would also be arrogant to say that I demand to know upfront. </p>
<p>I am just sad that there is no dialog at all. This happened three times now. I will not continue doing this.</p>
<p>That does not mean I will stop working on Apparat and JITB. Only no more enterprise releated open source software.</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/10/01/disappointment-no-3/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/10/01/disappointment-no-3/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>PixelBender Support In Apparat</title>
		<link>http://blog.joa-ebert.com/2010/09/07/pixelbender-support-in-apparat/</link>
		<comments>http://blog.joa-ebert.com/2010/09/07/pixelbender-support-in-apparat/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 08:35:38 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[hydra]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pixelbender]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=651</guid>
		<description><![CDATA[Since PixelBender is becomming a more popular technology in the Flash ecosystem I decided to add first-class Apparat support for it. As you might know I have done a couple of different tools for PixelBender already. When I switched to Linux a while ago I had to discover that there is no compiler for PixelBender [...]]]></description>
				<content:encoded><![CDATA[<p>Since PixelBender is becomming a more popular technology in the Flash ecosystem I decided to add first-class Apparat support for it.</p>
<p>As you <a href="http://blog.joa-ebert.com/2008/09/08/pixelbender-runtime-compilation/" title="PixelBender Runtime Compilation" target="_self">might know</a> I have done a couple of <a href="http://blog.joa-ebert.com/2008/10/08/pixelbender-outline-view/" title="PixelBender Outline View" target="_self">different</a> <a href="http://blog.joa-ebert.com/pbdt/" target="_self" title="PBDT">tools</a> for PixelBender already.</p>
<p>When I switched to Linux a while ago I had to discover that there is no compiler for PixelBender available and also no PixelBender toolkit. Even PBDT does not work on Linux since it requires a compiler.</p>
<p>In the current state Apparat can read and write PBJ files. I already implemented the format two years ago for the outline view plug-in. But this time <a href="http://ncannasse.fr/" target="_blank" title="Nicolas Cannasse">Nicolas Cannasse&#8217;s</a> great work on the <a href="http://hxformat.googlecode.com/" title="hxformat" target="_blank">hxformat</a> library was my reference. </p>
<p>I will add two optimizations specific for PBJ files. TAAS will not be used here since it is only an unnecessary overhead.  You do not have to crack a nut with a sledgehammer. The PBJ format is already register based and has certain useful invariants.</p>
<p>To cleanup some mistakes of the PixelBender compiler I will add:</p>
<ul>
<li>Copy propagation</li>
<li>Dead Code Elimination</li>
</ul>
<p>The compiler is not bad. Compared to the ASC it is a beauty of technology that makes use of the <a href="http://www.llvm.org/" target="_blank" title="LLVM">LLVM</a>. However I think there must be some mistake in the code since unnecessary registers are used (Note: I doubt this is LLVMs fault but more the way how methods like sampleNearest are bound by Adobe). This can be solved with the simple optimizations I will add.</p>
<p>I will add some more things as well like a GLSL conversion or a DSL to write PixelBender kernels in Scala. If we get lucky this will also lead to a true cross platform opensource compiler for the PixelBender language. I think I will name that compiler <i>Hydra</i> :P</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/09/07/pixelbender-support-in-apparat/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/09/07/pixelbender-support-in-apparat/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New Apparat Example</title>
		<link>http://blog.joa-ebert.com/2010/05/26/new-apparat-example/</link>
		<comments>http://blog.joa-ebert.com/2010/05/26/new-apparat-example/#comments</comments>
		<pubDate>Wed, 26 May 2010 11:50:54 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[experiments]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[inline]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=595</guid>
		<description><![CDATA[Good news everyone. The Apparat inline expansion works now to full extent after fixing some minor bugs. A complete example is also available. Just change the paths in the build.properties file and compile everything using Ant. Use the inline feature with care. Apparat does not try to optimize your code and performs nothing but dead [...]]]></description>
				<content:encoded><![CDATA[<p>Good news everyone. The Apparat inline expansion works now to full extent after fixing some minor bugs. A complete example is also available. Just change the paths in the <code>build.properties</code> file and compile everything using Ant.</p>
<div align="center"><img src="http://blog.joa-ebert.com/wp-content/images/apparat-shot.png" width="399" height="183" alt="Apparat Example"/></div>
<p>Use the inline feature with care. Apparat does not try to optimize your code and performs nothing but dead simple inlining. This can lead to <b>slower</b> code due to the creation of lots of local registers. Your code gets also much bigger and will require more space in memory. I am actually not a fan of manual inlining at all. I think it makes only sense to inline code if you have a powerful optimizer available that will cleanup the whole mess.</p>
<p>The fun story about this example is that the inlined version is slower using the lastes Flash Player release candidate if you have only 40.000 particles. That is why I increased the number of particles to 80.000 ;). I developed the example using an old standalone player and the inlined version was nearly twice as fast. However when I watched the example in the browser with the latest release candidate the game was completely different. Kudos to Adobe for significantly improving the Flash Player performance!</p>
<ul>
<li><a href="http://www.joa-ebert.com/swfs/apparat-example/as3" target="_blank" title="Pure AS3 version">AS3-only Version</a></li>
<li><a href="http://www.joa-ebert.com/swfs/apparat-example/apparat" target="_blank" title="Inline version">Inline Version</a></li>
<li><a href="http://code.google.com/p/apparat/downloads/detail?name=apparat-ant-example.zip" target="_blank" title="Source">Source</a></li>
</ul>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/05/26/new-apparat-example/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/05/26/new-apparat-example/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Inline Expansion</title>
		<link>http://blog.joa-ebert.com/2010/05/24/inline-expansion/</link>
		<comments>http://blog.joa-ebert.com/2010/05/24/inline-expansion/#comments</comments>
		<pubDate>Mon, 24 May 2010 18:12:57 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[inline expansion]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=593</guid>
		<description><![CDATA[In addition to macro expansion Apparat has now inline expansion as well. It works nearly the same way as macro expansion but without most of its limitations. To define a class for inline usage it must extend apparat.inline.Inlined and all its methods must be static. However the cool thing is that you can also return [...]]]></description>
				<content:encoded><![CDATA[<p>In addition to macro expansion Apparat has now inline expansion as well. It works nearly the same way as macro expansion but without most of its limitations. To define a class for inline usage it must extend <code>apparat.inline.Inlined</code> and all its methods must be static. However the cool thing is that you can also return values in contrast to macro expansion. You can also pass normal parameters. For instance <code>FastMath.sin(FastMath.sqrt(2.0))</code> is valid code using inline expansion. It is enabled by default in TDSI.</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/05/24/inline-expansion/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/05/24/inline-expansion/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Macro Expansion</title>
		<link>http://blog.joa-ebert.com/2010/05/10/macro-expansion/</link>
		<comments>http://blog.joa-ebert.com/2010/05/10/macro-expansion/#comments</comments>
		<pubDate>Mon, 10 May 2010 17:31:34 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[inline]]></category>
		<category><![CDATA[macro expansion]]></category>
		<category><![CDATA[taas]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=588</guid>
		<description><![CDATA[Apparat has another new feature called Macro Expansion. I talked about this with Nico Zimmermann at FFK in Cologne. Nico was using TDSI for a project but he was not very satisfied with it because you have to inline all inverse-square root tricks manually. This is why Apparat has now macro expansion. I am actually [...]]]></description>
				<content:encoded><![CDATA[<p>Apparat has another new feature called <a href="http://code.google.com/p/apparat/wiki/MacroExpansion" title="Macro Expansion" target="_blank">Macro Expansion</a>. I talked about this with Nico Zimmermann at FFK in Cologne. Nico was using TDSI for a project but he was not very satisfied with it because you have to inline all inverse-square root tricks manually.<br />
This is why Apparat has now macro expansion. I am actually not a big fan of it. I think a good compiler would do this for you without you having to go through all the steps. Unfortunately writing this compiler will take longer than the couple of hours I have spent on the macro expansion today.</p>
<p>So if you want to have quick and dirty inlining capabilities: <a href="http://code.google.com/p/apparat/wiki/MacroExpansion" target="_blank" title="Macro Expansion">this is for you</a>. It is an easy fix for a feature a lot of people have asked for. I will continue working on TAAS to implement this much better in the future.</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/05/10/macro-expansion/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/05/10/macro-expansion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Apparat: Crunching SWF Files Since 2009</title>
		<link>http://blog.joa-ebert.com/2010/05/07/apparat-crunching-swf-files-since-2009/</link>
		<comments>http://blog.joa-ebert.com/2010/05/07/apparat-crunching-swf-files-since-2009/#comments</comments>
		<pubDate>Fri, 07 May 2010 15:37:04 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=578</guid>
		<description><![CDATA[Apparat has a great new feature that allows you to create even smaller files. Basic SWF files are compressed using Java&#8217;s standard java.util.zip.Deflater class. This is perfectly fine. And I would even go with no compression at all during development. However when deploying you can spend some extra time compressing your SWF files with the [...]]]></description>
				<content:encoded><![CDATA[<p>Apparat has a great new feature that allows you to create even smaller files. Basic SWF files are compressed using Java&#8217;s standard <code>java.util.zip.Deflater</code> class. This is perfectly fine. And I would even go with no compression at all during development.</p>
<p>However when deploying you can spend some extra time compressing your SWF files with the best tools available. <a href="http://www.7-zip.org/" target="_blank" title="7-Zip">7-Zip</a> is for instance such a tool and achieves a great compression ratio.</p>
<p>If you have the 7z executable on your <code>PATH</code> Apparat will make use of it to achieve the best compression for your SWF files. More configuration options are available <a href="http://code.google.com/p/apparat/wiki/HiddenGems" target="_blank" title="HiddenGems">here</a>.</p>
<p>This feature is currently only implemented for SWF files and not SWCs. However every tool will make use of it by default. So if you are running Reducer and have no graphics in your SWF files you can still get a better compression.</p>
<p>An example is straight from the sources:</p>
<blockquote><p><code>
<pre>reducer -i as3\Apparat.Tests.AS3\bin\Test07.swf
[i] Apparat -- http://apparat.googlecode.com/
[i] Launching tool: Reducer
[i] Waiting for 7z ...
[i] Compression ratio: <b>18.224573%</b>
[i] Total bytes: 310
[i] Completed in 547ms.</pre>
<p></code></p></blockquote>
<p>Note please that this SWF file does not contain any graphical assets and we got still a ratio of 18%. Our main <code>audiotool.swf</code> file is compressed by about 10% &#8212; about 200kb &#8212; and contains no graphical assets either.</p>
<p>You can download the latest Apparat on <a href="http://code.google.com/p/apparat/downloads/detail?name=apparat.zip"  target="_blank" title="Download Apparat">Google Code</a>. Please note that you will need <a href="http://www.scala-lang.org/downloads" target="_blank" title="Scala Downloads">Scala 2.8 RC1</a> as well.</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/05/07/apparat-crunching-swf-files-since-2009/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/05/07/apparat-crunching-swf-files-since-2009/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Audiotool 1.0</title>
		<link>http://blog.joa-ebert.com/2010/03/25/audiotool-1-0/</link>
		<comments>http://blog.joa-ebert.com/2010/03/25/audiotool-1-0/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 17:34:19 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[audiotool]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=541</guid>
		<description><![CDATA[We have finally released the first version of the Audiotool. I am very thankful for all the kind tweets and happy that our work is now available to the public. However the current version is named Firestarter for a reason. What you see online is just the tip of the iceberg. I can not wait [...]]]></description>
				<content:encoded><![CDATA[<p>We have finally released the first version of the <a href="http://www.audiotool.com/" target="_blank" title="Audiotool">Audiotool</a>. I am very thankful for all the kind tweets and happy that our work is now available to the public.</p>
<p>However the current version is named Fire<b>starter</b> for a reason. What you see online is just the tip of the iceberg. I can not wait to start implementing all the cool features that will separate us from traditional software ;)</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2010/03/25/audiotool-1-0/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2010/03/25/audiotool-1-0/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>TAAS As A Decompiler</title>
		<link>http://blog.joa-ebert.com/2009/09/29/taas-as-a-decompiler/</link>
		<comments>http://blog.joa-ebert.com/2009/09/29/taas-as-a-decompiler/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 09:59:30 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[decompiler]]></category>
		<category><![CDATA[haxe]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[taas]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=487</guid>
		<description><![CDATA[The TAAS compiler is different from the ActionScript compiler since its input is not ActionScript source code but already compiled SWF or SWC files. Just like the haXe compiler can output AS3 instead of a SWF the TAAS compiler can do the same. Now if you add one and one together you see that the [...]]]></description>
				<content:encoded><![CDATA[<p>The TAAS compiler is different from the ActionScript compiler since its input is not ActionScript source code but already compiled SWF or SWC files. Just like the <a href="http://www.haxe.org/" target="_blank">haXe</a> compiler <a href="http://haxe.org/doc/flash/as3gen" target="_blank">can output AS3</a> instead of a SWF the TAAS compiler can do the same.</p>
<p>Now if you add one and one together you see that the TAAS compiler can be used as a very strong decompiler. My own tests have shown that it will work flawlessly where other commercial decompilers output rubbish. Since the compiler behaves like the Flash Player it will &#8220;execute&#8221; the bytecode in order to parse it which means it has a very highlevel understanding of the structure inside the SWF.</p>
<p>The only question is now what to do with the source code. I wrote the decompiler for my session at FOTB to show much easier how the optimizations behave. It is also a great tool to debug errors. But should it be opened or not?</p>
<p>To take it one step further one might also be able to write an obfuscator using the TAAS compiler. In my opinion it would be cool to have a strong decompiler and obfuscator, both being open source. We might also add an option to protect SWFs from the decompiler by adding something to the SWF metadata for instance. Of course this is just a simple rule which could be removed by someone once the code is open. What do you think?</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2009/09/29/taas-as-a-decompiler/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2009/09/29/taas-as-a-decompiler/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>FOTB Recordings</title>
		<link>http://blog.joa-ebert.com/2009/09/28/fotb-recordings/</link>
		<comments>http://blog.joa-ebert.com/2009/09/28/fotb-recordings/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 20:29:19 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=484</guid>
		<description><![CDATA[The people from Powerflasher were kind enough to upload their recording of my FOTB session. I am sorry that the microphone stopped working at the end. But you might still be able to understand what I was talking about if you turn up the volume of your speakers. Link: Link: The recording of the jam [...]]]></description>
				<content:encoded><![CDATA[<p>The people from <a href="http://www.powerflasher.com/" target="_blank">Powerflasher</a> were kind enough to upload their recording of my FOTB session. I am sorry that the microphone stopped working at the end. But you might still be able to understand what I was talking about if you turn up the volume of your speakers.<br />
<span id="more-484"></span></p>
<div align="center">
<script type="text/javascript" src="http://de.sevenload.com/pl/admzN8j/400x258"></script>
<p>Link: <a href="http://de.sevenload.com/videos/admzN8j-Joa-Ebert-FOTB-Part-01"><img src="http://static.sevenload.com/img/sevenload.png" width="66" height="10" alt="Joa Ebert @ FOTB - Part 01" /></a></p>
<p><script type="text/javascript" src="http://de.sevenload.com/pl/Z4NlqkP/400x258"></script>
<p>Link: <a href="http://de.sevenload.com/videos/Z4NlqkP-Joa-Ebert-FOTB-Part-02"><img src="http://static.sevenload.com/img/sevenload.png" width="66" height="10" alt="Joa Ebert @ FOTB - Part 02" /></a></p>
</div>
<p>The recording of the jam session is also available.  I just want to note that I used the <a href="http://www.processing.org" target="_blank">processing</a> library inside Eclipse for the speedcoding. This time I also practiced at home unlike for other jam sessions. The visualizer was an homage to a <a href="http://www.youtube.com/watch?v=zCA79Du-WqY" target="_blank">table</a> designed by <a href="http://www.daftpunk.com/" target="_blank">Daft Punk</a> for <a href="http://www.habitat.net/" target="_blank">habitat</a>.</p>
<div align="center"><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6749871&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6749871&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></div>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2009/09/28/fotb-recordings/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2009/09/28/fotb-recordings/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>After The Sandbox</title>
		<link>http://blog.joa-ebert.com/2009/09/28/after-the-sandbox/</link>
		<comments>http://blog.joa-ebert.com/2009/09/28/after-the-sandbox/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 12:48:39 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[fotb09]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=477</guid>
		<description><![CDATA[In 2006 I got invited to the FlashForum Conference in Düsseldorf, Germany. It was my very first Flash conference and my topic was AS3 code optimization. I have talked a lot about bitwise operators, lookup tables and other techniques to speed your code up. Now about three years later I wanted to prepare a very [...]]]></description>
				<content:encoded><![CDATA[<p>In 2006 I got invited to the <a href="http://www.flashforum.de/" target="_blank">FlashForum</a> Conference in Düsseldorf, Germany. It was my very first Flash conference and my topic was AS3 code optimization. I have talked a lot about bitwise operators, lookup tables and other techniques to speed your code up.<br />
Now about three years later I wanted to prepare a very special talk for FOTB and make a step forward by getting rid of old <a href="http://wiki.joa-ebert.com/" target="_blank">habits</a> and <a href="http://je2050.de/files/misc/as3opt.pdf" target="_blank">idioms</a>. </p>
<p>Before <a href="http://www.flashonthebeach.com/" target="_blank">FOTB</a> I was not sure if I can present <a href="http://apparat.googlecode.com" target="_blank">Apparat</a> at all. For me as an autodidact it is not always easy to solve certain issues. <a href="http://www.quasimondo.com/" target="_blank">Mario Klingemann</a> talked about <i>Magic Moments</i> in Brighton. I guess I had one after a long time of thinking and failing. I got really into the flow and everything became so clear. Stay tuned for more detailed posts on the technique behind the different compilers.</p>
<p><span id="more-477"></span></p>
<p>However this was a really special conference for me. The standing ovations made me completely happy and I was absolutely overwhelmed by the response. After all those sleepless nights it was a huge gift of appreciation for my work. I will definitely  never forget that moment and all I can say is thank you. If you spend so much time working on an opensource project this is really the best that can happen. “Leaving the Sandbox” came from a long background. The end of the session was a really emotional for me. Thank you John for inviting me.</p>
<div align="center">
<div style="width:425px;text-align:left" id="__ss_2042016"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=render-090922122545-phpapp02&#038;stripped_title=leaving-the-sandbox" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=render-090922122545-phpapp02&#038;stripped_title=leaving-the-sandbox" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
</div>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2009/09/28/after-the-sandbox/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2009/09/28/after-the-sandbox/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Euro Invasion At MAX 2009</title>
		<link>http://blog.joa-ebert.com/2009/09/03/euro-invasion-at-max-2009/</link>
		<comments>http://blog.joa-ebert.com/2009/09/03/euro-invasion-at-max-2009/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 20:18:24 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[influxis]]></category>
		<category><![CDATA[max]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=470</guid>
		<description><![CDATA[Since the news has spread pretty quickly I want to shed some light on this as well. Influxis has invited a lot of European Flash developers to come to LA and attend Adobe MAX 2009. Those include Seb Lee Delisle, Ralph Hauwert, Mario Klingemann, Andre Michelle and me. I was absolutely overwhelmed when I heard [...]]]></description>
				<content:encoded><![CDATA[<p>Since the news has spread pretty quickly I want to shed some light on this as well. <a href="http://www.influxis.com/" target="_blank">Influxis</a> has <a href="http://labs.influxis.com/?p=504" target="_blank">invited</a> a lot of European Flash developers to come to LA and attend Adobe MAX 2009. Those include Seb Lee Delisle, Ralph Hauwert, Mario Klingemann, Andre Michelle and me. I was absolutely overwhelmed when I heard about that idea first. I really want to thank the whole Influxis team for making this possible. You guys definitly rock! But I would also like to thank Adobe for sponsoring MAX passes in order to get everyone invited.</p>
<p>Hopefully I will meet a lot of interesting people and Flash Player engineers. It will be my first MAX so I am really curious.</p>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2009/09/03/euro-invasion-at-max-2009/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2009/09/03/euro-invasion-at-max-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UML generation using Dump</title>
		<link>http://blog.joa-ebert.com/2009/08/20/uml-generation-using-dump/</link>
		<comments>http://blog.joa-ebert.com/2009/08/20/uml-generation-using-dump/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 18:11:39 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[dump uml apparat]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=458</guid>
		<description><![CDATA[Dump has now another cool feature: UML diagram generation. The UML diagram is exported in DOT format. I think this is a really cool feature because the graph is built by analyzing a SWF file and you get it for free. I will probably create a different tool to make full use of the UML [...]]]></description>
				<content:encoded><![CDATA[<div align="center"><img src="http://blog.joa-ebert.com/wp-content/images/uml_playerglobal.gif" alt="playerglobal.abc UML" border="0"/></div>
<p>Dump has now another cool feature: UML diagram generation. The UML diagram is exported in DOT format. I think this is a really cool feature because the graph is built by analyzing a SWF file and you get it for free. I will probably create a different tool to make full use of the UML generation since you could link multiple files together for a complete coverage. Since Graphviz is not able to underline text I have choosen to use a dollar sign for static methods. You will also get proper parameter names if you compile your SWF file in debug mode.</p>
<p>This is an example UML diagram for the <code>playerglobal.swc</code>. In order to create it I took the <code>playerglobal.abc</code> from the Tamarin sources and the command was <code>java -jar dump.jar -input playerglobal.abc -uml</code>.</p>
<p>Here are two example representations but be careful. The PNG size is 30831&#215;6232 and might crash your browser. Chrome can display the PNG for me but is not able to show the SVG correct. Firefox displays the SVG very well. You can download the PNG and open it in IrfanView or Photoshop to be safe.</p>
<ul>
<li><a rel="none" href="http://blog.joa-ebert.com/wp-content/images/uml_playerglobal.png" target="_blank" rel="lightbox[458]">PNG</a></li>
<li><a rel="non" href="http://blog.joa-ebert.com/wp-content/images/uml_playerglobal.svg" target="_blank">SVG</a></li>
</ul>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2009/08/20/uml-generation-using-dump/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2009/08/20/uml-generation-using-dump/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Inheritance Graphs</title>
		<link>http://blog.joa-ebert.com/2009/08/18/inheritance-graphs/</link>
		<comments>http://blog.joa-ebert.com/2009/08/18/inheritance-graphs/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:30:13 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat]]></category>
		<category><![CDATA[dot]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[graphviz]]></category>
		<category><![CDATA[inheritance graph]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=445</guid>
		<description><![CDATA[The Dump tool is now able to export an inheritance graph for a given ABC/SWC/SWF file. This is a very easy and nice way to look at the classes and their relationships. The small image shows the graph for one ABC file of the AudioTool. I think this it is pretty neat. You will need [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.joa-ebert.com/wp-content/images/inheritanceGraph.jpg" alt="Inheritance Graph" border="0" style="float: right; padding-left: 3px"/>The <a href="http://blog.joa-ebert.com/2009/08/17/dump-disassembler/" target="_self" title="Dump">Dump</a> tool is now able to export an inheritance graph for a given ABC/SWC/SWF file. This is a very easy and nice way to look at the classes and their relationships. The small image shows the graph for one ABC file of the AudioTool. I think this it is pretty neat.</p>
<p>You will need a program like <a href="http://www.graphviz.org/" target="_blank" title="Graphviz">Graphviz</a> to visualize the exported <a href="http://en.wikipedia.org/wiki/DOT_language" target="_blank" title="DOT Language">DOT file</a>. If you want to export the inheritance graph you basically write<code>java -jar dump.jar -input file.swf -ig</code>. I think this shows a really cool feature of Apparat. It is also very easy to reverse engineer a UML diagram. I am not interested in such a feature but maybe someone else.</p>
<p><b>Update:</b> Here is a full-size example for the inheritance graph of the unfinished ImageProcessing library I am currently working on.</p>
<div align="center"><a rel="none" href="http://blog.joa-ebert.com/wp-content/images/ip_ig_b.gif" target="_blank" title="ImageProcessing Library Inheritance Graph" rel="lightbox[445]"><img src="http://blog.joa-ebert.com/wp-content/images/ip_ig_s.jpg" width="420" height="69" alt="ImageProcessing Library Inheritance Graph" border="0"/></a></div>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2009/08/18/inheritance-graphs/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2009/08/18/inheritance-graphs/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Dump Disassembler</title>
		<link>http://blog.joa-ebert.com/2009/08/17/dump-disassembler/</link>
		<comments>http://blog.joa-ebert.com/2009/08/17/dump-disassembler/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 14:44:08 +0000</pubDate>
		<dc:creator>joa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[apparat dump]]></category>

		<guid isPermaLink="false">http://blog.joa-ebert.com/?p=439</guid>
		<description><![CDATA[A very important tool for SWF manipulation is a way to debug them and to have a look at the bytecode. Dump is a tool that does nothing else but listing all SWF Tags and ABC files the way Apparat represents them internally. I know that there are a lot of other tools out there. [...]]]></description>
				<content:encoded><![CDATA[<p>A very important tool for SWF manipulation is a way to debug them and to have a look at the bytecode. Dump is a tool that does nothing else but listing all SWF Tags and ABC files the way Apparat represents them internally.</p>
<p>I know that there are a lot of other tools out there. <a href="http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/modules/swfutils/src/java/flash/swf/tools/AbcPrinter.java" target="_blank" title="swfdump">swfdump</a> and <a href="http://hg.mozilla.org/tamarin-redux/file/b7e3811ee1ae/utils/abcdump.as" target="_blank" title="abcdump">abcdump</a> are great already. I have used swfdump from the Flex SDK before. But I dislike how they represent namespaces and the fact that not all properties are always shown. Dump is simple. It lists everything and uses the naming form the <a href="http://www.adobe.com/devnet/actionscript/articles/avm2overview.pdf" target="_blank">avm2overview.pdf</a>. </p>
<ul>
<li><a href="http://www.joa-ebert.com/files/zip/dump.zip" target="_blank" title="Dump">Download</a></li>
</ul>
<div class="none"><div class="g-plusone" data-href="http://blog.joa-ebert.com/2009/08/17/dump-disassembler/" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.joa-ebert.com/2009/08/17/dump-disassembler/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>
