<?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>morgamic.com &#187; Mozilla</title>
	<atom:link href="http://morgamic.com/category/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://morgamic.com</link>
	<description>stuff and things, according to Mike Morgan</description>
	<lastBuildDate>Mon, 19 Jul 2010 05:57:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rally Fighter visits Mozilla</title>
		<link>http://morgamic.com/2010/02/04/rally-fighter-visits-mozilla/</link>
		<comments>http://morgamic.com/2010/02/04/rally-fighter-visits-mozilla/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 23:56:57 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://morgamic.com/?p=293</guid>
		<description><![CDATA[The Rally Fighter is an open source car with a huge community behind it.  Jay Rogers, CEO of Local Motors, took time out of his busy schedule to come talk about his experience with the Rally Fighter during lunchtime today.

He gave Mozilla a shout out and said we&#8217;re an inspiration for other companies trying [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.local-motors.com/">Rally Fighter</a> is an open source car with a huge community behind it.  Jay Rogers, CEO of Local Motors, took time out of his busy schedule to come talk about his experience with the Rally Fighter during lunchtime today.</p>
<p><a href="http://www.flickr.com/photos/morgamic/4331289840/" title="Jay Rogers by morgamic, on Flickr"><img src="http://farm5.static.flickr.com/4065/4331289840_deb55277ec.jpg" width="500" height="332" alt="Jay Rogers" /></a></p>
<p>He gave Mozilla a shout out and said we&#8217;re an inspiration for other companies trying to do things the right way and focus heavily on what people want and need.  He also mentioned he&#8217;s an avid Firefox user and tries to install it on every machine he can get his hands on!</p>
<p><a href="http://www.flickr.com/photos/morgamic/4330569801/" title="Rally Fighter by morgamic, on Flickr"><img src="http://farm3.static.flickr.com/2680/4330569801_44d7ec86d9.jpg" width="500" height="332" alt="Rally Fighter" /></a></p>
<p>Another thing worth noting was his comments on crowdsourcing &#8212; that&#8217;s it&#8217;s not at all about getting a group to do a bunch of work for you.  In many ways the textbook definition of crowdsourcing betrays the real value in it.</p>
<p>He said it should really be called co-creation because their community as well as potential customers for this car are a huge part of what the car will actually be and how it will evolve over time.  It is a good way to look at things, and not very different from what Mozilla strives to do from day to day.</p>
<p><a href="http://www.flickr.com/photos/morgamic/4330569521/" title="Rally Fighter by morgamic, on Flickr"><img src="http://farm5.static.flickr.com/4048/4330569521_3029821cc7.jpg" width="500" height="332" alt="Rally Fighter" /></a></p>
<p>Overall, it was a great experience and the car is damn cool.  Thanks to Jay and his team for visiting us.  <a href="http://www.flickr.com/photos/morgamic/sets/72157623352503434/">See more pictures here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://morgamic.com/2010/02/04/rally-fighter-visits-mozilla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Doing more with data</title>
		<link>http://morgamic.com/2010/01/06/doing-more-with-data/</link>
		<comments>http://morgamic.com/2010/01/06/doing-more-with-data/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 14:54:26 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://morgamic.com/?p=256</guid>
		<description><![CDATA[Firefox users: Did you know that you have private database that contains all your browsing information?
Well, you do.  And here&#8217;s the thing:

Only you have access to it
It&#8217;s under-utilized
You probably didn&#8217;t even know it existed

Browsing could be better.  There&#8217;s no question about that.  We have set conventions and preconceived notions about how browsing [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox users: Did you know that you have private database that contains all your browsing information?</p>
<p>Well, you do.  And here&#8217;s the thing:</p>
<ul>
<li>Only you have access to it</li>
<li>It&#8217;s under-utilized</li>
<li>You probably didn&#8217;t even know it existed</li>
</ul>
<p>Browsing could be better.  There&#8217;s no question about that.  We have set conventions and preconceived notions about how browsing should be.  That is, until the next big thing comes along and rocks our world.</p>
<p>It feels like using data to improve browsing is a no-brainer, and data-driven browsing is already the next big thing.  You see this in search suggests, amazon suggested items, the iTunes store, and other sites.  And that&#8217;s just all site-specific.  Imagine if we used data the right way and made things just click?</p>
<p>On a limited scale, it&#8217;s all more than possible today.  You have complete control over your own browsing history:</p>
<ul>
<li>Sites visited</li>
<li>Bookmarks</li>
<li>Awesome bar history</li>
<li>Media viewed</li>
<li>Favorite sites</li>
<li>Search keywords</li>
<li>Trending of all the above</li>
</ul>
<p>Simple fact is that you&#8217;re not using as much as you could.</p>
<p>The Firefox awesome bar was heralded as a great step in browsing innovation.  And it&#8217;s true, it really was.  And that&#8217;s because a lot of browsing is really repeat browsing.  How many times do you go back and view what you just looked at the other day?</p>
<p>But that&#8217;s the tip of the iceberg.  There are a lot of things we can learn about the web and about how we use the web to make it better.  And don&#8217;t think about person -> corporation -> other corporations.  For starters, think about what you could do with just your own browsing data, or your family&#8217;s browsing data:</p>
<ul>
<li>Easy access to repeat searches &#8211; movies, facebook, maps, you name it</li>
<li>An automated media catalog of images, videos and news articles you read over time</li>
<li>A list of phone numbers you have looked up and who they belong to</li>
<li>A list of all map directions you&#8217;ve ever done</li>
<li>A list of people you read about over the last week</li>
</ul>
<p>The awesome bar in Firefox already uses this, and it&#8217;s great to see some Firefox extensions are already tapping into the possibilities:</p>
<ul>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/13681">about:me</a> lets you read about your own browsing statistics<img alt="" src="https://addons.mozilla.org/en-US/firefox/images/p/35721/1250185298" title="Usage statistics" class="aligncenter" width="674" height="525" /></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/14650">Voyage</a> is a very cool way to not only view the sites you&#8217;ve used but see how you got there over time and whether or not you Tweeted about it!<img alt="" src="https://addons.mozilla.org/en-US/firefox/images/p/39309/1259244234" title="Voyage" class="aligncenter" width="575" height="400" /></li>
</ul>
<p>Those are just two examples of what we can do and where we can go.  I&#8217;m pretty excited to see what happens next.  Maybe you have the next great idea &#8212; go forth!</p>
]]></content:encoded>
			<wfw:commentRss>http://morgamic.com/2010/01/06/doing-more-with-data/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thunderbird Helps Remember Attachments</title>
		<link>http://morgamic.com/2009/10/09/thunderbird-helps-remember-attachments/</link>
		<comments>http://morgamic.com/2009/10/09/thunderbird-helps-remember-attachments/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 22:09:40 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://morgamic.com/?p=245</guid>
		<description><![CDATA[I&#8217;ve been testing out Thunderbird again lately.  While composing an email on shredder (Thunderbird nightly) today it reminded me that I needed to add an attachment.  Pretty cool idea.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been testing out Thunderbird again lately.  While composing an email on shredder (Thunderbird nightly) today it reminded me that I needed to add an attachment.  Pretty cool idea.<img src="http://morgamic.com/img/attachment.png" alt="attachment" title="attachment" width="596" height="441" class="alignnone size-full wp-image-246" /></p>
]]></content:encoded>
			<wfw:commentRss>http://morgamic.com/2009/10/09/thunderbird-helps-remember-attachments/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Optimizing your JS and CSS</title>
		<link>http://morgamic.com/2009/08/18/optimizing-your-js-and-css/</link>
		<comments>http://morgamic.com/2009/08/18/optimizing-your-js-and-css/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 01:50:43 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://morgamic.com/?p=232</guid>
		<description><![CDATA[My coworker Ryan Doherty loves front-end optimization.  A lot.
So much, in fact, that he&#8217;s working on bringing it to the masses.
I just wanted to blog quickly to show the difference CSS and JS compression can make on perceived load time.  I encountered this when working on a new mozilla.com page for download stats.
First, [...]]]></description>
			<content:encoded><![CDATA[<p>My coworker <a href="http://www.ryandoherty.net/">Ryan Doherty</a> loves front-end optimization.  A lot.</p>
<p>So much, in fact, that he&#8217;s working on <a href="https://wiki.mozilla.org/Webdev:Cesium">bringing it to the masses</a>.</p>
<p>I just wanted to blog quickly to show the difference CSS and JS compression can make on perceived load time.  I encountered this when working on a new mozilla.com page for <a href="http://www.mozilla.com/en-US/firefox/stats/">download stats</a>.</p>
<p>First, let&#8217;s look at <a href="http://webpagetest.org/result/090818_23BY/">how we were at the beginning</a>:</p>
<table id="tableResults" class="pretty" align="center" border="1" cellspacing="0">
<tr>
<th align="center" class="empty" valign="middle" style="border:1px white solid;"></th>
<th align="center" class="empty" valign="middle" colspan="3" ></th>
<th align="center" class="border" valign="middle" colspan="3">Document Complete</th>
<th align="center" class="border" valign="middle" colspan="3">Fully Loaded</th>
</tr>
<tr>
<th align="center" class="empty" valign="middle"></th>
<th align="center" valign="middle">Load Time</th>
<th align="center" valign="middle">First Byte</th>
<th align="center" valign="middle">Start Render</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
</tr>
<tr>
<td align="left" valign="middle">First View</td>
<td id="fvLoadTime" valign="middle">16.795s</td>
<td id="fvTTFB" valign="middle">0.992s</td>
<td id="fvStartRender" valign="middle">13.086s</td>
<td id="fvDocComplete" class="border" valign="middle">16.795s</td>
<td id="fvRequestsDoc" valign="middle">51</td>
<td id="fvBytesDoc" valign="middle">309 KB</td>
<td id="fvFullyLoaded" class="border" valign="middle">16.795s</td>
<td id="fvRequests" valign="middle">51</td>
<td id="fvBytes" valign="middle">309 KB</td>
</tr>
<tr>
<td align="left" class="even" valign="middle">Repeat View</td>
<td id="rvLoadTime" class="even" valign="middle">2.533s</td>
<td id="rvTTFB" class="even" valign="middle">0.883s</td>
<td id="rvStartRender" class="even" valign="middle">1.622s</td>
<td id="rvDocComplete" class="even border" valign="middle">2.533s</td>
<td id="rvRequestsDoc" class="even" valign="middle">5</td>
<td id="rvBytesDoc" class="even" valign="middle">19 KB</td>
<td id="rvFullyLoaded" class="even border" valign="middle">2.533s</td>
<td id="rvRequests" class="even" valign="middle">5</td>
<td id="rvBytes" class="even" valign="middle">19 KB</td>
</tr>
</table>
<p>Next, let&#8217;s look at how we were <a href="http://webpagetest.org/result/090818_23CF/">after we concatenated and minified all our JS</a> using <a href="http://developer.yahoo.com/yui/compressor/">YUI compressor</a>:</p>
<table id="tableResults" class="pretty" align="center" border="1" cellspacing="0">
<tr>
<th align="center" class="empty" valign="middle" style="border:1px white solid;"></th>
<th align="center" class="empty" valign="middle" colspan="3" ></th>
<th align="center" class="border" valign="middle" colspan="3">Document Complete</th>
<th align="center" class="border" valign="middle" colspan="3">Fully Loaded</th>
</tr>
<tr>
<th align="center" class="empty" valign="middle"></th>
<th align="center" valign="middle">Load Time</th>
<th align="center" valign="middle">First Byte</th>
<th align="center" valign="middle">Start Render</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
</tr>
<tr>
<td align="left" valign="middle">First View</td>
<td id="fvLoadTime" valign="middle">11.546s</td>
<td id="fvTTFB" valign="middle">0.933s</td>
<td id="fvStartRender" valign="middle">6.455s</td>
<td id="fvDocComplete" class="border" valign="middle">11.546s</td>
<td id="fvRequestsDoc" valign="middle">38</td>
<td id="fvBytesDoc" valign="middle">242 KB</td>
<td id="fvFullyLoaded" class="border" valign="middle">11.546s</td>
<td id="fvRequests" valign="middle">38</td>
<td id="fvBytes" valign="middle">242 KB</td>
</tr>
<tr>
<td align="left" class="even" valign="middle">Repeat View</td>
<td id="rvLoadTime" class="even" valign="middle">2.679s</td>
<td id="rvTTFB" class="even" valign="middle">0.919s</td>
<td id="rvStartRender" class="even" valign="middle">1.671s</td>
<td id="rvDocComplete" class="even border" valign="middle">2.679s</td>
<td id="rvRequestsDoc" class="even" valign="middle">5</td>
<td id="rvBytesDoc" class="even" valign="middle">19 KB</td>
<td id="rvFullyLoaded" class="even border" valign="middle">2.679s</td>
<td id="rvRequests" class="even" valign="middle">5</td>
<td id="rvBytes" class="even" valign="middle">19 KB</td>
</tr>
</table>
<p>Finally, after some prodding from Ryan, I <a href="http://webpagetest.org/result/090818_23CF/">concatenated and minified all CSS</a>:</p>
<table id="tableResults" class="pretty" align="center" border="1" cellspacing="0">
<tr>
<th align="center" class="empty" valign="middle" style="border:1px white solid;"></th>
<th align="center" class="empty" valign="middle" colspan="3" ></th>
<th align="center" class="border" valign="middle" colspan="3">Document Complete</th>
<th align="center" class="border" valign="middle" colspan="3">Fully Loaded</th>
</tr>
<tr>
<th align="center" class="empty" valign="middle"></th>
<th align="center" valign="middle">Load Time</th>
<th align="center" valign="middle">First Byte</th>
<th align="center" valign="middle">Start Render</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
</tr>
<tr>
<td align="left" valign="middle">First View</td>
<td id="fvLoadTime" valign="middle">10.892s</td>
<td id="fvTTFB" valign="middle">0.826s</td>
<td id="fvStartRender" valign="middle">5.732s</td>
<td id="fvDocComplete" class="border" valign="middle">10.892s</td>
<td id="fvRequestsDoc" valign="middle">35</td>
<td id="fvBytesDoc" valign="middle">238 KB</td>
<td id="fvFullyLoaded" class="border" valign="middle">10.892s</td>
<td id="fvRequests" valign="middle">35</td>
<td id="fvBytes" valign="middle">238 KB</td>
</tr>
<tr>
<td align="left" class="even" valign="middle">Repeat View</td>
<td id="rvLoadTime" class="even" valign="middle">2.285s</td>
<td id="rvTTFB" class="even" valign="middle">0.881s</td>
<td id="rvStartRender" class="even" valign="middle">1.435s</td>
<td id="rvDocComplete" class="even border" valign="middle">2.285s</td>
<td id="rvRequestsDoc" class="even" valign="middle">5</td>
<td id="rvBytesDoc" class="even" valign="middle">20 KB</td>
<td id="rvFullyLoaded" class="even border" valign="middle">2.285s</td>
<td id="rvRequests" class="even" valign="middle">5</td>
<td id="rvBytes" class="even" valign="middle">20 KB</td>
</tr>
</table>
<p>In summary, concatenating JS and CSS can make a huge difference, and I saw it today.  Here was the progression:</p>
<ul>
<li>13.086s &#8211; nothing</li>
<li>6.455s &#8211; JS minified</li>
<li>5.732s &#8211; CSS minified</li>
</ul>
<p>We saved about 56% of our load times and reduced the overall number of HTTP requests by 31% (38 down from 51).</p>
<p>Took me about 30 minutes to figure it all out and fix some 404s and path issues caused by moving CSS around.  30 minutes for that kind of improvement is worth the investment.</p>
<p>Note, you&#8217;re going to want to automate using the compressor.  It becomes a pain in the ass to manage over time unless you do.  But it&#8217;s not hard to write a build script to run every time you make an update.  It&#8217;s also not difficult to have production vs. development flags in your site config to flip which css and js files it uses so you don&#8217;t spend time trying to debug a minified bumble of JS or CSS.  Even with minor maintenance and deployment hurdles, it&#8217;s still very worth the trouble.</p>
<p>And don&#8217;t forget, less HTTP requests and bytes transferred means a happier planet.</p>
<p><strong>Update</strong>: after pushing to production, <a href="http://webpagetest.org/result/090819_23DC/">performance was even better</a>:</p>
<table id="tableResults" class="pretty" align="center" border="1" cellspacing="0">
<tr>
<th align="center" class="empty" valign="middle" style="border:1px white solid;"></th>
<th align="center" class="empty" valign="middle" colspan="3" ></th>
<th align="center" class="border" valign="middle" colspan="3">Document Complete</th>
<th align="center" class="border" valign="middle" colspan="3">Fully Loaded</th>
</tr>
<tr>
<th align="center" class="empty" valign="middle"></th>
<th align="center" valign="middle">Load Time</th>
<th align="center" valign="middle">First Byte</th>
<th align="center" valign="middle">Start Render</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
</tr>
<tr>
<td align="left" valign="middle">First View</td>
<td id="fvLoadTime" valign="middle">3.707s</td>
<td id="fvTTFB" valign="middle">0.906s</td>
<td id="fvStartRender" valign="middle">3.365s</td>
<td id="fvDocComplete" class="border" valign="middle">3.707s</td>
<td id="fvRequestsDoc" valign="middle">40</td>
<td id="fvBytesDoc" valign="middle">301 KB</td>
<td id="fvFullyLoaded" class="border" valign="middle">4.933s</td>
<td id="fvRequests" valign="middle">48</td>
<td id="fvBytes" valign="middle">313 KB</td>
</tr>
<tr>
<td align="left" class="even" valign="middle">Repeat View</td>
<td id="rvLoadTime" class="even" valign="middle">0.129s</td>
<td id="rvTTFB" class="even" valign="middle">0.601s</td>
<td id="rvStartRender" class="even" valign="middle">0.496s</td>
<td id="rvDocComplete" class="even border" valign="middle">0.129s</td>
<td id="rvRequestsDoc" class="even" valign="middle">2</td>
<td id="rvBytesDoc" class="even" valign="middle">1 KB</td>
<td id="rvFullyLoaded" class="even border" valign="middle">0.781s</td>
<td id="rvRequests" class="even" valign="middle">4</td>
<td id="rvBytes" class="even" valign="middle">2 KB</td>
</tr>
</table>
<p>So yes, it does help to have fast servers, good hardware load balancing, and a quick proxy cache too.  <img src='http://morgamic.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://morgamic.com/2009/08/18/optimizing-your-js-and-css/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>What&#8217;s New in Firefox 3.5?</title>
		<link>http://morgamic.com/2009/06/22/whats-new-in-firefox-35/</link>
		<comments>http://morgamic.com/2009/06/22/whats-new-in-firefox-35/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 21:57:04 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://morgamic.com/?p=225</guid>
		<description><![CDATA[There&#8217;s a lot of cool stuff!  Watch Mike Beltzner&#8217;s video to learn more.
]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a lot of cool stuff!  <a href="http://www.mozilla.com/en-US/firefox/video/firefox-3.5.html">Watch Mike Beltzner&#8217;s video to learn more</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://morgamic.com/2009/06/22/whats-new-in-firefox-35/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
