<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>HTML5Rocks</title>
      <description>Guides for open web HTML5 developers.</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=647030be6aceb6d005c3775a1c19401c</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=647030be6aceb6d005c3775a1c19401c&amp;_render=rss&amp;page=2" />
      <pubDate>Sat, 25 Feb 2012 02:03:30 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/html5rocks" /><feedburner:info uri="html5rocks" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://www.html5rocks.com/</link><url>http://code.google.com/p/html5rocks/logo?cct=1282078831</url><title>HTML5Rocks</title></image><item>
         <title>WebGL and Web Audio API demo roundup</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/Dbz3kx2beyc/WebGL-and-Web-Audio-API-demo-roundup</link>
         <description>&lt;p&gt;Here&amp;#8217;s a look at some cool WebGL and Web Audio &lt;span class="caps"&gt;API&lt;/span&gt; demos that I&amp;#8217;ve seen over the past couple weeks.&lt;/p&gt;

	&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.eveonline.com/universe/spaceships/magnate/"&gt;&lt;span class="caps"&gt;EVE&lt;/span&gt; Online ship viewer&lt;/a&gt; is a great-looking online ship viewer app built with WebGL. Very nice way to showcase the artwork in the game universe.&lt;/p&gt;

	&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://chromium.googlecode.com/svn/trunk/samples/audio/index.html"&gt;Web Audio API&lt;/a&gt;
 samples page has several compelling examples on how to do audio processing using it.  &lt;a rel="nofollow" target="_blank" href="http://alteredqualia.com/three/examples/webgl_city.html"&gt;WebGL City&lt;/a&gt; is one of the demos linked from the samples page. It&amp;#8217;s a small demo of a helicopter flying around a night cityscape. The helicopter (disable music by pressing 'm&amp;#8217;, enable helicopter sound by pressing 'n&amp;#8217;) uses Web Audio APIs spatial audio features to pan the helicopter audio from one speaker to the other.&lt;/p&gt;

	&lt;p&gt;Some enterprising soul implemented a &lt;a rel="nofollow" target="_blank" href="http://glsl.heroku.com/e#1544.13"&gt;snake game using nothing but a WebGL fragment shader&lt;/a&gt; on the &lt;a rel="nofollow" target="_blank" href="http://glsl.heroku.com/"&gt;&lt;span class="caps"&gt;GLSL&lt;/span&gt; Sandbox&lt;/a&gt;. I&amp;#8217;m flabbergasted. &lt;/p&gt;

	&lt;p&gt;The &lt;a rel="nofollow" target="_blank" href="http://www.chromeexperiments.com/detail/big-bang/"&gt;Big Bang&lt;/a&gt; may look like any other WebGL particle animation, but the particle simulation is actually run on the &lt;span class="caps"&gt;GPU&lt;/span&gt;. The simulator is a fragment shader that reads the previous particle positions from a texture and writes the new particle positions into a &lt;span class="caps"&gt;FBO&lt;/span&gt; texture. &lt;/p&gt;

	&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.chromeexperiments.com/detail/blocky-earth/"&gt;Blocky Earth&lt;/a&gt; takes Google Earth data and MineCrafts it. It communicates differences in height well. For example, I was looking at Australia and the Antarctic ice sheet, and you can see how the continental ice is several kilometers thick.&lt;/p&gt;

	&lt;p&gt;The &lt;a rel="nofollow" target="_blank" href="http://static.echonest.com/MidemMusicMachine/index.html"&gt;Midem Music Machine&lt;/a&gt; is a fun music demo by Mr.doob and Paul Lamere. It&amp;#8217;s a sort of a ball-driven music box with balls bouncing off bits 'n&amp;#8217; bops. CreativeJS has a &lt;a rel="nofollow" target="_blank" href="http://creativejs.com/2012/01/hacking-music-with-javascript/"&gt;good writeup&lt;/a&gt; on it, check it out.&lt;/p&gt;

	&lt;p&gt;Continuing on the computer music visualization theme, I recently ran across &lt;a rel="nofollow" target="_blank" href="http://canonical.org/~kragen/bytebeat/"&gt;this page about bytebeat&lt;/a&gt;, a form of music generated by minimalistic code formula. The page links to one cool &lt;a rel="nofollow" target="_blank" href="http://low.fi/~visy/projects/mus3/"&gt;WebGL visualization&lt;/a&gt; of the music. Gregg Tavares took to the idea and built a &lt;a rel="nofollow" target="_blank" href="http://games.greggman.com/game/html5-bytebeat/"&gt;bytebeat sandbox&lt;/a&gt; for making and sharing your own bytebeat tunes directly from the browser.&lt;/p&gt;</description>
         <author>ilmari</author>
         <guid isPermaLink="false">tag:updates.html5rocks.com,2012-02-21:post:55001</guid>
         <pubDate>Mon, 20 Feb 2012 10:50:22 +0000</pubDate>
      <feedburner:origLink>http://updates.html5rocks.com/2012/02/WebGL-and-Web-Audio-API-demo-roundup</feedburner:origLink></item>
      <item>
         <title>SwiftShader brings software 3D rendering to Chrome</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/LesEalh9sjU/SwiftShader-brings-software-3D-rendering-to-Chrome</link>
         <description>&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://transgaming.com/business/swiftshader"&gt;SwiftShader&lt;/a&gt; is a software 3D renderer used in Chrome 18 that lets you use &lt;span class="caps"&gt;CSS&lt;/span&gt; 3D and WebGL even on blacklisted GPUs. SwiftShader is available only on Windows and kicks in when you visit a site that uses 3D graphics features.&lt;/p&gt;

	&lt;p&gt;The first time you run Chrome, it checks if your &lt;span class="caps"&gt;GPU&lt;/span&gt; is blacklisted. In the unfortunate case that it is, Chrome downloads and installs the SwiftShader component in the background. After the component is installed, you can view 3D content. If you visit a 3D site before the component has finished installing, you may need to close and re-open the tab to view the site.&lt;/p&gt;

	&lt;p&gt;The performance of SwiftShader should be good enough to view simple 3D content.&lt;/p&gt;

	&lt;p&gt;To force-enable SwiftShader for testing purposes, start Chrome from the command line with the &amp;#8212;blacklist-accelerated-compositing and &amp;#8212;blacklist-webgl flags.&lt;/p&gt;

	&lt;p&gt;You can read more about Chrome 18&amp;#8217;s new graphics features (including GPU-accelerated 2D canvas) at the &lt;a rel="nofollow" target="_blank" href="http://blog.chromium.org/2012/02/gpu-accelerating-2d-canvas-and-enabling.html"&gt;Chromium Blog&lt;/a&gt;&lt;/p&gt;</description>
         <author>ilmari</author>
         <guid isPermaLink="false">tag:updates.html5rocks.com,2012-02-21:post:54001</guid>
         <pubDate>Sat, 18 Feb 2012 16:08:09 +0000</pubDate>
      <feedburner:origLink>http://updates.html5rocks.com/2012/02/SwiftShader-brings-software-3D-rendering-to-Chrome</feedburner:origLink></item>
      <item>
         <title>Detect DOM changes with Mutation Observers</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/rtl8oW5rQ-g/Detect-DOM-changes-with-Mutation-Observers</link>
         <description>&lt;p&gt;Back in 2000, the &lt;a rel="nofollow" target="_blank" href="http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mutationevents"&gt;Mutation Events &lt;span class="caps"&gt;API&lt;/span&gt; was specified&lt;/a&gt; to make it easy for developers to react to changes in a &lt;span class="caps"&gt;DOM&lt;/span&gt; (e.g. DOMNodeRemoved, DOMAttrModified, etc).&lt;/p&gt;

	&lt;p&gt;This feature wasn’t widely used by web developers but it presented a very convenient and popular use case for Chrome Extensions if they wanted to perform some action when something in the page changed.&lt;/p&gt;

	&lt;p&gt;Mutation Events are useful, but at the same time they create some performance issues. The Events are slow and they are fired too frequently in a synchronous way, which causes some undesired browser bugs.&lt;/p&gt;

	&lt;p&gt;Introduced in the &lt;a rel="nofollow" target="_blank" href="http://www.w3.org/TR/dom/"&gt;DOM4 specification&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://www.w3.org/TR/dom/#mutation-observers"&gt;&lt;span class="caps"&gt;DOM&lt;/span&gt; Mutation Observers&lt;/a&gt; will replace Mutation Events. Whereas Mutation Events fired slow events for every single change, Mutation Observers are faster using callback functions that can be delivered after multiple changes in the &lt;span class="caps"&gt;DOM&lt;/span&gt;.&lt;/p&gt;

	&lt;p&gt;You can &lt;a rel="nofollow" target="_blank" href="http://www.w3.org/TR/dom/#mutationrecord"&gt;manually handle the list of changes&lt;/a&gt; the &lt;span class="caps"&gt;API&lt;/span&gt; offers, or use a library such as &lt;a rel="nofollow" target="_blank" href="https://code.google.com/p/mutation-summary/"&gt;Mutation Summary&lt;/a&gt; which makes this task easier and adds a layer of reliability about the changes that took place in the &lt;span class="caps"&gt;DOM&lt;/span&gt;.&lt;/p&gt;

	&lt;p&gt;You can start using Mutation Observers in Chrome Beta to detect changes in the &lt;span class="caps"&gt;DOM&lt;/span&gt; and be ready to use it when it comes to stable (Chrome 18). If you are currently using  the deprecated Mutation Events, just migrate to Mutation Observers.&lt;/p&gt;

	&lt;p&gt;Here’s an example of listing inserted nodes with Mutation Events:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;var insertedNodes = [];
document.addEventListener(&amp;#34;DOMNodeInserted&amp;#34;, function(e) {
  insertedNodes.push(e.target);
}, false);
console.log(insertedNodes);&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;

	&lt;p&gt;And here’s how it looks with Mutation Observers:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;var insertedNodes = [];
var observer = new WebKitMutationObserver(function(mutations) {
 mutations.forEach(function(mutation) {
   for (var i = 0; i &amp;#60; mutation.addedNodes.length; i++)
     insertedNodes.push(mutation.addedNodes[i]);
 })
});
observer.observe(document, { childList: true });
console.log(insertedNodes);&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;</description>
         <author>ernestd</author>
         <guid isPermaLink="false">tag:updates.html5rocks.com,2012-02-16:post:51002</guid>
         <pubDate>Thu, 16 Feb 2012 16:44:55 +0000</pubDate>
      <feedburner:origLink>http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers</feedburner:origLink></item>
      <item>
         <title>WebGL Fundamentals</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/7_GDSKoTagw/</link>
         <author>gman</author>
         <guid isPermaLink="false">tag:www.html5rocks.com,2012-02-09:/tutorials/webgl/webgl_fundamentals//</guid>
         <pubDate>Thu, 09 Feb 2012 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://www.html5rocks.com/tutorials/webgl/webgl_fundamentals/</feedburner:origLink></item>
      <item>
         <title>Getting Gmail to handle all mailto: links with registerProtocolHandler</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/VUT_uZpeAMw/Getting-Gmail-to-handle-all-mailto-links-with-registerProtocolHandler</link>
         <description>&lt;p&gt;If you use Gmail you may become frustrated when you click a &lt;code&gt;mailto:&lt;/code&gt; link by accident and now your desktop client of Outlook or Mail starts up.

Thanks to &lt;code&gt;navigator.registerProtocolHandler()&lt;/code&gt; (&lt;a rel="nofollow" target="_blank" href="http://updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler"&gt;which we've covered here before&lt;/a&gt;) you can wire up Gmail as your default mail client for all &lt;code&gt;mailto:&lt;/code&gt; links in Chrome  and Firefox.
&lt;/p&gt;

&lt;img alt="Screenshot of registerProtocolHandler prompt" src="http://updates.html5rocks.com/images/AMIfv94Seh9GCphD2DbnpRl6dTy65PIqLjOpBmP8zFs5ilEHnz7RLNaUZ0HXQcWlbay2OgquqhmXh-gFpJD1j9RM2cQWiHIs85VuehJpYuVzmFI-M2tSn2EpjttO7XY3ZdQO2hb-fmrz_BzRYpEiVP5HiDnpBxWARw" style="display:block;margin:10px auto;border:3px solid #999;"&gt;

Here's how: 

&lt;ol&gt;
&lt;li&gt;First, open up a Gmail tab. You &lt;em&gt;must&lt;/em&gt; do this from the Gmail tab, not your html5rocks one. :)
&lt;li&gt;Open your javascript console (&lt;kbd&gt;cmd-opt-j&lt;/kbd&gt; on Mac, &lt;kbd&gt;ctrl-shift-j&lt;/kbd&gt; on Windows) and enter:
&lt;li&gt;&lt;pre&gt;navigator.registerProtocolHandler("mailto",
                                  "https://mail.google.com/mail/?extsrc=mailto&amp;url=%s",
                                  "Gmail");&lt;/pre&gt;
&lt;li&gt;Accept the confirmation from the browser.
&lt;li&gt;Click &lt;a rel="nofollow" target="_blank" href="mailto:yourbestfriend@example.com?subject=registerProtocolHandler()%20FTW!&amp;amp;body=Check%20out%20what%20I%20learned%20at%20http%3A%2F%2Fupdates.html5rocks.com%2F2012%2F02%2FGetting-Gmail-to-handle-all-mailto-links-with-registerProtocolHandler%0A%0APlus%2C%20flawless%20handling%20of%20the%20subject%20and%20body%20parameters.%20Bonus%20from%20RFC%202368!"&gt;this mailto: link&lt;/a&gt; to test out your new Gmail mailto hookup!
&lt;/ol&gt;

&lt;p&gt;Boom. Enjoy.&lt;/p&gt;

&lt;p&gt;If you ever need to removing this setting, you can do that at &lt;code&gt;chrome://settings/handlers&lt;/code&gt; in Chrome and &lt;kbd&gt;Preferences-&amp;gt;Applications-&amp;gt;mailto&lt;/kbd&gt; in Firefox.&lt;/p&gt;

&lt;br&gt;</description>
         <author>paulirish</author>
         <guid isPermaLink="false">tag:updates.html5rocks.com,2012-02-08:post:46002</guid>
         <pubDate>Wed, 08 Feb 2012 07:56:15 +0000</pubDate>
      <feedburner:origLink>http://updates.html5rocks.com/2012/02/Getting-Gmail-to-handle-all-mailto-links-with-registerProtocolHandler</feedburner:origLink></item>
      <item>
         <title>Getting Started With the Track Element</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/QACENAZQZPg/</link>
         <author>dutton</author>
         <guid isPermaLink="false">tag:www.html5rocks.com,2012-02-08:/tutorials/track/basics//</guid>
         <pubDate>Wed, 08 Feb 2012 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://www.html5rocks.com/tutorials/track/basics/</feedburner:origLink></item>
      <item>
         <title>Chrome for Android: Accelerating the Mobile Web</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/ZwU4TPVgeaM/Chrome-for-Android-Accelerating-the-Mobile-Web</link>
         <description>&lt;p&gt;You've probably already heard that Chrome for Android Beta launched today. This
   new browser is based on the Chromium open source project, and brings with it
   many of the latest HTML5 features that Chrome developers have come to know and
   love. For an overview of the new hotness, see the launch announcement on
   &lt;a rel="nofollow" target="_blank" href="http://blog.chromium.org/2012/02/deeper-look-at-chrome-for-android.html"&gt;blog.chromium.org&lt;/a&gt; and a more detailed overview on
   &lt;a rel="nofollow" target="_blank" href="http://code.google.com/chrome/mobile/"&gt;code.google.com&lt;/a&gt;. I'll quickly go through the stuff I personally
   find most interesting:
&lt;/p&gt;

&lt;h1&gt;UI Improvements&lt;/h1&gt;
&lt;p&gt;Chrome for Android makes it easy for developers to create modern mobile web
   user interfaces using fixed positioning, and &lt;code&gt;overflow: scroll&lt;/code&gt; for
   individually scrollable elements. In addition, native-like scroll behavior is
   enabled by default. Chrome for Android supports the &lt;a rel="nofollow" target="_blank" href="http://www.html5rocks.com/en/tutorials/flexbox/quick/"&gt;old flexbox
model&lt;/a&gt;, though be aware that the original flexbox model is deprecated
   in favor of a &lt;a rel="nofollow" target="_blank" href="http://www.w3.org/TR/css3-flexbox/"&gt;new one&lt;/a&gt;. Also supported are DateTime pickers, and
   early support for &lt;code&gt;&amp;lt;input type="range"&amp;gt;&lt;/code&gt;.
&lt;/p&gt;

&lt;h1&gt;Fast graphics&lt;/h1&gt;
&lt;p&gt;Chrome for Android also supports hardware accelerated canvas, and performs
   quite well. There's also support for &lt;a rel="nofollow" target="_blank" href="http://paulirish.com/2011/requestanimationframe-for-smart-animating/"&gt;requestAnimationFrame&lt;/a&gt;, which is
   important for mobile, letting the browser decide when to render, giving it a
   chance to manage battery life more efficiently in GPU intensive applications.
   Chrome for Android introduces a slew of other notable HTML5 features including
   &lt;a rel="nofollow" target="_blank" href="http://www.html5rocks.com/en/tutorials/file/filesystem/"&gt;File System API&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://www.html5rocks.com/en/tutorials/indexeddb/todo/"&gt;IndexedDB&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://www.html5rocks.com/en/tutorials/workers/basics/"&gt;Web Workers&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://www.html5rocks.com/en/tutorials/websockets/basics/"&gt;Web Sockets&lt;/a&gt;.
&lt;/p&gt;

&lt;h1&gt;Remote debugging&lt;/h1&gt;
&lt;p&gt;Hands down, my personal favorite feature of Chrome for Android is remote
   debugging through the &lt;a rel="nofollow" target="_blank" href="http://code.google.com/chrome/devtools/docs/overview.html"&gt;Chrome Developer Tools&lt;/a&gt;. Remote debugging makes it
   very easy for web developers to debug their application as it's running live on
   their mobile device, without having to resort to clever hacks such as Weinre.
   Here's a quick screencast showing this feature in action:
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;For more information about remote debugging, see this &lt;a rel="nofollow" target="_blank" href="http://code.google.com/chrome/mobile/docs/debugging.html"&gt;remote debugging
article&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Try Chrome for Android Beta for yourself by &lt;a rel="nofollow" target="_blank" href="https://market.android.com/details?id=com.android.chrome"&gt;downloading it from the Android
Market&lt;/a&gt;. If you've written a mobile web app to use a feature, but
   Chrome for Android doesn't support it, keep in mind that this is a beta
   release, and see if this is already a &lt;a rel="nofollow" target="_blank" href="http://mcrbug.com"&gt;known issue&lt;/a&gt;, and star it if it is.
   Otherwise, please log a bug via &lt;a rel="nofollow" target="_blank" href="http://new.mcrbug.com"&gt;new.mcrbug.com&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;I'm stoked about the positive impact Chrome for Android will make on the mobile
   web developer community, and looking forward to see the great things we can
   build together! If you have additional questions, see if they are already
   answered in this &lt;a rel="nofollow" target="_blank" href="http://code.google.com/chrome/mobile/docs/faq.html"&gt;FAQ&lt;/a&gt;. Otherwise, if you have a Chrome-specific mobile
   web development question, please post it on Stack Overflow, tagged with the
   &lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/tagged/google-chrome+android"&gt;google-chrome and android&lt;/a&gt; tags.
&lt;/p&gt;</description>
         <author>smus</author>
         <guid isPermaLink="false">tag:updates.html5rocks.com,2012-02-07:post:46001</guid>
         <pubDate>Tue, 07 Feb 2012 23:27:11 +0000</pubDate>
      <feedburner:origLink>http://updates.html5rocks.com/2012/02/Chrome-for-Android-Accelerating-the-Mobile-Web</feedburner:origLink></item>
      <item>
         <title>Google Photography Prize Gallery</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/_Wk0IqMw4ro/</link>
         <author>ilmari</author>
         <guid isPermaLink="false">tag:www.html5rocks.com,2012-02-07:/tutorials/closure/photographyprize//</guid>
         <pubDate>Tue, 07 Feb 2012 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://www.html5rocks.com/tutorials/closure/photographyprize/</feedburner:origLink></item>
      <item>
         <title>Animating a Million Letters Using Three.js</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/LKMQJvs4j1o/</link>
         <author>ilmari</author>
         <guid isPermaLink="false">tag:www.html5rocks.com,2012-01-30:/tutorials/webgl/million_letters//</guid>
         <pubDate>Mon, 30 Jan 2012 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://www.html5rocks.com/tutorials/webgl/million_letters/</feedburner:origLink></item>
      <item>
         <title>Case Study: Building the Stanisław Lem Google doodle</title>
         <link>http://feedproxy.google.com/~r/html5rocks/~3/1_C9990KV2A/</link>
         <author>marcinwichary</author>
         <guid isPermaLink="false">tag:www.html5rocks.com,2011-12-21:/tutorials/doodles/lem//</guid>
         <pubDate>Wed, 21 Dec 2011 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://www.html5rocks.com/tutorials/doodles/lem/</feedburner:origLink></item>
   </channel>
</rss><!-- fe2.yql.bf1.yahoo.com compressed/chunked Sat Feb 25 02:03:29 UTC 2012 -->

