<?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>Making Waves Labs &#187; Front-end</title>
	<atom:link href="http://labs.makingwaves.com/category/front-end/feed/" rel="self" type="application/rss+xml" />
	<link>http://labs.makingwaves.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 Jun 2010 08:25:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>The Future of Flash &#8211; some thoughts</title>
		<link>http://labs.makingwaves.com/2010/06/15/the-future-of-flash-some-thoughts/</link>
		<comments>http://labs.makingwaves.com/2010/06/15/the-future-of-flash-some-thoughts/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 08:25:41 +0000</pubDate>
		<dc:creator>Trond</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=1027</guid>
		<description><![CDATA[Once again Flash is in trouble. It&#8217;s not the first time, and I believe it&#8217;s still not the last. From Javascript, AJAX, Silverlight, Google, Microsoft&#8230; you name them, they&#8217;ve probably had some thorn in Flash&#8217;s side. Now it&#8217;s piling up for Flash again: Steve Jobs is crusading against Flash accompanied by the entire HTML5 consortium. [...]]]></description>
			<content:encoded><![CDATA[<p>Once again Flash is in trouble. It&#8217;s not the first time, and I believe it&#8217;s still not the last. From Javascript, AJAX, Silverlight, Google, Microsoft&#8230; you name them, they&#8217;ve probably had some thorn in Flash&#8217;s side. </p>
<p>Now it&#8217;s piling up for Flash again: Steve Jobs is crusading against Flash accompanied by the entire HTML5 consortium. Atop of this all major video-service providers, mobile phone makers, and a whole lot of others are now leaving Flash behind in the dust.<br />
<span id="more-1027"></span><br />
Once so close to web domination with virtually cross OS and cross browser support, Flash has bailed me out of many a worry of making things work in all browsers (remember IE6 anyone). Flash&#8217;s biggest blow may have been when they couldn&#8217;t make their player a web standard and include it in the DOM (as a seemless part of every browser).</p>
<p>Here we are stepping right in the core of the problems; Flash is run in a plugin&#8230; A &#8220;browser&#8221; inside a browser, so to speak. A semi-propritary technology is not wise to include in any standards. So that leaves us all to download a plugin in order to run the Flash content. We don&#8217;t really like this, but most of us are willing to forgive this if the content is worth it, and it suprisingly often is (IMHO).</p>
<p>Part of Flash&#8217;s problem is how easy things are to create. Everybody can make something in Flash, there are grandmothers making things in Flash! However when it comes down to dynamic applications using webservices, remoting and object orientated code libraries many fall off the wagon and start improvising. Uh-oh. This is where you shouldn&#8217;t improvise at all, and all over the web your bombarded with error-messages and applications stopping working.</p>
<p>Would you let your local baker do brainsurgery on yourself, or leave your car at the hot-dog-cart for a full haul-over. Not likely. But it&#8217;s OK for your web-shop to be designed by a developer and developed by a designer? Lets face it, it&#8217;s the perfect combination: A developer needs only two hours to &#8220;design&#8221; any solution, and the designer needs only a day &#8220;to make it work&#8221;. So good times then, or shouldn&#8217;t someone start raising the red flag here?<br />
This scenario is unfortunately a not uncommon in the world of Flash as &#8220;everybody&#8221; can do &#8220;everything&#8221;. However, there&#8217;s more and more Flash-projects being done more correctly now adays as Adobe has created a more intuitive work-flow.</p>
<p>Flash is pinpointed for the web. The web have never had any unified organisation going through all webpages and flashs approving them for the web, like Apple does for their platforms. This means that a lot of crap-application and banners etc are loaded on overy page out there. No wonder people are eager to kill Flash.</p>
<p>Of course there&#8217;s also a lot of technical issues with flash making people dislike it. Like it doesn&#8217;t support touch-screens, it lacks abilities for SEO and WAI (Search engines and accessibility), it&#8217;s CPU-heavy, device-problems and a lot of other things.<br />
All of these technicalities I believe Adobe must pay attention to in order to keep the Flash platform alive. It really shouldn&#8217;t be that difficult. Adobe should do one more thing, maybe more important than the technical issues, they need to rethink the philosophy behind Flash and where to go with it. Maybe not so easy to foresee the iPhone, but now that iPhone has been around for a long time, Adobe has not really adopted to it, but rather started a defensive verbal argument.</p>
<p>So will Flash die a slow painful death now? Of course it&#8217;s a time for everything. One day Flash will be history, as will the iPhone and most of the things we see and use, but it&#8217;s not the time for Flash quite yet.</p>
<p>Why not let Flash do what Flash does best, be the icing on the cake or the heavy-lifter of data-structures. It&#8217;s still perfect for animations, components, games and applications (hey, wasn&#8217;t that what it was supposed to do?). When HTML and other thechnologies don&#8217;t work or takes too long time to make, Flash is still a good alternative, but we developers need to look out for backups on devices that doesn&#8217;t run Flash, or don&#8217;t support mouse-devices. </p>
<p>Now that CS5 is out with no support for iPhone and really no whole-hearted solution to support the flow of devices thrown at us we need to await Adobes next move&#8230;I hope it&#8217;s an offensive one <img src='http://labs.makingwaves.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/06/15/the-future-of-flash-some-thoughts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speed up your website – Google cares!</title>
		<link>http://labs.makingwaves.com/2010/05/27/speed-up-your-website-%e2%80%93-google-cares/</link>
		<comments>http://labs.makingwaves.com/2010/05/27/speed-up-your-website-%e2%80%93-google-cares/#comments</comments>
		<pubDate>Thu, 27 May 2010 07:05:57 +0000</pubDate>
		<dc:creator>Michał</dc:creator>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[SEO / SEM]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[page speed]]></category>
		<category><![CDATA[site performance]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=1001</guid>
		<description><![CDATA[As we all know Google search results are based on many different parameters &#8211; starting with most important ones like content or inlinks and ending up with factors like accessibility. The one who will figure it all out and implement on the website will probably become very reach. It&#8217;s &#8216;just&#8217; a matter of fitting Google [...]]]></description>
			<content:encoded><![CDATA[<p>As we all know Google search results are based on many different parameters &#8211; starting with most important ones like content or inlinks and ending up with factors like accessibility. The one who will figure it all out and implement on the website will probably become very reach. It&#8217;s &#8216;just&#8217; a matter of fitting Google taste perfectly.</p>
<p>Recently Google announced that there is another element which all webmasters should take into account while thinking on Google search results: <strong>SITE SPEED</strong>.</p>
<p>Site speed shows us how quickly a website responds to web request.</p>
<p>It&#8217;s obvious that speeding up the website is important for both visitors and site owners. Users spend more time on the sites which loads faster. Of course it won&#8217;t fix the content or user experience problems, but definitely it matters. And this is why Google has been starting to affect search queries by the site speed.</p>
<p>There have already been some tools on the market which can evaluate the speed of the site:</p>
<p>- <a href="http://code.google.com/speed/page-speed/">Page Speed</a> &#8211; Firefox add-on that evaluates the performance of web pages and gives improvement suggestions</p>
<p>- <a href="http://www.google.com/webmasters/tools">Webmaster Tools</a> &#8211; inside Labs &gt; Site Performance webmasters can check site speed and see the results in the chart</p>
<p><a rel="attachment wp-att-1002" href="http://labs.makingwaves.com/2010/05/27/speed-up-your-website-%e2%80%93-google-cares/site-performance/"><img class="alignleft size-medium wp-image-1002" src="http://labs.makingwaves.com/wp-content/uploads/2010/05/site-performance-502x194.png" alt="Site performance statistics" width="502" height="194" /></a></p>
<p>- <a href="http://developer.yahoo.com/yslow/">YSlow</a> &#8211; a free tool from Yahoo! with optimization suggestions</p>
<p>More tools can be found here:</p>
<p><a href="http://code.google.com/speed/tools.html">Speed Tools</a></p>
<p>Site speed is not and will probably not be the key parameter for search ranking algorithms, but for sure it is worth mentioning element when it&#8217;s about SEO, and all webmasters should think about it while creating websites.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/05/27/speed-up-your-website-%e2%80%93-google-cares/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash and Search Engine Optimization</title>
		<link>http://labs.makingwaves.com/2010/05/19/flash-and-search-engine-optimization/</link>
		<comments>http://labs.makingwaves.com/2010/05/19/flash-and-search-engine-optimization/#comments</comments>
		<pubDate>Wed, 19 May 2010 10:20:44 +0000</pubDate>
		<dc:creator>Sven</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=985</guid>
		<description><![CDATA[HTML, video, and images are indexed by search engines and stored so you can easily find them in a web search. The question is still, does Flash content get indexed by the search engines? Already in 2008 Adobe announced that they had teamed up with the search industry leaders (Google &#038; Yahoo!) to improve search [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://labs.makingwaves.com/wp-content/uploads/2010/05/flash_seo1.jpg" alt="" title="flash_seo" width="500" height="180" class="alignleft size-full wp-image-994" /><br />
HTML, video, and images are indexed by search engines and stored so you can easily find them in a web search. The question is still, does Flash content get indexed by the search engines? Already in 2008 <a href="http://www.adobe.com/devnet/flashplayer/articles/swf_searchability.html">Adobe announced </a>that they had teamed up with the search industry leaders (Google &#038; Yahoo!) to improve search results of dynamic web content and Internet applications. At the time Adobe said:</p>
<blockquote><p>“Moving forward, RIA developers and rich web content producers won&#8217;t need to amend existing and future content to make it searchable—they can now be confident that it can be found by users around the globe.”</p></blockquote>
<p>Two years later we have experienced that some of our Flash solutions does not get many results when googling them. Now why is this? Has Adobe/Google/Yahoo! failed or is it just that we have missed out on the details on how to really make the Flash more search optimized? Adobe stated in 2008 that all existing SWF solutions, across all versions of the SWF file format should be supported. That is without taking any grips to improve existing solutions for SEO. Can this be true? There are a lot of rumors and myths about Flash and CEO around on the web. I’ll try in this article to figure out what the real facts are…</p>
<p>What does it really take to make your Flash site optimized for search engines?<br />
<span id="more-985"></span><br />
<em>[Fact] </em>The technology that Adobe is cooperating with Google and Yahoo! to achieve is to allow the search engine spider to crawl through a SWF file, navigating as is it was a normal user. The spider would then collect all text and links that occur at any state of the application, which then can be used in search results to the end user.</p>
<p><em>[Fact]</em> External resources loaded into Flash are also indexed by the search engines. This was not the fact from the beginning but Google announced this in June 2009. This means that if the Flash file loads a XML-file containing the Flash solution’s text, this text will be associated to the Flash file.</p>
<p><em>[Fact]</em> The search engine crawlers do support JavaScript techniques for embedding Flash (SWFObject &#038; SWFObject2). This was not the case before the summer of 2009.</p>
<p><em>[Fact]</em> There are ways to improve (and help) the search engine spiders to index your Flash content. Deep-linking is one way. Using one of the many solutions for deep-linking SWF content may improve how links can drive relevance to specific parts of an application and reflect a specific state of the SWF content. I have successfully used <a href="http://www.asual.com/swfaddress/">SWFAddress </a>for this purpose in more than one occasion.</p>
<p>For complex sites you can also use techniques such as a site map XML file to highlight specific URLs to the search spider. Create multiple HTML files that provide different variables to the SWF and start the application from the correct subsection. This way you can get the benefits of a site that is indexed as a suite of pages. Read more about <a href="http://oreilly.com/flash/excerpts/seo-for-flash/sitemaps.html">sitemaps for Flash here</a>.</p>
<p><em>[Fact]</em> Avoid using too much Flash. If you can, avoid creating the entire site in pure Flash. Though it is possible to make it optimized for search engines, it is usually discouraged. One reason for this is that you can’t weigh the different elements in Flash to tell the search engine how important they are. This is possible in HTML by placing information in header tags and so on. Though you are able to use CSS and HTML coding in your Flash text fields, it probably won’t weigh the same way as in HTML.</p>
<p>To make the best out of it build HTML into the Flash text fields (using .htmlText of the TextField class) and make sure you build the HTML-code to enhance the importance of the text elements as if you build the site in HTML. Use links, headings and other HTML tags.</p>
<h3>HTML fallback</h3>
<p>It is always good to provide users with a HTML fallback. This helps in many ways. Users without the proper Flash Player installed or maybe running without JavaScript will fail to see your conent when opening your site. A pure HTML fallback solution with provide them with the information they need but without the user experience that the Flash solution is there for. Another big advantage is that the HTML fallback will provide info for the search engine crawlers and index the content on your site.</p>
<h3>Does it work?</h3>
<p>How good do the search engine crawlers really index Flash content? To be honest I’m not sure and I am not completely convinced that they do their job good enough. But there is really not much more to do with it. Let’s hope Adobe and Google/Yahoo! take this seriously enough to continuously improve their crawlers to index the SWF content out there.</p>
<h3>Sources:</h3>
<p><a href="http://www.hochmanconsultants.com/articles/seo-friendly-flash.shtml">http://www.hochmanconsultants.com/articles/seo-friendly-flash.shtml</a><br />
<a href="http://www.adobe.com/devnet/seo/">http://www.adobe.com/devnet/seo/</a><br />
<a href="http://www.adobe.com/devnet/flash/articles/ora_seo_flash.html">http://www.adobe.com/devnet/flash/articles/ora_seo_flash.html</a><br />
<a href="http://www.adobe.com/devnet/flashplayer/articles/swf_searchability.html">http://www.adobe.com/devnet/flashplayer/articles/swf_searchability.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/05/19/flash-and-search-engine-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick test of the font service from TypeKit.com</title>
		<link>http://labs.makingwaves.com/2010/04/29/quicktest-of-service-from-typekit/</link>
		<comments>http://labs.makingwaves.com/2010/04/29/quicktest-of-service-from-typekit/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 09:11:45 +0000</pubDate>
		<dc:creator>Helge</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=971</guid>
		<description><![CDATA[Typekit is commercial service that lets you embed non-standard fonts into HTML pages. It is relatively easy to use and takes care of all the licensing issues. So far, all good. Yesterday, I did a quick test of the service using the font LFT Etica Display. I must say results were disappointing and showed far [...]]]></description>
			<content:encoded><![CDATA[<p>Typekit is commercial service that lets you embed non-standard fonts into HTML pages. It is relatively easy to use and takes care of all the licensing issues. So far, all good. Yesterday, I did a <a href="http://makingria.com/typekit/">quick test</a> of the service using the font <strong>LFT Etica Display</strong>.</p>
<p><a rel="attachment wp-att-973" href="http://labs.makingwaves.com/2010/04/29/quicktest-of-service-from-typekit/typekit/"><img class="size-full wp-image-973 alignnone" title="typekit" src="http://labs.makingwaves.com/wp-content/uploads/2010/04/typekit.png" alt="" width="440" height="84" /></a></p>
<p>I must say results were disappointing and showed far too much difference than what’s acceptable. It may have something to do with this specific font, like the font-hinting.</p>
<p>It&#8217;s sad to see that Opera is not supported at all, even though the latest versions have native support for font embedding.</p>
<p>All the tests were done on a Windows 7 PC.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/04/29/quicktest-of-service-from-typekit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Testing the iPhone packager in Flash CS5</title>
		<link>http://labs.makingwaves.com/2010/03/24/testing-the-iphone-packager-in-flash-cs5/</link>
		<comments>http://labs.makingwaves.com/2010/03/24/testing-the-iphone-packager-in-flash-cs5/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 08:52:16 +0000</pubDate>
		<dc:creator>Sven</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=928</guid>
		<description><![CDATA[A while ago I joined the Flash CS5 pre-release program eager to test the iPhone packager that there has been so much fuzz about. After downloading the latest beta version of the Adobe Flash CS5 I started with some small and easy tests, to test the performance when running a Flash solution on an iPhone. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://labs.makingwaves.com/wp-content/uploads/2010/03/flash_iphone_app_small2.jpg" alt="Flash iPhone App" title="flash_iphone_app_small" width="500" height="224" class="alignleft size-full wp-image-938" /><br />
A while ago I joined the Flash CS5 pre-release program eager to test the iPhone packager that there has been so much fuzz about. After downloading the latest beta version of the Adobe Flash CS5 I started with some small and easy tests, to test the performance when running a Flash solution on an iPhone. </p>
<p>My first App consisted of an image of the iPhone “homepage” with some basic touch-behavior. Tapping the left side would make the image spin, rotating the Y-axis 180 degrees (.rotationY). Tapping the right side would spin the image the other way, while tapping on the top or bottom the image would rotate the X-axis (.rotationX). I used the Tweener-class to animate the rotation, using a “easeOutElastic” transition effect. The animations where of course quick and responsive on my computer, but how will the iPhone react to this? I worked very fine indeed. I tested on a iPhone 3GS and my old 3G. Both reacted as quick and responsive as it did on my computer. Nice! But hey, this was very basic…</p>
<p>I expanded my tests by using the new Accelerometer Class in AS3, making the image change its rotation-parameters according to how I held my iPhone. This also worked very well and my belief in the Flash iPhone packager continued to grow.</p>
<p><strong>Time to build a real App!</strong><br />
<span id="more-928"></span><br />
Using a WebService that returns all contact info about the employees at Making Waves, I started to create an App that should present these data in an ‘iPhone-kind of way’. So I started off just like I would when creating a Flash solution, connected to the WebService, parsed the data and started to build a view. So far it worked like a charm on my iPhone. The view consisted of the employee name and department, three buttons, one to make it possible to call directly the person, one to send a sms and one to send mail. Finally it had a image of the employee. When the view is presented you should be able to switch between employees by swiping your finger to the left and right, just like you usually do it on an iPhone. To make it a little more interesting and different I made the view rotate its Y-axis when it is dragged according to how much it is dragged. The next and previous view/employee is automatically dragged according to the main view (take a look at the image on the top).  The result was quite nice. Looking like a normal iPhone App but with a little twist. Using the TouchEvents that is new to AS3 was easy and combining it with the normal MouseEvents was no extra effort. Developing was quick and easy in a normal Flash development way, and I was thrilled to see the result on my iPhone. Time to put it to the test!</p>
<p>Since I didn’t have access to the iPhone 3GS I had to test it on my own iPhone 3G. The result was devastating. My first version was without the call/sms/mail buttons and the view of the first employee was presented pretty fast and it looked nice. But when I tried to swipe left or right the fun was definitely over. I worked but it was very slow. Performance was way under what is expected. I tried to read up on how to make performance to improve. GPU-rendering, cacheAsBitmap and so on. I added some functionality, improved the way to switch between views, tried to follow performance tips and tried again. Crossing my fingers and hoping that my last changes would do magic. Magic was unfortunately not the word. This time the app crashed each time I tried to start it. When trying to insert the image the iPhone didn’t want to handle the performance issue any more and shut down.</p>
<p>As a Flash developer I was really hoping that the Flash iPhone packager would be good enough to use to develop iPhone Apps in a easy and quick manner. The result after my first test was unfortunately as bad as they could be. I will not give it up just yet. There are probably a lot of things I could improve in my code to make it more iPhone friendly. At least I hope so! But one thing is for sure. Developing an iPhone App using Flash will not be the same as developing for the web. There is going to be a lot of issues to be aware of and as expected the performance issue will be the main issue.</p>
<p>I continue my test and will test my App on a iPhone 3GS when it gets available. I’ll try to improve it, I’ll do anything to try to prove that Flash CS5 will be a good platform to create applications for mobile devices. So far I have a long way to prove just that.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/03/24/testing-the-iphone-packager-in-flash-cs5/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>On how to play HTML5 video</title>
		<link>http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/</link>
		<comments>http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 12:33:41 +0000</pubDate>
		<dc:creator>Jørn</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=892</guid>
		<description><![CDATA[Most web developers agree that the ability to play video on webpages is a must, however the jury is out on how these videos should be played. I&#8217;m of course referring to the HTML 5 video format controversy. Throw FlashPlayer into the mix and you&#8217;ll end up with a humongous fight leading fast to nowhere. Based on this, focusing [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-956" href="http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/mobile/"><img class="aligncenter size-medium wp-image-956" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/mobile-501x376.jpg" alt="The movie playing on mobile devices" width="501" height="376" /></a></p>
<p>Most web developers agree that the ability to play video on webpages is a must, however the jury is out on how these videos should be played. I&#8217;m of course referring to the <a href="http://www.w3schools.com/html5/tag_video.asp" target="_blank">HTML 5 video</a> format <a href="http://arstechnica.com/open-source/news/2009/07/decoding-the-html-5-video-codec-debate.ars" target="_blank">controversy</a>. Throw FlashPlayer into the mix and you&#8217;ll end up with a humongous fight leading fast to nowhere. Based on this, focusing on finding a solution, I tried to piece together a player using both HTML 5 video, and FlashPlayer for less capable browsers like Internet Explorer. You can find a demo alpha version of the player here: <a href="http://makingria.com/demo/html5/videoplayer/">http://makingria.com/demo/html5/videoplayer/</a></p>
<h3>Browser support</h3>
<p>The player supports the following browsers:</p>
<ul>
<li>Internet Explorer 7 (FlashPlayer, H:264 video)</li>
<li>Firefox 3.6 (Native playback, OGG Theora video)</li>
<li>Google Chrome and Apple Safari (Native Playback, H.264 video)</li>
<li>iPad and iPhone (Native Playback)</li>
<li>Opera 10.5 (Native playback, OGG Theora video)</li>
</ul>
<h3>How to build it</h3>
<p><span id="more-892"></span></p>
<p>My approach to building the player was based on my not so patented &#8220;falling down the stairs&#8221; method. In plain English this means that playback methods are ranked in a list, falling down the list as support for the wanted playback method is not found.  To accomplish this we utilize the HTML5 video tags ability to hold a list of different source videos. If no support for html5 video is found the video tag will be replaced by swfObject using the Modernizer JS framework.</p>
<p>The list looks as follows:</p>
<ol>
<li>HTML5 video using the H.264 codec &#8211; high-res (WebKit browsers and iPad)</li>
<li>HTML5 video using the H.264 codec &#8211; med-res (iPhone)</li>
<li>HTML5 video using the OGG Theora codec (Firefox/Opera)</li>
<li>FlashPlayer video using the H.264 codec (Internet Explorer)</li>
<li>Error message (Others)</li>
</ol>
<p>I wanted the player to support play/pause controls, zoom control and outputting the current time and the duration of the video no matter what video playback method being used. I accomplished this by using JavaScript to control all of these aspects of the video, even when using FlashPlayer as the video playback method. If you want to see how this was done in practice,<a href="http://makingria.com/demo/html5/videoplayer/pl.js" target="_blank"> </a><a href="http://makingria.com/demo/html5/videoplayer/pl.js" target="_blank">go take a peek at the JavaScript</a>. The code for the FlashPlayer based player can be found <a href="http://makingria.com/demo/html5/videoplayer/srcview/" target="_blank">here</a>.</p>
<h3>Performance</h3>
<p><a rel="attachment wp-att-894" href="http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/webkit/"><img class="alignleft size-full wp-image-894" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/webkit.jpg" alt="23% CPU usage when using WebKit" width="122" height="114" /></a></p>
<p>CPU usage is a challenge when playing high resolution video. On my computer, a ThinkPad Intel Core 2 Duo 2.66 GHz with 4 GB RAM (Windows 7 64 Bit) I found that the combination of HTML 5 video playback in WebKit based browsers using the H.264 codec gave the best results when playing a 720p HD video. Also notice the smooth scaling when testing the video in WebKit based browsers.</p>
<p><a rel="attachment wp-att-895" href="http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/firefox/"><img class="alignleft size-full wp-image-895" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/firefox.jpg" alt="44% CPU usage when playing back video using Firefox 3.6" width="119" height="114" /></a>When using the Gecko renderer in Firefox 3.6, the CPU usage almost doubled compared to the H.264 playback in the WebKit browsers. And it needs to be noted that this was a huge improvement from Firefox 3.5 where native video playback was pretty close to unusable due to a 60-80% CPU usage. This spike in CPU usage is probably caused by the OGG Theora decoder in Firefox and Opera.</p>
<p><a rel="attachment wp-att-896" href="http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/ie/"><img class="alignleft size-full wp-image-896" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/ie.jpg" alt="25% CPU usage using the FlashPlayer in Internet Explorer" width="118" height="117" /></a> In Internet Explorer you&#8217;ll end up watching a FlashPlayer rendered video as Microsoft has yet to release a browser supporting the HTML 5 video tag. What&#8217;s interesting is the fact that the FlashPlayer renders video content far more efficient (CPU vise) that the native video rendering in Firefox and Opera. WebKit&#8217;s native video implementation is slightly more efficient that the one of FlashPlayer, but not by much. It should also be noted that this test was done in FlashPlayer 10.0. Not the mythical speedmonster (rumored) which is FlashPlayer 10.1.</p>
<div>
<h2>Final thoughts</h2>
</div>
<div>HTML 5 is coming, no doubt, let&#8217;s hope that agreement in the HTML5 &#8220;codec wars&#8221;, as well as proper implementations of the native video playback in browsers also rolls out at the same time. From a user standpoint, HTML5 video has many advantages over plugin based video, one of them being no need for a plugin. Today, only the WebKit based browsers can match the video playback abilities of the FlashPlayer, but this will change, in time.</div>
<div><a rel="attachment wp-att-959" href="http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/ie-2/"><img class="size-medium wp-image-959 aligncenter" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/IE-501x417.jpg" alt="The player running in Internet Exporer" width="301" height="250" /></a></div>
<div><a rel="attachment wp-att-960" href="http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/webkit-2/"><img class="aligncenter size-medium wp-image-960" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/WebKit-502x420.jpg" alt="Player running in Google Chrome" width="301" height="252" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/03/23/on-how-to-play-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hardware accelerated SVG in IE9</title>
		<link>http://labs.makingwaves.com/2010/03/18/hardware-accelerated-svg-in-ie9/</link>
		<comments>http://labs.makingwaves.com/2010/03/18/hardware-accelerated-svg-in-ie9/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 10:17:57 +0000</pubDate>
		<dc:creator>Helge</dc:creator>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=844</guid>
		<description><![CDATA[Microsoft has released an early preview of their upcoming IE9. Be sure to check out the new features at http://ie.microsoft.com/testdrive One of the great news is the native support for the vector graphics language SVG. SVG 1.1 became a W3C recommendation already back in 2003, so it&#8217;s about time we developers can start use this [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft has released an early preview of their upcoming IE9. Be sure to check out the new features at <a href="http://ie.microsoft.com/testdrive/">http://ie.microsoft.com/testdrive</a></p>
<p>One of the great news is the native support for the vector graphics language SVG.<br />
SVG 1.1 became a W3C recommendation already back in 2003, so it&#8217;s about time we developers can start use this great technology.</p>
<h2>Speedy performance</h2>
<p>IE9 uses the GPU for graphic rendering through DirectX, and this gives good performance, currently beyond what all other browsers can perform.</p>
<h2>Currently scores 28% in test</h2>
<p><a rel="attachment wp-att-846" href="http://labs.makingwaves.com/2010/03/18/hardware-accelerated-svg-in-ie9/svginie9/"><img class="alignnone size-full wp-image-846" title="svgInIE9" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/svgInIE9.png" alt="" width="502" height="209" /></a>In this earliy build, only some SVG functions are implemented. This results in poor rendering of more advanced SVG files. See the SVG test chart where IE9 Preview 1 gets a score on 28% at <a href="http://www.codedread.com/svg-support.php">http://www.codedread.com/svg-support.php</a><br />
<span id="more-844"></span></p>
<h2>No plans to support SVG Filters</h2>
<p><a rel="attachment wp-att-889" href="http://labs.makingwaves.com/2010/03/18/hardware-accelerated-svg-in-ie9/svginie9_2/"><img class="alignnone size-full wp-image-889" title="svgInIE9_2" src="http://labs.makingwaves.com/wp-content/uploads/2010/03/svgInIE9_2.png" alt="" width="502" height="415" /></a></p>
<p>This is a slide Microsoft presented at MIX that show they unfortunatly don&#8217;t plan to support things like Filters and SVG fonts. This is disappointing. Let&#8217;s really hope Microsoft change their mind, and will commit to support the full SVG 1.1 standard, at least at the same level as competing browsers like Firefox, Chrome, Safari and Opera do today.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 813px; width: 1px; height: 1px; overflow: hidden;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>NO-BOK</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 415 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 70.85pt 70.85pt 70.85pt; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin-top:0cm; 	mso-para-margin-right:0cm; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--></p>
<p class="MsoNormal"><span lang="EN-US">Disappointing</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/03/18/hardware-accelerated-svg-in-ie9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex 4 SDK</title>
		<link>http://labs.makingwaves.com/2010/03/09/flex-4-sdk/</link>
		<comments>http://labs.makingwaves.com/2010/03/09/flex-4-sdk/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 09:54:59 +0000</pubDate>
		<dc:creator>Krzysztof</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=815</guid>
		<description><![CDATA[Flex 4 Gumbo SDK (download) is a next major step in evolution of Flex. Lately subsequent versions of Silverlight have offered some nice features which was absent in old Flex 3, and there was a necessity for Adobe to keep up (or even take over) with it&#8217;s biggest competitor. Flex 4 introduces a bunch of new features, in [...]]]></description>
			<content:encoded><![CDATA[<div>
<div style="text-align: left;"><a rel="attachment wp-att-765" href="http://labs.makingwaves.com/2009/12/11/easily-format-your-code-in-flex-builder/flex-icon-2/"><img class="size-full wp-image-765 alignright" title="flex-icon" src="http://labs.makingwaves.com/wp-content/uploads/2009/12/flex-icon1.png" alt="" width="150" height="144" /></a></div>
<div style="text-align: left;">Flex 4 Gumbo SDK <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">(download)</a> is a next major step in evolution of Flex. Lately subsequent versions of Silverlight have offered some nice features which was absent in old Flex 3, and there was a necessity for Adobe to keep up (or even take over) with it&#8217;s biggest competitor.</div>
<div style="text-align: left;">Flex 4 introduces a bunch of new features, in my personal opinion the most important are:</div>
<ul>
<li>new set of skinnable Spark components and skinning architecture which leads to better separation between data and view</li>
<li>introducing <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG declarative syntax</a> for defining graphics</li>
<li>two way data binding</li>
</ul>
<p>But if you want to explore full list of changes and improvements to framework, there is a <em><a href="http://help.adobe.com/en_US/Flex/4.0/FeaturesAndMigration/flex_4_features.pdf">&#8220;Flex 4 features and migration guide&#8221;</a>,</em><em> </em>which could give you more information about it.</p>
<p><span id="more-815"></span></p>
<p>New set of Spark component architecture defines entirely new way of building application view. Now view and data are separated, and each of functional component can be skinned to look completly different than &#8220;default&#8221; one. For example you can skin radiobutton to look like button, but still have radiobutton functionality &#8211; single select or grouping. This feature is extremely useful, and makes life of developer much easier.</p>
<p><img title="More..." src="http://labs.makingwaves.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p>Spark components also adds some new features e.g better handling of text by RichText and RichEditableText controls which enables developer to handle text more efficiently and easily. My personal foe &#8211; Repeater could be replaced by Spark DataGroup component which behaves far more intuitive  and of course is suited to new skining architecture</p>
<p>Flex 4 introduces also <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG declarative syntax</a>, it is similar to <a href="http://www.degrafa.com/">Degrafa</a>, and in simple words enable programmer to create vector graphics by writing piece of MXML code. This alone is not a big deal, but please remember that there is a data binding mechanism &#8211; and having those two together implementing a custom bar progress indicator or some fancy buttons is much, much easier.</p>
<p>Finally we have databinding that works both ways, so when connected to e.g. RichEditableText you will got property synchronized with it&#8217;s text. The only thing to remember is to have property that need to be bound declared as <em>public.</em></p>
<p>Flex 4 is a big step ahead, it resolves a lot of problems that was a pain in Flex 3. I will encourage everyone to use it since it is far better than Flex 3, in my opinion, and could save some development  time especially in skinning of application. Together with <a href="http://www.degrafa.com/">Catalyst </a>and<a href="http://labs.adobe.com/technologies/flashbuilder4/"> Flash Builder</a> it will create a powerful platform for building RIA applications.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/03/09/flex-4-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Builder &#8211; revolution or evolution</title>
		<link>http://labs.makingwaves.com/2010/03/08/flash-builder-revolution-or-evolution/</link>
		<comments>http://labs.makingwaves.com/2010/03/08/flash-builder-revolution-or-evolution/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 13:40:21 +0000</pubDate>
		<dc:creator>Krzysztof</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=805</guid>
		<description><![CDATA[Flash Builder (which is a succesor to Flex Builder) is currently avialable in beta 2 version for some time now. Since Adobe is still postponing release date of final versions I decide not to wait any longer and try to grasp it&#8217;s new features in some application more complicated than samples provided in tutorials that [...]]]></description>
			<content:encoded><![CDATA[<p><img class=" alignright" title="Flash Builder" src="http://www.kiddissident.com/blog/wp-content/uploads/2009/06/icon_fb.gif" alt="Flash Builder" width="160" height="160" /></p>
<p><a href="http://labs.adobe.com/technologies/flashbuilder4/" target="_blank">Flash Builder</a> (which is a succesor to Flex Builder) is currently avialable in beta 2 version for some time now. Since Adobe is still postponing release date  of final versions I decide not to wait any longer and try to grasp it&#8217;s  new features in some application more complicated than samples provided  in tutorials that could be found around the webAfter dowloading and installing application we get 60 days of  evaluation period, but it can be prolonged using valid Flex 3 license  number.</p>
<p><span id="more-805"></span>Flash Builder looks much the same as it&#8217;s older brother, but  even on the first glance there are small changes that could make  developer&#8217;s life easier &#8211; &#8220;Flex Naviagtor&#8221; which showed file structure  of project in Flex Builder is now changed to &#8220;Package Explorer&#8221; which  basically serves the same purpose but it doesn&#8217;t stop on the file level &#8211;  you could expand each as or mxml file to see its attributes. properties  and methods. Of course click on method take you dirrectly to it&#8217;s  implementation &#8211; in fact from file level it looks and acts exactly the  same as &#8220;Outline&#8221; view (which is still there).</p>
<p>When looking into code one could notice slighltly different ways of  colouring code. Also <em>Code assits</em> works much better and more up to  date with current standards when it comes to development environments.  For example you could filter to only show events of certain component  without need to scroll through numerous entities on hint list. The  feature I found very useful durring some day-to-day work is connecting <em>Code  assits </em>with Adobe livedocs with could save a lot of time when  looking for explanation of some rarely used feature. Finally the code  generation got feature of generating getters and setters with makes any  excuses for not creating them futile. One of the most irritating feature  of FlexBuilder 3 is also gone: when importing project into environment  there is only one path to set. It was such a annoyance to have to copy  path to second input each time because otherwise my project got copied  to some &#8220;workdir&#8221; under &#8220;My documents&#8221;.</p>
<p>My general immpression is very good, Flash Builder is stable (at  least with comparison to Flex Builder), there are some very nice  features that was absent in Flex Builder 3 , and for those who don&#8217;t  want to use Flex 4 SDK  (which is still beta) you can use  3.4 SDK as  well. If you are got used to Flex Builder switching into new environment will be no problem because after all the core is still Eclipse.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/03/08/flash-builder-revolution-or-evolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sizing text AND elements relatively using CSS</title>
		<link>http://labs.makingwaves.com/2010/03/02/sizing-text-and-elements-relatively-using-css/</link>
		<comments>http://labs.makingwaves.com/2010/03/02/sizing-text-and-elements-relatively-using-css/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 14:20:05 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=796</guid>
		<description><![CDATA[Alternative title: What I&#8217;ve been doing is wrong Different browsers have different &#8220;default&#8221; styles, which makes it a challenge to even make text appear the same way across all of them. When you want to accomplish this, there is a well known CSS trick that I&#8217;ve been using for a long time: html { font-size: [...]]]></description>
			<content:encoded><![CDATA[<p>Alternative title: <strong>What I&#8217;ve been doing is wrong</strong></p>
<p>Different browsers have different &#8220;default&#8221; styles, which makes it a challenge to even make text appear the same way across all of them. When you want to accomplish this, there is a well known CSS trick that I&#8217;ve been using for a long time:<span id="more-796"></span></p>
<pre>html {
    font-size: 100%;
}

body {
    font-size: 62.5%;
}
</pre>
<p>These rules will make 1em = 10px; font-size: 1.2em is the same as 12px. The method is particularly useful on sites where you want to let the user scale all content using links on the page. The links will adjust the base size on the body element which is inherited to all child elements.</p>
<p>This works for font scaling, but as I discovered, it is inaccurate when setting widths and heights of elements. 96em is NOT exactly 960px. I set out on the interwebs to research and found another method in a <a href="http://www.clagnut.com/blog/348/#c1204">comment</a> to an article about font sizes and ems:</p>
<pre>html {
    font-size: 1.25em;
}

body {
    font-size: 50%;
}
</pre>
<p>Apparently, IE doesn&#8217;t allow for percentages with decimals, so 62.5% is floored to 62%. This isn&#8217;t a big deal for text, but when using it for dimensioning other elements, it&#8217;s a deal breaker.</p>
<p>The method above will set 1em = 20px for the html element and then halve this by setting the font size to 50% on the body.</p>
<p>This way is new to me, but after testing it in all major browsers (IE6 included), it seems to work. As you may understand, I&#8217;m not really sure about this, so I&#8217;m reaching out for you here. Do you have experience using any of these methods to set font and element sizes? Or do you have other methods? Will the latter method always work and in all browsers? Please use the comments if you have any input. <img src='http://labs.makingwaves.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/03/02/sizing-text-and-elements-relatively-using-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
