<?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>hacks.mozilla.org</title>
	<atom:link href="http://hacks.mozilla.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://hacks.mozilla.org</link>
	<description></description>
	<lastBuildDate>Wed, 04 Nov 2009 18:55:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>two important api changes &#8211; CSS gradients and the media load event</title>
		<link>http://hacks.mozilla.org/2009/11/api-change-media-load-css-gradient/</link>
		<comments>http://hacks.mozilla.org/2009/11/api-change-media-load-css-gradient/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 18:55:03 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2241</guid>
		<description><![CDATA[Robert O&#8217;Callahan has been posting updates in his weblog about changes that we&#8217;re going to be making that are web-facing.  It&#8217;s worth summarizing two here for web developers.
Removing the media element &#8216;load&#8217; event.
Yesterday I checked in a patch that removes support for the &#8216;load&#8217; event on &#60;video&#62; and &#60;audio&#62; elements. We simply never fire [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://weblogs.mozillazine.org/roc/">Robert O&#8217;Callahan</a> has been posting updates in his weblog about changes that we&#8217;re going to be making that are web-facing.  It&#8217;s worth summarizing two here for web developers.</p>
<p><strong><a href="http://weblogs.mozillazine.org/roc/archives/2009/10/removing_the_me.html">Removing the media element &#8216;load&#8217; event.</a></strong></p>
<blockquote><p>Yesterday I checked in a patch that removes support for the &#8216;load&#8217; event on &lt;video&gt; and &lt;audio&gt; elements. We simply never fire it. Also, the networkState attribute is now never NETWORK_LOADED. When we&#8217;ve read to the end of the media resource, networkState  changes to NETWORK_IDLE. We plan to ship this change for Firefox 3.6. </p></blockquote>
<p>This API has been removed based on consensus from everyone who are doing HTML5 video implementations and there are lots of other <a href="http://weblogs.mozillazine.org/roc/archives/2009/10/removing_the_me.html">options for events that Robert goes over in his post</a>.</p>
<p><strong><a href="http://weblogs.mozillazine.org/roc/archives/2009/11/css_gradient_sy.html">Changing our CSS Gradient Syntax</a></strong></p>
<blockquote><p>
We landed support for a form of CSS gradients on trunk a while ago, but we got considerable feedback that our syntax &#8212; which was an incremental improvement of Webkit&#8217;s syntax, which basically exposes a standard gradient API in the most direct possible way &#8212; sucked. A bunch of people on www-style got talking and Tab Atkins produced a much better proposal. Since we haven&#8217;t shipped our syntax anywhere yet, dropping it and implementing Tab&#8217;s syntax instead was a no-brainer. So Zack Weinberg, David Baron and I did that (using a -moz prefix of course), and today it landed on trunk. It should land on the Firefox 3.6 branch shortly. It&#8217;s unfortunate to land something new like this after the last beta, but in this case, it seems like the right thing to do instead of shipping CSS gradient syntax that we know nobody wants.
</p></blockquote>
<p>We&#8217;ve never shipped the &#8220;bad&#8221; CSS gradient syntax in a final release, but it is in our first beta.  We&#8217;ll be updating it before we make our final release of 3.6.  Stay turned for the new syntax on <a href="http://hacks.mozilla.org/">hacks</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/11/api-change-media-load-css-gradient/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox 3.6 Beta 1 now available &#8211; what&#8217;s new for web developers</title>
		<link>http://hacks.mozilla.org/2009/10/firefox-3-6b1/</link>
		<comments>http://hacks.mozilla.org/2009/10/firefox-3-6b1/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 00:46:09 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 3.6]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2191</guid>
		<description><![CDATA[Firefox 3.6b1 is now available for download.  As usual, this is a beta release so the usual warnings about eating your data and burning your house down apply.
If you download and run this beta you will get updates as we make them available &#8211; once every 1-2 weeks or so.  To keep up [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://developer.mozilla.org/devnews/index.php/2009/10/30/firefox-3-6-beta-1-is-now-available-for-download/">Firefox 3.6b1 is now available for download</a>.  As usual, this is a beta release so the usual warnings about eating your data and burning your house down apply.</p>
<p>If you download and run this beta you will get updates as we make them available &#8211; once every 1-2 weeks or so.  To keep up with things as they land in the betas, please follow us on the <a href="http://twitter.com/mozhacks">@mozhacks</a> twitter account.</p>
<p>Many add-ons have not been updated for 3.6.  To help us test if add-ons are compatible consider installing the <a href="https://addons.mozilla.org/en-US/firefox/addon/15003?src=external-mozhacks-relnote">Add-on compatibility reporter</a>.  It will let you run add-ons that are listed as incompatible and gives you the chance to report if add-ons appear to be working OK.  This is our first attempt at crowdsourcing compatibility and if you&#8217;re feeling adventurous you should try it out.</p>
<p>Here&#8217;s what&#8217;s new and notable in 3.6 Beta vs. Firefox 3.5 that might be of interest to web developers:</p>
<ul>
<li>We now support file-based <a href="https://developer.mozilla.org/En/DragDrop/DataTransfer">Drag and Drop</a> so you can <a href="http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/">Drag and Drop files from your desktop in the browser</a>.  Mixed with the File API (mentioned below) this can make for a very powerful set of features for people building photo and video uploaders or anything else that wants to import data.
<li>@font-face now <a href="http://hacks.mozilla.org/2009/10/woff/">supports the WOFF format</a>.
<li>We support multiple background images for <a href="https://developer.mozilla.org/en/CSS/background-image">background-image</a>.
<li>You can now specify the background size via <a href="https://developer.mozilla.org/en/CSS/-moz-background-size">-moz-background-size</a>
<li>We now specify a very powerful <a href="https://developer.mozilla.org/en/CSS/pointer-events">pointer-events</a> property that lets you control whether a particular element can receive events.
<li>You can now specify an algorithm to render images via the <a href="https://developer.mozilla.org/en/CSS/image-rendering">image-rendering</a> CSS property.
<li>Poster images now work for <a href="https://developer.mozilla.org/En/HTML/Element/Video">video elements</a>.
<li>Support for a new <a href="https://developer.mozilla.org/En/Using_geolocation">geolocation feature</a> that will return an <a href="https://developer.mozilla.org/en/nsIDOMGeoPosition">approximate address</a> for your location.
<li>Support for <a href="http://hacks.mozilla.org/2009/10/orientation-for-firefox/">orientation events</a>.
<li>&#8230;and a lot of other great stuff.  For the full list, have a look at the <a href="https://developer.mozilla.org/en/Firefox_3.6_for_developers">Firefox 3.6 for developers page</a> which has everything on it.
</ul>
<p>Here&#8217;s the list of things that we will support by 3.6 final, but aren&#8217;t in this beta:</p>
<ul>
<li>Support for CSS gradients is in this beta, but we&#8217;re changing it due to negative feedback on the current syntax.
<li>We will support the &lt;input type=&#8221;file&#8221; multiple&gt; so you can upload more than one file from the same file upload control.
<li>We have support in 3.6 for a new version of the <a href="http://dev.w3.org/2006/webapi/FileAPI/">File API draft spec</a> but that spec is out of date and our docs aren&#8217;t complete.  There&#8217;s an <a href="http://mxr.mozilla.org/mozilla1.9.2/source/content/base/public/nsIDOMFileRequest.idl">IDL entry for the FileRequest</a> object, but it&#8217;s likely to be renamed to FileReader based on feedback.  We&#8217;ll try to keep people <a href="http://twitter.com/mozhacks">updated</a> as we release updated betas.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/firefox-3-6b1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>help build the mozilla developer network</title>
		<link>http://hacks.mozilla.org/2009/10/mozilla-developer-network/</link>
		<comments>http://hacks.mozilla.org/2009/10/mozilla-developer-network/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 16:30:42 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[MDN]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2118</guid>
		<description><![CDATA[
Help us build the Mozilla Developer Network
Take the survey now.

At Mozilla we&#8217;ve been talking recently about how important the web has become to everything around us.  The web &#8211; and the Internet it&#8217;s built on &#8211; has become the defining computing platform for this century.  And most of that has happened because of [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.flickr.com/photos/caveman_92223/2982595969/"><img alt="Route 66 by Caveman 92223" src="http://farm4.static.flickr.com/3143/2982595969_bbe67fc03b.jpg" title="Route 66" width="500" height="375" /></a><p class="wp-caption-text">Route 66 by Caveman 92223</p></div>
<div align="center">
<strong>Help us build the Mozilla Developer Network</strong></p>
<p><strong><a href="http://bit.ly/mdnsurvey1">Take the survey now.</a></strong>
</div>
<p>At Mozilla we&#8217;ve been talking recently about how important the web has become to everything around us.  The web &#8211; and the Internet it&#8217;s built on &#8211; has become the defining computing platform for this century.  And most of that has happened because of web developers, and the freedom they have enjoyed.</p>
<p>Firefox is one of the most important tools for web developers.  Firebug combined with Firefox&#8217;s strong support for standards means that most web developers are building for Firefox first and then porting to other browsers later.</p>
<p>But even with developers using Firefox for development there hasn&#8217;t been an easy way for those of us at the Mozilla project to let you know about what&#8217;s going on at Mozilla &#8211; what we&#8217;re putting in Firefox, what we&#8217;re doing to bring the web forward and what we&#8217;re doing for web developers.  (Although the <a href="http://hacks.mozilla.org">hacks</a> weblog is the first attempt at that.)  And conversely there isn&#8217;t an obvious way for individual web developers to give Mozilla structured feedback about what&#8217;s important to them or what issues they might be having.</p>
<p>That&#8217;s why we&#8217;re working on the Mozilla Developer Network.  It will serve two purposes:</p>
<ol>
<li><strong>To provide you with information about what&#8217;s going on at Mozilla and around the web.</strong></li>
<li><strong>To give you the chance to give us structured feedback and become part of the Mozilla Community.</strong></li>
</ol>
<p>Our first step is to do a <a href="http://bit.ly/mdnsurvey1">quick survey</a>.  If we can get <strong>5,000 responses</strong> to the survey, we&#8217;ll release the aggregate results.</p>
<p>The survey itself asks you about how you work, what you think of Firefox and should only take a few minutes to complete.</p>
<p>Thanks!  We&#8217;ll have more on the Mozilla Developer Network as things progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/mozilla-developer-network/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>font_dragr: a drag and drop preview tool for fonts</title>
		<link>http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/</link>
		<comments>http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 17:00:22 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[@font-face]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Drag and Drop]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox 3.6]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2086</guid>
		<description><![CDATA[This demo is from our good friend Ryan Seddon who came up with a demo that seems deeply appropriate for this week, given our focus on the future of fonts on the web.
If you&#8217;ve ever been editing a page and wanted to know what a particular font looked like without having to upload files to [...]]]></description>
			<content:encoded><![CDATA[<p>This demo is from our good friend <a href="http://twitter.com/thecssninja">Ryan Seddon</a> who came up with a demo that seems deeply appropriate for this week, given our focus on the <a href="http://hacks.mozilla.org/2009/10/font-control-for-designers/ ">future</a> of <a href="http://hacks.mozilla.org/2009/10/woff/">fonts on the web</a>.</p>
<p>If you&#8217;ve ever been editing a page and wanted to know what a particular font looked like without having to upload files to a web server and update CSS (so tedious, that!) then this demo is for you.</p>
<p>He&#8217;s come up with a demo that shows what&#8217;s possible when you&#8217;ve got downloadable fonts, drag and drop and editable content.  (If you want to know more about drag and drop we suggest you read his excellent overview of using <a href="http://www.thecssninja.com/javascript/drag-and-drop-upload">drag and drop to do file uploading</a>.)</p>
<p>From <a href="http://www.thecssninja.com/javascript/font-dragr">Ryan&#8217;s description</a>:</p>
<blockquote><p><a href="http://labs.thecssninja.com/font_dragr/">Font dragr</a> is an experimental web app that uses HTML5 &#038; CSS3 to create a useful standalone web based application for testing custom fonts, once you visit it for the first time you don’t need to be online to use it after the initial visit. It allows you, in Firefox 3.6+, to drag and drop font files from your file system into the drop area. The browser will then create a data URL encoded copy to use in the page and render the content in the dropped font.</p></blockquote>
<p>You can either <a href="http://www.thecssninja.com/javascript/font-dragr">read the full description</a>, which contains a lot of useful technical information about how the demo works, or you can <a href="http://labs.thecssninja.com/font_dragr/">view the demo</a> below.  Either way, it&#8217;s nice to see the excellent HTML5 support in Firefox 3.6 coming together with everything else we&#8217;ve added to bring a lot of new capabilities to web developers and users.</p>
<p>Thanks, Ryan!</p>
<p><object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0' width='500' height='300'><param name='movie' value='http://screenr.com/Content/assets/screenr_0817090731.swf' /><param name='flashvars' value='i=20449' /><param name='allowFullScreen' value='true' /><embed src='http://screenr.com/Content/assets/screenr_0817090731.swf' flashvars='i=20449' allowFullScreen='true' width='500' height='300' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>after Firefox 3.6 &#8211; new font control features for designers</title>
		<link>http://hacks.mozilla.org/2009/10/font-control-for-designers/</link>
		<comments>http://hacks.mozilla.org/2009/10/font-control-for-designers/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:00:21 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[@font-face]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1984</guid>
		<description><![CDATA[Note: the discussion below applies to work in progress that might show up in Firefox 3.7.  It does not describe features in Firefox 3.6.
This post is from Jonathan Kew and John Daggett.  He&#8217;s supplied a 5 minute video that shows some of the features on the fly.  If you&#8217;re a total font [...]]]></description>
			<content:encoded><![CDATA[<p><i>Note: the discussion below applies to work in progress that <em>might</em> show up in Firefox 3.7.  It does not describe features in Firefox 3.6.</i></p>
<p><i>This post is from Jonathan Kew and John Daggett.  He&#8217;s supplied a 5 minute video that shows some of the features on the fly.  If you&#8217;re a total font nerd and you enjoy a soothing British accent, you might want to watch it.</i></p>
<p><video controls="true"><source type="video/ogg" src="http://videos.mozilla.org/serv/blizzard/woff/features-screencast-500.ogv"/><source type="video/mp4" src="http://videos.mozilla.org/serv/blizzard/woff/features-screencast-500.mp4"/><embed src="http://blip.tv/play/AYGoj0QC" type="application/x-shockwave-flash" width="500" height="416" allowscriptaccess="always" allowfullscreen="true"></embed></video></p>
<p>Using @font-face allows web designers a wide palette of font choices and with commercial font vendors supporting the <a href="http://hacks.mozilla.org/2009/10/woff/">WOFF</a> font format, the set of font choices should improve even more. So the next step is clearly to try and make better use of features available in these fonts.</p>
<p>For many years, “smart” font formats such as OpenType and AAT have provided font designers ways of including a rich set of variations in their fonts, from ligatures and swashes to small caps and tabular figures. The OpenType specification <a href="http://www.microsoft.com/typography/otspec/featurelist.htm">describes these features</a>, identifying each with a unique feature tag. But these have typically only been available to those using professional publishing applications such as Adobe InDesign. Firefox currently renders using font defaults; it would be much more interesting to provide web authors with a way of controlling these font features via CSS.</p>
<p>Håkon Wium Lie of Opera, based on discussions with Tal Leming and Adam Twardoch, <a href="http://lists.w3.org/Archives/Public/www-style/2008Jan/0380.html">proposed extending the CSS &#8216;font-variant&#8217; property</a> to include values for font features. Mozilla is <a href="http://lists.w3.org/Archives/Public/www-style/2009Jun/0506.html">actively working on a new proposal</a> along these lines. This is a fairly big addition to CSS, so it will most likely involve some complex discussions about how best to support these features. </p>
<p><b>Experimental Implementation</b></p>
<p>As part of this effort, Jonathan Kew has been working on porting a portion of the Pango library for use with handling complex scripts and to enable the use of font features on all supported platforms. He currently has an <a href="http://people.mozilla.com/~jkew/feature-samples/">experimental build</a> that uses a special CSS property to associate a list of OpenType features with specific elements in a page. This is <strong>not</strong> the <a href="http://lists.w3.org/Archives/Public/www-style/2009Jun/0506.html">proposed format</a>, it simply provides a better way of discussing possible sets of font-variant properties and the OpenType feature settings to which they should map.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.altstyles</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #808080; font-style: italic;">/* format: feature-tag=[0,1] with 0 to disable, 1 to enable */</span>
  -moz-font-feature-opentype<span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;dlig=1,ss01=1&quot;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>The feature setting string above implies rendering with discretionary ligatures (dlig) and the first set of stylistic alternates (ss01). An example using Jack Usine&#8217;s <a href="http://www.smeltery.net/fonts/megalopolis-extra">MEgalopolis Extra</a>: </p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/withlove.html"><img src="https://wiki.mozilla.org/images/6/6f/Withlove.png"/></a></p>
<p>This font makes extensive use of OpenType features; the <a href="http://www.smeltery.net/fonts/megalopolis-extra">homepage of the font contains a sample rendering</a> that uses many of these features. Below is a rendering of the same sample written in HTML with OpenType features enabled: </p>
<p><a href="http://people.mozilla.com/~jkew/feature-samples/MEgalopolis.html"><img src="https://wiki.mozilla.org/images/9/95/Megalopolis.png"/></a></p>
<p><b>Tabular Figures for Numerical Alignment</b></p>
<p>OpenType features also enable better control over alignment. When numbers are listed in tabular form, proportional forms often result in the misalignment of digits across rows, making the list harder to scan. With tabular alignment enabled, individual digits are rendered using a fixed width so that digits align across rows:</p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/tabulardata.html"><img src="https://wiki.mozilla.org/images/a/a0/Flavorfigures.png"/></a></p>
<p><b>Automatic Fractions</b></p>
<p>Automatic fractions are also possible with OpenType features, note the inline use of fractional forms in the recipe ingredient list below: </p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/tiramisu.html"><img src="https://wiki.mozilla.org/images/b/b8/Tiramisu.png"/></a></p>
<p><b>Language Sensitivity</b></p>
<p>OpenType also includes support for features on a per-language basis. This is important for rendering text correctly in some languages. For example, Turkish uses both a dotted-i and a dotless-i, so the distinction needs to be preserved when rendering ligatures or small caps. Below is the same text in English and Turkish, with both default and language-sensitive renderings shown for the Turkish text: </p>
<p><a href="http://people.mozilla.com/~jkew/feature-samples/udhr-turkish.html"><img src="https://wiki.mozilla.org/images/d/d8/Udhrturkish.png"/></a></p>
<p><b>Historical Text</b></p>
<p>The way text is rendered constantly evolves; glyphs once in common use often morph into other forms, making the historical forms distinct from their modern forms. Below is the text of an old Massachusetts Bay Colony law, taken from a book in the <a href="http://www.bc.edu/schools/law/library/about/rarebook/exhibitions/newacq08.html">Daniel R. Coquillette Rare Book Room</a> of the Boston College Law Library. </p>
<p>Original scanned image: </p>
<p><a href="http://www.bc.edu/schools/law/library/about/rarebook/exhibitions/newacq08.html"><img src="https://wiki.mozilla.org/images/5/5a/Bookexcerpt.png"/></a></p>
<p>Below is the same text rendered in HTML using the <a href="http://www.iginomarini.com/">Fell Types revival fonts by Igino Marini</a> with OpenType features enabled. Note the ‘ct’ ligature and the contextual form of the ‘s’:</p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/historicaltext.html"><img src="https://wiki.mozilla.org/images/5/52/Historicaltext.png"/></a></p>
<p><b>More resources</b></p>
<p><a href="http://lists.w3.org/Archives/Public/www-style/2009Jun/0506.html">Font feature support in CSS proposal</a><br />
<a href="http://www.microsoft.com/typography/otspec/featurelist.htm">OpenType font feature list</a><br />
<a href="http://www.iginomarini.com">Fell Types revival fonts by Igino Marini</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/font-control-for-designers/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
<enclosure url="http://videos.mozilla.org/serv/blizzard/woff/features-screencast-500.ogv" length="4402211" type="video/ogg" />
		</item>
		<item>
		<title>Web Open Font Format for Firefox 3.6</title>
		<link>http://hacks.mozilla.org/2009/10/woff/</link>
		<comments>http://hacks.mozilla.org/2009/10/woff/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 16:00:09 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[@font-face]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 3.6]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1921</guid>
		<description><![CDATA[This article was written by John Daggett.  John is a Mozilla contributor and has been working hard with font creators and web developers to improve the state of fonts on the web.  This article is a high-level overview of whats different and shows some examples of WOFF in use.  A full list [...]]]></description>
			<content:encoded><![CDATA[<p><em>This article was written by John Daggett.  John is a Mozilla contributor and has been working hard with font creators and web developers to improve the state of fonts on the web.  This article is a high-level overview of whats different and shows some examples of WOFF in use.  A full list of other supporting organizations <a href="http://blog.mozilla.com/blog/2009/10/20/mozilla-supports-web-open-font-format/">can be found at the official Mozilla Blog</a>.</em></p>
<p>In Firefox 3.5 we <a href="http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/">included support for linking to TrueType and OpenType fonts</a>.  In Firefox 3.6 we&#8217;re including support for a new font format &#8211; the Web Open Font Format, or WOFF.  This format has two main advantages over raw TrueType or OpenType fonts.</p>
<ol>
<li>It is compressed, which means that you will typically see much smaller download sizes compared with raw TrueType or OpenType fonts.
<li>It contains information that allows you to see where the font came from &#8211; without DRM or labeling for a specific domain &#8211; which means it has support from a <a href="http://typegirl.tumblr.com/post/142912558/most-of-the-important-foundries-are-supporting-webfont">large number of font creators and font foundries</a>.
</ol>
<p>The WOFF format originated from a collabaration between the font designers <a href="http://www.letterror.com/">Erik van Blokland</a> and <a href="http://talleming.com/">Tal Leming</a> with help from Mozilla&#8217;s Jonathan Kew.  Each had proposed their own format and WOFF represents a melding of these different proposals.  The  <a href="http://people.mozilla.com/~jkew/woff/woff-spec-latest.html"> format itself</a> is intended to be a simple repackaging of OpenType or TrueType font data, it doesn&#8217;t introduce any new behavior, alter the @font-face linking mechanism or affect the way fonts are rendered.  Many font vendors have <a href="http://typegirl.tumblr.com/post/142912558/most-of-the-important-foundries-are-supporting-webfont"> expressed support for this new format</a> so the hope is this will open up a wider range of font options for web designers.</p>
<p><b>Details on Differences between TrueType, OpenType and WOFF</b></p>
<p>First, compression is part of the WOFF format so web authors can optimize the size of fonts used on their pages.  The compression format is lossless, the uncompressed font data will match that of the original OpenType or TrueType font, so the way the font renders will be the same as the original.  Similar compression can be achieved using general HTTP compression but because compression is part of the WOFF format, it&#8217;s simpler for authors to use, especially in situations where access to server configuration is not possible.</p>
<p>Second, the format includes optional metadata so that a font vendor can tag their fonts with information related to font usage.  This metadata doesn&#8217;t affect how fonts are loaded but tools can use this information to identify the source of a given font, so that those interested in the design of a given page can track down the fonts used on that page.  Fonts in WOFF format are compressed but are not encrypted, the format should not be viewed as a &#8220;secure&#8221; format by those looking for a mechanism to strictly regulate and control font use.</p>
<p>Note: until Firefox 3.6 ships, users can test the use of WOFF fonts with Firefox <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/"> nightly builds</a>.</p>
<p><b>Examples</b></p>
<p>Below is a simple example that shows how to construct an @font-face rule that links to a WOFF font. To support browsers that only support direct linking to OpenType and TrueType fonts, the &#8217;src&#8217; descriptor lists the WOFF font first along with a format hint (&#8221;woff&#8221;), followed by the TrueType version:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Gentium (SIL International) */</span>
&nbsp;
<span style="color: #a1a100;">@font-face {</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">;</span>
  src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.woff<span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;woff&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span>
       <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.ttf<span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;truetype&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
body <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">,</span> Times<span style="color: #00AA00;">,</span> Times New Roman<span style="color: #00AA00;">,</span> <span style="color: #993333;">serif</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Structured this way, browsers that support the WOFF format will download the WOFF file. Other browsers that support @font-face but don&#8217;t yet support the WOFF format will use the TrueType version. (Note: IE support is a bit trickier, as discussed below).　As WOFF is adopted more widely the need to include links to multiple font formats will diminish. </p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/gentium-test.html"><img src="https://wiki.mozilla.org/images/7/7e/Gentiumtest.png"></a></p>
<p>Other examples below demostrate the use of WOFF formatted fonts but each example has been constructed so that it will work in any browser that supports @font-face, including Internet Explorer. </p>
<p><b>A font family with multiple faces</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/droidserif-test.html"><img src="https://wiki.mozilla.org/images/7/72/Droidtest.png"></a></p>
<p><b>Using a Postscript CFF font</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/chunkfive-test.html"><img src="https://wiki.mozilla.org/images/9/97/Chunkfivetest.png"></a></p>
<p><b>African Language Display</b></p>
<p>Below is an example of how downloadable fonts can be used to render languages for which font support is usually lacking. The example shows the UN Declaration of Human Rights, translated into two African languages, and how these render with default browser fonts vs. with a downloadable font suited for rendering these languages.</p>
<p>Note that in one of these examples that the font size goes from a 3.1MB TTF to a 1MB WOFF font and in the other from a 172KB TTF to an 80KB WOFF file.</p>
<p><a href="http://people.mozilla.com/~jkew/woff/udhr-sample/"><img src="https://wiki.mozilla.org/images/9/92/Charissiltest.png"/></a></p>
<p><b>Another Postscript CFF font</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/goudy1911-test.html"><img src="https://wiki.mozilla.org/images/3/35/Goudy1911test.png"/></a></p>
<p><b>An example in Japanese</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/mplus-test.html"><img src="https://wiki.mozilla.org/images/f/f8/Mlustest.png"/></a></p>
<p><b>Working With Other Browsers</b></p>
<p>Firefox 3.6 will be the first shipping browser to support the WOFF format so it&#8217;s important to construct @font-face rules that work with browsers lacking WOFF support. One thing that helps greatly with this is the use of format hints to indicate the format of font data before it&#8217;s downloaded; browsers that don&#8217;t recognize a given format simply skip data in a format they don&#8217;t support.</p>
<p>Internet Explorer, including IE8, only supports the EOT font format and only implements a subset of the @font-face rule descriptors. This makes creating cross-platform @font-face rules that work with IE especially tricky. One solution is to make different rules for IE:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@font-face {</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">;</span>
  src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.eot<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>  <span style="color: #808080; font-style: italic;">/* for IE */</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #a1a100;">@font-face {</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">;</span>
  <span style="color: #808080; font-style: italic;">/* Works only in WOFF-enabled browsers */</span>
  src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.woff<span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;woff&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> 
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>One minor downside of this is that IE doesn&#8217;t understand format hints and doesn&#8217;t parse @font-face URL&#8217;s correctly, it treats format hints as part of the URL, so web authors using the @font-face rules above will see the following in their access logs:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">GET /fonts/GenR102.eot HTTP/1.1&quot; 200 303536
GET /fonts/GenR102.woff)%20format(%22woff%22) HTTP/1.1&quot; 404 335</pre></div></div>

<p>IE successfully pulls down and uses the EOT version of the font but also tries to pull down the WOFF font with the format hint included in the URL. This fails and doesn&#8217;t affecting page rendering but it wastes valuable server resources. For more discussion, see Paul Irish&#8217;s blog post for <a href="http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/">one interesting workaround</a>.</p>
<p>Another problem is that IE currently tries to download <strong>all</strong> fonts on the page, whether they are used or not. That makes site-wide stylesheets containing all fonts used on site pages difficult, since IE will always try to download all fonts defined in @font-face rules, wasting lots of server bandwidth. </p>
<p><b>Further Resources</b></p>
<p><b>Documentation</b></p>
<p><a href="http://people.mozilla.com/~jkew/woff/woff-spec-latest.html">Latest draft WOFF specification</a><br />
<a href="http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/">Original blog post on using @font-face</a><br />
<a href="http://dev.w3.org/csswg/css3-fonts/">CSS3 Fonts working draft</a><br />
<a href="https://developer.mozilla.org/en/CSS/@font-face">MDC @font-face documentation</a></p>
<p><b>Tools</b></p>
<p><a href="http://people.mozilla.com/~jkew/woff/woff-code-latest.zip">Jonathan Kew&#8217;s sample encoding/decoding code</a><br />
<a href="http://code.typesupply.com/wiki/woffTools">woffTools &#8211; tools for examining and validating WOFF files</a><br />
<a href="http://sourceforge.net/projects/fonttools/">FontTools/TTX &#8211; Python library and tool for manipulating font data</a><br />
<a href="http://fonts.philip.html5.org/">Web-based font subsetting tool</a></p>
<p><b>General @font-face Examples</b></p>
<p><a href="http://www.alistapart.com/articles/cssatten">CSS @ Ten: The Next Big Thing</a><br />
<a href="http://nicewebtype.com/fonts/graublau-sans-web/">Example layout using Graublau Sans</a><br />
<a href="http://typeinspire.com/">Examples of Interesting Web Typography</a><br />
<a href="http://webtypography.net/">The Elements of Typographic Style Applied to the Web</a></p>
<p><b>Font Resources</b></p>
<p><a href="http://www.fontsquirrel.com/">Font Squirrel</a><br />
<a href="http://opentype.info/demo/webfontdemo.html">10 Great Free Fonts for @font-face</a><br />
<a href="http://www.smashingmagazine.com/2007/11/08/40-excellent-freefonts-for-professional-design/">40 Excellent Free Fonts by Smashing Magazine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/woff/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>making waves with HTML5</title>
		<link>http://hacks.mozilla.org/2009/10/making-waves-with-html5/</link>
		<comments>http://hacks.mozilla.org/2009/10/making-waves-with-html5/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 03:31:31 +0000</pubDate>
		<dc:creator>Gen Kanai</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1917</guid>
		<description><![CDATA[Thomas Saunders of modern-carpentry has a very nice HTML5 demo, making waves with html5, showcasing the power of Canvas as well as Processing.js.
modern carpentry rides the html5 canvas wave
Thomas says:
I was challenged at work to create something that &#8220;floats naturally&#8221;.  After a while of confusion in my pursuit of &#8220;natural floating&#8221; or whatever,  [...]]]></description>
			<content:encoded><![CDATA[<p>Thomas Saunders of <a href="http://modern-carpentry.com/">modern-carpentry</a> has a very nice HTML5 demo, <a href="http://modern-carpentry.com/workshop/html5/waveform/">making waves with html5</a>, showcasing the power of <a href="https://developer.mozilla.org/en/HTML/Canvas">Canvas</a> as well as <a href="http://processingjs.org/">Processing.js</a>.</p>
<p style="text-align: center;"><strong><a href="http://modern-carpentry.com/workshop/html5/waveform/">modern carpentry rides the html5 canvas wave</a></strong></p>
<p>Thomas says:</p>
<blockquote><p><em>I was challenged at work to create something that &#8220;floats naturally&#8221;.  After a while of confusion in my pursuit of &#8220;natural floating&#8221; or whatever,  I came up with the idea that I needed a tool to investigate my confusion.   This project is a result of my trying to build that tool.</em></p>
<p><em>It was initially built as a Flash/Flex application, which you can see <a href="http://modern-carpentry.com/workshop/waveform/">here</a>.   Later on, however, I became interested in HTML5 and the Canvas tag and decided to port the application to JavaScript and HTML (with the help of jQuery, and also Processing.js, of course&#8230;).  The transition went fairly well, and I ended up with a JS/HTML version of the application that I actually think is cooler than the original Flash version.</em></p>
<p><em>In the end, I came up with both something that &#8220;floats naturally&#8221;  and also  a serendipitous encounter with the simplicity of working with only HTML and JavaScript, which has been very rewarding.</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/making-waves-with-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a multi-touch drawing demo for Firefox 3.7</title>
		<link>http://hacks.mozilla.org/2009/10/multi-touch/</link>
		<comments>http://hacks.mozilla.org/2009/10/multi-touch/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 22:21:59 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Multi-touch]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1891</guid>
		<description><![CDATA[
Firefox Multitouch at MozChile &#8211; Drawing Canvas Experiment from Marcio Galli on Vimeo.

A couple of months ago we featured a video that had some examples of multi-touch working in Firefox.  At a recent event in South America, Marcio Galli put together a quick and fun drawing program based on the multi-touch code that we&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p><video controls="true"><source src="http://videos.mozilla.org/serv/blizzard/multitouch-draw/multitouch-drawing-small.ogv" type="video/ogg"/><source src="http://videos.mozilla.org/serv/blizzard/multitouch-draw/multitouch-drawing-small.mp4" type="video/mp4"/><object width="500" height="280"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7026562&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7026562&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="280"></embed></object>
<p><a href="http://vimeo.com/7026562">Firefox Multitouch at MozChile &#8211; Drawing Canvas Experiment</a> from <a href="http://vimeo.com/taboca">Marcio Galli</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p></video></p>
<p>A couple of months ago we featured a video that had some examples of <a href="http://hacks.mozilla.org/2009/08/multi-touch-firefox/">multi-touch working in Firefox.</a>  At a recent event in South America, <a href="http://blog.taboca.com/handsfree-drawing-demo-for-firefox-multitouch">Marcio Galli put together a quick and fun drawing program</a> based on the multi-touch code that we&#8217;ll have in a later release of Firefox.  What&#8217;s really great is that he was able to put this together in just a couple of hours based on the web platform.</p>
<p>There are three main components to the touch support in Firefox:</p>
<p>1. Touch-based scrolling and panning for the browser.  This allows you, as a user, to scroll web pages, select text, open menus, select buttons, etc.  This is part of Firefox 3.6.</p>
<p>2. Implement a new CSS selector that will tell you if you&#8217;re on a touch-enabled device.  This is <code><a href="https://developer.mozilla.org/en/CSS/:-moz-system-metric%28touch-enabled%29">-moz-system-metric(touch-enabled)</a></code>.  You can use this in your CSS to adjust the size of UI elements to fit people&#8217;s fingers.  This is part of Firefox 3.6.</p>
<p>3. Exposing multi-touch data to web pages.  This takes the form of DOM events much like mouse events you can catch today.  This isn&#8217;t part of Firefox 3.6, but is likely to be part of Firefox 3.7.</p>
<p>Although not all of this will be in our next release we thought it would be fun for people to see what will be possible with the release after 3.6.</p>
<p>Note: You can find the sample code on <a href="http://www.mgalli.com/development/drawing/">Marcio&#8217;s page for the demo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/multi-touch/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://videos.mozilla.org/serv/blizzard/multitouch-draw/multitouch-drawing-small.ogv" length="12759187" type="video/ogg" />
		</item>
		<item>
		<title>new device API for Firefox 3.6: orientation</title>
		<link>http://hacks.mozilla.org/2009/10/orientation-for-firefox/</link>
		<comments>http://hacks.mozilla.org/2009/10/orientation-for-firefox/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 23:17:48 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Device APIs]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox 3.6]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1860</guid>
		<description><![CDATA[
One new feature that we&#8217;re including as part of Firefox 3.6 is support for web pages to access machine orientation information if it&#8217;s available.  As you can see from the demo above you can use it to figure out if the machine is moving and what direction it&#8217;s facing.
Using the API is very simple. [...]]]></description>
			<content:encoded><![CDATA[<p><video width="500" controls><source type="video/ogg" src="http://videos.mozilla.org/serv/blizzard/orientation-demo/mozOrientation.ogv"/><source type="video/mp4" src="http://videos.mozilla.org/serv/blizzard/orientation-demo/mozOrientation.mp4"/><embed src="http://blip.tv/play/AYGm2xMC" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"></embed></video></p>
<p>One new feature that we&#8217;re including as part of Firefox 3.6 is support for web pages to access machine orientation information if it&#8217;s available.  As you can see from the demo above you can use it to figure out if the machine is moving and what direction it&#8217;s facing.</p>
<p>Using the API is very simple.  All you have to do is add a simple event listener:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;MozOrientation&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #009966; font-style: italic;">/* 3 values: e.x, e.y, e.z */</span>
                        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Originally built as something that we would include for our upcoming mobile browser release, we&#8217;ve made it available on desktop systems as well.  Many modern Macbooks and Thinkpads contain devices and drivers that expose this information.  We&#8217;ve added support for Linux, Macs and some Thinkpads where drivers and devices are available.  (Note, on some Macbooks detect the orientation information backwards &#8211; we&#8217;re working on that.)</p>
<p>You can find more information on <a href="http://dougt.org/wordpress/2009/08/orientation/">two</a> <a href="http://dougt.org/wordpress/2009/08/orientation-update/">posts</a> by Doug Turner and an update on <a href="http://www.bitstampede.com/2009/10/01/device-orientation-documentation/">documentation for orientation</a> from Eric Shepherd.</p>
<p><a href="http://blog.mozbox.org/post/2009/10/12/Some-new-demos">Paul Rouget</a> has this and some other demos up in one of his posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/orientation-for-firefox/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
<enclosure url="http://videos.mozilla.org/serv/blizzard/orientation-demo/mozOrientation.ogv" length="11252636" type="video/ogg" />
		</item>
		<item>
		<title>mitigating attacks with content security policy</title>
		<link>http://hacks.mozilla.org/2009/10/content-security-policy/</link>
		<comments>http://hacks.mozilla.org/2009/10/content-security-policy/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:08:56 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1796</guid>
		<description><![CDATA[Firefox support for Content Security Policy (CSP) has been in the news and is now available in test builds for web developers to try.  Support for CSP isn&#8217;t slated for Firefox 3.6 but is likely to be included in the release after 3.6, mostly likely called 3.7.
This post is targeted at web developers and [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox support for <a href="http://people.mozilla.org/~bsterne/content-security-policy/index.html">Content Security Policy (CSP)</a> has been <a href="http://blog.mozilla.com/news/2009/10/05/mozillas-content-security-policy-in-the-news/">in the news</a> and is <a href="https://build.mozilla.org/tryserver-builds/bsterne@mozilla.com-1254264686/">now available in test builds</a> for web developers to try.  Support for CSP isn&#8217;t slated for Firefox 3.6 but is likely to be included in the release after 3.6, mostly likely called 3.7.</p>
<p>This post is targeted at web developers and gives a quick overview of the three kinds of attacks that CSP helps to mitigate and also gives some quick examples so developers can get a sense of how it will work for them.</p>
<p>In case you don&#8217;t know what our Content Security Policy code is &#8211; and based on anecdotal evidence a lot of people don&#8217;t &#8211; it&#8217;s a set of easy to use tools that allow a web site owner to tell the browser where it should or should not load resources from.  In particular it aims to prevent three different classes of common attacks we see on the web today: <a href="http://www.owasp.org/index.php/Cross_Site_Scripting">cross-site scripting</a>, <a href="http://ha.ckers.org/blog/20080915/clickjacking/">clickjacking</a> and packet sniffing attacks.</p>
<p><strong>Cross-site scripting attacks</strong> are largely the result of a mistake made on backend web servers where someone fails to escape data that&#8217;s submitted by users.  When that happens it&#8217;s possible to inject a tag to load JavaScript code from another web site.  That code could be harmless but it could also contain something dangerous, like malware.  What CSP does is make it possible for a web site author, via HTTP headers, to specify what types of scripts can be loaded and from where.  For developers who are setting a policy, it adds a layer of protection where even if they make a mistake it is likely to be mitigated by this additional layer of policy.</p>
<p><strong>Clickjacking attacks</strong> are where someone embeds a page into a transparent iframe and &#8220;steals&#8221; user clicks to activate something dangerous.  One particular attack allows a browser to be <a href="http://jeremiahgrossman.blogspot.com/2008/10/clickjacking-web-pages-can-see-and-hear.html">turned into a remote surveillance device</a>.  CSP includes the ability for a page to tell the browser that it never wants to be ever included in an iframe.</p>
<p>And last is the ability for a web site to tell the browser that it <strong>never wants resources from that page to be loaded over unencrypted HTTP</strong>.  Banking and other commerce sites will find this particularly useful.</p>
<p>CSP is very powerful and flexible, allowing you to specify whether or not you want to load different kinds of media, different kinds of script methods, css, can be used to set up loading only from specific other hosts and a large number of other things.  It&#8217;s meant to be very easy to set up for simple cases but will scale up to pretty complex infrastructure where different resources might be spread out over a large number of machines.</p>
<p>Here are four examples that show common use cases.  Each of these examples is a header that&#8217;s delivered as a header over HTTP and it affects how the page is rendered.</p>
<p>A site wants all of its content to come from its own domain:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow 'self'</pre></div></div>

<p>Example 2: An auction site wants to be able to load images from anywhere, plugin content from a list of trusted media providers and a CDN network and scripts only from its server hosting sanitized JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow 'self'; img-src *; \
                           object-src media1.com media2.com *.cdn.com; \
                           script-src trustedscripts.example.com</pre></div></div>

<p>Example 3: Server administrators want to deny all third-party scripts for the site, and a given project group also wants to disallow media from other sites (header provided by sysadmins and header provided by project group are both present):</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow *; script-src 'self'
X-Content-Security-Policy: allow *; script-src 'self'; media-src 'self';</pre></div></div>

<p>Example 4: An online payments site wants to ensure that all of the content in its page is loaded over SSL to prevent attackers from eavesdropping on requests for insecure content:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow https://*:443</pre></div></div>

<p>The implementation isn&#8217;t quite complete yet, but it&#8217;s pretty close.  There&#8217;s more information on the <a href="http://people.mozilla.org/~bsterne/content-security-policy/demo.cgi">demo page</a> for CSP, read the <a href="http://people.mozilla.org/~bsterne/content-security-policy/index.html">overview</a> or read the <a href="https://wiki.mozilla.org/Security/CSP/Spec">spec itself.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/content-security-policy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WebGL in the wild</title>
		<link>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/</link>
		<comments>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 04:53:55 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1798</guid>
		<description><![CDATA[This is a guest post by David Humphrey and was originally posted in his weblog.  David is a professor at Seneca College in Toronto where he teaches and researches open source development and leads Mozilla&#8217;s education project.  David&#8217;s been involved with WebGL well before it became WebGL and was just a Firefox extension. [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post by David Humphrey and was <a href="http://vocamus.net/dave/?p=771">originally posted in his weblog</a>.  David is a professor at <a href="http://senecac.on.ca/">Seneca College</a> in Toronto where he <a href="http://zenit.senecac.on.ca/wiki">teaches and researches</a> open source development and leads <a href="http://education.mozilla.org/">Mozilla&#8217;s education project</a>.  David&#8217;s been involved with WebGL well before it became WebGL and was just a Firefox extension.  It&#8217;s nice to see that work making its way out of the experimental stage and already being used to solve real-world problems even before it&#8217;s officially shipped anywhere.</em></p>
<p>I&#8217;ve been spending a lot of time lately thinking about 3D in the browser.  It&#8217;s to the point that I have to blog about it, and try to get it out of my head and onto the web where it belongs.  Part of the reason I&#8217;m writing this tonight is that my colleague, <a href="http://cleung.wordpress.com/">Cathy Leung</a>, has just put up a demo so awesome I&#8217;m compelled to share it (<a href="http://www.youtube.com/watch?v=n3tQd7UT09k">video here</a>):</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/n3tQd7UT09k&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/n3tQd7UT09k&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>She put the video together after <a href="http://www.itbusiness.ca/it/client/en/home/DetailNewsPrint.asp?id=54713">this article</a> was written about her work to make 3D accessible to web developers via <a href="http://c3dl.org">C3DL</a>.  Cathy has been working with a team of students at <a href="http://senecacollege.ca/">Seneca College</a> for the past few years, focused on an <a href="https://addons.mozilla.org/en-US/firefox/addon/7171">experimental 3D technology</a> created by  Mozilla.  Her work proves how valuable 3D in the browser can be.  I think a lot of people misunderstand its significance: &#8220;Doom in the browser?&#8221;  Sure, but it&#8217;s way more than that.  There is  no shortage of tea pots on the web these days, as various browser vendors start to show-off early releases of <a href="http://arstechnica.com/open-source/news/2009/08/webgl-standard-to-bring-3d-web-without-browser-plugins.ars">WebGL</a> enabled builds.  However, Mozilla has been at this game a long time.  I know because we&#8217;ve been using their stuff as long as they&#8217;ve been building it.  And it&#8217;s really reached a <a href="http://blog.vlad1.com/2009/09/21/webgl-samples/">new level now</a>.</p>
<p>As <a href="http://readysetstop.blogspot.com/">Mozilla pushes WebGL</a> further, and <a href="http://www.c3dl.org/index.php/c3dl-news/release-1-1-and-beyond/">Cathy continues</a> her work on C3DL, I&#8217;m focused on another project to harness the power of  3D in the browser.  Together with <a href="http://hyper-metrix.com/">Al MacDonald</a>, I&#8217;m leading a <a href="https://wiki.mozilla.org/Education/Projects/ProcessingForTheWeb">Mozilla Foundation project</a> to complete the work begun by <a href="http://ejohn.org/">John Resig</a> to port the <a href="http://processing.org/">Processing language</a> to JavaScript (aka <a href="http://processingjs.org/">processing.js</a>).  The processing.js port, while unfinished, <a href="http://9elements.com/io/projects/html5/canvas/">is already amazing</a>.  Imagine if <a href="http://zenit.senecac.on.ca/wiki/index.php?title=Processing.js">we took eight students</a>, finished it, and added 3D support from C3DL?  I know, exactly.</p>
<p>Part of what makes me so excited about all this work is the deep intersection of things I love.  I&#8217;ve long been a fan of the work of Processing creators, <a href="http://benfry.com/">Ben Fry</a> and <a href="http://reas.com/">Casey Reas</a>, every since they were part of the <a href="http://acg.media.mit.edu/">Aesthetics and Computation Group</a>.  I&#8217;ve always thought that their work belonged on the web instead of on the desktop.  At the same time, my own work with Mozilla and the open web has proven to me the need for richer ways of working with things like <a href="http://vocamus.net/dave/?page_id=741">open data</a>.  The web is at an interesting point in its evolution.  We now take for granted that it can do what was once only possible via  desktop apps.  Looking forward I can already see a time when the web will also be the proper medium of artists, designers, data visualizers, and others pushing the limits of the second and third dimensions.  I&#8217;m thrilled to be a small part of this effort now.</p>
<p>If you&#8217;d like to get involved with any of the work discussed above, please do <a href="mailto:david.humphrey@senecac.on.ca">get in touch with me</a>.  The most exciting aspect of everything I&#8217;ve told you remains that it&#8217;s all community developed, from Mozilla to C3DL to processing to processing.js.  That&#8217;s how you build the software stack of the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>what does &#8220;open web&#8221; mean to you?</title>
		<link>http://hacks.mozilla.org/2009/09/open-web-survey/</link>
		<comments>http://hacks.mozilla.org/2009/09/open-web-survey/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 00:43:13 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Survey]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1791</guid>
		<description><![CDATA[Update: This poll is now closed &#8211; we&#8217;ll post some results once we&#8217;ve analyzed them &#8211; thanks for helping!
We&#8217;re running a short survey to find out what the phrase &#8220;open web&#8221; means to web developers.  What does that phrase mean to you?
http://rypple.com/blizzard/web
It&#8217;s an anonymous survey and will probably take you less than a minute [...]]]></description>
			<content:encoded><![CDATA[<p><b>Update: This poll is now closed &#8211; we&#8217;ll post some results once we&#8217;ve analyzed them &#8211; thanks for helping!</b></p>
<p>We&#8217;re running a short survey to find out what the phrase &#8220;open web&#8221; means to web developers.  What does that phrase mean to you?</p>
<p><strike>http://rypple.com/blizzard/web</strike></p>
<p>It&#8217;s an anonymous survey and will probably take you less than a minute to respond to.</p>
<p>Since it&#8217;s a survey that only allows you to use about 200 characters you&#8217;ll have to be short and simple.  And we don&#8217;t want to poison people by offering suggestions &#8211; we&#8217;re curious about people&#8217;s honest responses.</p>
<p>We&#8217;ll post a summary if we get enough results.</p>
<p>Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/open-web-survey/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>theora 1.1 is released &#8211; what you should know</title>
		<link>http://hacks.mozilla.org/2009/09/theora-1-1-released/</link>
		<comments>http://hacks.mozilla.org/2009/09/theora-1-1-released/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 17:03:27 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1646</guid>
		<description><![CDATA[Less than a year after the release of Theora 1.0, the wonderful people at Xiph have released Theora 1.1.  The 1.1 release is a software-only release of the Theora encoder and decoder.  It does not include any changes to the Theora format.  Existing Theora videos should continue to play with the new [...]]]></description>
			<content:encoded><![CDATA[<p>Less than a year after the release of <a href="http://www.xiph.org/press/2008/theora-release-1.0/">Theora 1.0</a>, the wonderful people at Xiph have <a href="http://theora.org/news/">released Theora 1.1</a>.  The 1.1 release is a software-only release of the <a href="http://www.theora.org/">Theora encoder and decoder</a>.  It does not include any changes to the Theora format.  Existing Theora videos should continue to play with the new decoder and the new Theora encoder generates bitstreams that will work in existing players that can play Theora content.</p>
<p>The 1.1 release is largely an improvement to the Theora encoder.  This post will attempt to give people a high-level overview of the changes and what they mean to web developers and people who are thinking of deploying Theora to support HTML5 video.  Theora is an important technology to web developers &#8211; it&#8217;s the only competitive codec that currently complies with the <a href="http://lockshot.wordpress.com/2009/07/30/whats-the-problem-with-ogg-theora/">W3C patent policy</a>.</p>
<p>Here&#8217;s a quick list of important things that have changed in this release.  We&#8217;ll go into more detail on each of these items.</p>
<ul>
<li>Video quality between Theora 1.0 and Theora 1.1 has been improved.</li>
<li>Rate control for live streaming now works well.</li>
<li>A two-pass mode has been added to the encoder that can create rate controlled videos with very predictable bandwidth requirements.</li>
<li>CPU usage during encoding is much more consistent.</li>
<li>Decoder performance has been improved.</li>
</ul>
<p><b>Video quality between Theora 1.0 and Theora 1.1 has been improved.</b></p>
<p>One issue that people had with the Theora 1.0 encoder was that it produced video that appeared fuzzy.  The 1.1 improvements are clear in these two images provided by <a href="http://web.mit.edu/xiphmont/Public/theora/demo7.html">Monty, one of the Xiph Developers</a>.  Open each of these images in new tabs and flip between them.  You can really see the difference.</p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.0.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.0.png"></a></p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.1.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.1.png"></a></p>
<p>This was also very visible at the edges of text.  Here&#8217;s an example taken from one of our <a href="http://www.mozilla.com/en-US/firefox/video/?video=whatnew-3.5">Firefox 3.5 promotional videos</a>.  The first is with the <a href="http://people.mozilla.org/~blizzard/videos/theora-1.0-vs-1.1/fx35_overview-1.0-v-4.ogv">1.0 encoder (9.0MB)</a> and the second is with the <a href="http://people.mozilla.org/~blizzard/videos/theora-1.0-vs-1.1/fx35_overview-1.1-v-6.ogv">1.1 encoder (8.2MB)</a>.  You will notice that not only are the edges more defined but there&#8217;s a lot less noise in the area around the edges of the text.  Once again, if you open them in tabs and flip between them you can see the difference.</p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.0.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.0.png"></a></p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.1.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.1.png"></a></p>
<p>Note that the original <a href="http://videos.mozilla.org/firefox/3.5/overview/overview.ogv">video</a> is nearly 17MB.  That was done largely to get the text crisp.  With these changes we can likely use a much lower-bandwidth version of the video, probably as small as <a href="http://people.mozilla.org/~blizzard/videos/theora-1.0-vs-1.1/fx35_overview-1.1-v-7.ogv">9.9MB.</a>  That&#8217;s a pretty big difference.</p>
<p>Note that we&#8217;re talking about an improvement of quality <i>at the same video bitrate</i>.  This means that we&#8217;re either able to produce higher quality videos at the same file size or we&#8217;re able to reduce the file size and keep the same quality &#8211; either way it&#8217;s a big win.</p>
<p><b>Rate control for live streaming now works well.</b></p>
<p>Before describing this change, something important must be described.  This is the difference between videos encoded with a <i><a href="http://en.wikipedia.org/wiki/Variable-rate_encoding">variable bitrate (VBR)</a></i> and a <i><a href="http://en.wikipedia.org/wiki/Constant_bitrate">constant bitrate (CBR)</a></i>.</p>
<p>In variable bitrate encoding the amount of data that&#8217;s required to represent the difference between two frames in a video is allowed to grow.  This happens most often when shifting from a scene where there isn&#8217;t much movement to a scene where there&#8217;s a lot of motion.  You could easily go from requiring 40Kb/sec to 400Kb/sec because the entire background moves.</p>
<p>In constant bitrate encoding the amount of data that you&#8217;re allowed to use to represent a change from one frame to the next is pinned at some maximum value.  If you&#8217;ve got a low maximum value and there&#8217;s a set of frames that requires a lot of bits to represent the changes from one to the next you will need to sacrifice something in order to stay inside of that maximum value.  Very often it&#8217;s some amount of video quality or the encoder will start dropping frames in order to keep under the watermark.</p>
<p>This leads to a pretty simple rule: <i>If you want the highest quality video possible, you should be using variable rate encoding.</i>  This means that when you&#8217;re encoding a video you should be using quality settings (0-99, low/medium/high, 1-10) instead of picking bitrates (60Kb/sec, 200Kb/sec.)  For most use cases on the web VBR-encoded videos actually work very well because users are allowed to buffer quite a bit of video out ahead of their current position so these bursts of data don&#8217;t affect the user&#8217;s experience.</p>
<p>But there are some use cases where having a constant bitrate is very important.  These include:</p>
<ol>
<li>Live, low delay streaming over HTTP with a lot of clients.</li>
<li>Streaming large files where a large read-ahead buffer is not desired.</li>
<li>Situations where large bursts of data result in large bursts in CPU to handle them.</li>
</ol>
<p>For live, low-delay streaming over HTTP it&#8217;s important to realize what happens when there&#8217;s a sudden burst of data to handle.  HTTP runs over <a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a>.  In TCP it takes a while for a connection to increase its bandwidth.  (And by &#8220;a while&#8221; I mean &#8220;not that long&#8221; but it&#8217;s long enough to affect the low latency connection that we want for this use case.  This is why many low-latency applications don&#8217;t use TCP.  But we&#8217;re talking about delivering video over HTTP.)  If you&#8217;ve got a big burst of data and the TCP window takes a long time to open up you start building up a big send buffer on the server.  (And remember in this use case you&#8217;ve got a lot of clients connected!)  That requires a lot of memory to hold the send buffers for each client.  What happens then is that servers will start closing connections en masse because it needs to save memory or because it thinks that the client has become somehow unreachable.  This is made worse by the fact that even if the connection scales up and then scales back down it re-settles at the low rate and the process has to be repeated.  The user&#8217;s experience is that the video stream stops and restarts or just stops working altogether when the server hangs up.  The solution?  Using a constant rate that doesn&#8217;t require the TCP window to open up suddenly and doesn&#8217;t require large send buffers for each client.</p>
<p>For the use case where you&#8217;re streaming large files it might not be reasonable for the client to cache a lot of data.  You also might be serving up a lot of data to a lot of clients and you might want to avoid the large send buffer problem as well, just for different reasons.</p>
<p>And for the last use case where you&#8217;re in a CPU-constrained environment the bursting nature of variable bitrate videos means it often takes a large bursts of CPU to handle those bursts.  While CPUs do burst up faster than TCP does, you might be talking to constrained processors (think mobile) or you might be serving up files near HD-sized content, which CPUs often struggle to decode.</p>
<p>In any case there are a number of use cases for constant bitrate encoding.  Back to the question of what&#8217;s improved in Theora 1.1.</p>
<p>In Theora 1.0 the rate controlled encoding mode was very very broken.  This resulted in two things:</p>
<ol>
<li>People trying to do live streaming ran into problems.</li>
<li>People who used rate controlled settings to compare overall Theora quality to the quality of other encoders saw worse results than the format actually represented.</li>
</ol>
<p>The first issue is clear &#8211; it was broken, it should be fixed.  And it has been.  The new encoder does a pretty good job of maintaining bitrates, changes quality on the fly, drops frames and even includes a &#8220;soft-target&#8221; mode so that bitrates can fluctuate a little bit to maintain quality while occasionally breaking the bandwidth rules.</p>
<p>The encoder also has a wonderful new piece of functionality that people will find very useful.  It&#8217;s now possible to specify a maximum rate ceiling for video encoding while also specifying a minimum quality floor.  What this means is that the encoder will try and maintain very crisp video frames within rate constraints.  This means that it will aggressively drop frames instead of creating frame deltas that are fuzzy or low-quality.  While this might sound like a poor trade-off it&#8217;s actually very useful.  If you&#8217;re showing a live video of a presentation you usually want a crisp video of the slides and having a lower frame update rate is very acceptable.</p>
<p>The second issue that was caused by the bad rate control in Theora 1.0 is an issue of marketing.  People would often use the encoder with the fixed bitrate mode instead of the quality mode and dismiss the results as a reflection of the format instead of problems with the encoder.  We hope that people find better results with the new encoder.</p>
<p><b>A two-pass mode has been added to the encoder that can create rate controlled videos with very predictable bandwidth requirements.</b></p>
<p>In addition to fixing the single pass rate controlled encoder in 1.1 a two-pass encoding option has been added.  This means that if you are transcoding a file (as opposed to doing a live stream) you can create a very consistent bitrate in a file if you want.  This is because the encoder can look ahead in the stream to allocate bits efficiently.  <a href="http://web.mit.edu/xiphmont/Public/theora/demo8.html">Monty from Xiph made a graph</a> that shows one example of the bitrate in a file with one pass and two pass.</p>
<p><a href="http://web.mit.edu/xiphmont/Public/theora/demo8.html"><img src="http://web.mit.edu/xiphmont/Public/theora/onepass-twopass.png" width="500"/></a></p>
<blockquote><p>Above: graph of quantizer choice (which roughly corresponds to the encoding quality) when using default two-pass bitrate management as opposed to one-pass (with &#8211;soft-target) when encoding [the Matrix movie clip] at 300kbps. Both encodes resulted in the same bitrate. The quality of a one-pass encode varies considerably as the encoder has no way to plan ahead.</p></blockquote>
<p><b>CPU usage during encoding is much more consistent.</b></p>
<p>People who were doing live streaming often saw huge spikes in CPU usage during high-motion events.  This has been fixed and now CPU usage is much more consistent during single pass rate constrained encoding making it much easier to live stream video.</p>
<p><b>Decoder performance has been improved.</b></p>
<p>And last but not least the decoder has been made faster during the 1.1 release.  How much faster depends quite a bit on the clip, but people are reporting that the new encoder is anywhere from 1.5-2x faster than the 1.0 of release of libtheora.</p>
<p><b>Coming soon to a product near you.</b></p>
<p>This release is a library release.  It&#8217;s not a product in itself, but is instead something that other products include.  So over the next days and weeks we&#8217;ll see other products pick up and start using this as part of their releases.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/theora-1-1-released/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
<enclosure url="http://videos.mozilla.org/firefox/3.5/overview/overview.ogv" length="17620460" type="video/ogg" />
		</item>
		<item>
		<title>three more WebGL demos</title>
		<link>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/</link>
		<comments>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 04:12:52 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1745</guid>
		<description><![CDATA[If you see other cool WebGL demos post them in the comments here or let us know at @mozhacks.  We&#8217;ll keep posting them as we find them.
A port of Puls to WebGL:

Escher-Droste effect in WebGL:

Metatunnel by FRequency:

(via Mark Steele)
]]></description>
			<content:encoded><![CDATA[<p>If you see other cool WebGL demos post them in the comments here or let us know at <a href="http://twitter.com/mozhacks"><b>@mozhacks</b></a>.  We&#8217;ll keep posting them as we find them.</p>
<p>A port of <a href="http://wakaba.c3.cx/w/puls.html">Puls to WebGL</a>:</p>
<p><a href="http://wakaba.c3.cx/w/puls.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/puls.png"/></a></p>
<p><a href="http://wakaba.c3.cx/w/escher_droste.html">Escher-Droste effect in WebGL</a>:</p>
<p><a href="http://wakaba.c3.cx/w/escher_droste.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/escher.png"/></a></p>
<p><a href="http://cs.helsinki.fi/u/ilmarihe/metatunnel.html">Metatunnel by FRequency</a>:</p>
<p><a href="http://cs.helsinki.fi/u/ilmarihe/metatunnel.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/glowing-tunnel.png"/></a></p>
<p>(via <a href="http://readysetstop.blogspot.com/2009/09/webgl-demos.html">Mark Steele</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>WebGL for Firefox</title>
		<link>http://hacks.mozilla.org/2009/09/webgl-for-firefox/</link>
		<comments>http://hacks.mozilla.org/2009/09/webgl-for-firefox/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 01:16:04 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1725</guid>
		<description><![CDATA[This is a re-post from Vlad Vukićević&#8217;s personal blog.  WebGL, an effort to bring a GL-based 3D extension to the web, is being standardized through Khronos.  The WebGL work is based on the GL Canvas extension that Vlad started and is now being implemented in both Firefox and Safari.  Builds that include [...]]]></description>
			<content:encoded><![CDATA[<p><i>This is a re-post from <a href="http://blog.vlad1.com/2009/09/18/webgl-in-firefox-nightly-builds/">Vlad Vukićević</a>&#8217;s personal blog.  WebGL, an effort to bring a GL-based 3D extension to the web, is being <a href="http://www.khronos.org/news/press/releases/khronos-launches-initiative-for-free-standard-for-accelerated-3d-on-web/">standardized through Khronos</a>.  The WebGL work is based on the <a href="http://blog.vlad1.com/canvas-3d/">GL Canvas extension</a> that Vlad started and is now being implemented in both Firefox and Safari.  Builds that include support for WebGL are <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/">now being built every night.</a>  This work won&#8217;t make it into Firefox 3.6 but may be included in a post-3.6 release.</a>  To keep track of the WebGL progress you can follow <a href="http://blog.vlad1.com/">Vlad</a> or <a href="http://readysetstop.blogspot.com/">Mark Steele</a>&#8217;s progress.</i></p>
<p>Since <a href="http://blog.vlad1.com/2009/09/18/webgl-in-firefox-nightly-builds/" >my post on Friday</a>, we landed a few fixes to improve our WebGL implementation and to fix a couple of bugs we discovered on Friday.  I&#8217;m looking forward to seeing what people do with WebGL, and how it can be useful on the web right now.  For example, EA/Maxis recently added COLLADA export of Creature designs to their popular game <a href="http://www.spore.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.spore.com');">Spore</a>, and they have a <a href="http://www.spore.com/sporepedia">Sporepedia</a> where players can see others&#8217; creations.  Right now, those previews are just as images.  With WebGL, they could be fully 3D, even animated.</p>
<p><a href="http://blog.vlad1.com/wp-content/uploads/2009/09/spdemo.png" ><img class="alignleft size-full wp-image-201" title="Spore Creature View (thumbnail)" src="http://blog.vlad1.com/wp-content/uploads/2009/09/spdemo-thumb.jpg" alt="Spore Creature View (thumbnail)" width="306" height="288" /></a>Over the weekend I&#8217;ve put together <a href="http://people.mozilla.com/~vladimir/webgl/spore/sporeview.html">this example</a>, which uses WebGL to render an exported Spore creature, and let the user rotate the 3D model to view it from different angles.  For those who want to try it out, you&#8217;ll need a recent Firefox nightly (one from today, September 21, or newer), and with one preference flipped as described in <a href="http://blog.vlad1.com/2009/09/18/webgl-in-firefox-nightly-builds/" >this post</a>.</p>
<p>I&#8217;ll be working to update the very basic &#8220;<a href="http://people.mozilla.com/~vladimir/canvas3d/examples/gles2book/">getting started</a>&#8221; demos from the GL ES 2 book that I ported to Canvas 3D as well, so that those who are interested in experimenting can have some good basic code to look at.  They&#8217;re not updated yet, but they should be in the next day or two.</p>
<p>For those of you on Windows who don&#8217;t have an up to date OpenGL driver, or don&#8217;t have the possibility of getting one (e.g. many common Intel graphics cards doesn&#8217;t have OpenGL drivers), you can enable software rendering by downloading a Windows build of the Mesa software OpenGL implementation.  It won&#8217;t be fast, but it should be enough for you to get an idea of what&#8217;s going on, and to play with some of the demos.  To use it, download <a href="http://people.mozilla.com/~vladimir/webgl/webgl-mesa-751.zip">webgl-mesa-751.zip</a> and extract it somewhere on your computer.  It has a single file, OSMESA32.DLL, that you need to tell Firefox where to find:  open up about:config, and set the preference <em>webgl.osmesalib</em> to the path of OSMESA32.DLL.  If you extracted it to &#8220;C:\temp&#8221;, you would put in &#8220;C:\temp\osmesa32.dll&#8221; in the pref.  Then, flip <em>webgl.software_rendering</em> to true, and you should be good to go.</p>
<p>(Mac OS X users shouldn&#8217;t need to bother with software rendering, since Apple already provides a high quality OpenGL implementation, and Linux users should be ok as long as they have recent OpenGL drivers installed.)</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/webgl-for-firefox/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>a 20 second survey to help improve hacks.mozilla.org</title>
		<link>http://hacks.mozilla.org/2009/08/a-20-second-survey-to-help-improve-hacks-mozilla-org/</link>
		<comments>http://hacks.mozilla.org/2009/08/a-20-second-survey-to-help-improve-hacks-mozilla-org/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 04:36:56 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1638</guid>
		<description><![CDATA[I asked this on the mozhacks twitter account earlier today but I&#8217;d like to get more feedback:
what&#8217;s your single favorite thing about hacks.mozilla.org?
The survey is totally anonymous and takes 20 seconds or so.  It&#8217;s limited, much like twitter, to a very short response.  If you have ideas on improvement there&#8217;s room for that [...]]]></description>
			<content:encoded><![CDATA[<p>I asked this on the <a href="http://twitter.com/mozhacks">mozhacks</a> twitter account earlier today but I&#8217;d like to get more feedback:</p>
<p><strong><a href="https://www.rypple.com/blizzard/favhacks">what&#8217;s your single favorite thing about hacks.mozilla.org?</a></strong></p>
<p>The survey is totally anonymous and takes 20 seconds or so.  It&#8217;s limited, much like twitter, to a very short response.  If you have ideas on improvement there&#8217;s room for that as well so please, respond away!  If we get enough good feedback we&#8217;ll post results here as well.</p>
<p>Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/08/a-20-second-survey-to-help-improve-hacks-mozilla-org/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>bringing multi-touch to Firefox and the web</title>
		<link>http://hacks.mozilla.org/2009/08/multi-touch-firefox/</link>
		<comments>http://hacks.mozilla.org/2009/08/multi-touch-firefox/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 23:28:45 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Multi-touch]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1586</guid>
		<description><![CDATA[The ever-energetic Felipe Gomes was nice enough to intern with Mozilla this summer in between busy semesters in Brazil.  During that time he&#8217;s been working on multi-touch support for Firefox on Windows 7.  A nice result of that work is that he&#8217;s also found ways to bring multi-touch support to the web.  [...]]]></description>
			<content:encoded><![CDATA[<p><em>The ever-energetic <a href="http://felipe.wordpress.com/">Felipe Gomes</a> was nice enough to intern with Mozilla this summer in between busy semesters in Brazil.  During that time he&#8217;s been working on multi-touch support for Firefox on Windows 7.  A nice result of that work is that he&#8217;s also found ways to bring multi-touch support to the web.  He&#8217;s made a short video and written up some short technical information to go with it.</em></p>
<p><em>This post has also been <a href="http://felipe.wordpress.com/2009/08/21/sneak-peak-on-multitouch-events/">cross-posted to Felipe&#8217;s personal blog</a>.</em></p>
<p><video width="500" controls><source type="video/ogg" src="http://videos.mozilla.org/serv/air_mozilla/multi-touch-felipe.ogg"/><source type="video/mp4" src="http://videos.mozilla.org/serv/air_mozilla/multi-touch-felipe.mp4"/><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6214945&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6214945&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/6214945">Multitouch on Firefox</a> from <a href="http://vimeo.com/user984605">Felipe</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p></video></p>
<p>I’ve been anxious to demonstrate the progress on our multi-touch support for Firefox, and this video showcases some possible interactions and use cases for what web pages and webapps can do with a multi-touch device.</p>
<p>We’re working on exposing the multi-touch data from the system to regular web pages through DOM Events, and all of these demos are built on top of that. They are simple HTML pages that receive events for each touch point and use them to build a custom multi-touch experience.</p>
<p>We&#8217;re also adding CSS support to detect when you&#8217;re running on an touchscreen device.  Using the pseudo-selector <code>:-moz-system-metric(touch-enabled)</code> you can apply specific styles for your page if it&#8217;s being viewed on a touchscreen device. That, along with physical CSS units (cm or in), makes it possible to adjust your webapp for a touchscreen experience.</p>
<p>Firefox 3.6 will include the CSS property, but is unlikely to include the DOM events described below.</p>
<p>Here is an example of what the API looks like for now. We have three new DOM events (<code>MozTouchDown</code>, <code>MozTouchMove</code> and <code>MozTouchRelease</code>), which are similar to mouse events, except that they have a new attribute called <code>streamId</code> that can uniquely identify the same finger being tracked in a series of MozTouch events. The following snippet is the code for the first demo where we move independent <code>&lt;div&gt;</code>s under the X/Y position of each touch point.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> assignedFingers <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> lastused <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> touchMove<span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> divId<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>lastused <span style="color: #339933;">&lt;</span> <span style="color: #339933;">=</span> 4<span style="color: #009900;">&#41;</span>
        <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>assignedFingers<span style="color: #009900;">&#91;</span>event.<span style="color: #660066;">streamId</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        divId <span style="color: #339933;">=</span> assignedFingers<span style="color: #009900;">&#91;</span>event.<span style="color: #660066;">streamId</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
        divId <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;trackingdiv&quot;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">++</span>lastused<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        assignedFingers<span style="color: #009900;">&#91;</span>event.<span style="color: #660066;">streamId</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> divId<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>divId<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">left</span> <span style="color: #339933;">=</span> event.<span style="color: #660066;">clientX</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span>
    document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>divId<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">top</span>  <span style="color: #339933;">=</span> event.<span style="color: #660066;">clientY</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
document.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;MozTouchMove&quot;</span><span style="color: #339933;">,</span> touchMove<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
document.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;MozTouchRelease&quot;</span><span style="color: #339933;">,</span>
                          <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> lastused<span style="color: #339933;">--;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>On the <a href="https://wiki.mozilla.org/Firefox/Projects/Multitouch_Polish/DOM_Events/Examples">wiki page you can see code snippets for the other demos</a>. Leave any comments regarding the demos or the API on <a href="http://felipe.wordpress.com/2009/08/21/sneak-peak-on-multitouch-events/">my weblog post.</a>  We really welcome feedback and hope to start some good discussion on this area.  Hopefully as touch devices (mobile and notebooks) are getting more and more popular we’ll see new and creative ways to use touch and multitouch on the web.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/08/multi-touch-firefox/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>experimenting with HTML5 video at the BBC</title>
		<link>http://hacks.mozilla.org/2009/08/html5-video-bbc/</link>
		<comments>http://hacks.mozilla.org/2009/08/html5-video-bbc/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 03:52:47 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Firefox 3.5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1578</guid>
		<description><![CDATA[The BBC has a post up describing an experiment that they have put together that uses HTML5 video that works in Firefox 3.5 and Safari.

The demo uses jQuery and drives a simple carousel that shows the current chapter as the video plays.  It also shows subtitles as the video plays.
One really great, and somewhat [...]]]></description>
			<content:encoded><![CDATA[<p>The BBC has a <a href="http://www.bbc.co.uk/blogs/rad/2009/08/html5.html">post up</a> describing an <a href="http://open.bbc.co.uk/rad/demos/html5/rdtv/episode2/index.html">experiment</a> that they have put together that uses HTML5 video that works in Firefox 3.5 and Safari.</p>
<p><a href="http://open.bbc.co.uk/rad/demos/html5/rdtv/episode2/index.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/08/bbc-video-experiment-300x283.png" alt="BBC HTML5 Video Experiment" title="BBC HTML5 Video Experiment" width="300" height="283" class="aligncenter size-medium wp-image-1579" /></a></p>
<p>The demo uses jQuery and drives a simple carousel that shows the current chapter as the video plays.  It also shows subtitles as the video plays.</p>
<p>One really great, and somewhat subtle thing about this experiment?  You can select the subtitles.  They are just text.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/08/html5-video-bbc/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Firefox 3.6 Alpha 1 &#8211; web developer changes</title>
		<link>http://hacks.mozilla.org/2009/08/firefox-36a1-for-developers/</link>
		<comments>http://hacks.mozilla.org/2009/08/firefox-36a1-for-developers/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 02:40:53 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 3.6]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[TraceMonkey]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1546</guid>
		<description><![CDATA[As covered on the Mozilla Developer Center, Firefox 3.6 Alpha 1 is now available for download.  And we&#8217;ve been busy since Firefox 3.5. 
Web developers will be interested in a number of features that are new in Firefox 3.6 Alpha 1:

The TraceMonkey JavaScript engine has continued to get faster.
We&#8217;ve made a huge number of [...]]]></description>
			<content:encoded><![CDATA[<p>As covered on the <a href="http://developer.mozilla.org/devnews/">Mozilla Developer Center</a>, <a href="https://developer.mozilla.org/devnews/index.php/2009/08/07/firefox-3-6-alpha-1-now-available-for-download/">Firefox 3.6 Alpha 1 is now available for download</a>.  And we&#8217;ve <a href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&#038;product=Core&#038;product=Firefox&#038;product=NSPR&#038;product=NSS&#038;product=Toolkit&#038;keywords_type=nowords&#038;keywords=fixed1.9.1%2C+verified1.9.1&#038;resolution=FIXED&#038;chfieldfrom=2008-12-01&#038;chfieldto=Now&#038;chfield=resolution&#038;chfieldvalue=FIXED">been busy since Firefox 3.5</a>. </p>
<p>Web developers will be interested in a number of features that are new in Firefox 3.6 Alpha 1:</p>
<ul>
<li>The <a href="http://hacks.mozilla.org/2009/07/tracemonkey-overview/">TraceMonkey JavaScript</a> engine has continued to get faster.
<li>We&#8217;ve made a huge number of improvements to overall DOM and element layout performance.  In some cases we&#8217;re much, much faster.  We&#8217;ll cover details on those in a later post.
<li>The <a href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/e2b791ffc84ee3f4/60c2134a18c2f81a">compositor</a> landing has made it possible to fix a large number of interactions between web content, CSS and plugins.  We&#8217;ll be talking about this in a later post as well.
<li>We now support the <a href="https://developer.mozilla.org/en/CSS/-moz-background-size">-moz-background-size</a> CSS property which lets you set the size of background images.
<li>We now support <a href="https://developer.mozilla.org/en/CSS/Gradients">CSS Gradients</a>.
<li>We now support multiple background images.
<li>We now support the <code>rem</code> unit as a <a href="http://www.w3.org/TR/css3-values/#lengths">CSS unit</a>.
<li><a href="https://developer.mozilla.org/en/CSS/image-rendering">image-rendering</a> is supported for images, background images, videos and canvases.
<li>We now send a <code>reorder</code> event to embedded frames and iframes when their document is loaded.
<li>We&#8217;ve removed the <code>getBoxObjectFor()</code> method.  It was non-standard and exposed all kinds of non-standard stuff to the web.
<li>We now send a <code>hashchange</code> event to a page whenever the URI part after the <code>#</code> changes.
<li>We now have Geolocation <code>address</code> support for user-readable position information.
<li>We now support the <code>complete</code> attribute on <code>document.readystate</code>.
</ul>
<p>You can keep track of this list and other features for XUL and add-ons developers on the <a href="https://developer.mozilla.org/en/Firefox_3.6_for_developers">Firefox 3.6 for developers</a> page on <a href="http://developer.mozilla.org">developer.mozilla.org</a></p>
<p>Unlike the year that passed between Firefox 3 and Firefox 3.5, we expect that this 3.6 release will be released in a small number of months.  Our main focus for the 3.6 release will be end-user perceived performance, TraceMonkey and DOM performance and new web developer features.</p>
<p>Enjoy and test away!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/08/firefox-36a1-for-developers/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>9elements &#8211; HTML5 Canvas Experiment</title>
		<link>http://hacks.mozilla.org/2009/08/9elements-html5-canvas-experiment/</link>
		<comments>http://hacks.mozilla.org/2009/08/9elements-html5-canvas-experiment/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 08:31:17 +0000</pubDate>
		<dc:creator>Gen Kanai</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1541</guid>
		<description><![CDATA[The developers over at 9elements have done a mesmerizing experiment with Canvas and the audio support in HTML5.
HTML5 Canvas and Audio Experiment
Please comment on their cool experiment at their blog: HTML5 Canvas Experiment.
]]></description>
			<content:encoded><![CDATA[<p>The developers over at <a href="http://9elements.com/en.html">9elements</a> have done a mesmerizing experiment with Canvas and the audio support in HTML5.</p>
<p style="text-align: center;"><strong><a href="http://9elements.com/io/projects/html5/canvas/">HTML5 Canvas and Audio Experiment</a></strong></p>
<p>Please comment on their cool experiment at their blog: <a href="http://9elements.com/io/?p=153">HTML5 Canvas Experiment</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/08/9elements-html5-canvas-experiment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
