<?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>UnitZeroOne &#187; News</title>
	<atom:link href="http://unitzeroone.com/blog/category/news/feed/" rel="self" type="application/rss+xml" />
	<link>http://unitzeroone.com/blog</link>
	<description>by Ralph Hauwert, Creative Developer, Consultant</description>
	<lastBuildDate>Mon, 21 Nov 2011 09:31:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Demo Video of WebM being decoded by Flash.</title>
		<link>http://unitzeroone.com/blog/2011/01/21/demo-video-of-webm-being-decoded-by-flash/</link>
		<comments>http://unitzeroone.com/blog/2011/01/21/demo-video-of-webm-being-decoded-by-flash/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 18:18:40 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://unitzeroone.com/blog/?p=565</guid>
		<description><![CDATA[Demo Video of WebM being decoded by Flash. from Ralph Hauwert on Vimeo. This is a little side project I have been playing with. I&#8217;m porting google&#8217;s libvpx using Adobe Alchemy to run WebM in Flash Player 10, which doesn&#8217;t &#8230; <a href="http://unitzeroone.com/blog/2011/01/21/demo-video-of-webm-being-decoded-by-flash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/19037862" width="640" height="475" frameborder="0"></iframe></p>
<p><a href="http://vimeo.com/19037862">Demo Video of WebM being decoded by Flash.</a> from <a href="http://vimeo.com/unitzeroone">Ralph Hauwert</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><strong> </strong>This is a little side project I have been playing with. I&#8217;m porting google&#8217;s libvpx using Adobe Alchemy to run WebM in Flash Player 10, which doesn&#8217;t support the format natively yet. Because it&#8217;s not much more then a small and experimental side project, I quickly made a video to show it&#8217;s progress up until now. Monday the new part in <a href="http://unitzeroone.com/blog/2011/01/16/the-particle-sessions-part-one-is-this-it/">the Particle Sessions</a> will appear.</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2011/01/21/demo-video-of-webm-being-decoded-by-flash/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Reviving this blog</title>
		<link>http://unitzeroone.com/blog/2011/01/06/reviving-this-blog/</link>
		<comments>http://unitzeroone.com/blog/2011/01/06/reviving-this-blog/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 21:38:28 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Random Thoughts]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=364</guid>
		<description><![CDATA[Hello there, and welcome again. So, this blog post at the beginning of 2011 is a result of my New Years resolution, which is to revive my blog to a fully functional and lively place. I apologize for it being &#8230; <a href="http://unitzeroone.com/blog/2011/01/06/reviving-this-blog/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://unitzeroone.com/blog/wp-content/uploads/317BCM-welcome-doormat-lg2.jpg"><img class="alignnone size-full wp-image-422" title="317BCM-welcome-doormat-lg" src="http://unitzeroone.com/blog/wp-content/uploads/317BCM-welcome-doormat-lg2.jpg" alt="" width="614" height="378" /></a></p>
<p>Hello there, and welcome again. So, this blog post at the beginning of 2011 is a result of my New Years resolution, which is to revive my blog to a fully functional and lively place. I apologize for it being mostly deserted. I left it alone since May 2010. Most of the reason behind the blog falling behind was that year&#8217;s fault really, not mine.</p>
<p><span id="more-364"></span></p>
<p>It was a good year. I started doing a project for <a href="http://www.aviary.com/">Aviary</a> and was honored to speak at many great conferences of the web industry. One of the most note worthy events for me personally was also to be part of <a href="http://tv.adobe.com/show/flash-camp-tokyo/">Adobe<strong> </strong>FlashCamp<strong> </strong>Tokyo</a> and <a href="http://www.fitc.ca/events/about/?event=108">Seoul</a>. It was a great trip and a privilege to hang out with such heroes as <a href="http://www.mikechambers.com/blog/">Mike Chambers</a>, <a href="http://www.quasimondo.com/">Mario Klingemann</a>, <a href="http://blog.theflashblog.com/">Lee Brimelow</a> and <a href="http://jot.eriknatzke.com/">Erik Natzke</a>. You can see Lee&#8217;s video report of that trip in <a href="http://vimeo.com/11147444">Flasher Magazine 3 on Vimeo</a>. (<a href="http://dougmccune.com/blog/">Doug McCune</a> is alive and well, despite what that video says).</p>
<p>Looking ahead, this year promises to be an equally great year. In the Flash space, one of my long time wishes, <a href="http://labs.adobe.com/technologies/flash/molehill/">GPU support for Flash</a> is on the shortlist for a public beta in this year. More on that in a later blog. Privately, many things are happening and I&#8217;m loving it. Let&#8217;s just say that good times are ahead.</p>
<p>As for the reasoning for why this year my blog will get updated on a regular basis; this year I&#8217;ll take it easy on the conferences. I&#8217;m not saying I won&#8217;t be speaking or going to any, but this year has so many things going on for me (both work and private) that I decided to at least take it easy for a while. How long that &#8220;while&#8221; is, I haven&#8217;t decided.</p>
<p>I&#8217;ll miss all the great people, but at the same time this will give me more time to focus, work and enjoy life. Also for this reason, I&#8217;ve decided the blog will be the main form of sharing information and hopefully share useful work and thoughts.</p>
<p>As I started thinking about topics, I realized I still had quite a backlog of things still to put out there publicly and decided to tackle them one by one. My last talk, aptly named <a href="http://www.flashonthebeach.com/sessions/index.php?pageid=2188">&#8220;The Discontinuity&#8221;</a> at <a href="http://flashonthebeach.com/">Flash on the Beach in Brighton</a> has ran exactly one time, with some still in progress work, which I&#8217;d like to talk about. Also, things like <a href="http://unitzeroone.com/labs/flashModPlug/">FlashModPlug</a> and my <a href="http://sourceforge.net/projects/rocket/develop">GNURocket</a> implementation are still to be publicized. About that GNURocket client implementation, 2010 was also the year of a true demoscene contribution, in the form of <a href="http://vimeo.com/16126716">Area Unstable (video)</a> <a href="http://pouet.net/prod.php?which=56106">(pouet download)</a>. This was made together with <a href="http://www.sanderfocus.nl/v4/">Sander.Focus (graphics)</a> and <a href="http://twitter.com/gloom303">Gloom303 (music,sync)</a>.</p>
<p>I&#8217;ve also branched out to doing iOS development and working on experiments using both <a href="http://www.openframeworks.cc/">OpenFrameworks</a> and <a href="http://libcinder.org/">Cinder</a>. So there&#8217;s many things still to blog about this year. But, one thing at a time, so I decided to work through a backlog and start with some Flash particle experimentation. My next post, due tomorrow, will outline the working and technicalities about this thing; <a href="http://unitzeroone.com/labs/particleVideo/">Rendering Video with White Particles (Flash)</a><strong>.</strong></p>
<p><strong>[Update, the blog gave up on me, and I had to reinstall it. Here's my blog in it's new form].</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2011/01/06/reviving-this-blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dear Steve,</title>
		<link>http://unitzeroone.com/blog/2010/01/27/dear-steve/</link>
		<comments>http://unitzeroone.com/blog/2010/01/27/dear-steve/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 22:57:17 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[letter]]></category>
		<category><![CDATA[letterfromafriend]]></category>
		<category><![CDATA[steve]]></category>
		<category><![CDATA[stevejobs]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=330</guid>
		<description><![CDATA[Long time no see! I&#8217;ve been busy, sorry. First off all, I want to congratulate you on the great show today. Wow, that iPad is truly one of those things everyone is going to want to have, like your previous &#8230; <a href="http://unitzeroone.com/blog/2010/01/27/dear-steve/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Apple Fail" src="http://www.unitzeroone.com/images/appleFail.jpg" alt="" width="430" height="252" /></p>
<p>Long time no see! I&#8217;ve been busy, sorry. First off all, I want to congratulate you on the great show today. Wow, that iPad is truly one of those things everyone is going to want to have, like your previous successes with the iPod and iPhone. I take my hat off for that! And wow, what a lead up to the show. Probably the first hype of 2010. And do you guys know how to keep a secret and then give a great show unveiling it.</p>
<p>That being said, I felt as an avid Apple products user as well as your friend, (you know I own a total of 3 Macbooks, a plethora of Airports and have converted nearly my entire family to buy one of those nice machines of yours) (actually it was <a href="http://www.gskinner.com" target="_blank"><strong>Grant</strong></a> who got me into buying one) it&#8217;s my duty to inform you that I think something went wrong during your presentation. When you were showing the web capabilities of the iPad, something was missing in it&#8217;s browser (see screen-shot above). As your keynote and product presentations are normally flawless (ah, well, maybe not always), I think you might have missed this one.</p>
<p>You touted the iPad&#8217;s (great product name, btw) web capabilities as being <a href="http://www.youtube.com/watch?v=Nx7v815bYUw" target="_blank"><strong>amazing, perfect, you know, the regular Apple thing</strong></a>. But during the presentation I couldn&#8217;t help but notice that little &#8220;missing plugin&#8221; logo we all know from the iPhone. Now, I was thinking that this might have been one of those very exotic plugins of back in the day, like Director or Realplayer. But, as it turned out, the missing plugin was the Flash Player.<br />
<span id="more-330"></span></p>
<p>As you&#8217;ve started the introduction to the iPad with a reference to Netbooks, and we can safely say that most netbooks support Flash, I think we are both safe to assume that to be on par with those netbooks, the minimum you should have is a fully featured browser?<br />
I mean, this is not some kind of small screen device with limited capabilities in terms of performance and graphics. It&#8217;s a fully featured machine ? Be it with that amazing iPhone touch interface. And be it in a slightly new package intended for true casual and business use. (Honestly, you kind of confused me, games and reading books ? I thought the gaming generation didn&#8217;t read and vice-versa, ah we&#8217;ll talk about that after you write me back on this letter).</p>
<p>Anyway, I think it must have been a demonstration error, because it seemed like the iPad didn&#8217;t support Flash?</p>
<div class="wp-caption alignnone" style="width: 440px"><img src="http://www.unitzeroone.com/images/myHeroes.jpg" alt="" width="430" height="211" /><p class="wp-caption-text">Mythhackers.</p></div>
<p>Ok, now, who am I kidding. I know you&#8217;re a perfectionist. And you&#8217;re a man of subtle remarks too. Between you and me, you can admit it. We both know that little missing plugin logo wasn&#8217;t an accident. I think we both know why you did it. It must have been your kind of humor, getting back at that little prank  <a href="http://www.youtube.com/watch?v=ZNtTfFDena4" target="_blank"><strong>Kevin and Johnny of Adobe pulled on you at Adobe MAX</strong></a>. (see picture above too). You have to admit, that was funny. Man, we all laughed about that one. But hey, I always think that if they&#8217;re teasing you, they must want your attention. All in all, they didn&#8217;t mean any harm.</p>
<p>(I do agree with you that they should&#8217;ve spent some more cash on the explosion effect in the video, being the maker of some of the most premiere video effect software out there, but hey, it was a good prank video, executed very well).</p>
<p>Now, given some of the <strong><a href="http://www.eeggs.com/tree/1141.html" target="_blank">easter eggs in Mac OS X</a></strong>, which essentially is your baby, through that other thing you did, with that next-cube thing you were so enthousiastic about back in the day, I take it you have a fair amount of subtle humor in you. It always reflects in your letters and I always have to laugh when I think about how you made that joke about a mouse only needing one button. But, as always, there&#8217;s a time for fun and a time for seriousness. And you seriously can&#8217;t mean that the full featured web browser doesn&#8217;t support the biggest plugin out there?</p>
<p>If you do mean it, I can understand why. I&#8217;ve never really bought that, &#8220;Flash is too slow for the iPhone&#8221; story you told everyone at that party. I also know for a fact that <a href="http://www.openscreenproject.org/partners/current_partners.html" target="_blank"><strong>RIM, Nokia, Samsung, NVidia and all those guys</strong></a> also didn&#8217;t believe it.</p>
<p>And yeah, I know that little stunt Adobe pulled with compiling directly from Flash to iPhone isn&#8217;t the same as running it in the browser, but hey, it is the output of Flash running on an iPhone. And surely there&#8217;s a lot of content which can now be readily available in the App store. And if that puny little ARM processor in an iPhone can, then surely that incredible piece of custom silicon you so proudly called the Apple A4 can. (it&#8217;s ARM too, right?).</p>
<div class="wp-caption alignnone" style="width: 440px"><img src="http://www.unitzeroone.com/images/flashOnIphone.jpg" alt="" width="430" height="264" /><p class="wp-caption-text">Your nightmare ?</p></div>
<p>Ahh, going off track, I was saying that I understood why you would not want Flash. I know having rich, web enabled apps which don&#8217;t go through the App store can be a scary thought, food for nightmares. I know you&#8217;ve had a thing for nightmares, especially after Monster&#8217;s inc. But Steve, I have to tell you. A device which is intended for casual and easy use with all the slickness Apple always brings, but doesn&#8217;t support so much web content? Come on, what will the people think? Those netbooks you called slow and PC-ish, can run Flash, but Apple&#8217;s state of the art technology can&#8217;t?</p>
<p>Yeah, I know it&#8217;s hard to have that piece of proprietary software running so much content essentially being a separate platform, while having no control over it. But that&#8217;s why Kevin and Johhny where throwing those jokes at you. They want to help you, really. And again between you and me, isn&#8217;t it true that you&#8217;re always selling computers when those guys at Adobe come up with a new version of their creativity software?</p>
<p>I would like to also come with a more serious note, as your friend, I know I can remind you of this one. Do you remember that when I was still using a PC, we were always talking sh*t about those guys at Microsoft for dominating the market? About how they pulled that monopoly thing on Netscape with that &#8220;lovely&#8221; (I still remember the word you had for it) browser we all still despise, Internet Explorer. And what they did to Real by bundling that Mediaplayer? Well, as it turns out, they kind of ran into some <a href="http://en.wikipedia.org/wiki/European_Union_Microsoft_competition_case" target="_blank"><strong>anti-trust issues with the European Union</strong></a>. I hear it was quite costly for Bill. While I agree the iPhone was a completely different thing, you can&#8217;t bring out a computer and expect everyone to think it&#8217;s just a big iPhone and then pull all that stuff off that our friend at Microsoft once did, right?</p>
<p>Yeah, yeah, I know what you&#8217;re going to say. Flash is proprietary too and there should be an open alternative to it. But honestly, in terms of open initiatives competing with it, it seems those HTML5 guys are still not ready for it, and although having H.264 video support native to the browser is nice, it hardly replaces what Flash can do right now. Not to mention all that content already being offered by Flash, people can&#8217;t see on the magnificent iPad. If pure HTML5 content is even 1% of that, we both know that would be a lot. I do feel you should be open to any plugin, honestly, so the guys at MS/Silverlight and Unity3D, for instance, also get a shot. All in all, it&#8217;s your product&#8217;s users who are going to suffer for it otherwise. Now, as I&#8217;ve made my living building Flash apps, of course I am biased, but doesn&#8217;t every developer deserve a fair shot?</p>
<div class="wp-caption alignnone" style="width: 440px"><img class=" " src="http://www.unitzeroone.com/images/steveAsIRememberYou.jpg" alt="" width="430" height="414" /><p class="wp-caption-text">You&#39;re the man!</p></div>
<p>You were always this idealist, but this thing is making you look like you are just plain greedy, at the cost of your end users, not being able to access all web content. Give me back the idealist Steve, I love that guy! (I&#8217;ve included an old picture of you to remind you of that man).</p>
<p>Now, you know I do admire that you&#8217;re not like all those others and you&#8217;re doing things your way (and it seems to work), I think you&#8217;re going down the wrong path on this one, or this might have been just an error. If it was, just fix it before release, and we&#8217;ll keep it between you and me.</p>
<p>Sincerest Regards, your friend,<br />
Ralph.</p>
<p><em>(quick note, can you make Johnathan stop saying the word Magical, every time he&#8217;s talking about one of the products he designs ? Frankly, it&#8217;s a bit annoying. And he&#8217;s not designing unicorns or leprechauns.)</em><br />
<em><br />
(quick note 2 : if you do manage to talk to Kevin or Shantanu at the next party, ask them if their engineering people can talk to your engineering people about that video hardware support and performance issues, I think it would make many of our friends happy).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2010/01/27/dear-steve/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>PixelBender Raytracer &amp; Milkyball</title>
		<link>http://unitzeroone.com/blog/2010/01/20/pixelbender-raytracer-milkyball/</link>
		<comments>http://unitzeroone.com/blog/2010/01/20/pixelbender-raytracer-milkyball/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 09:30:37 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash3d]]></category>
		<category><![CDATA[pixelbender]]></category>
		<category><![CDATA[raytrace]]></category>
		<category><![CDATA[triangle3d]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=319</guid>
		<description><![CDATA[Milkyball, a further extension of my Triangle3D experimentation, used in my presentation of end 2009. Click on the shape to see the magic vertexmap. PixelBender + Flash raytracer. Work in progress. I posted both of these earlier on my twitter &#8230; <a href="http://unitzeroone.com/blog/2010/01/20/pixelbender-raytracer-milkyball/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.unitzeroone.com/labs/vertexmap/" target="_blank"><img class="alignnone" title="Milkyball" src="http://www.unitzeroone.com/images/Milkyball.jpg" alt="" width="430" height="244" /></a></p>
<p>Milkyball, a further extension of my Triangle3D experimentation, used in my presentation of end 2009. Click on the shape to see the magic vertexmap.</p>
<p><a href="http://unitzeroone.com/labs/raytrace2/" target="_blank"><img class="alignnone" title="Raytrace" src="http://www.unitzeroone.com/images/raytrace.jpg" alt="" width="430" height="216" /></a></p>
<p>PixelBender + Flash raytracer. Work in progress.</p>
<p>I posted both of these earlier on <a href="http://www.twitter.com/unitzeroone/" target="_blank">my twitter</a> (@unitzeroone), but they didn&#8217;t make the blog as of yet. More details in future posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2010/01/20/pixelbender-raytracer-milkyball/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Flash 10, Massive amounts of 3D particles with Alchemy (source included).</title>
		<link>http://unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/</link>
		<comments>http://unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 15:26:12 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=201</guid>
		<description><![CDATA[Pushing around +300.000 3D particles, realtime, on screen, using Flash ? No problem, if you are using Adobe Alchemy &#38; PixelBender to compile and run your code! During my session &#8220;professionally pushing pixels&#8221; at FITC Amsterdam this year, amongst other &#8230; <a href="http://unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="See the demo." href="http://www.unitzeroone.com/labs/alchemyPushingPixels/" target="_blank"><img class="alignnone size-full wp-image-202" title="pushingpixels" src="http://unitzeroone.com/wordpress/wp-content/uploads/pushingpixels.jpg" alt="pushingpixels" width="430" height="140" /></a></p>
<p>Pushing around +300.000 3D particles, realtime, on screen, using Flash ? No problem, if you are using Adobe Alchemy &amp; PixelBender to compile and run your code!</p>
<p>During my session &#8220;<em>professionally pushing pixels</em>&#8221; at FITC Amsterdam this year, amongst other things, I talked about how to best utilize parts of the Flash Player to get top performance. This is one of the examples I showed. What you are seeing in this example, is +300.000 particles being 3D transformed, projected and draw to 2D. And it does so at quite a good framerate (well, it&#8217;ll depend on your machine too).</p>
<p>So, how do we achieve this ? The answer is a combination of PixelBender and Alchemy.</p>
<p><span id="more-201"></span></p>
<p><strong>First, let&#8217;s look at the 3D transformation and projection.</strong></p>
<p>Flash 10 has a number of native features to allow for 3D transformation and projection. You&#8217;ll find that this is a combination of using the Vector, Vector3D, Matrix3D, PerspectiveProjection, etc. Although these features are great, we can&#8217;t use them in combination with Alchemy easily. I&#8217;ll explain why later, for now, let&#8217;s look at an alternative method to do the projection.</p>
<p>Where oh where in the Flash Player do we have a method of doing very fast math ? The answer is; pixelbender! Although Pixelbender is normally used for image based manipulation, you can make it do any type of number-crunching which is able to be executed in parallel and without loops.</p>
<p>To calculate rotations and projecting our 3D data, we use Pixelbender in &#8220;ShaderJob&#8221; mode. When using pixelbender in image based mode, it operates in 8 bits per channel. Thankfully, when using it with a ShaderJob, it allows 32 bits precision per channel for the data processing. Since 8 bit precision wouldn&#8217;t be enough for this example, we use a shaderjob.</p>
<p>The VertexProjector pixelbender kernel, included with the source is a simple way of transforming and projecting vertices (representing particles, in this case) in 3D space. We feed this kernel a bytearray of x,y,z paired data, and execute the shaderjob. It then returns the data as a bytearray, in px, py, pz format.</p>
<p><strong>Drawing things to screen.</strong></p>
<p>Now we have all the 2D projected 3D data, we need to draw things to screen, and we have to do so as quickly as possible. This step is traditionally called rasterization. In AS3, you&#8217;re most likely to use getPixel when drawing on a per pixel basis. Doing so in a loop for 300.000 pixels turns out to be very slow. The solution for this would be to optimize that loop as much as possible. Either by writing your own bytecode, or maybe writing your own post-processor for you code, before you compile. But we don&#8217;t have too, since Adobe Alchemy exists.</p>
<p>As you can read in <strong><a href="http://www.unitzeroone.com/blog/2008/11/28/adobe-alchemy-is-it-actionscript-heresy/" target="_blank">my earlier post</a></strong> about Adobe Alchemy, I openly questioned why it was so speedy, as compared to regularly compiled ActionScript 3 code. Although the answer is rather complex, the combination of C Based code, the LLVM compiler and &#8220;Alchemy Virtual Memory&#8221; are the base of this. The large difference between Alchemy compiled actionscript and regular compiled Actionscript can be further explained by the regular AS3 compiler not doing any optimisation. This example shows off those performance increases.</p>
<p>One thing to worry about when using Alchemy in your ActionScript projects is marshalling. You can read Branden Hall&#8217;s post on Alchemy <strong><a href="http://www.automatastudios.com/2008/11/21/understanding-adobe-alchemy/" target="_blank">for more info on that</a></strong>. Since we wouldn&#8217;t be able to marshal 300.000 vertices from a Vector.&lt;Number&gt; in AS3 to our alchemy code, we need to find a better solution. This is exactly why we are using Pixelbender and more-over, the bytearray data.</p>
<p>It is possible to manipulate the memory Alchemy uses in the runtime. This memory is represented as an AS3 ByteArray object. If we directly write and get our data from this memory block, no marshalling is needed. Although this means not all things can be done this way, for some things, this can be very useful. For instance, getting large blocks of data, like images and bytearrays of coordinates.</p>
<p>Getting all these 3D particles to screen is simply 1 inner loop. While we would normally call setPixel for that, in Alchemy code, we don&#8217;t have that luxury. Instead of that, we write directly to our screenbuffer memory, which is represented as a set of int&#8217;s. Here, one more problem comes into play. <a href="http://en.wikipedia.org/wiki/Endianness" target="_blank"><strong>Endianess</strong></a>, defines the byte ordering for a set of data. Alchemy uses little-endianess for it&#8217;s internal memory representation. Specificall, it uses a small class called LEByteArray. This class extends ByteArray and ensures no changes are made to the endianess of the memory. Makes sense, since otherwise your code would blow up.</p>
<p>Writing to the screen is then a piece of cake. We take the alchemy processed data from it&#8217;s memory, and write it to a bitmapdata using the formerly much less usable setPixels() command. It&#8217;s amazing to see how fast this is.</p>
<p>Look at the <strong><a href="http://www.unitzeroone.com/labs/alchemyPushingPixels/" target="_blank">example here</a></strong>, and download <strong><a href="http://www.unitzeroone.com/labs/alchemyPushingPixels/alchemyParticlePusher.zip" target="_blank">the full sourcecode</a></strong> here. As you can see from the example, the difference between doing this with regular ActionScript versus Alchemy nears a 5 fold speed increase.</p>
<p>Thanks to <strong><a href="http://bit-101.com" target="_blank">Keith Peters</a></strong>, for providing me with the 3D Strange Attractor code! And additional thanks to <strong><a href="http://mrdoob.com" target="_blank">Mr.Doob</a></strong> for the stats object.</p>
<p>In future I&#8217;ll be posting more demos of the technology. Amongst which there will be one appliance for the future version of Papervision3D, <a href="http://blog.papervision3d.org/2009/03/16/papervisionx-what-it-is-and-what-it-isnt/" target="_blank"><strong>PapervisionX</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/feed/</wfw:commentRss>
		<slash:comments>84</slash:comments>
		</item>
		<item>
		<title>Ambassador for the Adobe User Group Netherlands.</title>
		<link>http://unitzeroone.com/blog/2009/03/18/ambassador-for-the-adobe-user-group-netherlands/</link>
		<comments>http://unitzeroone.com/blog/2009/03/18/ambassador-for-the-adobe-user-group-netherlands/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 09:28:25 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=190</guid>
		<description><![CDATA[The Dutch Adobe User Group is the fastest growing dutch community for creative professionals and I&#8217;m proud to announce I&#8217;m now officially an ambassador for the Adobe User Group. For those who know me a bit already, you&#8217;d know I &#8230; <a href="http://unitzeroone.com/blog/2009/03/18/ambassador-for-the-adobe-user-group-netherlands/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-199" title="augnl_header" src="http://unitzeroone.com/wordpress/wp-content/uploads/augnl_header.jpg" alt="augnl_header" width="430" height="228" /></p>
<p><strong><a href="http://adobeusergroup.nl">The Dutch Adobe User Group</a></strong> is the fastest growing dutch community for creative professionals and I&#8217;m proud to announce I&#8217;m now officially an ambassador for the Adobe User Group.</p>
<p>For those who know me a bit already, you&#8217;d know I used to be in the board for the User Group, and was amongst the original founders, after the Macromedia UG was rebooted as the Adobe User Group back in 2007.  In all honesty, I wasn’t able to be active beyond that point. A schedule of work, conferences and workshops has put me into a great place in my life, but I wasn&#8217;t contributing to this amazing community initiative, nor working as hard as my fellow board members. These guys have lifted an huge amount of work and enthousiasm to create an amazing User Group. The work they did has put this User Group at the top of the world wide lists of user groups.</p>
<p><span id="more-190"></span></p>
<p>Really ? Let&#8217;s talk some numbers. These days, the Dutch Adobe User Group has grown into a group of <strong>1700</strong> people, every themed meeting sees an average of 200 visitors. Simply amazing. This is an event anyone can join into, see great sessions, meet new people and have a general great time. All of that, for free. Make sure<strong><a href="http://www.adobeusergroup.nl/inschrijven" target="_blank"> you subscribe as a member</a></strong>. The presentations given at any meeting are of an amazing quality; amongst the big names are <strong><a href="http://www.akqa.com/" target="_blank">AKQA</a></strong>,<a href="http://www.wk.com/" target="_blank"><strong> Wieden + Kennedy</strong></a> and dutch agency <strong><a href="http://achtung.nl/" target="_blank">Achtung</a></strong>, who have been taking the visitor behind the scenes of their productions.</p>
<p>A personal highlight for me over the last year <strong><a href="http://www.adobeusergroup.nl/site/list_messages/71">was the arrival of the &#8220;German meeting&#8221;</a></strong>, where <strong><a href="http://www.powerflasher.com/" target="_blank">Powerflasher/FDT</a></strong>, <strong><a href="http://quasimondo.com/" target="_blank">Mario Klingemann</a></strong> and <strong><a href="http://void.andre-michelle.com/" target="_blank">Andre Michelle</a></strong> came to show off their magic. You&#8217;ll note that all the videos for this session are <strong><a href="http://www.adobeusergroup.nl/site/list_messages/159" target="_blank">AVAILABLE ONLINE</a></strong> ! Next to sessions, there are Awards where people can send in their work, discounts for creative magazines and sponsored networking drinks afterwards. The Dutch AUG is a great platform to raise your knowledge, inspiration and network. And again, all of this is free! How&#8217;s that possible ? Thanks to a wide range of corporate sponsors formed by leading industry companies.</p>
<p>Now, back to my role in all of this. My personal opinion was that they should&#8217;ve kicked me out of the management a long, long, long time ago. Instead of that, I feel honored they asked me to become their ambassador. In this role I&#8217;ll try and spread the word about this user group, and hope I can be a utility to extend the success.</p>
<p>None of this would have been possible without these great management members:</p>
<p>Bert Hagendoorn (Adobe Benelux) &#8211; Manager<br />
Niels de Keizer (Nyls.nl) &#8211; Co-manager<br />
Mark de Jong (Streaming Media Partners Europe) &#8211; Secretary<br />
Ben Smeets (Logica) &#8211; Treasurer<br />
Owen van Dijk (BGP) &#8211; Founder, Program Director en Events</p>
<p>The next meeting will be on the 13th of May and will be themed &#8220;Games&#8221;.</p>
<p>I&#8217;m extremely happy they asked me to fulfill the role of ambassador, and I&#8217;m not the only one, as <strong><a href="http://www.nalden.net/#/newsitem/1037/" target="_blank">Nalden</a></strong> is one too!</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2009/03/18/ambassador-for-the-adobe-user-group-netherlands/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Playing with Alchemy : C64 Music Playback on Flash 10.</title>
		<link>http://unitzeroone.com/blog/2009/02/12/playing-with-alchemy-c64-music-playback-on-flash-10/</link>
		<comments>http://unitzeroone.com/blog/2009/02/12/playing-with-alchemy-c64-music-playback-on-flash-10/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 17:15:58 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Cool Sites]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[alchemy]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[c64]]></category>
		<category><![CDATA[opcodes]]></category>
		<category><![CDATA[sid]]></category>
		<category><![CDATA[virtual machine]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=176</guid>
		<description><![CDATA[It&#8217;s been silent here. Next to tripping to Tokyo to speak at Adobe MAX in Januari and doing some small jobs, I&#8217;m doing a very, very cool Flash 10 Project utilizing the upcoming Papervision for Flash 10. For some optimization &#8230; <a href="http://unitzeroone.com/blog/2009/02/12/playing-with-alchemy-c64-music-playback-on-flash-10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.unitzeroone.com/labs/tinysidflash/" target="_blank"><img class="alignnone size-full wp-image-180" title="6581" src="http://unitzeroone.com/wordpress/wp-content/uploads/6581.jpg" alt="6581" width="430" height="195" /></a></p>
<p>It&#8217;s been silent here. Next to tripping to Tokyo to speak at Adobe MAX in Januari and doing some small jobs, I&#8217;m doing a very, very cool Flash 10 Project utilizing the upcoming Papervision for Flash 10. For some optimization parts I&#8217;ve been looking into using Alchemy as an easy way to write optimized bytecode. As opposed to what some people took from my previous post on Alchemy, I don&#8217;t hate Alchemy. My point there was that if Alchemy can perform that well, so should ActionScript be able to, with the standard compiler.</p>
<p><span id="more-176"></span></p>
<p>Now, that being said, all work and no play makes jack a dull boy. With no time to spare during the morning, daytime and evening, I took the laptop with me to bed last night, and decided to do something I didn&#8217;t do before, port something with <strong><a href="http://labs.adobe.com/technologies/alchemy/" target="_blank">Adobe Alchemy</a></strong>. I decided upon a long time thing on my wish list; SID Playback in Flash. <strong><a href="http://en.wikipedia.org/wiki/MOS6581" target="_blank">What is SID ?</a></strong> Well, SID stands for Sound Interface Device, referring to the MOS6581 and it&#8217;s a programmable audiochip as used in the Commodore 64 and Commodore 128. I grew up with the Commodore 64, and the audio it produces is still something I hold dearly. You are quite likely to have heard a SID chip before, if you listen to the radio, as it is quite a possible you&#8217;ve heard one of these baby&#8217;s scream. Good recent examples are :</p>
<p><strong><a href="http://www.youtube.com/watch?v=8cWL89fjfUU" target="_blank">Bastian &#8211; You&#8217;ve got my love.</a></strong> (the beat in this song comes from Jeroen Tel&#8217;s Rubicon).</p>
<p><strong><a href="http://www.youtube.com/watch?v=zusMLb44qXE" target="_blank">Nelly Furtado &#8211; Do It</a></strong> (controversy all around, <strong><a href="http://en.wikipedia.org/wiki/2007_Timbaland_plagiarism_controversy" target="_blank">Timbaland blatantly stole Glenn Rune Gallefoss&#8217;s version of Acid Jazzed Evening</a></strong>).</p>
<p><strong><a href="http://www.youtube.com/watch?v=1teWn-HDUv4" target="_blank">De Jeugd van Tegenwoordig &#8211; Hollereer</a></strong> (Produced by Bastian, C64 lover himself).</p>
<p>My interest was more playing back the old C64 tunes from games and demos. Keep in mind, an average SID file is about 2kilobyte to 10kilobyte; a perfect Small Web Format for all your music during preloading needs <img src='http://unitzeroone.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Now, this is something I have been working on before in Flash 9, using the <strong><a href="http://osflash.org/fc64" target="_blank">FC64 project</a></strong>, the amazing Flash C64 emulation effort by Claus Wahlers and Darron Schall. Last year, I even made a start with porting FC64 to Flash 10, but that needed to be dropped in favor of actual client work. SID Playback is something different from playing back .mod .xm or .mid files, as the SID chip doesn&#8217;t do much on it&#8217;s own. Essentially, a .SID file is an executable meant to be ran on the 6510, the Commodore 64&#8242;s CPU. So to playback the file, you not only need to emulate the SID chip, but also the 6510 and the needed registers / memory.</p>
<p>Software emulation of the SID chip has been around for a while, and all modern platforms have a way of playback SID files. Winamp plugins, command line utilities for conversion, it&#8217;s all there. As is there opensource code to do this. There&#8217;s libraries for most major languages. So, after a bit of research, I decided upon the <strong><a href="http://www.rsinsch.de/?id=7298b" target="_blank">Linux version of TinySid</a></strong>. This library is small enough and well optimized. It looked simple to port, so I went at it. All in all, 4 hours later, I had this baby up and running! (And an unhappy girlfriend who isn&#8217;t into the nerd thing, nor is she into listening to chiptunes whilst trying to sleep). Considering my very rusty C and a little hack around I had to do for the audio output, Alchemy shows off it&#8217;s feathers here. Many kudo&#8217;s to the Alchemy and Flash Player team for this effort. Just now I spent half an hour building a tiny interface using <strong><a href="http://www.bit-101.com/blog/?p=1217" target="_blank">Keith Peter&#8217;s Minimal Components</a></strong>, and collected some songs; and here it is.</p>
<p><strong><a href="http://www.unitzeroone.com/labs/tinysidflash/" target="_blank">TinySidFlash (open link, requires Flash 10).</a></strong></p>
<p>My favorites : Politik and Science (A C64 version of Coldplay&#8217;s the Scientist), Morphing and Turbo. Yes, I love Dane&#8217;s tunes!</p>
<p>There&#8217;s no code yet, as this is still very rough and unfinished work. I&#8217;m pretty sure that when I get time again, I&#8217;ll have a go at LibSidPlay instead, since the overall emulation in that library is a lot better.</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2009/02/12/playing-with-alchemy-c64-music-playback-on-flash-10/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Adobe Alchemy, is it ActionScript heresy ?</title>
		<link>http://unitzeroone.com/blog/2008/11/28/adobe-alchemy-is-it-actionscript-heresy/</link>
		<comments>http://unitzeroone.com/blog/2008/11/28/adobe-alchemy-is-it-actionscript-heresy/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 15:31:56 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[alchemy]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[haxe]]></category>
		<category><![CDATA[opcodes]]></category>
		<category><![CDATA[virtual machine]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=167</guid>
		<description><![CDATA[Take your time, this is a lengthy post. Before I jump in the matter, I want to go back a bit. The magic of C64 Assembler One of my first experiences with computer programming was on the C64. My dad &#8230; <a href="http://unitzeroone.com/blog/2008/11/28/adobe-alchemy-is-it-actionscript-heresy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-169" title="smallalchemist1" src="http://unitzeroone.com/wordpress/wp-content/uploads/smallalchemist1.jpg" alt="" width="430" height="221" /></p>
<p>Take your time, this is a lengthy post. Before I jump in the matter, I want to go back a bit.</p>
<p><strong>The magic of C64 Assembler</strong></p>
<p>One of my first experiences with computer programming was on the C64. My dad bought my uncles C64&#8230;&#8230; Of course we played games at first, but at some point I started to look at all the books that my uncle had gaven with it. One of the first books I opened up and started playing with was called &#8220;Basic for Beginners&#8221;. I remember thinking, wow, so this is how you make games ? I started playing with existing programs and later on began writing my own, such brilliant programs as &#8220;My cassette collection&#8221; and &#8220;Adding Numbers&#8221;. But what I really wanted was to write my own games.</p>
<p>How come my C64 basic programs where always so slow ?  Surely, there must be something I was doing wrong. With nobody around to teach me, or tell me anything about this machine, I dived in the pile of books that came with the computer once again. Two books took my interest. &#8220;C64 Programmers Reference Guide&#8221; and a home printed &amp; binded book that had written on it &#8220;C64 Kernel listing&#8221;. I had two problems with these, being 1, my ability to read english and understanding the magic listings this book had. It took me a long, long time to grasp what these books where saying, but these 2 books, together with a dutch book on C64 programming, I slowly learned how to do 6510 assembly language for the C64.</p>
<p><span id="more-167"></span></p>
<p>This was the realm of pure magic. All of a sudden things went a lot faster. Moving a sprite along the screen could be done fast and smooth. But things where a lot more complicated. 6510 (or actually 6502, for the purists) asm, although especially now a days, quite simple, isn&#8217;t exactly humanly readable, nor was it clear to me how to structure full programs or games. I learned how to do a lot of tricks, like getting more then the 8 hardware supported sprites on screen at the same time (something then called multiplexing), playing sound while still having being able to do other things at the same time, getting sine waving color bars on screen and screen border, but I never managed to build a full game. What I learned about that was that interpreted basic was a lot slower then assembler and if you wanted to get real speed you&#8217;d have to target the platforms native code. Assembler wasn&#8217;t magic, it was just a better way to target the platform.</p>
<p><strong>Back to current day. </strong><br />
I&#8217;ve been working with Flash for almost 9 years now. I dare to say I know quite a lot of Flash as a platform, and have been doing many projects and experimentation with it. Last year at MAX, when FlaCC or now, Alchemy was shown it looked like pure magic! Sure, I understood the basic principles, but running Quake in the Flash VM was nothing short of magic. Running Quake within the Flash VM using a port of the C code was quite an achievement, but the speed was more incredible. This was nothing short of pure magic, like turning lead into gold!</p>
<p>It&#8217;s an ironic name Adobe chose for FlaCC. Let&#8217;s look at the word and dabble into the occult. There&#8217;s a clear distinction between alchemy and science. Alchemy is most known for trying to create noble metals from otherwise less-valuable materials. Even Sir. Isaac Newton spent a lot of time in the field, surprisingly, even more time then he spent working on subjects such as optics and physics, for which he is most known. In a way, Alchemy is the forerunner for what now is chemistry. From the occult to exact sciences. So, with that name, is Adobe suggesting Alchemy is pure magic ? Turning lead into gold ?</p>
<p><strong>Is it witchcraft ? </strong><br />
After the initial amazement I had with seeing Quake run within Flash, I started to question some things and started asking around with people who might know more of this witchcraft. Was this really Flash Player 9 running this ? From multiple sources I heard it was a slightly modified version of the Flash Player 9. Something to do with reserving a block of memory. Later on, after finding<a href="http://llvm.org/devmtg/2008-08/Petersen_FlashCCompiler_Hi.m4v" target="_blank"> <strong>Scott Petersen his LLVM session on this subject</strong></a>, this was confirmed. In this session, Scott also shows an emulator running on top of the Flash VM. Having some experience in the FC64 (a commodore 64 emulator for flash) project, again, the speed was pure magic.</p>
<p>What I ended up finding most interesting about Alchemy, wasn&#8217;t the ability to take C code and compile it to Flash (although that&#8217;s an incredible achievement on itself), but the pure raw speed it seemed to harness. And with that, I also got a bit disappointed in Flash. It boils down to this.</p>
<p>The first magic bullet in Flash speed came in the form of the ActionScript Virtual Machine 2. With JIT compilation of ActionScriptByte code the platform just became a whole lot faster. With the coming of the AVM2, lot&#8217;s of things have changed. For me personally, one of the displays of the game changer was <a href="http://blog.papervision3d.org"><strong>Papervision3D</strong></a>, in which I got involved quite early on. <a href="http://rockonflash.wordpress.com/2007/01/10/macworld-as2as3-speed-comparision-demo/"><strong>John Grden&#8217;s early demo using Papervision3D running on AS3</strong></a> was an incredible testament to the speed of the AVM2. Now, that demo was built using ActionScript 3 as the language to be compiled down to ABC. ActionScript 3 is the language which was intended to run on top of this platform and one might thus derive that the language and it&#8217;s compiler is most optimized for the AVM2. So logically, one might asses that the best way to write code for the AVM2 is using ActionScript.</p>
<p><strong>Heresy I say! Heresy! Burn the witch!</strong><br />
Alchemy is proof that this is not the case. Here&#8217;s a bit of pure heresy in the Adobe church : Alchemy is a testament to the underachievement of the ActionScript compiler. Ouch. Surely, this can&#8217;t be the case, right ? Well, yes and no.</p>
<p>Let&#8217;s start with the &#8220;no&#8221; part. That reference of a modified player running Quake was partially true. This was an early demo of Flash 10, in a way. As Nicolas Canasse points out in this blog post about <a href="http://ncannasse.fr/blog/virtual_memory_api"><strong>Alchemy virtual memory opcodes</strong></a>, it seems like Alchemy is cheating a bit. Cheating ? While, yes. This part of the API is not available from within ActionScript itself. So, the platform (AVM2) now has features which are not supported by the language which is native to it ? Wow. I find this a very significant move by Adobe. Moving to a more flexible compiler makes total sense, but is this the first symptom caused by the <a href="http://whydoeseverythingsuck.com/2008/08/ru-roh-adobe-screwed-by-ecmascript.html"><strong>EcmaScript4 draft debacle</strong></a> ?</p>
<p>To achieve the speed as displayed by Alchemy, I have thus have to move to using C code, or <a href="http://haxe.org/"><strong>HaXe</strong></a> to compile for the AVM ? This is odd, to say the least. Nicolas his work on HaXe is nothing less then brilliant. The features this compiler has are those which would greatly help the development of a 3D engine, such as Papervision3D. I&#8217;ve always had a great deal of interest of porting Papervision3D to HaXe, purely to be able to implement things like inlining easily, which will safe us function calls and thus speed up the process of rendering 3D to the screen. The downside to that is, that the code base would have to change to HaXe, and thus become incompatible with the compilers of Flash and Flex. We (Papervision3D) could provide with a SWC built with HaXe, but in a way, I&#8217;m still a bit weary of that.</p>
<p>Now we come to the yes part, of my earlier &#8220;yes and no&#8221;. Next to the virtual memory opcodes that are currently unsupported from within the AS3 language, Branden Hall states something very disturbing on his blog about Alchemy, &#8220;<a href="http://www.automatastudios.com/2008/11/21/understanding-adobe-alchemy/"><strong>Understanding Adobe Alchemy</strong></a>&#8220;.</p>
<p><em>&#8220;In fact, because LLVM does a lot of optimizations, whereas Flash and Flex have no optimization step built into their compilers, Alchemy code manages to overcome a lot of it is overhead just on its own.&#8221;</em></p>
<p>Ok, that is down right disturbing. The AVM2 was built with ActionScript in mind and visa versa. But compiling C using LLVM with ActionScript as a target produces <span style="text-decoration: line-through;">better</span> faster ActionScript (that&#8217;s actionscript, not bytecode) then the actual compiler built for the platform does ? Ouch. Now, moving to C development for the ActionScript platform to utilize this &#8220;magically&#8221; acquired speed seems somewhat illogical to me ? <strong><a href="http://blog.joa-ebert.com/2008/02/28/flex-compiler-open-source-the-logical-consequences/" target="_blank">Joa Ebert already showed us</a></strong> some work he had done on the compiler, allowing for inline bytecode to be used. Nicolas shows us he can harnass the new Virtual Memory Opcodes, and his work on HaXe also shows us that <strong><a href="http://haxe.org/ref/inline">inlining is very, very nice</a></strong>.</p>
<p>I&#8217;d love someone from adobe shedding some light on this issue. I love the Flash Platform, I love the work all the people at Adobe do, but this leaves me somewhat confused on how to develop for the platform I hold so dearly. If we have to let go of ActionScript to harness the pure speed Alchemy proofs is possible, then tell us. What is the future of our beloved language and our compilers for it ?</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2008/11/28/adobe-alchemy-is-it-actionscript-heresy/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
<enclosure url="http://llvm.org/devmtg/2008-08/Petersen_FlashCCompiler_Hi.m4v" length="424159663" type="video/x-m4v" />
		</item>
		<item>
		<title>OpenSource Image Dithering for AS3. (demo+source).</title>
		<link>http://unitzeroone.com/blog/2008/05/06/opensource-image-dithering-for-as3-demosource/</link>
		<comments>http://unitzeroone.com/blog/2008/05/06/opensource-image-dithering-for-as3-demosource/#comments</comments>
		<pubDate>Tue, 06 May 2008 15:47:28 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[dithering]]></category>
		<category><![CDATA[halftone]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=155</guid>
		<description><![CDATA[Intro As promised in my previous post, here&#8217;s a small opensource project from my side. It&#8217;s tiny, really, but I hadn&#8217;t seen an ActionScript implementation of any form of Image dithering before. Dithering&#8230;.what ? Just a brief explanation what dithering &#8230; <a href="http://unitzeroone.com/blog/2008/05/06/opensource-image-dithering-for-as3-demosource/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Image Dithering" href="http://www.unitzeroone.com/examples/ImageDithering/index.html" target="_blank"><img class="alignnone size-full wp-image-156" title="Lena normal and Lena Dithered" src="http://unitzeroone.com/wordpress/wp-content/uploads/lenas.jpg" alt="" width="430" height="200" /></a></p>
<p><strong>Intro<br />
</strong></p>
<p>As promised in my previous post, here&#8217;s a small opensource project from my side. It&#8217;s tiny, really, but I hadn&#8217;t seen an ActionScript implementation of any form of Image dithering before.</p>
<p><strong>Dithering&#8230;.what ? </strong></p>
<p>Just a brief explanation what dithering in this context means. <a href="http://en.wikipedia.org/wiki/Dithering" target="_blank">From wikipedia</a> :</p>
<p><em>&#8220;<strong>Dither</strong> is an intentionally applied form of noise, used to randomize quantization error, thereby preventing large-scale patterns such as contouring that are more objectionable than uncorrelated noise.&#8221;</em></p>
<p>Words to take note of in that sentence are quantization, and &#8220;intentionally applied form of noise&#8221;. In our case quantization is the removal or swapping of colors. The form of noise applied differs over the several implementations and in so called &#8220;ordered dithering&#8221; it&#8217;s hardly noise, rather a carefully chosen threshold matrix.</p>
<p><strong>Dithering, why ? </strong></p>
<p>Dithering imagery has been around for some time. Put a close eye to any black and white printed newspaper&#8217;s pictures and you&#8217;ll see the effect.</p>
<p>It&#8217;s basically been around a lot longer then I have in my 28 years of life&#8230;that&#8217;s for sure. I first learned terms like &#8220;ordered dithering&#8221; and &#8220;Floyd-Steinberg Error Diffusion&#8221; in my young and early days on the Amiga hardware. See, in those days computer hardware wasn&#8217;t capable of displaying the huge arrays of colours like now-a-days. Since you then had few colours to spare (a typical amiga workbench ran at 16 to 128 colours or so), you needed to be creative to get yourself a nicely pimped desktop image, whilst still sparing colours for your icons.</p>
<p>A better example of a dithering implementation for our industry is probably that checkbox when you want to save for web in Photoshop, using GIF. Or when you print something on a pure black and white printer.</p>
<p>Conclusion; dithering is normally used to create the illusion of tones on a device which is otherwise not capable of displaying it. So why port this to our ARGB/32Bit enabled Flash Player ? Part of the reason why I worked on this is because I just like the aesthetic of the effect. It just brings back wonderful memories of pimping my Amiga desktop.</p>
<p><strong>Dithering in AS3</strong></p>
<p>So, the algorithms for dithering are really quite simple. I was playing around with <span style="text-decoration: line-through;">hydra</span> Pixel Bender and had some ideas on converting some old algorithms to have them run in realtime. Then I thought I could make this run in realtime on Flash 9. So, first I did a version of the Algo in pure AS3. I played around with converting it to something fast enough to run at at least 20 frames per second on an average machine&#8230;and painfully failed. The remains are the AS3 version (<span style="text-decoration: line-through;">hydra</span> Pixel Bender version still in progress)&#8230;.and I decided to clean that up a bit, and have it released as an OS project for anyone to use.</p>
<p>Currently it only contains so-called error-diffusion based ditherers. They make the most sense anyway, since the ordered ditherers really have nasty visual sideeffects, like <a title="Raster" href="http://www.pl32.com/tutorial/sraster/sraster.htm" target="_blank">Bayer&#8217;s crosshatches</a>. Check the variants out in this little demo application using the class.</p>
<p><a href="http://www.unitzeroone.com/examples/ImageDithering/index.html" target="_blank">The Demo</a> : try and use &#8220;No Dithering&#8221; first to see the effects of regular palette conversion.</p>
<p><a href="http://code.google.com/p/imageditheringas3/" target="_blank">The Source</a></p>
<p>Usage :</p>
<p>ImageDithering.dither(bitmapData, type, levels, grayscale);</p>
<p>Where :</p>
<p><strong>BitmapData</strong> is the image to be manipulated.</p>
<p><strong>Type</strong> is the form of dithering, currently supported :</p>
<ol>
<li>ImageDitheringType.FLOYD_STEINBERG</li>
<li>ImageDitheringType.FALSE_FLOYD_STEINBERG</li>
<li>ImageDitheringType.STUCK</li>
<li>ImageDitheringType.NO_DITHER</li>
</ol>
<p><strong>Levels</strong> is the amount of colour levels to quantize to per channel.</p>
<p><strong>Grayscale</strong> is a boolean indicating whether to convert the image to grayscale before the process is ran.</p>
<p>Right click and viewsource on the example to see how it&#8217;s implemented in Flex.</p>
<p>Quick update : <a title="Quasimondo" href="http://www.quasimondo.com/" target="_blank">Mario Klingemann</a>, working on <a href="http://a.viary.com/blog/posts/a-video-of-peacock-in-action" target="_blank">Aviary&#8217;s Peacock</a> did a <a href="http://flickr.com/photos/quasimondo/2471315060/" target="_blank">quick test with it</a>. My effort had some use anyway!</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2008/05/06/opensource-image-dithering-for-as3-demosource/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Mind-bending puppets, FlashPlayer 10, conferences, the past and the future&#8230;</title>
		<link>http://unitzeroone.com/blog/2008/05/06/mind-bending-puppets-flashplayer-10-conferences-the-past-and-the-future/</link>
		<comments>http://unitzeroone.com/blog/2008/05/06/mind-bending-puppets-flashplayer-10-conferences-the-past-and-the-future/#comments</comments>
		<pubDate>Tue, 06 May 2008 14:13:26 +0000</pubDate>
		<dc:creator>UnitZeroOne</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[FITC]]></category>
		<category><![CDATA[FITC Toronto 2008]]></category>
		<category><![CDATA[Multimania]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[rephlex]]></category>
		<category><![CDATA[Singularity 2008]]></category>
		<category><![CDATA[bender]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[hydra]]></category>
		<category><![CDATA[pixelbender]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://www.unitzeroone.com/blog/?p=153</guid>
		<description><![CDATA[&#8220;Pixel Bender&#8221; ? Really ? [Fill in my excuse for not posting in such a long time]. There&#8217;s so much to tell, hence the weird title. Let&#8217;s start of with todays news; Adobe renames Hydra to Pixel Bender. They actually &#8230; <a href="http://unitzeroone.com/blog/2008/05/06/mind-bending-puppets-flashplayer-10-conferences-the-past-and-the-future/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://unitzeroone.com/wordpress/wp-content/uploads/pixel_bender.jpg"><img class="alignnone size-full wp-image-154" title="pixel_bender" src="http://unitzeroone.com/wordpress/wp-content/uploads/pixel_bender.jpg" alt="" width="430" height="250" /></a></p>
<p><strong>&#8220;Pixel Bender&#8221; ? Really ? </strong></p>
<p><em>[Fill in my excuse for not posting in such a long time]</em>. There&#8217;s so much to tell, hence the weird title. Let&#8217;s start of with todays news; Adobe renames Hydra to Pixel Bender. They actually did it&#8230;.now&#8230;it might be me&#8230;but wasn&#8217;t Hydra a way cooler name then &#8220;Pixel Bender&#8221; ? At least we&#8217;ll be able to make <a title="Bender on Wikipedia." href="http://en.wikipedia.org/wiki/Bender_(Futurama)" target="_blank">Bender</a> references all the time now&#8230;adding to nerd-status. The cool thing ? Bender&#8217;s brain is a <a href="http://en.wikipedia.org/wiki/MOS_Technology_6502" target="_self">MOS6502</a> &#8230; the same cpu which for instance, also powered the <a href="http://en.wikipedia.org/wiki/Commodore_64" target="_blank">best machine of all times</a>.</p>
<p><strong>Puppet Interview</strong></p>
<p>So, moving on from that news. Over the last months I&#8217;ve done several interviews. I was reluctant to post them, but come to think of it, why ? You are reading this page so you&#8217;re at least interested in what I have to say. <a href="http://youtube.com/watch?v=DIyVhz4x4FU" target="_blank">The best interview as of yet was with Gideon, one of the worlds best designers</a>. In all honesty, &#8220;jet-lagged&#8221; as I was, I wasn&#8217;t at my best, so these interviews might entertain you more; <a title="Gideon Interviews Joshua Davis" href="http://youtube.com/watch?v=taqPEf6U_rM&amp;feature=user" target="_blank">Joshua Davis</a>, <a href="http://youtube.com/watch?v=_xpgbnlrY_A&amp;feature=PlayList&amp;p=6A3436102D559B76&amp;index=2" target="_blank">Hugh Elliot</a>, <a title="Gideon talks to Gideon &amp; Gmunk" href="http://youtube.com/watch?v=fpO5TEAsyqI&amp;feature=PlayList&amp;p=6A3436102D559B76&amp;index=4" target="_blank">Moock&amp;Gmunk</a>, <a title="Gideon talks to Seb-Lee Desisle" href="http://youtube.com/watch?v=5NGCJ8IQgLI&amp;feature=PlayList&amp;p=6A3436102D559B76&amp;index=5" target="_blank">Seb-Lee Delisle</a>.</p>
<p><strong>FITC</strong> &amp; <strong>rePhlex and Flash Player 10</strong></p>
<p>Of course, all of this was recorded at the <a title="FITC Site." href="FITC Toronto 2008 conference" target="_blank">FITC Toronto 2008 conference</a>. First off all, thanks to the FITC Organisation&#8230;you guys did an awesome job. The conference had an excellent vibe &#8230; (except for that annoying drunk dude at the front door on Tuesday&#8230;you know who you are), and I had a great time hanging with you all. I did a sold-out workshop on day 1, day 2 a panel, with Adobe&#8217;s <a href="http://justin.everett-church.com/" target="_blank">Justin</a>, <a href="http://blogs.adobe.com/rgalvan/">Richard</a>, <a href="http://www.theflashblog.com" target="_blank">Lee</a>, <a href="http://blog.je2050.de/" target="_blank">Joa</a> from <a href="http://www.hobnox.com/index.914.en.html">Hobnox</a> and Mr. Paperworld: <a href="http://paperworld3d.com/">Trevor</a>.</p>
<p>On day 3 I did my session&#8230;I was shocked to find the room literally packed with people&#8230;.and was somewhat nervous throughout some moments in my session, but as it seems by the feedback, people really enjoyed it. The reviews I found in my incoming links are at least very positive.During this session I also got to talk about rePhlex again, my new toy project. rePhlex is meant to be a lightweight, realtime image processing and syncing/eventing library for site/example and demo purposes. It&#8217;s been overgoing some heavy changes and refactoring&#8230;you&#8217;ll all just have to wait a bit more.</p>
<p>Another thing I really enjoyed doing in my session was that I was allowed to show some <span style="text-decoration: line-through;">hydra</span> Pixel Bender running inside Flash Player 10. Yes&#8230;.you missed a sneak of Flash Player 10&#8242;s awesome power. <img src='http://unitzeroone.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>On day 4 of the conference I had a taped conversation with <a title="Keith Peters blog." href="http://www.bit-101.com/blog/" target="_blank">Keith Peters</a>, which, next to the obligatory joke he made at my cost, to get back at me for sleeping a bit to long, we both hoped won&#8217;t bore you too much&#8230;you put to actionscript / math / graphic nerds on a couch&#8230;what do you think happens ?</p>
<p>I saw some sessions myself, but was really unlucky with my taste vs the schedule. Things I can quickly remember seeing; <a href="http://www.sebleedelisle.com/" target="_blank">Seb-Lee Delisle</a>, <a href="http://www.quasimondo.com/" target="_blank">Mario Klingemann</a>, <a href="http://www.bit-101.com/blog/" target="_blank">Keith Peters</a>, <a href="http://www.flight404.com/blog/" target="_blank">Robert Hodgin</a>, <a href="http://jot.eriknatzke.com/" target="_blank">Erik Natzke</a> and many others. Robert&#8217;s session (the last of the conference) absolutely blew me away. And I do love <a href="http://www.vimeo.com/935317?pg=embed&amp;sec=935317" target="_blank">Radiohead</a>!</p>
<p>So, that would wrap up FITC Toronto (and Amsterdam too).</p>
<p><strong>Upcoming Conferences</strong></p>
<p>I&#8217;m looking forward to speak at this months <a href="http://www.multi-mania.be/2008/" target="_blank">Multimania</a>. In June there&#8217;s going to be <a href="http://www.fitc.ca/event_detail.cfm?festival_id=19">FITC Chicago</a>&#8230;later on this year many more, amongst which for instance; <a href="http://singularity08.com/" target="_blank">Singularity 08</a>. I&#8217;m really unlucky to have to miss out on this years <a href="http://flashbelt.com/" target="_blank">FlashBelt</a>&#8230;..hope you all have a good time there anyway.</p>
<p><strong>Goodbye Earthmine ! Hello new works ?<br />
</strong></p>
<p>As some of you, attending one of my sessions or workshops earlier this year might know, most of my commercially available time went to the <a href="http://earthmine.com/" target="_blank">Earthmine</a> project. That work ended for me last week and after working on one project for such an extended period of time (7 months+) and some rest, I&#8217;m now really looking forward too and open for new jobs and work..I&#8217;m not sure what I&#8217;ll do yet and am still contemplating on what I really want to do as the &#8220;next&#8221; thing. In the mean time I&#8217;ll be working on smaller freelance jobs. And if you have something you&#8217;d like me to work on&#8230;.<a href="http://www.unitzeroone.com/blog/contact/" target="_blank">ping me</a>.</p>
<p><strong>Playing with Hydra and image algorithms</strong></p>
<p>Another post coming up today will explain some more. With my work on rePhlex and Hydra, I&#8217;m having a blast doing image manipulation algorithms&#8230;.one of my experiments was image dithering and half-toning&#8230;with as a result a new open source project. More on that in my next post&#8230;which will appear on the all new and revamped <a href="http://feeds.adobe.com/" target="_blank">AXNA / Adobe Feeds</a>! Welcome back !</p>
]]></content:encoded>
			<wfw:commentRss>http://unitzeroone.com/blog/2008/05/06/mind-bending-puppets-flashplayer-10-conferences-the-past-and-the-future/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

