<?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>dougt&#039;s blog &#187; firefox</title>
	<atom:link href="http://dougt.org/wordpress/tag/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://dougt.org/wordpress</link>
	<description>best. tagline. ever.</description>
	<lastBuildDate>Mon, 26 Jul 2010 03:18:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Geolocation &#8211; Setting your position manually</title>
		<link>http://dougt.org/wordpress/2010/06/geolocation-setting-your-position-manually/</link>
		<comments>http://dougt.org/wordpress/2010/06/geolocation-setting-your-position-manually/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 16:19:53 +0000</pubDate>
		<dc:creator>dougt</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[geolocation]]></category>

		<guid isPermaLink="false">http://dougt.org/wordpress/?p=576</guid>
		<description><![CDATA[I thought that this was written down somwhere, but I couldn&#8217;t easily find it&#8230;. so If you know how to muck with about:config, there is an easy way to set your location manually.  First figure out your longitude and latitude.  There area bunch of tools on the web that gets you this.  Once you have [...]]]></description>
			<content:encoded><![CDATA[<p>I thought that this was written down somwhere, but I couldn&#8217;t easily find it&#8230;. so</p>
<p>If you know how to muck with about:config, there is an easy way to set your location manually.  First figure out your longitude and latitude.  There area bunch of tools on the web that gets you this.  Once you have this, you can do the following:</p>
<p>1) Open up about:config</p>
<p>2) search for geo.wifi.uri</p>
<p>3) change the value to:</p>
<p>http://snaptome.appspot.com/loc/json?latitude=<strong>your_lat</strong>&amp;longitude=<strong>your_lon</strong>&amp;accuracy=10</p>
<p>Thats it.  I hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougt.org/wordpress/2010/06/geolocation-setting-your-position-manually/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Desktop Notifications</title>
		<link>http://dougt.org/wordpress/2010/06/desktop-notifications/</link>
		<comments>http://dougt.org/wordpress/2010/06/desktop-notifications/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 06:27:44 +0000</pubDate>
		<dc:creator>dougt</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[device api]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://dougt.org/wordpress/?p=551</guid>
		<description><![CDATA[This is a feature that may come to a browser some day.  I am interesting in your thoughts: Desktop Notifications Desktop notifications allow a web page to notify the user using system level services, such as Growl, in a clean, safe, and easy to use manner. The code is very simple: navigator.notification.notify("Another Desktop Notification", "Check [...]]]></description>
			<content:encoded><![CDATA[<p>This is a feature that may come to a browser some day.  I am interesting in your thoughts:</p>
<p><strong>Desktop Notifications</strong></p>
<p>Desktop notifications allow a web page to notify the user using system level services, such as <a href="http://growl.info/about.php">Growl</a>, in a clean, safe, and easy to use manner.</p>
<p>The code is very simple:</p>
<pre>navigator.notification.notify("Another Desktop Notification",
                              "Check out my icon",
                              "http://dougt.org/me.jpg");</pre>
<p>and the result is something you&#8217;d expect from a notification.  On the Mac, the notification may look like:</p>
<p><a href="http://dougt.org/wordpress/wp-content/uploads/Screen-shot-2010-06-21-at-3.04.56-PM.png"><img class="aligncenter size-medium wp-image-552" title="Desktop Notification example" src="http://dougt.org/wordpress/wp-content/uploads/Screen-shot-2010-06-21-at-3.04.56-PM-300x114.png" alt="" width="300" height="114" /></a></p>
<p>You can get more sophisticated by adding a callback when the user clicks on the Desktop Notification:</p>
<pre>navigator.notification.notify("Another Desktop Notification",
                              "Check out my icon",
                              "http://dougt.org/me.jpg");
                              function() { /*do something*/ });</pre>
<p>A user must grant each site permission before they can use Desktop Notifications.  We will use the familiar notification bar (the text isn&#8217;t final.  Also, these will end up looking quite different in future releases of Firefox.):</p>
<p><a href="http://dougt.org/wordpress/wp-content/uploads/Screenshot-Minefield.png"><img class="aligncenter size-medium wp-image-553" title="Infobar notification for DesktopNotifications" src="http://dougt.org/wordpress/wp-content/uploads/Screenshot-Minefield-300x62.png" alt="" width="300" height="62" /></a></p>
<p>That is there all there is to it!</p>
<p><strong>Get involved:</strong></p>
<p>If you like or dislike this feature, please just leave a comment.</p>
<p>If you like to follow the implementation details, you can follow bug <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=573588">573588</a>.</p>
<p>You can try out the <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/tryserver-builds/dougt@mozilla.com-a2f00cf80e96/">engineering builds</a>.  There are bound to be a few bugz.  If you see anything funky, please let me know.</p>
<p>If you are using the above engineering builds, you can try out <a href="http://people.mozilla.org/~dougt/notification.html">Desktop Notifications</a>.</p>
<p><strong>More details:</strong></p>
<p>I reviewed two draft specifications.  The first is the <a href="http://dev.w3.org/2006/webapi/WebNotifications/publish/">WebNotification</a> specification and the other is the Google Gears <a href="http://code.google.com/p/gears/wiki/NotificationAPI">NotificationAPI</a>.  I found both of these APIs more complex than what was required.  Clearly both of these other APIs have use cases that are not address by my proposal.  But for basic notification from the browser, not much is required.</p>
<p>Looking at what Growl and other system level notification services provide, you basically only need a title, a description, and an icon.  For fun, I added one callback if the user clicks on the notification while it is on screen.</p>
<p><strong>Next Steps</strong></p>
<p>You tell me.  Is this something you&#8217;d like to see in the browser?  Does the API work for your use cases?</p>
<p>Let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://dougt.org/wordpress/2010/06/desktop-notifications/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
		<item>
		<title>Got Android?  We need you&#8230;</title>
		<link>http://dougt.org/wordpress/2010/05/got-android-we-need-you/</link>
		<comments>http://dougt.org/wordpress/2010/05/got-android-we-need-you/#comments</comments>
		<pubDate>Wed, 19 May 2010 03:03:24 +0000</pubDate>
		<dc:creator>dougt</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://dougt.org/wordpress/?p=543</guid>
		<description><![CDATA[Mozilla has started to produce nightly builds of Fennec for Android.  You can get them here: http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/fennec.apk No auto-updating yet, so check back often.  Send your feedback to the forum.]]></description>
			<content:encoded><![CDATA[<p>Mozilla has started to produce nightly builds of Fennec for Android.  You can get them here:</p>
<p><a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/fennec.apk">http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/fennec.apk</a></p>
<p>No auto-updating yet, so check back often.  Send your feedback to the <a href="http://groups.google.com/group/fennec-android-pre-alpha">forum</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougt.org/wordpress/2010/05/got-android-we-need-you/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Geolocation in Firefox 3.5 and Fennec</title>
		<link>http://dougt.org/wordpress/2009/04/geolocation-in-firefox-3-5-and-fennec/</link>
		<comments>http://dougt.org/wordpress/2009/04/geolocation-in-firefox-3-5-and-fennec/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 19:25:41 +0000</pubDate>
		<dc:creator>dougt</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[geolocation]]></category>

		<guid isPermaLink="false">http://dougt.wordpress.com/2009/04/30/geolocation-in-firefox-35-and-fennec/</guid>
		<description><![CDATA[I&#8217;m excited to introduce a new feature in Firefox 3.5 Beta 4 that I&#8217;ve been working on called geolocation. Geolocation is an opt-in tool that lets users share their location information with web sites through Firefox and will enable a new range of services on the web. Geolocation can make web sites smarter and you [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m excited to introduce a new feature in Firefox 3.5 Beta 4 that I&#8217;ve been working on called geolocation. Geolocation is an opt-in tool that lets users share their location information with web sites through Firefox and will enable a new range of services on the web.  Geolocation can make web sites smarter and you more productive.  Websites that use geolocation will ask where you are in order to bring you more relevant information, or to save you time while searching. Let’s say you’re looking for a pizza restaurant in your area. A website will be able to ask you to share your location so that simply searching for “pizza” will bring you the answers you need…no further information or extra typing required.</p>
<p>This idea isn’t new.  We have been researching meshing geolocation data and the web for a few years.  Last year, Mozilla Labs released an experimental addon, Geode, which implemented the draft <a href="http://dev.w3.org/geo/api/spec-source.html">W3C Geolocation Specification</a>.  We added support for the spec to Firefox 3.5 and &#8220;Fennec&#8221; (our mobile browser which is in development) as well as a user interface that put the user in control of which websites could use location.  However, we left it to add-ons to implement the code that would actually figure out your location, using any technique (GPS, WiFi or cell tower triangulation, manual address entry) of their choosing.  So, with Firefox 3.1, 3.5 or Fennec, plus a third-party add-on, users would be able to use location-enabled websites.</p>
<p>However, we were still left with a chicken-or-egg problem: unless lots and lots of users installed an add-on, websites wouldn&#8217;t have a significant audience for which to develop location-enabled services; and without lots of useful web content using the feature, users had no reason to install an add-on.</p>
<p>We decided to investigate bundling a technology that would provide an end-to-end solution, so that the feature would work out of the box for users, and would give websites a large enough potential user base to kick start the development of innovative apps and services.  We had learned a lot from the discussions about the various add-ons that had been built, and in other forums over the last few years. Earlier this year, I hosted a talk on <a href="http://air.mozilla.com/wp-content/uploads/2009/03/location-2009-03-04.ogg">Location in Mozilla</a> during which we reviewed many of the critical privacy issues.  We boiled these down to some key principles:<br />
* protecting user privacy.</p>
<p>User privacy is super important to us and we believe that we have the best privacy policies regarding your data.  The use of the WiFi data, IP addresses, associated protocol bits, should never be used to spy on users, track individuals, or shared without your permission.</p>
<p>* enabling web developers to use the API in an unencumbered way that would work in all browsers that implement the spec</p>
<p>Web developers can use a standard way of accessing geolocation data and not have to worry about the underlying geolocation provider.  We don&#8217;t share with third-party location provider(s) any information about websites the user&#8217;s visiting; this protects both the user&#8217;s privacy, and the website&#8217;s right to write to a web standard without fear of any third party gaining insight into how the site is being used.</p>
<p>* preserving user choice</p>
<p>This feature is completely opt-in!  If you don&#8217;t do anything, geolocation is never used.  When a web page wants ask you for your location, you get an dialog similar to the one below.  If you do nothing, the feature stays off by default.  Only if you press &#8220;Tell them&#8221;, will you send out your location information.  Furthermore, users are free to use a different geolocation provider by installing addons.</p>
<p><a href="http://dougt.org/wordpress/wp-content/uploads/200907141613.jpg" onclick="window.open('http://dougt.org/wordpress/wp-content/uploads/200907141613.jpg','popup','width=920,height=100,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"><img src="http://dougt.org/wordpress/wp-content/uploads/200907141613-tm.jpg" height="100" width="920" border="1" hspace="4" vspace="4" alt="200907141613" /></a></p>
<p>* applicability to both Firefox and Fennec</p>
<p>To avoid fragmentation on the web, the geolocation feature should be consistent between the desktop and mobile.  The truth really is that the line is getting blurred between mobile and desktop.  Calling the geolocation feature &#8220;mobile only&#8221; discounts many use cases that are pretty important.</p>
<p>Given these principles and a strong desire to create an &#8220;out of the box&#8221; experience in Firefox and Fennec, and to kick start the location aware web, we are happy to announce that Firefox 3.5 and Fennec will be using Google Location Service.  We found that we agreed on the many privacy concerns around location.  Do check out Mozilla&#8217;s <a href="http://en-us.www.mozilla.com/en-US/legal/privacy/firefox-en.html">privacy policy</a> and Google&#8217;s <a href="http://www.google.com/privacy-lsf.html">privacy policy</a>.  I am pretty excited about these policies I think they are going to be the industry standard when it comes to network based geolocation providers.</p>
<p>Just to provide a bit of technical detail on what exactly is going on, below I will walk through a simple geolocation request.</p>
<p>1) A user goes to a page that has some Javascript that asks for a Geolocation.</p>
<p>2) When the user loads that page, we put up a dialog.</p>
<p>3) If they don&#8217;t click anything, or click no, we do not do any geolocation stuff and simply return an error to the requestor.</p>
<p>4) If they click yes, we drop into this <a href="http://mxr.mozilla.org/mozilla-central/source/dom/src/geolocation/NetworkGeolocationProvider.js#162">bit of code</a> which packages up the WiFi Access Point data into JSON and sends it to Google Location Services over HTTPS.  The URL is configurable by preferences (&#8220;geo.wifi.uri&#8221;).  The data sent includes a version number, access token, and an array of public WiFi access points data.  The access token basically acts like a two week cookie, and if you clear cookies in the browser, this value is deleted and a new one is used.</p>
<p>6) Lastly, the Google Location service returns a location.  It&#8217;s another json object that is an actual location.</p>
<p>That&#8217;s it. For more information, check out the <a href="http://en-us.www.mozilla.com/en-US/firefox/geolocation">Frequently Asked Questions</a>. Get ready for Firefox 3.5 and start thinking about how you can location aware your web apps!  Here is the <a href="http://www.w3.org/TR/geolocation-API/">spec</a>.</p>
<p>Got questions, feel free to ask.  I am looking for feedback.  Comments welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougt.org/wordpress/2009/04/geolocation-in-firefox-3-5-and-fennec/feed/</wfw:commentRss>
		<slash:comments>73</slash:comments>
		</item>
		<item>
		<title>What is a reflow?</title>
		<link>http://dougt.org/wordpress/2008/05/what-is-a-reflow/</link>
		<comments>http://dougt.org/wordpress/2008/05/what-is-a-reflow/#comments</comments>
		<pubDate>Sun, 25 May 2008 02:30:10 +0000</pubDate>
		<dc:creator>dougt</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://dougt.wordpress.com/?p=216</guid>
		<description><![CDATA[Reflow is the process by which the geometry of the layout engine&#8217;s formatting objects are computed.  Last week, I was searching around and stumbled on these really cool visuals of what a reflow looks like.  If you&#8217;re a visual person, you will dig these: Reflow of Mozilla.org: [googlevideo=http://video.google.com/googleplayer.swf?docid=1020647662203348823] Reflow of Google.co.jp: [googlevideo=http://video.google.com/googleplayer.swf?docid=-1471976166301235697] Reflow of Wikipedia: [...]]]></description>
			<content:encoded><![CDATA[<p>Reflow is <a href="http://www.mozilla.org/newlayout/doc/reflow.html">the process by which the geometry of the    layout engine&#8217;s formatting objects are computed</a>.  Last week, I was searching around and stumbled on these really cool visuals of what a reflow looks like.  If you&#8217;re a visual person, you will dig these:</p>
<p>Reflow of Mozilla.org:</p>
<p>[googlevideo=http://video.google.com/googleplayer.swf?docid=1020647662203348823]</p>
<p>Reflow of Google.co.jp:</p>
<p>[googlevideo=http://video.google.com/googleplayer.swf?docid=-1471976166301235697]</p>
<p>Reflow of Wikipedia:</p>
<p>[googlevideo=http://video.google.com/googleplayer.swf?docid=-5863446593724321515]</p>
<p>If you produced these, kudos!  If you know how to produce such things, please drop a note!</p>
<p><em><strong><br />
</strong></em></p>
<p><em><strong>Update:</strong></em></p>
<p>Satoshi Ueyama is the author of this cool demo.  He sent <a href="http://blog.mozilla.com/gen/">Gen</a> a note on how he did it:</p>
<blockquote><p>First, he builds Mozilla so that the layout portions (nsIFrame::SetRect, nsIFrame::SetSize, nsIFrame;;SetPosition, PresShell::DoReflow, etc) are set to output to the log file.</p>
<p>He then gives an example of the log of each of the frame movements from Reflow:</p>
<pre>{"event": "MoveFrame", "frame": {"address": "0x04FE41A8", "type":
"TextFrame", "content": {"address": "0x05014150", "type": "other"},
"rect": {"x": 0, "y": 0, "w": 0, "h": 0}}},
{"event": "MoveFrame", "frame": {"address": "0x04FE41A8", "type":
"TextFrame", "content": {"address": "0x05014150", "type": "other"},
"rect": {"x": 0, "y": 0, "w": 0, "h": 0}}},</pre>
<p>Here is an example of dump from the termination of the tree structure.</p>
<pre>{"event": "FinishReflow", frame:
 {"address": "0x04FE3E28", "type": "ViewportFrame", "content": null,
"children":[
     {"address": "0x04FE4000", "type": "ScrollFrame", "content":
{"address": "0x04FD4858", "type": "element", "tagName": "HTML"},
"children":[
         {"address": "0x04FE43EC", "type": "ScrollbarFrame",
"content": {"address": "0x04FFEFF8", "type": "element", "tagName":
"scrollbar"}, "children":[
             {"address": "0x04FE4578", "type": "BoxFrame", "content":
{"address": "0x04FFE0F8", "type": "element", "tagName":
"xul:scrollbarbutton"} }
     ,
       {"address": "0x04FE47BC", "type": "sliderFrame", "content":
{"address": "0x04FFE278", "type": "element", "tagName": "xul:slider"},
"children":[
                 {"address": "0x05004E6C", "type": "BoxFrame",
"content": {"address": "0x050030E8", "type": "element", "tagName":
"xul:thumb"}, "children":[
                     {"address": "0x05004FDC", "type": "BoxFrame",
"content": {"address": "0x050013F0", "type": "element", "tagName":
"xul:gripper"} }
         ] }</pre>
<p>He then makes the video animation (for Google Video he suggests Ruby+Ruby/SDL, for the video from Mozilla 24 he used C+++Direct3d.) As memory address is outputted to the log each frame can be distinct.</p>
<p>The behavior of each frame in chronological order is reproducible as the log has each frame&#8217;s memory. (For instance, in tracking the frame &#8220;address&#8221;:&#8221;0x04FE41A8&#8243;, you can reproduce that frame&#8217;s behavior chronologically.</p></blockquote>
<p>UPDATE:</p>
<p>New links for the videos (thanks Gen!):</p>
<p><a href="http://www.youtube.com/watch?v=nJtBUHyNBxs">http://www.youtube.com/watch?v=nJtBUHyNBxs</a><br />
<a href="http://www.youtube.com/watch?v=ZTnIxIA5KGw">http://www.youtube.com/watch?v=ZTnIxIA5KGw</a><br />
<a href="http://www.youtube.com/watch?v=dndeRnzkJDU">http://www.youtube.com/watch?v=dndeRnzkJDU</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dougt.org/wordpress/2008/05/what-is-a-reflow/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
	</channel>
</rss>
