<?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>Artman&#039;s Blog &#38; Lifestream</title>
	<atom:link href="http://artman.fi/feed/" rel="self" type="application/rss+xml" />
	<link>http://artman.fi</link>
	<description>Rambling about the net, flash, flex and other important stuff</description>
	<lastBuildDate>Sun, 29 Aug 2010 17:56:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Flash Player Secret Garden</title>
		<link>http://artman.fi/2010/08/2819/</link>
		<comments>http://artman.fi/2010/08/2819/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 17:54:18 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/?p=2819</guid>
		<description><![CDATA[The first preview of the upcoming Flex 4.5 SDK &#8211; code-named Hero &#8211; has gone live and Deepa Subramaniam, Flex SDK product manager, just announced it. Newsworthy on Deepa&#8217;s post is that Adobe, at least for this release, has chosen to build the SDK against a future, yet to be announced Flash Player. Because of [...]]]></description>
			<content:encoded><![CDATA[<p><a title="The Secret Garden" href="http://www.flickr.com/photos/51821787@N05/4938509652/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4102/4938509652_5e26a8c0cf_m.jpg" alt="The Secret Garden" /></a></p>
<p>The first preview of the upcoming <a href="http://opensource.adobe.com/wiki/display/flexsdk/Hero">Flex 4.5 SDK</a> &#8211; code-named Hero &#8211; has gone live and Deepa Subramaniam, Flex SDK product manager, just <a href="http://iamdeepa.com/blog/?p=68">announced</a> it. Newsworthy on Deepa&#8217;s post is that Adobe, at least for this release, has chosen to build the SDK against a future, yet to be announced Flash Player. Because of this, they have not been, and will not be able to post nightly builds, as they don&#8217;t want to give away any new features of the Player.</p>
<p>At least to me, that sounds weird.</p>
<p>Sure, we&#8217;re all know that companies love to control the publicity of new products, mostly to gain enough momentum to get good press out of an launch event. It sure makes sense to control product details regarding (for example) CS6, but the Flash Player is a different beast. End-users don&#8217;t care about new features, and developers don&#8217;t need to press to tell them.</p>
<p>So what gives? Why hide upcoming features of the Flash Player? Wouldn&#8217;t being totally open about the future of the player be a great way of getting the community involved in the development of the player? After all, it&#8217;s developers, not end-users that you build the Player for. Wouldn&#8217;t it totally make sense to have the input of the community as early as possible and be able to act upon that feedback without an 1,5 year cycle?</p>
<p>The only reason I&#8217;ve identified for this secrecy is the fear of competition (Silverlight). The introduction of Silverlight&#8217;s latest release was one of the biggest Deja&#8217;vu moments I&#8217;ve had.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/08/2819/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web Feeds HD now available for your iPad</title>
		<link>http://artman.fi/2010/08/web-feeds-hd-now-available-for-your-ipad/</link>
		<comments>http://artman.fi/2010/08/web-feeds-hd-now-available-for-your-ipad/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 09:55:09 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://artman.fi/?p=849</guid>
		<description><![CDATA[Yay! Weeb Feeds HD has just made it&#8217;s way to the App Store. Essentially it&#8217;s a port of my Web Feeds iPhone app with some additional cool features such as sharing feed posts to all important social media services. The interface is once again modeled as closely to the iPad-native Mail-app, as I found that [...]]]></description>
			<content:encoded><![CDATA[<p><a style="border: none;"><img class="alignleft size-full wp-image-850" style="border: none;" title="webfeeds" src="http://artman.fi/wp-content/uploads/2010/08/webfeeds.jpg" alt="" width="199" height="197" /></a>Yay! <a href="http://itunes.apple.com/app/web-feeds-hd/id385467555?mt=8">Weeb Feeds HD</a> has just made it&#8217;s way to the App Store. Essentially it&#8217;s a port of my Web Feeds iPhone app with some additional cool features such as sharing feed posts to all important social media services. The interface is once again modeled as closely to the iPad-native Mail-app, as I found that this approach works extremely well for consuming RSS feeds and doesn&#8217;t require the user to learn anything new. You also have to option to browse through all of your feeds in full Web-mode, where you skip the RSS summary and are taken straight to source of the post. This works fantastic with the Google News feeds, as they are linking directly to the original source. Essentially have a quick way to read through the most important news of the day.</p>
<p>Check it out on the Store, and <a href="http://itunes.apple.com/app/web-feeds-hd/id385467555?mt=8">give it try</a>. It&#8217;s only $1.99, way less than the competition.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/08/web-feeds-hd-now-available-for-your-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where&#8217;s that Flash app?</title>
		<link>http://artman.fi/2010/08/wheres-that-flash-app/</link>
		<comments>http://artman.fi/2010/08/wheres-that-flash-app/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 06:19:04 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/?p=842</guid>
		<description><![CDATA[The HTML5 vs. Flash debacle has all but died down. And that&#8217;s a good thing as I didn&#8217;t really think any of the argumentation was really valid. However, the whole thing got me once again thinking of how I use Flash. As a developer, I&#8217;ve started using Flash and Flex less and less. This of [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Sarah 243/365" href="http://www.flickr.com/photos/30408133@N08/4876352651/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4073/4876352651_033d7a93b4_m.jpg" alt="Sarah 243/365" /></a></p>
<p>The HTML5 vs. Flash debacle has all but died down. And that&#8217;s a good thing as I didn&#8217;t really think any of the argumentation was <a href="http://artman.fi/2010/03/html-5-killing-flash-blah-blah/">really valid</a>. However, the whole thing got me once again thinking of how I use Flash. As a developer, I&#8217;ve started using Flash and Flex less and less. This of course is tied to my current job, where we use Flash only as small components in an otherwise HTML-based app. I&#8217;ve done my share of Flex and Flash applications and campaigns in the past, but now that I come to think of it, I actually _never_ use any application that is based on the Flash Platform. Sure, I do try out things, like <a href="http://www.audiotool.com/">Audiotool</a> (which I think happens to be one of the best engineered Flash apps out there), but I&#8217;m not a user.</p>
<p>The closest I come to being a user of a Flash Platform based  app is with (social) games. That makes me wonder. Is there really any Flash application out there that people are actually <strong>using</strong>? And I&#8217;m talking productivity or business use, not entertainment. Hit me with your comments!</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/08/wheres-that-flash-app/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Hello (mt)</title>
		<link>http://artman.fi/2010/08/hello-mt/</link>
		<comments>http://artman.fi/2010/08/hello-mt/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 19:35:05 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://artman.fi/?p=725</guid>
		<description><![CDATA[Just moved this blog over to MediaTemple, so there might be a few hiccups during the next few as this gives me a good reason to fix a few things here and there that have bothered me but that I&#8217;ve never had the time to fix. I searched quiet a bit to get an hosting [...]]]></description>
			<content:encoded><![CDATA[<p><a title="(mt)SXSWi Official Closing Party 2010" href="http://www.flickr.com/photos/31465098@N00/4456816776/"><img class="alignleft" style="float: left;" src="http://farm3.static.flickr.com/2728/4456816776_e5d242a6c5_t.jpg" alt="(mt)SXSWi Official Closing Party 2010" /></a></p>
<p>Just moved this blog over to MediaTemple, so there might be a few hiccups during the next few as this gives me a good reason to fix a few things here and there that have bothered me but that I&#8217;ve never had the time to fix.</p>
<p>I searched quiet a bit to get an hosting provider that had a good reputation and was inexpensive, and eventually settled for MediaTemple, as there are so many developers and designers praising them and so far I&#8217;ve been happy. Access is of course a bit slow from Finland, but hey, you can&#8217;t transfer stuff faster than the speed of light. Or can you, <a href="http://www.nature.com/news/2008/080813/full/news.2008.1038.html?s=news_rss">hmm</a>?</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/08/hello-mt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Less AS3 frameworks, more native implementations, please!</title>
		<link>http://artman.fi/2010/08/less-as3-frameworks-more-native-implementations-please/</link>
		<comments>http://artman.fi/2010/08/less-as3-frameworks-more-native-implementations-please/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 10:52:44 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[native]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=477</guid>
		<description><![CDATA[The TLF framework is a good example of the current status quo regarding native implementations vs. AS3 frameworks at Adobe. Adobe is implementing core functionality (layout of text) through an ActionScript Framework and not as a native implementation in the Flash Player. Sure, you have the low-level text engine classes and API that let you [...]]]></description>
			<content:encoded><![CDATA[<p><a title="DSC_0015A" href="http://www.flickr.com/photos/35243598@N05/4846030250/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4128/4846030250_c91ac66f06_m.jpg" alt="DSC_0015A" /></a></p>
<p>The TLF framework is a good example of the current status quo regarding native implementations vs. AS3 frameworks at Adobe. Adobe is implementing core functionality (layout of text) through an ActionScript Framework and not as a native implementation in the Flash Player. Sure, you have the low-level text engine classes and API that let you actually use low-level layout and rendering, but Flash has for a long time implemented high-level API&#8217;s natively.</p>
<p>Lets discuss the advantages and disadvantages of using Frameworks vs. native implementations:</p>
<p>Advantages:</p>
<ol>
<li>Updatability. You don&#8217;t rely on Flash Player updates to deliver new functionality or bug fixes.</li>
<li>The Flash Player download size does not increase</li>
</ol>
<p>Disadvantages:</p>
<ol>
<li>Speed. If you remember my recent post on our AS3-2-Java compiler, the same code run 800 times more faster in Java than it did in the Flash Player using AS3. So expect things to run three orders of magnitude slower.</li>
<li>Bloat. The framework takes a chunch of bandwidth for every piece of SWF that uses the framework, as it&#8217;s embedded in each and every SWF that uses is (yes, there&#8217;s of course the framework cache, but still, cache misses are currently more frequent than hits)</li>
</ol>
<p>IMHO the bad _clearly_ outweighs the good. Heck, I would donate second testicle to have Flash run even a bit faster. Now fast forward to the days of Flex. You&#8217;ve got hundreds of components littering the screen are your CPU just screams for help. If you inspect your List-based component you quickly get dizzy with the number of UIComponents flying around. Not only is there one for each base component, but with Flex 4 you&#8217;re essentially doubling the number of UIComponents on screen as all of your skin files are based on UIComponent as well.</p>
<p>Now to me it would seem logical to just implement the UIComponent natively as it does so much of an apps work (measure, layout, (in)validation, focus &amp; input management and whatnot). At least it would be an interesting experiment on how much every Flex app would gain from a native implementation of the UIComponent (oh, and while you&#8217;re at it, put in a native implementation for Group and GraphicElement as well).</p>
<p>You know, it was in 2006 when the last speed increase in the order of a magnitude was revealed by the Player team at Max 2006 2005. We need an encore! Only this time, please make that two orders of magnitude.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/08/less-as3-frameworks-more-native-implementations-please/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Sometimes there&#039;s no correlation between a bug and a fix</title>
		<link>http://artman.fi/2010/07/sometimes-theres-no-correlation-between-a-bug-and-a-fix/</link>
		<comments>http://artman.fi/2010/07/sometimes-theres-no-correlation-between-a-bug-and-a-fix/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 07:15:31 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=479</guid>
		<description><![CDATA[A week back I took on to fix a bug on our Flash-based video-chat component on Sofanatics. The fix was one of the most unexpected I&#8217;ve yet encountered. While testing we found out that our video-chat component had a fatal flaw with Mac Firefox-browsers. When we initiate a chat-session, the component asks the user to [...]]]></description>
			<content:encoded><![CDATA[<p><a title="bug" href="http://www.flickr.com/photos/35468153801@N01/4813442605/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4115/4813442605_1a2050043b_m.jpg" alt="bug" /></a></p>
<p>A week back I took on to fix a bug on our Flash-based video-chat component on <a href="http://sofanatics.com">Sofanatics</a>. The fix was one of the most unexpected I&#8217;ve yet encountered.</p>
<p>While testing we found out that our video-chat component had a fatal flaw with Mac Firefox-browsers. When we initiate a chat-session, the component asks the user to gain access to his camera an microphone through the standard security dialog that&#8217;s presented by the Flash Player. For some reason, whenever this dialog came up, it did not accept any input. The user could not accept, dismiss or change the tabs on the dialog, so the client was essentially stuck.</p>
<p>Quickly playing with the wmodes for embedding the client it turned out that wmode opaque was the culprit. With wmode window everything worked out fine. That was not acceptable in our case, though, since we used other modal html-based windows that covered the Flash client, so we couldn&#8217;t use the window wmode.</p>
<p>Our site is fairly complex and the client itself gets animated in via HTML, so I tried just for the sake of it to place the client somewhere else within the DOM. There were places where it worked, and others where it didn&#8217;t, so I jumped to the conclusion that some CSS rules (or a combination of rules when traversing down the DOM) mess up Firefox and make the Flash client unclickable. Oddly though, our content in the Flash client was very much clickable and worked without any problems, only the security dialog was not clickable.</p>
<p>Hmm, quickly testing I removed all styles from the site and tested. That fixed the problem. So it had to be somewhere in the CSS, some rule that made the security dialog unresponsive. So I did a number of tests, removing a piece of CSS at a time until I isolated the selector that caused this issue. It was a browser reset selector with a number of rules that I&#8217;ve used in most of my sites which is to allign every browser to render in the same way.</p>
<p>Doing the same test for the rules within the selector, I finally found the culprit. One single CSS rule that made the security dialog non-responsive on Mac&#8217;s Firefox:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">a <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span><span style="color: #933;">1em</span><span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Say what? Right&#8230;</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/07/sometimes-theres-no-correlation-between-a-bug-and-a-fix/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Flash and 3D, here we go again</title>
		<link>http://artman.fi/2010/07/flash-and-3d-here-we-go-again/</link>
		<comments>http://artman.fi/2010/07/flash-and-3d-here-we-go-again/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 08:42:16 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[unity]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=473</guid>
		<description><![CDATA[A acquaintance of mine had a conversation with an Adobe executive discussing about jumping ship to Unity3D for their upcoming Virtual Worlds. The executive reportedly said that Unity is going to die away in a short while, hinting at 3D functionality (you know, _real_ 3D functionality, meshed, GPU-rendered) in the next version of Flash. There&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a title="The Utah Teapot" href="http://www.flickr.com/photos/13172875@N08/4618892793/"><img class="alignleft" style="float: left;" src="http://farm4.static.flickr.com/3378/4618892793_4eea8e6ec5_m.jpg" alt="The Utah Teapot" /></a></p>
<p>A acquaintance of mine had a conversation with an Adobe executive discussing about jumping ship to Unity3D for their upcoming Virtual Worlds. The executive reportedly said that Unity is going to die away in a short while, hinting at 3D functionality (you know, _real_ 3D functionality, meshed, GPU-rendered) in the next version of Flash. There&#8217;s also a session at Max this year titled &#8220;Flash Player 3D Future&#8221; presented by a Flash Player engineer where he&#8217;ll demo new API&#8217;s in an upcoming Flash Player release.</p>
<p>So, everything points to Flash Player 11 finally having a real 3D rendering engine and joining the fight for online 3D supremacy against WebGL and Unity3D.</p>
<p>While I think that it&#8217;s almost one of those <a href="http://www.engadget.com/2006/10/11/ce-oh-no-he-didnt-part-xv-sony-australia-exec-calls-the-wii/">CE-Oh no, he didn&#8217;t! no he didn&#8217;t</a> moments to say that Unity3D is going away because of the Flash Player, it&#8217;s a really welcome addition (if done right) to the Flash Player and has been long due.</p>
<p><a href="http://unity3d.com">Unity</a> kicks ass, and especially Unity 3 with it&#8217;s deferred rendering, MOD support (wOOt, have been asking that from the Flash Player teams since version 5), audio effects, beast light-mapping, super-fast scripting, umbra occlusion culling, physics and great editor is something that the Flash Player and IDE will never be able to match for serious 3D game development.</p>
<p>On the other hand you obviously have the great penetration (and big community) of the Flash Player which will drive casual game development away from Unity.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/07/flash-and-3d-here-we-go-again/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>&quot;We just upgraded your internet for free&quot;</title>
		<link>http://artman.fi/2010/06/we-just-upgraded-your-internet-for-free/</link>
		<comments>http://artman.fi/2010/06/we-just-upgraded-your-internet-for-free/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 14:48:57 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=470</guid>
		<description><![CDATA[It&#8217;s nice to get surprised positively once in a while by a service provider. Today, I got a mail from my ISP, Welho, telling me that they&#8217;ve doubled my internet connection speed to 200 mbit/sec at no charge. And yes, SpeedTest.net now gives me a download speed of 155 mbit/sec. Well, thanks!]]></description>
			<content:encoded><![CDATA[<p><a title="Red." href="http://www.flickr.com/photos/39779537@N05/4699354087/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4033/4699354087_d9b1ee303c_m.jpg" alt="Red." /></a></p>
<p>It&#8217;s nice to get surprised positively once in a while by a service provider. Today, I got a mail from my ISP, Welho, telling me that they&#8217;ve doubled my internet connection speed to 200 mbit/sec at no charge. And yes, SpeedTest.net now gives me a download speed of 155 mbit/sec.</p>
<p>Well, thanks!</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/06/we-just-upgraded-your-internet-for-free/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Apple about to become the second $largest$ corporation in the world</title>
		<link>http://artman.fi/2010/05/apple-about-to-become-the-second-largest-corporation-in-the-world/</link>
		<comments>http://artman.fi/2010/05/apple-about-to-become-the-second-largest-corporation-in-the-world/#comments</comments>
		<pubDate>Mon, 24 May 2010 19:35:00 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=465</guid>
		<description><![CDATA[Uh-oh. That was quick. Just a few months ago many were noting that Apple&#8217;s market cap was closing fast on Microsoft&#8217;s. Back then the gap was still 50 Billion.S dollars. Just now the gap has shrunken to 5 Billion. And Apple is still gaining fast. A recent Stanley Morgan put the target for Apple&#8217;s stock [...]]]></description>
			<content:encoded><![CDATA[<p><a title="IMG_2054" href="http://www.flickr.com/photos/38919513@N00/4636451184/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4021/4636451184_5613809162_m.jpg" alt="IMG_2054" /></a></p>
<p>Uh-oh. That was quick. Just a few months ago many were noting that Apple&#8217;s market cap was closing fast on Microsoft&#8217;s. Back then the gap was still 50 Billion.S dollars. Just now the gap has shrunken to 5 Billion. And Apple is still gaining fast. A recent Stanley Morgan put the target for Apple&#8217;s stock price at 310$ (currently it&#8217;s 250$). After a few days Apple is bound to go past Microsoft and take the number 2 spot just after Exxon Mobil. Wouldn&#8217;t it be cool to be a fly on Ballmer&#8217;s wall?</p>
<p><strong>Update</strong>: There it is. Apple is now valued at 222,1B $, while Microsoft is at 219,2B $.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/05/apple-about-to-become-the-second-largest-corporation-in-the-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ouch, here comes the first(?) Facebook &quot;virus&quot;</title>
		<link>http://artman.fi/2010/05/ouch-here-comes-the-first-facebook-virus/</link>
		<comments>http://artman.fi/2010/05/ouch-here-comes-the-first-facebook-virus/#comments</comments>
		<pubDate>Fri, 21 May 2010 11:36:59 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[social graph]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=458</guid>
		<description><![CDATA[Well, it&#8217;s not actually a virus, as it still needs user interaction to post itself to your wall, but still it spreads like hell. Here&#8217;s how it works: You wonder why all of your friends are posting links to http://www.fbhole.com/omg/allow.php?s=a&#38;r=72306 (warning! don&#8217;t open this link just yet, or if you do, don&#8217;t click anywhere). You get [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Facebook f8 Keynote &quot;Hacking the graph&quot; logo" href="http://www.flickr.com/photos/27620885@N02/4546091310/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4050/4546091310_8ba45656cf_m.jpg" alt="Facebook f8 Keynote &quot;Hacking the graph&quot; logo" /></a></p>
<p>Well, it&#8217;s not actually a virus, as it still needs user interaction to post itself to your wall, but still it spreads like hell. Here&#8217;s how it works:</p>
<p>You wonder why all of your friends are posting links to <a onmousedown="UntrustedLink.bootstrap($(this), &quot;108bb&quot;, event);" rel="nofollow" href="http://www.fbhole.com/omg/allow.php?s=a&amp;r=72306" target="_blank">http://www.fbhole.com/omg/allow.php?s=a&amp;r=72306</a> (<strong>warning!</strong> don&#8217;t open this link just yet, or if you do, don&#8217;t click anywhere). You get to the site, get a cryptic error message (which looks like a Windows dialog, if you happen to use Windows). You try to click it and boom, you&#8217;ve just reposted the link to your wall. Huh?</p>
<p>Looking at the source, what happens here is quite simple and is an old trick if you&#8217;re familiar with how people were able to open a browse for file dialog with Flash 9. An iframe with 0.001 opacity is opened on the site (pointing to <a href="http://www.fbhole.com/omg/a_tab.php"><a href="http://www" rel="nofollow">http://www</a>.</a><a href="http://www.fbhole.com/omg/a_tab.php">fbhole</a><a href="http://www.fbhole.com/omg/a_tab.php">.com/</a><a href="http://www.fbhole.com/omg/a_tab.php">omg</a><a href="http://www.fbhole.com/omg/a_tab.php">/tab.</a><a href="http://www.fbhole.com/omg/a_tab.php">htm</a>) which again contains a iframe pointing to Facebooks connect/prompt_feed.php, which is used by a gazillion sites to let users post a message to their wall. This iFrame is then repositioned whenever your mouse moves so that the publish button of that dialog is positioned under you mouse pointer. When you click, anywhere on the page, you actually click the Publish button which posts the pre-filled text containing a link back to the site to your profile.</p>
<p>No worries though, your personal information is (as the time of writing) not compromised by this hack, but it will most certainly have implications to Facebooks sharing functionality.</p>
<p><strong>Update</strong>: For those of you who appreciate the &#8220;Objects may appear closer than they actually are&#8221;-warnings in the rear view mirror of U.S cars, the hack currently does not steal anything, but that&#8217;s not to say following the link will be safe in the *future*. It can be changed to something malicious after a million or so users have forwarded it. So be careful, or use a Mac <img src='http://artman.fi/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Update 2:</strong> The worm was taken offline. It seems that Mikko Hyppönen, Finlands #1 celebrity in antivirus affairs was able to track the Czech dude who put this out on the interwebs and <a href="http://www.f-secure.com/weblog/archives/00001955.html">give him a call</a>:</p>
<blockquote><p>Domain fbhole.com shared an IP address with ironbrain.net [82.208.32.99]. Ironbrain.net hosted a website with references to Facebook but no obvious illegal content. While fbhole.com was registered with privacy protection, ironbrain.net had contact information in the WHOIS database, complete with a Czech phone number.</p>
<p>So I called the number.</p>
<p>The call went roughly like this:</p>
<p>– Hello?<br />
– Hi. This is Mikko Hypponen from F-Secure Labs.<br />
– What is this about?<br />
– I&#8217;m looking for a person related to ironbrain.net.<br />
– ???<br />
– We&#8217;re investigating a Facebook worm on fbhole.com. That domain shares an IP address with ironbrain.net which is registered under your name.<br />
– And you are?<br />
– I&#8217;m from an antivirus company. Are you related to ironbrain.net?<br />
– I&#8217;ll have to check… maybe my company is…<br />
– Please do.<br />
– Bye…<br />
[Click]</p>
<p>About 15 seconds later, both fbhole.com and ironbrain.net went offline. The attack is over.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/05/ouch-here-comes-the-first-facebook-virus/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>TripSay&#039;s fantastic new hotel booking feature</title>
		<link>http://artman.fi/2010/04/tripsays-fantastic-new-hotel-booking-feature/</link>
		<comments>http://artman.fi/2010/04/tripsays-fantastic-new-hotel-booking-feature/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 17:37:18 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[tripsay]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=453</guid>
		<description><![CDATA[TripSay recently introduced a fantastic new feature to their web service &#8211; hotel bookings. The feature in itself is nothing exciting (they&#8217;re even using booking information from booking.com only), but it&#8217;s the way they&#8217;ve implemented it, that&#8217;s fantastic. You&#8217;re essentially searching on top of a map of the city you&#8217;re about to visit and tools [...]]]></description>
			<content:encoded><![CDATA[<p><a title="ChediMuscatHotel" href="http://www.flickr.com/photos/48360165@N02/4550991259/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4043/4550991259_2b318547dc_m.jpg" alt="ChediMuscatHotel" /></a></p>
<p><a href="http://www.tripsay.com">TripSay</a> recently introduced a fantastic new feature to their web service &#8211; hotel bookings. The feature in itself is nothing exciting (they&#8217;re even using booking information from <a href="http://booking.com">booking.com</a> only), but it&#8217;s the way they&#8217;ve implemented it, that&#8217;s fantastic.</p>
<p>You&#8217;re essentially searching on top of a map of the city you&#8217;re about to visit and tools let you easily drill down the number of results shown on the map by dates, stars, budget and location. Hotels matching your search result are shown as markers on the map including the average price per night, giving you a fantastic overview of what&#8217;s available in the target city.</p>
<p>One fantastic functionality is to center the location of your search around a specific sight or location.</p>
<p>If you haven&#8217;t already tried it, you should. I know I won&#8217;t be using anything else for all of my hotel bookings from here forward.</p>
<p>Of course even the best can be made even better. Markers could be slightly smaller, as you get a lot of overlap when you&#8217;re browsing a city with loads of hotels.</p>
<p>Kudos to the team. This rocks!</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/04/tripsays-fantastic-new-hotel-booking-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe just got f#%&amp; by Apple</title>
		<link>http://artman.fi/2010/04/apple-just-f-adobe/</link>
		<comments>http://artman.fi/2010/04/apple-just-f-adobe/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 08:03:46 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=447</guid>
		<description><![CDATA[Ouch. If that does not hurt, I don&#8217;t know what does. After introducing iPhone OS 4.0, Apple updated it&#8217;s developer user agreement to disallow AppStore submissions that link to API&#8217;s through intermediary translation (in effect, not written directly in Objective-C, C, C++ or JavaScript). This essentially means that Apple won&#8217;t accept any apps submitted to [...]]]></description>
			<content:encoded><![CDATA[<p><a title="forbidden fruit" href="http://www.flickr.com/photos/37729610@N06/4864060844/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4098/4864060844_36cf34efa0_m.jpg" alt="forbidden fruit" /></a></p>
<p>Ouch. If that does not hurt, I don&#8217;t know what does. After introducing iPhone OS 4.0, Apple updated it&#8217;s developer user agreement to disallow AppStore submissions that link to API&#8217;s through intermediary translation (in effect, not written directly in Objective-C, C, C++ or JavaScript).</p>
<p>This essentially means that Apple won&#8217;t accept any apps submitted to the AppStore created with Flash CS5 or any of the other not yet released ways of publishing for the iPhone. Hundreds and hundreds of man work months down the drain.</p>
<blockquote><p>&#8220;Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).&#8221;</p></blockquote>
<p>This comes three days before the introduction of CS5. The main USP for Flash CS5 before today was that it was able to compile for the iPhone OS. Would love to be a fly on the wall of Adobe&#8217;s executive team.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/04/apple-just-f-adobe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex 4 available</title>
		<link>http://artman.fi/2010/03/flex-4-available/</link>
		<comments>http://artman.fi/2010/03/flex-4-available/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 08:18:34 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=445</guid>
		<description><![CDATA[Flex 4 is now available for purchase. Go get it.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobe.com/products/flashbuilder/">Flex 4 </a>is now available for purchase. Go get it.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/03/flex-4-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML 5 killing Flash blah blah</title>
		<link>http://artman.fi/2010/03/html-5-killing-flash-blah-blah/</link>
		<comments>http://artman.fi/2010/03/html-5-killing-flash-blah-blah/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 16:00:59 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=437</guid>
		<description><![CDATA[Enough already. I&#8217;ve been asked a number of times what I think about Flash beeing killed by HTML 5 and I&#8217;m really getting tired of the whole discussion (which to begin with is not very interesting). That&#8217;s why I&#8217;m writing this down in a post so as to spare me from answering the same dull [...]]]></description>
			<content:encoded><![CDATA[<p><a title="html5 youtube" href="http://www.flickr.com/photos/40342663@N02/4426186649/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4016/4426186649_350c3ca01b_m.jpg" alt="html5 youtube" /></a></p>
<p>Enough already. I&#8217;ve been asked a number of times what I think about Flash beeing killed by HTML 5 and I&#8217;m really getting tired of the whole discussion (which to begin with is not very interesting). That&#8217;s why I&#8217;m writing this down in a post so as to spare me from answering the same dull question once and for all.</p>
<p>Those seeking a quick answer to whether HTML 5 is going to kill Flash, the answer is: &#8220;No&#8221;. A slightly longer answer would go: &#8220;No, but I hope it did&#8221;.</p>
<h3>iPhones, iPads</h3>
<p>So the iPhone and the iPad does not support Flash, and quite likely never will. So what? At the time of writing there is no single mobile phone to be bought by consumers that support a full Flash experience (to me that is Flash 10 within the browser). So, if there&#8217;s no single mobile phone today that supports the Flash experience, how come Flash is still alive? The mobile web is still different from the desktop web, and it&#8217;s going to stay that way for a while still. People use the mobile web for different purposes and I really don&#8217;t think that to this day many have missed Flash on their mobile devices. The iPad is a different story, as the experience and use scenarios come close to the desktop web. But I think that the absence of Flash on the iPad is Apple&#8217;s loss, not Adobe&#8217;s.</p>
<p><img class="alignleft" style="float: left;" src="http://farm3.static.flickr.com/2731/4426181455_948c636477_m.jpg" alt="Matrimonio albanese #1" /></p>
<h3>Video</h3>
<p>Whenever a major newspaper with inexperienced tech journalists write about how Flash is being killed by HTML they always refer to the video embedding capabilities of the spec. And nothing else really. Somehow someone has been able to seed the perception that Flash <strong>=</strong> web video. Within that false perception, HTML5 might actually kill Flash (in the distant future). Somebody will create a fantastic plug-in for jQuery UI that puts lovely controls around all video tags on a page, and that will become the norm. For that to happen, however, most users on the web will need to surf on a HTML5 enabled browser. Usually &#8220;most users&#8221; refers to more than 90% of all users (after which developers can start to remove any gracious fallbacks that involve Flash). If you look at the market share of IE6, which was released <strong>ages</strong> ago, you know it&#8217;ll take a while to reach that 90%.</p>
<h3>Silverlight</h3>
<p>The fact that Microsoft has created Silverlight and still keeps on pushing it hard is actually a case for Flash surviving the &#8220;onslaught of HTML5&#8243;. If MS felt that they could not compete with HTML5 using a plug-in technology that is far less spread than the Flash Player, they would not pour millions of dollars into it&#8217;s R&amp;D. Nuff&#8217; said.</p>
<h3>But I wouldn&#8217;t mind if it did kill Flash</h3>
<p>On the other side of this argument are Flash developers, screaming out loud things like &#8220;To arms! Flash is under attack&#8221;. WTF? Let&#8217;s imagine that HTML5 (or whatever else) would actually kill Flash.</p>
<p>For this to happen, there would need to be a technology or language that would be widespread amongst internet users, embraced by developers and thus superior to whatever it is that Flash is doing now. Metathesiophics (people who fear change, yes I had to look that up) aside, wouldn&#8217;t that be great? Whatever comes along, it&#8217;s bound to be programmable by something which reminds us (or is) of ECMA-Script or Java, so there&#8217;s really no steep learning curve for any Flash developer, especially as change does not come overnight, but over many years (sad but true).</p>
<p>So yeah, I hope something kills of Flash really quickly.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/03/html-5-killing-flash-blah-blah/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FP 10.1 Finally delivers speed improvements for OS X</title>
		<link>http://artman.fi/2010/02/10-1-finally-delivers-speed-improvements-to-mac/</link>
		<comments>http://artman.fi/2010/02/10-1-finally-delivers-speed-improvements-to-mac/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 07:24:44 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flashplayer]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=434</guid>
		<description><![CDATA[I thought of writing a post on how the Flash Player absolutely sucks on OS X. Jeah, people have been writing a number of related posts, but I didn&#8217;t think anyone actually grasped the severity of the issue. Flash 10.0 in Safari 4 on Snow Leopard (64 bit, FP running in it&#8217;s own process) actually [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Saturn v rockets@NASA" href="http://www.flickr.com/photos/27202985@N03/4384470303/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4056/4384470303_00ba2c3d64_m.jpg" alt="Saturn v rockets@NASA" /></a></p>
<p>I thought of writing a post on how the Flash Player absolutely sucks on OS X. Jeah, people have been writing a number of related posts, but I didn&#8217;t think anyone actually grasped the severity of the issue. Flash 10.0 in Safari 4 on Snow Leopard (64 bit, FP running in it&#8217;s own process) actually becomes what I would say unusable. Even if you don&#8217;t do much processing, frame-rates plummet by at least a factor of four compared to a Window XP setup with the same hardware. And sure, while Firefox on OS X has run Flash sort of okeyish, it has never been able to compare against a Windows counterpart.</p>
<p>That is, up to now.</p>
<p>Tinic had a <a href="http://www.kaourantin.net/2010/02/core-animation.html">great post</a> on changes they&#8217;ve made to how they composite Flash Player 10.1 renderings in the browser. The changes truly have made a <strong>big</strong> difference. Compared to 10.0, 10.1 screams on Safari, and is also a bit faster on Firefox.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/02/10-1-finally-delivers-speed-improvements-to-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iSlate/iPad/iTablet</title>
		<link>http://artman.fi/2010/01/islateipaditablet/</link>
		<comments>http://artman.fi/2010/01/islateipaditablet/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 17:24:20 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=426</guid>
		<description><![CDATA[I&#8217;ve never seen a product being talked about this much before actually beeing introduced as the iSlate/iPad/iTablet. Compared to this, the iPhone rumors were just mere whispers in the wind. Now, can anyone really expect for the tablet to actually live up to the expectations, unless the &#8220;one more thing&#8221; is that it actually self-levitates. [...]]]></description>
			<content:encoded><![CDATA[<p><a title="02-itablet-islate-iphone-apple3-480x326.jpg" href="http://www.flickr.com/photos/30174047@N08/4289735050/"><img class="alignleft" style="float: left;" src="http://farm5.static.flickr.com/4025/4289735050_b3ea403a41_t.jpg" alt="02-itablet-islate-iphone-apple3-480x326.jpg" /></a></p>
<p>I&#8217;ve never seen a product being talked about this much before actually beeing introduced as the iSlate/iPad/iTablet. Compared to this, the iPhone rumors were just mere whispers in the wind.</p>
<p>Now, can anyone really expect for the tablet to actually live up to the expectations, unless the &#8220;one more thing&#8221; is that it actually self-levitates.</p>
<p>We&#8217;ll have to see next wednesday.</p>
<p><strong>Update</strong>: Well, it didn&#8217;t self-levitate. What a bummer.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/01/islateipaditablet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sleep Phase wakeup clock now available on the App Store</title>
		<link>http://artman.fi/2010/01/good-night-sleep-monitor-now-available-on-the-app-store/</link>
		<comments>http://artman.fi/2010/01/good-night-sleep-monitor-now-available-on-the-app-store/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 17:24:16 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=414</guid>
		<description><![CDATA[Sleep Phase wakeup clock, my second iPhone app is now available on the App Store. It&#8217;s a alarm clock, which monitors your sleep rythm through the iPhone&#8217;s microphone or accelerometer and wakes you up in a light sleep phase, which means you&#8217;ll feel energized and refreshed every morning. Originally I had this idea more than [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-415" title="Good Night" src="http://artman.fi/blog/wp-content/uploads/2010/01/ss2.png" alt="Good Night" width="320" height="480" /><a href="http://itunes.apple.com/fi/app/sleep-phase-wakeup-clock/id351438999?mt=8">Sleep Phase wakeup clock</a>, my second iPhone app is now available on the App Store. It&#8217;s a alarm clock, which monitors your sleep rythm through the iPhone&#8217;s microphone or accelerometer and wakes you up in a light sleep phase, which means you&#8217;ll feel energized and refreshed every morning.</p>
<p>Originally I had this idea more than a year ago, but did not start to experiment with some code untill last summer. I was about to wrap everything up this christmas, when I stumbled upon <a href="http://itunes.apple.com/fi/app/sleep-cycle-alarm-clock/id320606217?mt=8">Sleep cycle alarm clock</a>, which was released about a month ago. They&#8217;ve sold over 100.000 copies in the first month. Lazy me, could have beat them to the store had I tried a bit harder. Well, life sucks.</p>
<p>Anyways, I do appreciate what I learned from this &#8220;project&#8221;. It all came together much easier than Web Feeds, the first iPhone app I created one and a half years ago. Go ahead, give it a go, it&#8217;s not that expensive <img src='http://artman.fi/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Update</strong>: I pulled the app from the store. I realized that I need to figure out a better, more descriptive name than &#8220;Good Night&#8221;. Unfortunately the app name cannot be changed once it&#8217;s submitted.</p>
<p><strong>Update 2</strong>: It&#8217;s available once more under the Sleep Phase wakeup clock name.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2010/01/good-night-sleep-monitor-now-available-on-the-app-store/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Had a small hickup, due to our server me&#8230;</title>
		<link>http://artman.fi/2009/12/had-a-small-hickup-due-to-our-server-me/</link>
		<comments>http://artman.fi/2009/12/had-a-small-hickup-due-to-our-server-me/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 20:11:26 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[problems]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/12/had-a-small-hickup-due-to-our-server-me/</guid>
		<description><![CDATA[Had a small hickup, due to our server melting. Everything should be back up now&#8230;]]></description>
			<content:encoded><![CDATA[<p>Had a small hickup, due to our server melting. Everything should be back up now&#8230;</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/12/had-a-small-hickup-due-to-our-server-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building MMOG&#039;s for the Flash Platform &#8211; AS3 to Java Byte-code Compiler</title>
		<link>http://artman.fi/2009/11/building-mmogs-in-flash-as3-to-java-bytecode-compiler/</link>
		<comments>http://artman.fi/2009/11/building-mmogs-in-flash-as3-to-java-bytecode-compiler/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 18:20:13 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mmog]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=397</guid>
		<description><![CDATA[Whoa, long time no post about this subject. My apologies. This one won&#8217;t be long either, but I just had to share this freakin&#8217; cool thing. You might have read before that one big part of our MMOG Platform is the ability to write all code in AS3. Client-side as well as Server side. As [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Hot Java" href="http://www.flickr.com/photos/87134616@N00/3950791244/"><img class="alignleft" style="float: left; " src="http://farm3.static.flickr.com/2519/3950791244_6970ef9aef_t.jpg" alt="Hot Java" /></a></p>
<p>Whoa, long time no post about this subject. My apologies. This one won&#8217;t be long either, but I just had to share this freakin&#8217; cool thing.</p>
<p>You might have read before that one big part of our MMOG Platform is the ability to write all code in AS3. Client-side as well as Server side. As there is no real AS3 server-side technology available we had to write our own. Our first version was up and running almost a year ago. Performance back then was OK, our tests showed us that our compiler could generate Java Byte-code from AS3 that ran as quickly as AS3 in the Flash Player, and included almost all core functionality of the AS3 scripting language.</p>
<p>Jump forward a year and now we have our second version of our compiler up and running (well, compiling). And boy is it fast. When you write decent code with type annotations and all, the compiler will churn out almost perfect Java Byte-code without pushing anything on the stack.</p>
<p>Performance?</p>
<p>Our simple (and yeah, a bit biased I must say) test suite with heavy calculations performed wonderfully. We ran the same test suite in the Flash Player and in it&#8217;s compiled form from the command line (compiling from the same source code of course).</p>
<p>All I can say is wow. Optimally, our AS3 to Java compiler produces byte code that runs <strong>900 times</strong> faster than ActionScript in the Flash Player. <strong>900 times</strong>.</p>
<p>This of course won&#8217;t hold true in the real world where we pass around closures, dynamic objects and other resource hogs. But from what we can gather it should be around 100 times faster even then. Stay tuned for some real world tests once we get to those.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/11/building-mmogs-in-flash-as3-to-java-bytecode-compiler/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vattenfall, please explain yourself</title>
		<link>http://artman.fi/2009/11/vattenfall-please-explain-yourself/</link>
		<comments>http://artman.fi/2009/11/vattenfall-please-explain-yourself/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 18:14:06 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[carbon]]></category>
		<category><![CDATA[electricity]]></category>
		<category><![CDATA[green]]></category>
		<category><![CDATA[oil]]></category>
		<category><![CDATA[power]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=394</guid>
		<description><![CDATA[I just moved, and started to compare prices for electricity. Vattenfall has a great number of options to choose from. You can choose with what method the electricity you&#8217;re buying has been produced. Nuclear, wind, water or &#8220;basic&#8221; (=nuclear, fossil, wind &#38; water). Now, the pricing for wind generated power is a bit higher than [...]]]></description>
			<content:encoded><![CDATA[<p><a title="wind-power" href="http://www.flickr.com/photos/43008179@N00/4067328989/"><img class="alignleft" style="float: left; " src="http://farm4.static.flickr.com/3511/4067328989_34b05a6750_t.jpg" alt="wind-power" /></a></p>
<p>I just moved, and started to compare prices for electricity. Vattenfall has a great number of options to choose from. You can choose with what method the electricity you&#8217;re buying has been produced. Nuclear, wind, water or &#8220;basic&#8221; (=nuclear, fossil, wind &amp; water). Now, the pricing for wind generated power is a bit higher than for the other options, but what was really surprising was that the &#8220;basic&#8221; option, which is powered by fossil fuels in addition to clean energy is priced the same as electricity that has been generated 100% from water power.</p>
<p>My question is, why the hell does Vattenfall have an option that includes fossil fuels when there is a clean option at the same price point?</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/11/vattenfall-please-explain-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yup, Unity3D just got a new version and &#8230;</title>
		<link>http://artman.fi/2009/10/yup-unity3d-just-got-a-new-version-and/</link>
		<comments>http://artman.fi/2009/10/yup-unity3d-just-got-a-new-version-and/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 19:10:47 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[unity]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/10/yup-unity3d-just-got-a-new-version-and/</guid>
		<description><![CDATA[Yup, Unity3D just got a new version and is now free of charge (at least the former Indie version). Boom says Flash as it&#8217;s beeing overtaken by other development environments for sophisticated web-based games. The guys at Adobe just won&#8217;t listen that they are really missing out on something big.]]></description>
			<content:encoded><![CDATA[<p>Yup, Unity3D just got a new version and is now free of charge (at least the former Indie version). Boom says Flash as it&#8217;s beeing overtaken by other development environments for sophisticated web-based games. The guys at Adobe just won&#8217;t listen that they are really missing out on something big.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/10/yup-unity3d-just-got-a-new-version-and/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apple logo infringement in Web Feeds</title>
		<link>http://artman.fi/2009/10/apple/</link>
		<comments>http://artman.fi/2009/10/apple/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 06:45:58 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=387</guid>
		<description><![CDATA[So I finally got an update to Web Feeds &#8211; an iPhone RSS reader app &#8211; send to Apple for review. It took quiet a while and yesterday I got a message that the update was rejected due to &#8220;infringement of Apple trademarks&#8221;. Huh? I know the reviewers are very busy and probably have only [...]]]></description>
			<content:encoded><![CDATA[<p><a title="512K Apple" href="http://www.flickr.com/photos/13048208@N02/2502453271/"><img class="alignleft" style="float: left; " src="http://farm3.static.flickr.com/2025/2502453271_1ea33a7b39_t.jpg" alt="512K Apple" /></a></p>
<p>So I finally got an update to <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=286889917&amp;mt=8">Web Feeds</a> &#8211; an iPhone RSS reader app &#8211; send to Apple for review. It took quiet a while and yesterday I got a message that the update was rejected due to &#8220;infringement of Apple trademarks&#8221;. Huh?</p>
<p>I know the reviewers are very busy and probably have only minutes to test each update and look for suspicious activity. In this case their decision is rather sad. The application is preconfigured with some RSS-feeds users could be interested in, namely Huff-Post, Boing Boing, Engadget and, yes, Apple Hot News.</p>
<p>Now, when the app launches it fetches the feeds and looks for any FavIcons in the Feed&#8217;s domain like any web browser does. Of course the Apple Hot News feed loads up the grey-white apple FavIcon from apple.com. Enough for the reviewer to reject this update (oh, all the other 10 updates have gone through without anyone noticing, hmm).</p>
<p>Maybe I&#8217;ll just resubmit without the Apple Hot News feed&#8230;</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/10/apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Full GPU acceleration coming with Flash Player 10.1</title>
		<link>http://artman.fi/2009/10/full-gpu-acceleration-coming-with-flash-player-10-1/</link>
		<comments>http://artman.fi/2009/10/full-gpu-acceleration-coming-with-flash-player-10-1/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 02:56:06 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[gpu]]></category>
		<category><![CDATA[max]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=382</guid>
		<description><![CDATA[NVIDIA took the big surprise out of tomorrows MAX keynote by adding a pamphlet to the MAX swag bag that everyone received when registering. It says: Unique technical partnership between NVIDIA and Adobe engineers optimizes full pipeline acceleration of Flash 10.1 on the GPU. This means two things: Flash Player 11 will not see the [...]]]></description>
			<content:encoded><![CDATA[<p><a title="nVidia" href="http://www.flickr.com/photos/40204093@N06/3976394281/"><img class="alignleft" style="float: left; " src="http://farm3.static.flickr.com/2421/3976394281_344ea4bf5d_m.jpg" alt="nVidia" /></a></p>
<p>NVIDIA took the big surprise out of tomorrows MAX keynote by adding a pamphlet to the MAX swag bag that everyone received when registering. It says:</p>
<blockquote><p>Unique technical partnership between NVIDIA and Adobe engineers optimizes full pipeline acceleration of Flash 10.1 on the GPU.</p></blockquote>
<p>This means two things: Flash Player 11 will not see the light of day tomorrow. Instead, a minor version update 10.1 is going to be releasead. This release will see full graphics pipeline rendering on the GPU. In my mind this means that everything from rendering vectors, text, transforms and Pixel Bender to compositioning will run on the GPU. That&#8217;s absolutely fantastic (if true)!</p>
<p>However, having only a minor revision of FP released tomorrow probably means that there won&#8217;t be many other new features. But expect to see a number of notifications regarding running FP on mobile devices. Again the NVIDIA pamphlet provided some unexpected news:</p>
<blockquote><p>Full GPU acceleration of dynamic games and rich internet applications in the palm of your hand</p></blockquote>
<p>Seems that GPU acceleration (and FP 10.1) is comming to your mobile (if your mobile is NVIDIA TEGRA-powered, err, which it is not&#8230;).</p>
<p>Stay tuned and watch the <a href="http://max.adobe.com">keynotes</a>.</p>
<p>[Update] Shit. GPU acceletation will only be available for mobile devices and selected notebooks. Windows 7 (i.e. DiretX 11 machines) will have h.264 decoded on the GPU, but won&#8217;t support full GPU acceleration in the rendering pipeline. Mac&#8217;s and Linux boxes have even less support for the GPU. Big bummer. I really think Adobe is missing a big opportunity here. Unity3D or Torque3D will become the defacto web-based game plugin, at least for 3D games.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/10/full-gpu-acceleration-coming-with-flash-player-10-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Meet up at MAX</title>
		<link>http://artman.fi/2009/09/meet-up-at-ma/</link>
		<comments>http://artman.fi/2009/09/meet-up-at-ma/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 19:20:26 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aug]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[max]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=379</guid>
		<description><![CDATA[Anyone from up north (the european north) heading to MAX? We&#8217;re already arriving on saturday, but will probably be too exhausted to do anything that night. But do come have a few (=lots) pints with us on Saturday for some pre-conferencing It would also be cool to join any Adobe User Group meeting that weekend. [...]]]></description>
			<content:encoded><![CDATA[<p><a title="&lt;3" href="http://www.flickr.com/photos/46509326@N00/3969498574/"><img class="alignleft" style="float: left; " src="http://farm3.static.flickr.com/2494/3969498574_5343b0712a_t.jpg" alt="&lt;3" /></a></p>
<p>Anyone from up north (the european north) heading to MAX? We&#8217;re already arriving on saturday, but will probably be too exhausted to do anything that night. But do come have a few (=lots) pints with us on Saturday for some pre-conferencing <img src='http://artman.fi/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>It would also be cool to join any Adobe User Group meeting that weekend. Anyone know where one&#8217;s beeing held?</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/09/meet-up-at-ma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A new beginning</title>
		<link>http://artman.fi/2009/09/a-new-beginning/</link>
		<comments>http://artman.fi/2009/09/a-new-beginning/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 18:37:17 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[Stuff happens]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=314</guid>
		<description><![CDATA[Finally I decided to get myself the internet precense I deserved and got myself my own artman.fi-domain. You know, I&#8217;ve always dreaded the moment I leave Valve (yes, eventually that too will happen&#8230;) because I loose my company email-address as well. I can&#8217;t even count the number of services I&#8217;ve registered to with that specific [...]]]></description>
			<content:encoded><![CDATA[<p><a title="DSCF2549" href="http://www.flickr.com/photos/30083252@N03/3966841216/"><img class="alignleft" style="float: left; " src="http://farm3.static.flickr.com/2544/3966841216_f219c6337c_m.jpg" alt="DSCF2549" /></a></p>
<p>Finally I decided to get myself the internet precense I deserved and got myself my own artman.fi-domain. You know, I&#8217;ve always dreaded the moment I leave <a href="http://www.valve.fi">Valve</a> (yes, eventually that too will happen&#8230;) because I loose my company email-address as well. I can&#8217;t even count the number of services I&#8217;ve registered to with that specific email. Most services nowadays use the email-address as the login name, and usually the login name cannot be changed (stupid, is it not?).</p>
<p>After pondering over this for the past few years (and even subscribing to MobileMe to provide support for all those users who use my iPhone Web Feeds app) it was time to get an email-address which I can be certain of will follow me through the rest of my life.</p>
<p>Once I had the domain I thought about the same thing with my personal blog, previously hosted at valveblog.com. Again, my personal blog was tied to a company that at some point in the future I might not be working for anymore. ValveBlog started out as a co-hosted blog run my me and a few colleagues, but it clearly became apparent that I was the only one doing all the writing, so it sort of just became my personal blog over the matter of a few years.</p>
<p>So yeah, brand new, risen from the ashes of ValveBlog (a design that was way too old anyways) I present you with this mash-up of blog, tweets, mobile photos, weather info and delicious links.</p>
<p>It&#8217;s still very rough around the edges, but should get better every now and then when I have the time to play. And oh, if some Art Director from Valve would like to help me out with the background for example, I&#8217;d greatly appreciate the help.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/09/a-new-beginning/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hahaah! Google hijacks IE</title>
		<link>http://artman.fi/2009/09/hahaah-google-hijacks-ie/</link>
		<comments>http://artman.fi/2009/09/hahaah-google-hijacks-ie/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 19:20:21 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/09/24/hahaah-google-hijacks-ie/</guid>
		<description><![CDATA[This is a new one, but it totally makes sense. Google just released Chrome Frame, a plugin for IE (6 and up) that essentially lets users hijack IE and replace it&#8217;s sluggish, HTML5-lacking rendering engine with Chrome&#8217;s rendering engine. You&#8217;re still using IE&#8217;s shell, but everything is rendered using Chrome. JavaScript performance is tenfold and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.appleinsider.com/articles/09/09/24/google_sneaks_webkit_html_5_support_into_internet_explorer.html">This is a new one</a>, but it totally makes sense. Google just released <a href="http://code.google.com/chrome/chromeframe/">Chrome Frame</a>, a plugin for IE (6 and up) that essentially lets users hijack IE and replace it&#8217;s sluggish, HTML5-lacking rendering engine with Chrome&#8217;s rendering engine. You&#8217;re still using IE&#8217;s shell, but everything is rendered using Chrome. JavaScript performance is tenfold and HTML5 stuff works beautifully.</p>
<p>Now even corporations who have policies against switching from IE can maybe think about upgrading to a modern browser.</p>
<p>I just wonder what the User-Agent is send with each HTTP-request send from this hijacked browser&#8230;</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/09/hahaah-google-hijacks-ie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web application URI Schemes</title>
		<link>http://artman.fi/2009/07/web-application-uri-schemes/</link>
		<comments>http://artman.fi/2009/07/web-application-uri-schemes/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 18:52:11 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[uri]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/07/25/web-application-uri-schemes/</guid>
		<description><![CDATA[Operating systems allow applications register a URI Scheme and associate that with a specific application. When a user clicks a link with that scheme the associated application is opened to process the request. For example, the mailto-scheme opens your default email application, the skype-scheme opens up skype and calls the person or number provided in [...]]]></description>
			<content:encoded><![CDATA[<p>Operating systems allow applications register a URI Scheme and associate that with a specific application. When a user clicks a link with that scheme the associated application is opened to process the request. For example, the mailto-scheme opens your default email application, the skype-scheme opens up skype and calls the person or number provided in the link.</p>
<div>It hit me today that what the web needs are web application specific URI Schemes. Take twitter for example. There are a number of &#8220;retweet&#8221;-buttons appearing in blogs, allowing users to share a interesting blog post through twitter. That&#8217;s all good, but what if I don&#8217;t use Twitter.com to post my tweets? What if I want to use TwitHive or PeopBrowsr to do all of my tweets? Currently we&#8217;re stuck with what the blogs owner defined as the URL for the retweet-button.</div>
<div>Or what if my primary mail is web-based? Clicking on a mailto: -link will still open up by default email program on my desktop which is absolutely useless, as I don&#8217;t have an account created there.</div>
<div>So what we need is the ability to asociate a application URI Scheme with a specific web application in addition to a desktop application. Simplified it could work something like this:</div>
<div>I load up GMail. My browser recognises that the page loaded up contains metadata that tells that it can handle the mailto: URI Scheme. Somewhere in the browsers chrome a small button appears notifying me that the mailto: &#8211; URI Scheme is currently not bound the GMail, but to a desktop application. I can click that button and after a confirmation my browser will now load up all mailto: links with a URL provided by GMail.</div>
<div>But this is merely the beginning! What about associating file types with web applications? Everybody&#8217;s familiar with the fact that double-clicking a .doc &#8211; file will load up Word. It would again be quiet easy to associate file types with web applications. What if you&#8217;d like to use a web-based image editing application, say <a href="http://www.sumopaint.com">SUMO</a>, <a href="http://www.picnik.com/">Picnik</a> or <a href="http://www.aviary.com">Aviary</a>? Just log into any of these apps, and let your browser associate jpeg&#8217;s png&#8217;s and gifs with that specific application. Double-clicking any image file will load it up in your preferred web app.</div>
<div>Now that would make web apps first-class citizens. Honk if you&#8217;d like to see this happening!</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/07/web-application-uri-schemes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AS3 sorting algorithm faster than native sorting</title>
		<link>http://artman.fi/2009/06/as3-sorting-algorithm-faster-than-native-sorting/</link>
		<comments>http://artman.fi/2009/06/as3-sorting-algorithm-faster-than-native-sorting/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 19:24:23 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/06/14/as3-sorting-algorithm-faster-than-native-sorting/</guid>
		<description><![CDATA[There have been a number of people blogging about creating AS3 sorting algorithms. Most have come to the conclusion that it&#8217;s not possible to create a faster sorting algorithm than the native one provided for Vectors. And who can blame them? It seems very unlikely that the Flash Player&#8217;s native algorithm would be slower than [...]]]></description>
			<content:encoded><![CDATA[<p>There have been a number of people blogging about creating AS3 sorting algorithms. Most have come to the conclusion that it&#8217;s not possible to create a faster sorting algorithm than the native one provided for Vectors. And who can blame them? It seems very unlikely that the Flash Player&#8217;s native algorithm would be slower than any interpreted AS3 algorithm.</p>
<p>Well, it turns out everybody was wrong, and sorting with an AS3 algorithm is indeed almost twice as fast as it&#8217;s native counterpart!</p>
<p>Consider the following code:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">package</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #003366; font-weight: bold;">import</span> flash.<span style="color: #660066;">display</span>.<span style="color: #660066;">Sprite</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #003366; font-weight: bold;">import</span> flash.<span style="color: #660066;">events</span>.<span style="color: #660066;">Event</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #003366; font-weight: bold;">import</span> flash.<span style="color: #660066;">utils</span>.<span style="color: #660066;">getTimer</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; <span style="color: #003366; font-weight: bold;">public</span> <span style="color: #003366; font-weight: bold;">class</span> Sorting <span style="color: #003366; font-weight: bold;">extends</span> Sprite <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">public</span> <span style="color: #003366; font-weight: bold;">function</span> Sorting<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; addEventListener<span style="color: #009900;">&#40;</span>Event.<span style="color: #660066;">ENTER_FRAME</span><span style="color: #339933;">,</span> loop<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">private</span> <span style="color: #003366; font-weight: bold;">function</span> loop<span style="color: #009900;">&#40;</span>e<span style="color: #339933;">:</span>Event<span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">void</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> data<span style="color: #339933;">:</span>Vector.<span style="color: #339933;">&lt;</span>number<span style="color: #339933;">&gt;</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Vector.<span style="color: #339933;">&lt;</span>number<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">:</span>int <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10000</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; data.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">10000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> data2<span style="color: #339933;">:</span>Vector.<span style="color: #339933;">&lt;</span>number<span style="color: #339933;">&gt;</span> <span style="color: #339933;">=</span> data.<span style="color: #660066;">concat</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> t<span style="color: #339933;">:</span>Number <span style="color: #339933;">=</span> getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; data.<span style="color: #660066;">sort</span><span style="color: #009900;">&#40;</span>sf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; trace<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Native sort&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>t<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; t <span style="color: #339933;">=</span> getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; data.<span style="color: #660066;">sort</span><span style="color: #009900;">&#40;</span>sf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; trace<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Native sort on ordered elements&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>t<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; t <span style="color: #339933;">=</span> getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; shellSort<span style="color: #009900;">&#40;</span>data2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; trace<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;AS3 Shell sort&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>t<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; t <span style="color: #339933;">=</span> getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; shellSort<span style="color: #009900;">&#40;</span>data2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; trace<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;AS3 Shell sort on ordered elements&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>getTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>t<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; final <span style="color: #003366; font-weight: bold;">private</span> <span style="color: #003366; font-weight: bold;">function</span> sf<span style="color: #009900;">&#40;</span>a<span style="color: #339933;">:</span>Number<span style="color: #339933;">,</span> b<span style="color: #339933;">:</span>Number<span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span>int <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>a<span style="color: #339933;">==</span>b <span style="color: #339933;">?</span> <span style="color: #CC0000;">0</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">&lt;</span> b<span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; final <span style="color: #003366; font-weight: bold;">private</span> <span style="color: #003366; font-weight: bold;">function</span> shellSort<span style="color: #009900;">&#40;</span>data<span style="color: #339933;">:</span>Vector.<span style="color: #339933;">&lt;</span>number<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">void</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> n<span style="color: #339933;">:</span>int <span style="color: #339933;">=</span> data.<span style="color: #660066;">length</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> inc<span style="color: #339933;">:</span>int <span style="color: #339933;">=</span> int<span style="color: #009900;">&#40;</span>n<span style="color: #339933;">/</span><span style="color: #CC0000;">2</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>inc<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">:</span>int<span style="color: #339933;">=</span>inc<span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>n<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> temp<span style="color: #339933;">:</span>Number <span style="color: #339933;">=</span> data<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> j<span style="color: #339933;">:</span>int <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>j <span style="color: #339933;">&gt;=</span> inc <span style="color: #339933;">&amp;&amp;</span> data<span style="color: #009900;">&#91;</span>int<span style="color: #009900;">&#40;</span>j <span style="color: #339933;">-</span> inc<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;</span> temp<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> data<span style="color: #009900;">&#91;</span>int<span style="color: #009900;">&#40;</span>j <span style="color: #339933;">-</span> inc<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j <span style="color: #339933;">=</span> int<span style="color: #009900;">&#40;</span>j <span style="color: #339933;">-</span> inc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> temp<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; inc <span style="color: #339933;">=</span> int<span style="color: #009900;">&#40;</span>inc <span style="color: #339933;">/</span> <span style="color: #CC0000;">2.2</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>The class will simply run two native sorts to test the performance on a totally random unordered and ordered Vector.&lt;Number&gt; and then run two sorts on the same data with a pure AS3 implementation of <a href="http://en.wikipedia.org/wiki/Shell_sort">Shell Sort</a>.</p>
<p>Shell sort has a good worst case resolve speed and works quiet well even when the origin data is already sorted or almost sorted.</p>
<h3>The results</h3>
<p>On my iMac native sort on the Vector with 10.000 Numbers took an average of <strong>50 milliseconds</strong>. When sorting the already sorted Vector again, it took an average of <strong>38</strong><strong> milliseconds</strong>.</p>
<p>The AS3 algorithm took an average of <strong>31 milliseconds </strong>to sort the random Vector and only <strong>15 milliseconds</strong> to sort the sorted Vector. (<strong>Update:</strong> in debug mode!)</p>
<p>In real life where Vectors that need to be sorted are usually not totally random, you&#8217;ll get a two-fold increase in sorting speed compared to the native algorithm.</p>
<p>Some things to consider, though: Shell sorting in this example gives you a head start over the native sorting algorithm that the data to be sorted are primitives. If you wanted to sort Objects (typed objects of course) based on one of their properties shellSort would no longer outperform Flash Player&#8217;s native sort, as the speed is eaten up by those numerous object property look-ups. However even then it comes very close and in programs that often sort Vectors with objects that are already almost in the right order, you&#8217;ll beat the native sorter by 10-30%.</p>
<p>But there&#8217;s one great type of project where speeding up sorting of Numerical Vectors will increase application performance greatly and that&#8217;s 3D. I started to dig into these algorithms after my profiler told me that 25% of all of my CPU time was going into sorting 3D polygons. Only the drawing operation was slower, but not by much.</p>
<p>P.S. If you want even better performance, don&#8217;t just rely on a single sorting algorithm. QuickSort is 20 times faster than Shell Sort if the Vector is already sorted, but absolutely freaking slow if the Vector sorting order is random. In 3D scenes it might be a good idea to switch between these, using Shell sort for your initial render, the user quick sort if your model rotates only slightly and thus only a few poly&#8217;s are out of place.</p>
<p><strong>Update:</strong> Erik correctly pointed out that I should test the sorting algorithm in the release player instead of the debug player in debug mode, as this might affect results. And indeed it did. It made Shell sorting became much faster. A vector with 100.000 random Numbers took:</p>
<p>Native sort: <strong>338 ms</strong></p>
<p>Native sort on ordered Vector: <strong>245 ms</strong></p>
<p>AS3 Shell sort: <strong>98 ms</strong></p>
<p>AS3 Shell sort on ordered Vector: <strong>49 ms</strong></p>
<p>Who would have thought that interpreted code can do the job 3-5 times more quickly than a native call.</p>
<p><strong>Update</strong>: I forgot to mention the license of the source code. Consider it Public Domain.</p>
<p><strong>Update 2</strong>: Doh. I ported the code too quickly. inc should have been rounded, not floored. Updated the code to work properly.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/06/as3-sorting-algorithm-faster-than-native-sorting/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Flash Builder 4 and Catalyst in public beta</title>
		<link>http://artman.fi/2009/06/flash-builder-4-and-catalyst-in-public-beta/</link>
		<comments>http://artman.fi/2009/06/flash-builder-4-and-catalyst-in-public-beta/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 05:09:57 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/06/01/flash-builder-4-and-catalyst-in-public-beta/</guid>
		<description><![CDATA[Get it while it&#8217;s hot.]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.adobe.com">Get it</a> while it&#8217;s hot.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/06/flash-builder-4-and-catalyst-in-public-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building MMOG&#039;s for the Flash Platform: Tooling</title>
		<link>http://artman.fi/2009/02/building-mmogs-for-the-flash-platform-tooling/</link>
		<comments>http://artman.fi/2009/02/building-mmogs-for-the-flash-platform-tooling/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 18:28:07 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[mmog]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/?p=176</guid>
		<description><![CDATA[We&#8217;ve just released the teaser site for our first game built with the TrunkTech platform at http://www.eco-rangers.com. While the site was put up rather quickly and doesn&#8217;t include any multiplayer action (nor will it in untill the full game is launched this summer), it was a really important milestone and acid test for the TrunkTech [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just released the teaser site for our first game built with the TrunkTech platform at <a href="http://www.eco-rangers.com">http://www.eco-rangers.com</a>. While the site was put up rather quickly and doesn&#8217;t include any multiplayer action (nor will it in untill the full game is launched this summer), it was a really important milestone and acid test for the TrunkTech technology. All the features in the first tease game &#8211; Deep Sea Xpedition &#8211; utilize the TrunkTech platform and give you a hint of what&#8217;s going to be possible with the platform. Although it&#8217;s not multiplayer, we&#8217;re still utilizing all aspects of the our technology stack: The first room you&#8217;re entering is actually driven by server-side logic written in Mamboo (AS3 on the Server) and all map levels utilize our MapEngine. User data and high-scores use data synchronization and avatars are rendered with our 3D rendering pipeline.</p>
<div>But most importantly, and the subject of todays post is the fact that the game was mostly built by game designers without any programming skills.</div>
<div>I&#8217;ve talked before about my</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/02/building-mmogs-for-the-flash-platform-tooling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building MMOG&#039;s for the Flash Platform: Metaprogramming</title>
		<link>http://artman.fi/2009/01/building-mmogs-for-the-flash-platform-metaprogramming/</link>
		<comments>http://artman.fi/2009/01/building-mmogs-for-the-flash-platform-metaprogramming/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 20:03:13 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mmog]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/01/27/building-mmogs-for-the-flash-platform-metaprogramming/</guid>
		<description><![CDATA[Previous posts in this series: Building MMOG&#8217;s for the Flash Platform: Intro Straight from the start of our MMOG Platform project we knew we wanted to create a technology which is better than anything previously available (or unavailable in the case of proprietary, closed platforms). Quite big words, so we needed a big idea. We [...]]]></description>
			<content:encoded><![CDATA[<p>Previous posts in this series:</p>
<div><a href="http://www.valveblog.com/2008/12/building-mmogs-for-the-flash-player-intro.html">Building MMOG&#8217;s for the Flash Platform: Intro</a></div>
<div><a style="float: right;" href="http://artman.typepad.com/.a/6a00d8341de6a153ef010536fbaf45970c-pi"><img class="at-xid-6a00d8341de6a153ef010536fbaf45970c" style="margin: 0px 0px 5px 5px;" title="Asteroids" src="http://artman.typepad.com/.a/6a00d8341de6a153ef010536fbaf45970c-800wi" border="0" alt="Asteroids" /></a><br />
Straight from the start of our MMOG Platform project we knew we wanted to create a technology which is better than anything previously available (or unavailable in the case of proprietary, closed platforms). Quite big words, so we needed a big idea.</div>
<div>We didn&#8217;t start the project with a concepting or architectural design phase. Instead we wanted to get coding straight away and try out some of our initial thughts in a working example and build out the technology stack from there. So we decided to start with a simple game which would still enable to test most of the critical aspects of our technology: <a href="http://www.springfrog.com/games/asteroids/">Asteroids</a>.</div>
<div>Although TrunkTech (the code-name for our technology platform stack) is designed to run MMOG&#8217;s, we don&#8217;t want to limit what kind of games you can write with it. While most people think about online MMOG&#8217;s being isometric, tile-based, slow-paced games where the emphasis is in moving to a certain tile and chatting, we did not want to make that assumption. We also wanted TrunkTech to be able to deliver realtime, multiplayer action-games as part of the virtual world, so Asteroids was a great playground. You have free-moving ships, fast-paced action, network latency to take into account, a world that has to be synronized  across clients and server-side game logic.</div>
<div>After creating the single player game it took us about 30 minutes to get multiple players connect to the game space, have the space synchronize itself across all the clients with everyone swooping around without any noticeable problems from lag. Pretty sweet.</div>
<div>Eventually we didn&#8217;t finish the game as we got too excited about what we had just unleashed and got on to create the rest of the technology stack.</div>
<h3>Client synchronization and metaprogramming</h3>
<div>We&#8217;ve been programming the client-server-side solution for a few months now and in retrospect must say that the most important ideas that we came up &#8211; which enable us to create multiplayer games in a fraction of the time it would usually take &#8211; were automated synchronization and metaprogramming.</div>
<div>Without getting into the boring details, our synchronization stack works essentially this:</div>
<div>When a client connects to a game instance (essentially a script written in AS3) the TrunkTech client and server start talking without imposing any work on the actually developer of the game or it&#8217;s objects. The server synchronize the game state with the client using our custom-developed, AMF-based protocol to get the client up to speed on what&#8217;s happening inside the game instance. For example, a number of other players might have joined earlier and shared their avatar instances (essentially the representation and behavior). The game instance itself might have spawned a number of game objects that need to be shared across all clients (e.g. the actual Asteroids in the Asteroids game), or the state of the game instance itself (time remaining, high-score, &#8230;). All this synchronization happens without any developer intervention. You just join a game instance and automatically receive all the shared objects that are associated with the game.</div>
<div>Even after receiving the first representation of a shared object it&#8217;s properties will of course change overtime. A spaceship might change it&#8217;s course, accelerate, rotate, or a Avatar might say a phrase. But again, the developer does not need to implement anything to make this happen. TrunkTech keeps all shared object in sync by sending messages back and forth and automatically updating properties of these shared objects or calling it&#8217;s methods as requested by the originating client.</div>
<div>Once connected to a game space, the client can choose to add some object to the game instance itself (his avatar or spaceship or whatever). From a developer perspective all that is needed to do is to create a instance from a Class that itself extends the SharedObject definition and tell the game instance to add it as a object that needs to be shared across all clients. The SharedObject base class will take care of all the hard work to keep the objects synchronized. This all happens through object introspection made possible by metaprogramming.</div>
<div>Whenever the programmer wants a property of an object to be synchronize he adds some metadata to the property to describe the type of synchronization necessary to keep all clients up to date an be able to simulate the behavior of the object perfectly. Synchronization might happen at certain intervals or whenever the property or state of the object changes.</div>
<div>In the ship class of our little Asteroids try-out, all we really needed to do is define metadata for a few properties to get that object synchronized correctly to all clients and thus convert a single-player game to multiplayer. Whenever the state of the controls change (an Vector containing the down-state of the arrow keys), these get synchronized. The metadata for the control-property states that whenever it&#8217;s state is synchronized, the location and speed of the ship should be synchronized as well. That&#8217;s really everything you need to know to simulate the movements of one ship across multiple clients.</div>
<div>The server is of course aware of all shared objects across the game instance, including all of their properties and can even intervene and change them at will, essentially taking control of a users objects. When a new client joins the game instance in the middle of the gameplay, the server has all the necessary information to send all the shared objects to the arriving client at get them up to speed.</div>
<div>
<h3>Take away</h3>
<p><span>Metaprogramming is utterly cool and provides you with the tools to create a system which magically do complex tasks on a complex set of objects but let&#8217;s you preserve the speed at which AS3 operates by not using dynamic objects.</span></div>
<div>For MMOG platforms, where you don&#8217;t want to restrict the imagination of the developer actually building out a product it&#8217;s a fantastic tool which let&#8217;s the developer write cleaner and meaner code in a fraction of the time otherwise required by taking all the hard stuff of client synchronization and dealing with it &#8220;in the background&#8221;.</div>
<div>Obviously I need to show you some code examples for all of this to make sense, but that&#8217;s a topic for some future writing.</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/01/building-mmogs-for-the-flash-platform-metaprogramming/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Change&#8230; oh yes&#8230;</title>
		<link>http://artman.fi/2009/01/change-oh-yes/</link>
		<comments>http://artman.fi/2009/01/change-oh-yes/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 17:14:56 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Stuff happens]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/01/20/change-oh-yes/</guid>
		<description><![CDATA[It&#39;s odd that I feel this happy for something that does only indirectly affect me. Still I feel that the whole world has become a better place as Barack takes his place as leader of &#8211; what can once again become &#8211; the free world. Congratulations to everyone in the U.S. I have absolutely no [...]]]></description>
			<content:encoded><![CDATA[<p>It&#39;s odd that I feel this happy for something that does only indirectly affect me. Still I feel that the whole world has become a better place as Barack takes his place as leader of &#8211; what can once again become &#8211; the free world.</p>
<p>
<div>Congratulations to everyone in the U.S. I have absolutely no doubt that the next years will be better than the last.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/01/change-oh-yes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spam&#8230; Is it still out there?</title>
		<link>http://artman.fi/2009/01/spam-is-it-still-out-there/</link>
		<comments>http://artman.fi/2009/01/spam-is-it-still-out-there/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 15:55:37 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2009/01/14/spam-is-it-still-out-there/</guid>
		<description><![CDATA[Thanks to good spam filters, I&#8217;ve received very little unwanted emails during the last few years. So little indeed that I didn&#8217;t even remember that spam is still a huge problem. Well, our spam filter&#8217;s license expired and it took a few days to get it back online. My email was almost rendered unusable with [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to good spam filters, I&#8217;ve received very little unwanted emails during the last few years. So little indeed that I didn&#8217;t even remember that spam is still a huge problem. Well, our spam filter&#8217;s license expired and it took a few days to get it back online. My email was almost rendered unusable with the <span style="font-weight: bold;">HUGE</span> amount of spam arriving in just 48 hours.</p>
<div>So to anyone behind a filter who&#8217;s wondering whether spam is still a big problem&#8230; Yes, very much so.</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2009/01/spam-is-it-still-out-there/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building MMOG&#039;s for the Flash Player: Intro</title>
		<link>http://artman.fi/2008/12/building-mmogs-for-the-flash-player-intro/</link>
		<comments>http://artman.fi/2008/12/building-mmogs-for-the-flash-player-intro/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 20:27:52 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mmog]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2008/12/08/building-mmogs-for-the-flash-player-intro/</guid>
		<description><![CDATA[Recently we at Valve started work on a huge MMOG (Massively Multiplayer Online Game) project with a U.S. based games publisher. It&#8217;s supposed to go live in a little less than a year from now, but we&#8217;ve already got a big team working on the MMOG technology and preproduction. We&#8217;re actually not only building a game, [...]]]></description>
			<content:encoded><![CDATA[<div>Recently we at <a href="http://www.valve.fi">Valve</a> started work on a huge MMOG (Massively Multiplayer Online Game) project with a U.S. based games publisher. It&#8217;s supposed to go live in a little less than a year from now, but we&#8217;ve already got a big team working on the MMOG technology and preproduction.</div>
<div style="font-family: Arial; ">We&#8217;re actually not only building a game, we&#8217;re creating a end-to-end technology platform (code-named TrunkTech) which enables us (or anyone else for that matter) to create browser based MMOG&#8217;s <span style="font-weight: bold;">very rapidly</span>. And I really have to emphasize the word &#8220;rapidly&#8221;, as we&#8217;ve set extremely ambitious goals for our technology.</div>
<div>I&#8217;m currently the lead front-end developer and am closely working together with a phenomenal Java guru to specify and develop ( actually specifying through developing <img src='http://artman.fi/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) out the low-level bits and pieces for our technology.</div>
<div>And I must say, I&#8217;m having a blast! At long last I&#8217;m able to work on stuff that I have almost no prior knowledge of, make sure that whatever code I write should still be readable in five years time and work on a game that I truly believe is going to be a big hit.</div>
<div>So I thought of starting to write a series about building MMOG&#8217;s with Flash (yeah, it&#8217;s Flash based), and share my thoughts and learnings from the experiences I gather by working on TrunkTech.</div>
<div>To get an a subject for my first post under this title, I&#8217;ll start of easy:</div>
<div>
<h3>Why Flash?</h3>
</div>
<div>When we stared the project we quickly came to the conclusion that our client would be Flash based. Currently, the biggest web-based MMOG is <a href="http://www.habbo.com">Habbo</a>, from <a href="http://www.sulake.fi">Sulake</a> (back in late 2000, I was supposed to become the first employee of what was later to be Sulake, but I chose to go to Razorfish Helsinki instead. But yeah, that&#8217;s a different story altogether). Habbo is based on Shockwave, and frankly, I believe that Shockwave is still (barely) alive because of Habbo. Shockwave has seen it&#8217;s best days and is quickly loosing penetration, developers and the will to live. It&#8217;s too old and clumsy and has never been a productive development platform.</div>
<div>As we really wanted our games to be playable by everyone on the net without installing anything whatsoever, Flash was the obvious candidate. And as we did not intend to go full 3D (our MMOG&#8217;s are not for hard core gamers), we quickly ditched Shockwave and <a href="http://www.unity3d.com">Unity3D</a> as our client-side platform of choice (although we may want to revisit Unity3D at some stage as it&#8217;s really gaining traction right now).</div>
<div>Flash, ecpecially with the second incarnation of it&#8217;s virtual machine, has become great for development of even very complex technology platforms with it&#8217;s modern and fast virtual machine. AS3 is strongly typed, catches quiet a many errors at compile time and let&#8217;s the developers who use our API debug with strong tools. The syntax is modern and is ECMA-Script compliant&#8230; err&#8230; Well it was supposed to be, anyways, so people with Web development skills in general can quite easy hop on. Networking is robust as we now have access to binary sockets (very important, more on that later on). And most importantly Adobe is pushing the technology into the right direction, and Flex Builder 4 is going to make development even easier with better debugging, intellisense and auto-completion.</div>
<div>We did pause for a brief moment when deciding upon the technology, though. Why? Rendering speed.</div>
<p>While the VM2 is fast enough for most of the logic we&#8217;re expecting our platform to be used for, the same thing can&#8217;t be said about rendering. Kids expect quiet a bit of graphics crunching from todays desktop games, and online games are catching up really quickly. Even five years ago Shockwave was able to harness the power of the GPU, making it still about <a href="http://www.valveblog.com/2007/02/my_2_cents_on_3.html">10.000 times</a> faster to render texels as Flash 10 does (mileage may vary). While this is crucial for 3D games, it would still make a lot of sense to have 2D drawn on the GPU aswell. (and no, don&#8217;t even dare to write a comment about wmode=gpu, unless you&#8217;re <a href="http://www.kaourantin.net/">Tinic</a> and have some ace up you&#8217;re sleeve).</p>
<div>But in the end, we quickly decided that penetration was far more important than rendering speed. There&#8217;s a lot we can do to make up for the poor rendering speed in Flash by beeing creative and applying a trick or two, but penetration is something you can&#8217;t cheat yourself around.</div>
<h3>Up next</h3>
<div>
<div>In the next few posts I&#8217;ll talk a bit about our Server (Java-baed), Bamboo (our client-server protocol), our server-side scripting language (ActionScript3 compiled into Java byte code, aha!), meta-programming to let developers &#8220;multi-playerize&#8221; applications <span style="font-weight: bold;">really</span> fast, mixing 3D with pixel bender to texturize a great number of 3D model based avatars and any other experienced I might find worth sharing (or you requesting).</div>
<div>Stay tuned.</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2008/12/building-mmogs-for-the-flash-player-intro/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MAX Europe</title>
		<link>http://artman.fi/2008/11/max-europe/</link>
		<comments>http://artman.fi/2008/11/max-europe/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 18:25:53 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[max]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2008/11/27/max-europe/</guid>
		<description><![CDATA[Off to beautiful Milan this Saturday, with a bunch of my colleagues. It&#8217;s sort of lame that all the new introductions were already made two weeks ago at the U.S. MAX, but I&#8217;m still looking forward to the great sessions. Anyone else from Finland attending? It would be good to meet up for a late [...]]]></description>
			<content:encoded><![CDATA[<p>Off to beautiful Milan this Saturday, with a bunch of my colleagues. It&#8217;s sort of lame that all the new introductions were already made two weeks ago at the U.S. MAX, but I&#8217;m still looking forward to the great sessions.</p>
<div>Anyone else from Finland attending? It would be good to meet up for a late brunch on Sunday for example.</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2008/11/max-europe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CS4 &#8211; one more thing</title>
		<link>http://artman.fi/2008/10/cs4-one-more-thing/</link>
		<comments>http://artman.fi/2008/10/cs4-one-more-thing/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 14:23:16 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2008/10/26/cs4-one-more-thing/</guid>
		<description><![CDATA[With every update to Flash I&#8217;ve felt a great urge to blog about one missing feature. But I&#8217;ve always withheld my outcries because I thought it was such a no-brainer that Adobe would just have to include it in the next minor update. With CS3 I thought they just didn&#8217;t have the time to implement [...]]]></description>
			<content:encoded><![CDATA[<p>With every update to Flash I&#8217;ve felt a great urge to blog about one missing feature. But I&#8217;ve always withheld my outcries because I thought it was such a no-brainer that Adobe would just have to include it in the next minor update. With CS3 I thought they just didn&#8217;t have the time to implement it, but certainly a minor update would implement it. Now with CS4 the feature is still missing, and I just have to accept the fact that it&#8217;s not coming if nobody requests it.</p>
<div>What am I talking about? Copy-pasting from Photoshop!</div>
<div>There must be millions of Flash developers and designer wondering why one can&#8217;t correctly copy-paste a selection from Photoshop to Flash. You&#8217;ll get pixels, but no transparency (it&#8217;s totally opaque), rendering it almost completely useless.</div>
<div>My work-flow probably is quite different from everybody else&#8217;s, but I can&#8217;t imagine a single developer or designer not been confronted with the problem of getting a single piece of graphic from a Photoshop document to Flash really quickly. Sure, you can copy-paste the selection to a new document, remove the documents background, crop it, save it as a PNG and then import it into Flash, but that&#8217;s way too cumbersome. We&#8217;ve even implemented an action in Photoshop which will do much of the work for you, but it&#8217;s still not as easy and quick as copy-pasting.</div>
<div>So please Flash/Photoshop teams, get your act together and implement this trivial but important feature.</div>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2008/10/cs4-one-more-thing/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>About data roaming</title>
		<link>http://artman.fi/2008/09/about-data-roaming/</link>
		<comments>http://artman.fi/2008/09/about-data-roaming/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 16:43:15 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Stuff happens]]></category>
		<category><![CDATA[tele]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2008/09/17/about-data-roaming/</guid>
		<description><![CDATA[Uh, I was on vacation in San Francisco and just got my phone bill&#8230; 800€ (780€ from roaming data). Yeah. I knew that roaming was fucking expensive, but 7.99 € per megabyte? That&#8217;s so 1980&#8242;s. And I even made extra effort to use public WLAN access whenever possible, preload my iPhone&#8217;s Google Map app with [...]]]></description>
			<content:encoded><![CDATA[<p>Uh, I was on vacation in San Francisco and just got my phone bill&#8230; 800€ (780€ from roaming data). Yeah. I knew that roaming was fucking expensive, but 7.99 € per megabyte? That&#8217;s so 1980&#8242;s. And I even made extra effort to use public WLAN access whenever possible, preload my iPhone&#8217;s Google Map app with the spots I was about to visit and not read email at all when using GPRS.</p>
<p>From now on I&#8217;ll try to use telepathy whenever I&#8217;m in the U.S.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2008/09/about-data-roaming/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AppStore</title>
		<link>http://artman.fi/2008/08/appstore/</link>
		<comments>http://artman.fi/2008/08/appstore/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 18:40:19 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Stuff happens]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2008/08/11/appstore/</guid>
		<description><![CDATA[So I finally got my first iPhone app ready for distribution through Apple&#8217;s AppStore. I&#8217;ve always found it odd that Apple didn&#8217;t include a Feed reader app with the iPhone in the first place, so I decided to write my own. I really enjoyed writing Objective-C and using all of Apple&#8217;s excellent development tools, but [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: left; margin: 0px 5px 5px 0px;" title="Icon" src="http://artman.typepad.com/photos/uncategorized/2008/08/11/icon.png" border="0" alt="Icon" />So I finally got my first iPhone app ready for distribution through Apple&#8217;s AppStore. I&#8217;ve always found it odd that Apple didn&#8217;t include a Feed reader app with the iPhone in the first place, so I decided to write my own. I really enjoyed writing Objective-C and using all of Apple&#8217;s excellent development tools, but actually getting it to publish on the AppStore (it still hasn&#8217;t) is an experience I could have lived without. I don&#8217;t mind reviewing and signing all the necessary paper work and even calling to some Indian guy to get US taxation stuff sorted out, but what really bugs me sleeping restlessly each night and waking up early to check whether my app would have finally made it&#8217;s way to the AppStore only to find out it hasn&#8217;t.</p>
<p>I can live with the review process taking a week, but what bothers me is that my App has been in &#8220;Ready for sale&#8221; status for a week now, without it actually going live. And any inquiries send to Apple have simply not been answered. It would be nice get at least some kind of faint echo to my emails.</p>
<p>By the way, a big thanks to Junnu for designing the fantastic icon for &#8220;Feeds&#8221;. It looks gorgeous on an iPhone.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2008/08/appstore/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flash 10 Astro Beta is out!</title>
		<link>http://artman.fi/2008/05/flash-10-astro-beta-is-out/</link>
		<comments>http://artman.fi/2008/05/flash-10-astro-beta-is-out/#comments</comments>
		<pubDate>Thu, 15 May 2008 05:44:14 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2008/05/15/flash-10-astro-beta-is-out/</guid>
		<description><![CDATA[Woot! Get it while it&#8217;s hot. And yeah, Astro did seem to move a lot of compositioning to the GPU!]]></description>
			<content:encoded><![CDATA[<p>Woot! <a href="http://labs.adobe.com/technologies/flashplayer10/">Get it while it&#8217;s hot</a>. And yeah, Astro did seem to move a lot of compositioning to the GPU!</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2008/05/flash-10-astro-beta-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Win a Webby &#8211; check</title>
		<link>http://artman.fi/2008/05/win-a-webby-check/</link>
		<comments>http://artman.fi/2008/05/win-a-webby-check/#comments</comments>
		<pubDate>Tue, 06 May 2008 18:20:23 +0000</pubDate>
		<dc:creator>Tuomas Artman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://artman.fi/blog/2008/05/06/win-a-webby-check/</guid>
		<description><![CDATA[Yeah! We just received word that UPM Forest Life won the Corporate Communications category Webby Award. Webby &#8211; check. New York Festivals &#8211; check. LIAA &#8211; check. Cresta &#8211; check. Now the only big one still missing is the CyberLion.]]></description>
			<content:encoded><![CDATA[<p><img class="image-full" title="Vf0_2" src="http://artman.typepad.com/photos/uncategorized/2008/05/06/vf0_2.jpg" border="0" alt="Vf0_2" /></p>
<p>Yeah! We just received word that <a href="http://www.upmforestlife.com">UPM Forest Life</a> won the Corporate Communications category <a href="http://www.webbyawards.com/webbys/">Webby Award</a>.</p>
<p>Webby &#8211; check.<br />
New York Festivals &#8211; check.<br />
LIAA &#8211; check.<br />
Cresta &#8211; check.</p>
<p>Now the only big one still missing is the CyberLion.</p>]]></content:encoded>
			<wfw:commentRss>http://artman.fi/2008/05/win-a-webby-check/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
