<?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>Mozilla Web Development</title>
	<atom:link href="http://blog.mozilla.com/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/webdev</link>
	<description>Everybody Likes Ninjas</description>
	<lastBuildDate>Wed, 01 Feb 2012 16:41:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Better Know a WebDev: Greg Koberger aka gkoberger</title>
		<link>http://blog.mozilla.com/webdev/2012/01/27/better-know-a-webdev-greg-koberger-aka-gkoberger/</link>
		<comments>http://blog.mozilla.com/webdev/2012/01/27/better-know-a-webdev-greg-koberger-aka-gkoberger/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 17:49:16 +0000</pubDate>
		<dc:creator>James Socol</dc:creator>
				<category><![CDATA[Better Know a WebDev]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2451</guid>
		<description><![CDATA[Welcome to another thrilling installment of your favorite, and only, recurring series on this blog: Better Know a WebDev! This is a special week, as we&#8217;re featuring someone who just moved from web development into a product role with our Add-ons team. Give a big welcome and congratulations to Greg Koberger! What do you do [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to another thrilling installment of your favorite, and only, recurring series on this blog: <a href="http://blog.mozilla.com/webdev/category/better-know-a-webdev/">Better Know a WebDev</a>!</p>
<p>This is a special week, as we&#8217;re featuring someone who just moved from web development into a product role with our Add-ons team. Give a big welcome and congratulations to <strong>Greg Koberger!</strong></p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-2452" title="Greg" src="http://blog.mozilla.com/webdev/files/2012/01/greg1.png" alt="" width="437" height="477" /></p>
<h3>What do you do at Mozilla?</h3>
<p>For the past year and a half, I&#8217;ve been a web developer working on the <a href="https://addons.mozilla.org/">Mozilla Add-ons</a> site. I wrote both front- and back-end code, and every once in a while I managed to sneak in a little bit of design work. I recently traded in vim for Google Docs, however, and made the switch to a more product-centric role. I still get to work with the same people on the same projects, however I&#8217;ll be writing specs and designing flows rather than writing code.</p>
<h3>Any fun side projects you&#8217;re working on?</h3>
<p>One of most recent (and relevant) mini side projects is a <a href="http://www.p.gkoberger.net/firefox">Firefox Quine</a>. It&#8217;s not a true quine, since it loads some external assets (like jQuery). However, the concept is the same: if you were to copy and paste the code that makes up the logo, it would output itself. We&#8217;re currently getting the design printed on t-shirts.</p>
<h3>How did you get started in web development or programming?</h3>
<p>I was lucky—my parents always made sure I had a good computer. I started by tinkering with HyperCard, and eventually decided to try making websites. I still remember how asking my parents for my first hosting account went: &#8220;Why do you need other people to see it? Can&#8217;t you just play with it yourself on your computer?&#8221; Luckily they finally agreed, and I started teaching myself PHP and JavaScript.</p>
<h3>How did you get involved with Mozilla?</h3>
<p>While in college, there was an alumni talk about working at Mozilla. I missed the talk, however I emailed the guy after since I was curious. He encouraged me to apply, and I flew out to California to interview. I fell in love with the company. The people I interviewed with were awesome, and I was amazed by the company culture. Everyone just wanted to make the web a better place.</p>
<h3>What&#8217;s a funny fail story or mistake you can share?</h3>
<p>Back when I first started at Mozilla, I managed to delete all my private keys. So, some of the other webdevs set up a tissue-box-based &#8220;Computer School Fund&#8221; for me. I made $20 for deleting my private keys, so I like to think I got the last laugh.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-2454" title="Greg's Computer School" src="http://blog.mozilla.com/webdev/files/2012/01/greg3.png" alt="" width="400" height="237" /></p>
<h3>What&#8217;s something you&#8217;re particularly proud of?</h3>
<p>Back in November, awareness of SOPA was just starting to pick up. The day before the initial hearing, a bunch of us decided to try to raise awareness. It was incredibly last minute, but we knew we had to do something. We could get the message out via the snippet on about:home, which serves about 300MM requests a day. However, we had nowhere to link to. SOPA was new, and there wasn&#8217;t a definitive source with a few easy-to-digest bullet points. Plus, we couldn&#8217;t really send millions of hits to a website without giving them fair notice. So, <a href="http://mozilla.org/sopa">we made our own</a>. I sketched it out on paper and wrote out the copy. Then, as I designed it in Photoshop, my fellow webdev Potch sat next to me and wrote the code. We didn&#8217;t even have time to share files; he just watched what I was doing and wrote the code. It took us about an hour—which is all we had, since it still had to be deployed and tested. We couldn&#8217;t have gotten it out without help from all the different teams at Mozilla—everyone from legal to QA to IT to webdev worked late to make it happen. It was a huge success. We got the word about SOPA out to millions of Firefox users within 24 hours. We were able to use the same site a few months later for the SOPA blackout.</p>
<h3>What&#8217;s coming up that you&#8217;re excited about?</h3>
<p>I&#8217;m really excited about my new product management role. I love new challenges. It&#8217;s a great time to start this job, since a lot is going on with AMO right now. &#8220;Marketplace&#8221; (apps and add-ons combined, with the ability to charge) is going to be a huge project in the upcoming months. I can&#8217;t wait to see what our team can make in the upcoming months.</p>
<h3>What software do you use day-to-day for the work you do?</h3>
<p>My main machine is a 13&#8243; Macbook Air running OS X Lion. I use vim for writing code, which all ends up on GitHub. I rely heavily on Firefox and Firebug for testing and debugging. I spend a good amount of time in Photoshop, mocking things up before I start coding. I couldn&#8217;t survive without either Rdio or Pandora playing in the background.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/morgamic/5856162206/in/photostream/"><img class="aligncenter size-full" src="http://farm4.staticflickr.com/3168/5856162206_a0a1d2c031_z.jpg" alt="Mozilla WebDev: April 2011" width="640" height="204" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2012/01/27/better-know-a-webdev-greg-koberger-aka-gkoberger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better Know a WebDev: Will Kahn-Greene aka willkg</title>
		<link>http://blog.mozilla.com/webdev/2012/01/20/better-know-a-webdev-will-kahn-greene-aka-willkg/</link>
		<comments>http://blog.mozilla.com/webdev/2012/01/20/better-know-a-webdev-will-kahn-greene-aka-willkg/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 21:26:45 +0000</pubDate>
		<dc:creator>James Socol</dc:creator>
				<category><![CDATA[Better Know a WebDev]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2445</guid>
		<description><![CDATA[Welcome back to the third epic installment of Better Know a WebDev! We started with our illustrious director, Mike Morgan, and then someone volunteered that the chronicler, yours truly, should be up next. But now we&#8217;re just going to randomly hop around through our entire web dev family. And there&#8217;s a lot of us! Up [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome back to the <em>third</em> epic installment of <a href="http://blog.mozilla.com/webdev/category/better-know-a-webdev/">Better Know a WebDev</a>!</p>
<p>We started with our illustrious director, <a href="http://blog.mozilla.com/webdev/2012/01/06/better-know-a-webdev-mike-morgan-a-k-a-morgamic/">Mike Morgan</a>, and then someone volunteered that the chronicler, <a href="http://blog.mozilla.com/webdev/2012/01/13/better-know-a-webdev-james-socol/">yours truly</a>, should be up next. But now we&#8217;re just going to randomly hop around through our entire web dev family. And there&#8217;s a lot of us!</p>
<p>Up this week, put your internet hands together for <strong>Will Kahn-Greene</strong>!</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/lhirlimann/6161853921/in/pool-1032644@N20/"><img class="aligncenter" src="http://farm7.staticflickr.com/6068/6161853921_bb8589cac7.jpg" alt="WillKG" width="333" height="500" /></a></p>
<h3>What do you do at Mozilla?</h3>
<p>I&#8217;m a software engineer in the webdev group that works on the software that runs support.mozilla.org. That entails working directly on kitsune—the software that runs support.mozilla.org—and its dependencies. I also spend some time working on making development life easier.</p>
<h3>Any fun side projects you&#8217;re working on?</h3>
<p>I have too many side projects, so I sort of bounce between them month-to-month. I&#8217;m the current maintainer of <a href="http://pyblosxom.bluesock.org/">Pyblosxom</a>—a file-based weblog system. I&#8217;m a cofounder of <a href="http://mediagoblin.org/">MediaGoblin</a> and help maintain project infrastructure. I run <a href="http://python.mirocommunity.org/">Python Miro Community</a>. I also work on <a href="http://getmiro.com/">Miro</a> and <a href="http://mirocommunity.org/">Miro Community</a>, though in a diminished capacity since I left PCF to work at Mozilla.</p>
<h3>How did you get started in web development?</h3>
<p>Long story short, I started writing web pages and CGI programs in C, then Perl, in undergrad. I learned enough to become an &#8220;authority&#8221; and taught a class on web-design and authoring in Microsoft Online Institute. The version of MOLI that I used was a web-based chat system. I thought it was pretty lacking, so I did my senior undergrad thesis studying web-based instruction and building a better system. From there, I did a bunch of consulting on large web-sites using IIS/ASP then Java EJBs/JSP/Servlets. After consulting, I switched sides (producer → consumer of web apps) and worked for a company writing a scraper for financial data.</p>
<h3>How did you get involved with Mozilla?</h3>
<p>In undergrad, we had Mosaic installed on the computers in the lab and I used that until I switched to Netscape. I used that for a few versions, then got really excited when Mozilla formed and started doing M releases. I&#8217;ve been using a Mozilla browser ever since.</p>
<p>I worked for <a href="http://pculture.org/">Participatory Culture Foundation</a> on the <a href="http://getmiro.com/">Miro media player</a>, but while there worked on a variety of side projects including Firefox extensions, scripts that augmented the PCF Bugzilla instance, Universal Subtitles, and also I wrote the code that showed enclosure information in the feed preview page for Firefox 3 (or 3.5—I forget when it landed).</p>
<p>When a Mozilla recruiter asked if I&#8217;d be interested in working for Mozilla as an employee, I jumped at the chance.</p>
<h3>What&#8217;s a funny fail story or mistake you can share?</h3>
<p>Seems like everyone&#8217;s done the &#8220;rm -rf /&#8221; thing. Me, too. Though it was less funny and more of that &#8220;oh, what have I done!&#8221; sinking feeling of despair.</p>
<p>The fail story I often tell people who seem apprehensive about computers and doing things with them happened when I was in undergrad. I had been programming since like 4th grade in a bunch of environments and knew my way around PC computers, Windows&#8230; but I hadn&#8217;t had much experience with Macs. In college, we had a Mac lab. So I trot into the Mac lab to work on my first homework assignment for CS 1 and I sit down and I look at the Mac and it had no visible on/off switch. I looked on the sides and the back. Nothing—no switches or anything on/off-related. I looked for instructions nearby. Nothing. I was so embarrassed that I couldn&#8217;t figure out how to turn the computer on that I left and got a 0 on that homework. Turns out that the &#8220;on&#8221; key was on the keyboard in the upper right hand corner and had a triangle on it. For this particular Mac, there was no &#8220;off&#8221; switch. I never would have guessed that. The moral of the story being that computers are mysterious and a total pain in the ass even for people who have lots of experience with them.</p>
<h3>What&#8217;s coming up that you&#8217;re excited about?</h3>
<p>I started at Mozilla in September 2011, so I&#8217;ve only been here a short while and it&#8217;s hard not to be excited about everything. Seems like every day I hang out with the Mozilla folks, I learn something new and about the existence of ten things I wasn&#8217;t previously aware of.</p>
<p>A less hand-wavey answer might go along these lines: I&#8217;m excited about the momentum towards open web apps and reducing the barriers to web development. Literacy with web development is a powerful thing. Being able to run apps everywhere is also a powerful thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2012/01/20/better-know-a-webdev-will-kahn-greene-aka-willkg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today! Mozilla Webdev &#8220;Ask Me Anything&#8221; (AMA) on Reddit!</title>
		<link>http://blog.mozilla.com/webdev/2012/01/20/today-mozilla-webdev-ask-me-anything-ama-on-reddit/</link>
		<comments>http://blog.mozilla.com/webdev/2012/01/20/today-mozilla-webdev-ask-me-anything-ama-on-reddit/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 09:00:23 +0000</pubDate>
		<dc:creator>Fred Wenzel</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2437</guid>
		<description><![CDATA[As promised, today, a bunch of Mozilla Webdevs are on reddit to answer your questions! For more information, check out the announcement. Click here to get to the Mozilla Webdev &#8220;Ask Me Anything&#8221; on Reddit. We will be there from 10am Central European Time to the evening, Pacific time, so in total about 18 hours. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.mozilla.com/webdev/2012/01/05/coming-up-webdev-ask-me-anything-ama-on-reddit/">As promised</a>, today, a bunch of Mozilla Webdevs are on reddit to answer your questions! For more information, check out the <a href="http://blog.mozilla.com/webdev/2012/01/05/coming-up-webdev-ask-me-anything-ama-on-reddit/">announcement</a>.</p>
<p><a href="http://www.reddit.com/r/IAmA/comments/oonrg/iama_member_of_the_mozilla_webdev_team_ama/"><strong>Click here to get to the Mozilla Webdev &#8220;Ask Me Anything&#8221; on Reddit.</strong></a></p>
<p>We will be there from 10am Central European Time to the evening, Pacific time, so in total about 18 hours. We hope this way people in most time zones will get the chance to get their questions answered.</p>
<p>Come by and ask us all you never dared to ask but always wanted to know!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2012/01/20/today-mozilla-webdev-ask-me-anything-ama-on-reddit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Better Know a WebDev: James Socol</title>
		<link>http://blog.mozilla.com/webdev/2012/01/13/better-know-a-webdev-james-socol/</link>
		<comments>http://blog.mozilla.com/webdev/2012/01/13/better-know-a-webdev-james-socol/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 21:46:32 +0000</pubDate>
		<dc:creator>James Socol</dc:creator>
				<category><![CDATA[Better Know a WebDev]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2432</guid>
		<description><![CDATA[Welcome back to our Better Know a WebDev series! This week, we&#8217;re looking at, well, me! What do you do at Mozilla? I&#8217;m the Community Platforms Manager. I&#8217;m here to help the people on the Support, MDN, and Community Tools engineering teams turn out great products and grow as engineers. Since I get to work [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome back to our <a href="http://blog.mozilla.com/webdev/category/better-know-a-webdev/">Better Know a WebDev</a> series! This week, we&#8217;re looking at, well, me!</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/morgamic/4782013984/"><img class="aligncenter" title="James approves! by Morgamic" src="http://farm5.staticflickr.com/4136/4782013984_f47a420159.jpg" alt="" width="500" height="332" /></a></p>
<h3>What do you do at Mozilla?</h3>
<p>I&#8217;m the Community Platforms Manager. I&#8217;m here to help the people on the Support, MDN, and Community Tools engineering teams turn out great products and grow as engineers. Since I get to work with a number of different projects, I have the opportunity to look for ways these applications can work together and create a better experience for our users and better data for our engineers.</p>
<h3>Any fun side projects you&#8217;re working on?</h3>
<p>Lately I&#8217;ve been working with <a href="https://www.djangoproject.com/">Django</a> and <a href="http://www.mongodb.org/">MongoDB</a> for fun, and trying to help out in that part of the Django ecosystem where I can. I also maintain a few libraries, like <a href="https://github.com/jsocol/bleach">Bleach</a>, and write <a href="https://github.com/jsocol/jig">useful</a>—or <a href="https://github.com/jsocol/xkcdbot">useless</a>—IRC bots from time to time.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/morgamic/5855608701/"><img class="aligncenter" src="http://farm3.staticflickr.com/2588/5855608701_6c44a026f6.jpg" alt="James' favorite topic." width="500" height="331" /></a></p>
<p>As a proud resident of <a href="http://coffeeonthekeyboard.com/moving-to-new-york-452/">New York City</a>, I&#8217;ve been spending a lot of time trying to push Mozilla further into the New York tech scene, mostly by giving talks on things like continuous deployment, building really large scale web apps, and even why Open Source Software is so great.</p>
<h3>How did you get started in web development?</h3>
<p>A friend of mine showed me his Geocities page, back when you still had neighbors on Geocities. I jumped in, found a tutorial and went from there. In college, I got a job doing some app development and maintenance that exposed me to a bunch of languages and working with a team, where I quickly learned the phrase &#8220;best practices.&#8221;</p>
<h3>How did you get involved with Mozilla?</h3>
<p>I started using Firefox when it was still Phoenix, and being a user was about the limit of my involvement until 2009, when I applied for a job here.</p>
<p>One of the things that initially surprised me was that all of our websites are Open Source, but then I realized there was no other way for web development at Mozilla to operate. In the past couple years, I think we&#8217;ve improved a lot here by being more outgoing members of the Django and Python communities, and we have some <a href="http://blog.mozilla.com/webdev/2011/11/24/guest-post-i-want-to-contribute-how-do-i-start/">regular contributors</a> now.</p>
<h3>What&#8217;s a funny fail or mistake you&#8217;re willing to share?</h3>
<p>Well, there was that one time I ran an <code>UPDATE</code> statement without a <code>WHERE</code> clause on a production database. I think we all have one like that.</p>
<p>At Mozilla, the most epic was probably the SUMO 2.0 release, which took a solid 12 hours, took down a cluster serving over a dozens sites, and—at around 4am, a few hours after we thought we were in the clear and had all gone to bed—fell over, requiring a roll back and for us to do it again a week later.</p>
<p>I learned a lot in that week. And now whenever someone in our IT group calls me, the ringtone <a href="http://www.youtube.com/watch?v=Ewuh7FGVuaI">sounds pretty urgent</a>.</p>
<h3>What&#8217;s one thing coming up that you&#8217;re excited about? What makes it exciting?</h3>
<p>2012! Community Platforms is a new group, and Community Tools in particular is a new team, and I am really looking forward to seeing what we accomplish in 2012. Growing the Support and MDN teams and building the Tools team are going to be fun challenges. One of my goals is to start turning our siloed applications into platforms to empower our users and developers, and I can&#8217;t wait to see what new, innovative ideas our community builds on them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2012/01/13/better-know-a-webdev-james-socol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timing AMO user experience</title>
		<link>http://blog.mozilla.com/webdev/2012/01/06/timing-amo-user-experience/</link>
		<comments>http://blog.mozilla.com/webdev/2012/01/06/timing-amo-user-experience/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 23:09:28 +0000</pubDate>
		<dc:creator>Andy McKay</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[statsd]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2410</guid>
		<description><![CDATA[There are lots of ways to measure the performance of a site. On addons.mozilla.org we measure a few of them: how long it takes to render pages, the cache performance and responsiveness for content delivery networks globally. But with the advent of the navigation timing API in Firefox 7 we&#8217;ve been able to add the [...]]]></description>
			<content:encoded><![CDATA[<p>There are lots of ways to measure the performance of a site. On <a href="http://addons.mozilla.org">addons.mozilla.org</a> we measure a few of them: how long it takes to render pages, the cache performance and responsiveness for content delivery networks globally. But with the advent of the <a href="http://www.w3.org/TR/navigation-timing/">navigation timing API</a> in <a href="http://hacks.mozilla.org/2011/09/whats-new-for-web-developers-in-firefox-7/">Firefox 7</a> we&#8217;ve been able to add the most important measurement of all &#8211; the actual performance in the browser.</p>
<p>Along with a few other Mozilla sites, we&#8217;ve been using <a href="https://github.com/jsocol/pystatsd">pystatsd</a> and Graphite for a while. This produces useful graphs of the site health and performance. For example, this graph plots HTTP responses we serve out from Python (this is not the amount of traffic to our site which is much larger).</p>
<p><a href="http://blog.mozilla.com/webdev/files/2012/01/Screen-Shot-2012-01-06-at-2.10.46-PM.png"><img class="alignnone size-full wp-image-2415" title="Traffic to addon.mozilla.org" src="http://blog.mozilla.com/webdev/files/2012/01/Screen-Shot-2012-01-06-at-2.10.46-PM.png" alt="" width="585" height="307" /></a></p>
<p>To facilitate using the timing API we wrote a module between statsd and Django called <a href="https://github.com/andymckay/django-statsd">django-statsd</a> that, amongst other things, provides a way to interface between the browser and Python backend. The library has support for <a href="https://github.com/yahoo/boomerang">boomerang</a>, a great front end timing library. I quickly wrote a much simpler service called <a href="https://github.com/andymckay/django-statsd/blob/master/django_statsd/static/stick.js">stick</a>, which sends a small subset of timings that we want.</p>
<p>Using stick is straightforward &#8211; once you&#8217;ve setup your Python backed and included your JavaScript, you call it in your page. For example:</p>
<pre>stick.send('https://to.your.site/record')</pre>
<p>The API returns with timestamps for each of the events. To give us meaningful numbers, we then subtract the timestamp for each of the events from <code>navigationStart</code> so we can tell the timings relative to that start point. And here&#8217;s the end result in our Graphite server:</p>
<p><a href="http://blog.mozilla.com/webdev/files/2012/01/Screen-Shot-2012-01-06-at-2.10.33-PM.png"><img class="alignnone size-full wp-image-2416" title="Navigation Timing" src="http://blog.mozilla.com/webdev/files/2012/01/Screen-Shot-2012-01-06-at-2.10.33-PM.png" alt="" width="585" height="309" /></a></p>
<p>For internal sites we collect 100% of the data. However, on our live site we get quite a lot of traffic, so we&#8217;ve rolled this out by collecting only 1% of traffic. We&#8217;ll start increasing this percentage once we are confident this won&#8217;t be causing problems. We&#8217;ll also be adding it to the about:addons page which gets quite a bit of traffic.</p>
<p>We&#8217;ll be tweaking things to ensure we pass through the right numbers and interpret them correctly. The amount of data is probably too low to be useful, right now, but I can&#8217;t help but wonder what the peak around 12.30pm today was&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2012/01/06/timing-amo-user-experience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Better Know a WebDev: Mike Morgan (a.k.a. Morgamic)</title>
		<link>http://blog.mozilla.com/webdev/2012/01/06/better-know-a-webdev-mike-morgan-a-k-a-morgamic/</link>
		<comments>http://blog.mozilla.com/webdev/2012/01/06/better-know-a-webdev-mike-morgan-a-k-a-morgamic/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 19:49:11 +0000</pubDate>
		<dc:creator>James Socol</dc:creator>
				<category><![CDATA[Better Know a WebDev]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2398</guid>
		<description><![CDATA[Our group has grown a lot over the past few years, as we&#8217;ve taken on new projects and done a whole lot of amazing new things. Naturally, as we&#8217;ve grown we&#8217;ve become a group of more diverse backgrounds, skills and interests—everything from awesome JavaScript developers to our growing Hadoop expertise. So this is the first [...]]]></description>
			<content:encoded><![CDATA[<p>Our group has <a href="http://blog.mozilla.com/webdev/2011/08/08/pragmatic-growth-from-2-to-40-in-4-years/">grown a lot</a> over the past few years, as we&#8217;ve taken on new projects and done a whole lot of amazing new things. Naturally, as we&#8217;ve grown we&#8217;ve become a group of more diverse backgrounds, skills and interests—everything from awesome JavaScript developers to our growing Hadoop expertise.</p>
<p>So this is the first post in a new series, <a href="http://blog.mozilla.com/webdev/category/better-know-a-webdev/">Better Know a WebDev</a>, where we&#8217;ll introduce everyone, and hopefully get to know each other a little better!</p>
<p>We&#8217;ll start with the big man, the head honcho, Mike Morgan, a.k.a. morgamic, one of the original Mozilla web developers and now Director of Web Development.</p>
<p style="text-align: center;"><a title="Morgamic and Lars by Fred​, on Flickr" href="http://www.flickr.com/photos/freeed/4783716952/"><img class="aligncenter" title="Morgamic and Lars" src="http://farm5.staticflickr.com/4073/4783716952_5da9dc3abf.jpg" alt="Morgamic and Lars" width="500" height="333" /></a></p>
<h3>What do you do at Mozilla?</h3>
<p>I&#8217;m the Director of Web Development. My job is to help people in webdev achieve great things and grow as engineers—and hopefully as people. I spend a lot of time on recruiting, but one of my unwritten jobs is serving as the &#8220;glue&#8221; between strategy and operations. I help everyone understand why projects are important and how strategic goals break down into day-to-day tasks. Mostly, I try to maintain a <a href="http://blog.mozilla.com/webdev/2011/08/08/pragmatic-growth-from-2-to-40-in-4-years/">great culture for our team</a>.</p>
<h3>Any fun side projects you&#8217;re working on?</h3>
<p>I spend most of my free time playing basketball or dabbling in photography. I&#8217;m pretty notorious for taking way too many <a href="http://www.flickr.com/photos/morgamic/tags/fisheye/">fisheye photos</a>.</p>
<h3>How did you get started in web development?</h3>
<p>In March of 2001 I taught myself HTML, CSS and PHP because I was bored during Spring Break and didn&#8217;t have any money to go anywhere. In 5 days I created a blog, picked up HTML and CSS. My first blog didn&#8217;t have tables, which was pretty frustrating because I quickly discovered all the crazy bugs with IE 5.5 and IE 5.1 (Mac). From there I started working part time on websites and just fell into web development.</p>
<h3>How did you get involved with Mozilla?</h3>
<p>My first Mozilla project was redoing <a href="http://bugzilla.org">bugzilla.org</a>, which is why I&#8217;m still on the <a href="http://www.bugzilla.org/developers/profiles.html">developers page</a>. The bulk of my work came later in 2004 and 2005 when I got involved with <a href="http://addons.mozilla.org">addons.mozilla.org</a>, <a href="https://github.com/fwenzel/tuxedo">Bouncer (download.mozilla.org)</a> and <a href="https://wiki.mozilla.org/AUS">aus2.mozilla.org</a>.</p>
<p>One of my most exciting times at Mozilla was the Firefox 1.0 launch. I <a href="http://morgamic.com/2004/11/09/dmo/">wrote a blog post about it back in 2004</a>. From there I just kept working on web services and sites for Firefox, going on to build and scale a lot of the original Firefox services. Since I was pretty busy, I usually looked <a href="http://www.flickr.com/photos/morgamic/4091438245/">like this</a>:</p>
<p style="text-align: center;"><a title="morgamic, 2006 by morgamic, on Flickr" href="http://www.flickr.com/photos/morgamic/4091438245/"><img class="aligncenter" title="morgamic, 2006" src="http://farm3.staticflickr.com/2614/4091438245_b412617254.jpg" alt="morgamic, 2006" width="500" height="375" /></a></p>
<h3>What&#8217;s one mistake or funny fail story you&#8217;re willing to share?</h3>
<p>Honestly, I can&#8217;t share the best fail stories publicly. But I&#8217;d say that accidentally wiping a production database with a bad DELETE statement is probably my biggest screw up. Don&#8217;t do that. Ever. There is no excuse and it&#8217;s embarrassing. Though if you do it once I hope you&#8217;re smart enough to never do it again. Just do it with a stage database.</p>
<h3>What&#8217;s one thing coming up that you&#8217;re excited about? What&#8217;s exciting about it?</h3>
<p>I want to play with camera and sound APIs in JavaScript. To have this all freed from Flash is a liberating and exciting concept. We are stepping into a time in our history where the web can literally do anything we can imagine. It&#8217;s so damn exciting—it&#8217;s just a wonderful time to be alive.</p>
<p>Mozilla is taking on proprietary app stores, identity and the mobile market. What a year 2012 will be. Tackling apps—freeing so much great content and capabilities currently locked down by one or two companies—it&#8217;s very exciting. When Mozilla gets this right, and I believe we will, it will be a great thing for everyone who uses the web on a desktop, phone, tablet, car, plane, refrigerator, etc.</p>
<h3>What&#8217;s one question you&#8217;d like to be asked but haven&#8217;t been?</h3>
<p>I guess I&#8217;d ask what I was most proud of, or what motivates me. Honestly, it&#8217;s pretty simple: my teammates. I&#8217;m surrounded by brilliant people who teach me something just about every day. The favorite part of my job is seeing them reach their goals and knowing I had a small part in it.</p>
<p style="text-align: center;"><a title="Webdev 2011 by morgamic, on Flickr" href="http://www.flickr.com/photos/morgamic/5856161522/"><img class="aligncenter" title="Webdev 2011" src="http://farm3.staticflickr.com/2509/5856161522_549a96fcb4.jpg" alt="Webdev 2011" width="500" height="331" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2012/01/06/better-know-a-webdev-mike-morgan-a-k-a-morgamic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Coming up: Webdev &#8220;Ask Me Anything&#8221; (AMA) on reddit</title>
		<link>http://blog.mozilla.com/webdev/2012/01/05/coming-up-webdev-ask-me-anything-ama-on-reddit/</link>
		<comments>http://blog.mozilla.com/webdev/2012/01/05/coming-up-webdev-ask-me-anything-ama-on-reddit/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 00:42:59 +0000</pubDate>
		<dc:creator>Fred Wenzel</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2378</guid>
		<description><![CDATA[Update, Jan 20: The Reddit AMA is going on today! Click here to join us and ask questions! As web developers at Mozilla, we take pride in making web applications that are used by millions of people every day. We work hard to promote the Open Web, both by showing off what the latest in [...]]]></description>
			<content:encoded><![CDATA[<p><em>Update, Jan 20:</em> The Reddit AMA is going on <strong>today</strong>! <a href="http://www.reddit.com/r/IAmA/comments/oonrg/iama_member_of_the_mozilla_webdev_team_ama/">Click here to join us and ask questions!</a></p>
<hr/>
<p>As <strong>web developers at Mozilla</strong>, we take pride in making web applications that are used by <a href="https://addons.mozilla.org">millions of</a> <a href="http://mozilla.org">people</a> <a href="http://support.mozilla.org">every</a> <a href="http://developer.mozilla.org">day</a>. We work hard to promote the Open Web, both by showing off what the latest in web technology can do and by actively developing our projects in the open: as <a href="https://github.com/mozilla/">open-source projects on github</a>.</p>
<p>Whenever we go to meetups, conferences, or chat with community members, people ask all sorts of questions, like:</p>
<ul>
<li>How do you make sure your websites are snappy for users across the globe?</li>
<li>I found a bug in one of your websites and would like to help fix it! How do I get started?</li>
<li>What frameworks do you use? And how many servers do you run certain projects on?</li>
<li>Why are you all <a href="http://www.flickr.com/photos/morgamic/5856161522/">so good-looking</a>?</li>
</ul>
<p>To open the conversation to a larger community, we&#8217;ve decided to run an <strong><a href="http://www.reddit.com/r/IAmA/">&#8220;IAmA&#8221; on Reddit</a></strong>, on <del>Wednesday, January&nbsp;18, 2012</del> <ins><strong>Friday, January&nbsp;20, 2012</strong></ins>.</p>
<p>We&#8217;ll open a thread there in the <em>morning, Central European Time</em>, and will have plenty of people on the Webdev team participating until the <em>evening, Pacific Time</em>, so we should be able to touch most time zones one way or another. </p>
<p>Whether you are a seasoned Mozillian or a &#8220;newbie&#8221; in the community, whether you are a passionate Firefox advocate or pragmatic browser user with an inquiring mind, step by and talk to us! We&#8217;d love to hear from you.</p>
<p><strong>We are Web Developers on the Mozilla Webdev team: Ask Us Anything.</strong></p>
<p>For a link to the actual &#8220;AMA&#8221; post on reddit, visit this blog on <del>January 18</del> <ins>January 20</ins> or <a href="https://twitter.com/#!/mozillaweb">follow us on Twitter</a>. If you have any questions, feel free to comment here or visit us in <a href="irc://irc.mozilla.org/#webdev">#webdev</a> on <a href="http://irc.mozilla.org">irc.mozilla.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2012/01/05/coming-up-webdev-ask-me-anything-ama-on-reddit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bringing Firefox Alive with Popcorn.js</title>
		<link>http://blog.mozilla.com/webdev/2011/12/27/popcornjs_is_a-maize-ing/</link>
		<comments>http://blog.mozilla.com/webdev/2011/12/27/popcornjs_is_a-maize-ing/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 21:04:05 +0000</pubDate>
		<dc:creator>Gregory Koberger</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2327</guid>
		<description><![CDATA[For most people who work with computers for a living, holidays are a time for family… and providing endless tech support. As I was huddled over a half working computer, someone asked what an add-on was. I spend most of my time working with and on add-ons — so the concept seems obvious to me. [...]]]></description>
			<content:encoded><![CDATA[<p>For most people who work with computers for a living, holidays are a time for family… and providing endless tech support. As I was huddled over a half working computer, someone asked what an add-on was. I spend most of my time working with and on add-ons — so the concept seems obvious to me. As I found out this past Christmas, it&#8217;s not to everyone. My otherwise-fairly-computer-literate family had a hard time understanding where the browser ended and websites such as Facebook or Google started — so explaining the concept of add-ons was not nearly as easy as I thought it would be.</p>
<p>While over 85% of people using Firefox have at least one add-on installed, most people still don’t really know what an add-on is or the possibilities they provide. To fix this, the add-ons group teamed up with <a href="https://twitter.com/#!/MozCreative" target="_blank">Mozilla Creative</a> and an outside firm, <a href="http://www.pokelondon.com/" target="_blank">Poke</a>, to create a short video explaining what add-ons are and what they can do.</p>
<p>After seeing the video, we knew we had to do something awesome with Popcorn.js.</p>
<p style="text-align: center;"><a href="https://services.addons.mozilla.org/en-US/firefox/discovery/pane/8.0.1/Darwin" target="_blank"><strong>Watch The Video</strong></a><br />
<em>On the page, click &#8220;Learn More&#8221; to play the video.</em></p>
<p>I recommend watching it in Firefox, since we interact with the browser in ways we couldn’t with Chrome. You can also view the video directly inside Firefox, by going to <em>Tools &gt; Add-ons &gt; Get Add-ons &gt; Click &#8220;Learn More&#8221; / &#8220;Learn More About Add-ons&#8221;</em>.</p>
<h2><strong>Popcorn.js</strong></h2>
<p>For anyone unfamiliar, <a href="http://popcornjs.org/" target="_blank">Mozilla’s Popcorn.js</a> makes it easy to interact with video online using JavaScript. For anyone who has worked with jQuery or a similar library, it&#8217;s a breeze to pick up. Popcorn.js is the code part of <a href="http://mozillapopcorn.org/" target="_blank">Mozilla&#8217;s Popcorn</a>, which is a larger project that aims to supplement video and audio with rich web content.</p>
<p>Setting up Popcorn.js is incredibly simple:</p>
<p><code>var pop = Popcorn('#promo-video');</code></p>
<p>Popcorn.js has a plugin called <em>code</em>, which lets you run arbitrary code when the video hits certain points.</p>
<p><code>pop.code({'start': start, 'end': end, 'onStart': function(){…}, 'onEnd': function(){…});</code></p>
<p>That’s basically all you need to know to get started with Popcorn.js. Everything else we did used regular JavaScript.</p>
<p>Like I mentioned, we only used one of the many plugins. Popcorn.js is incredibly powerful, and our video barely scratched the surface of what <a href="http://popcornjs.org/popcorn-docs/plugins/" target="_blank">Popcorn.js plugins can do</a>.</p>
<h2>Showing Add-ons</h2>
<p>We started by making add-ons fade in on the right side of the video when they are mentioned.</p>
<p><em>Note: You will only see this in the video if your browser window is wide enough.</em></p>
<p><img src="http://blog.mozilla.com/webdev/files/2011/12/show-off.jpg" onmouseover="this.src='http://blog.mozilla.com/webdev/files/2011/12/show-on.jpg'" onmouseout="this.src='http://blog.mozilla.com/webdev/files/2011/12/show-off.jpg'"></p>
<h2>Previewing Personas</h2>
<p>We’re off to a good start. So far, we have add-ons showing up when they’re mentioned in the video. Now, wouldn’t it be cool if the video could interact with Firefox?</p>
<p>At one point the video talks about <a href="https://addons.mozilla.org/en-US/firefox/personas/" target="_blank">Personas</a>, which are basically skins or backgrounds for Firefox. Since it would be incredibly annoying if any site you visited had the ability to skin your Firefox, the ability to trigger a preview is whitelisted to just the Mozilla add-ons sites.</p>
<p><em>Note: You can add other sites to this whitelist by going into Preferences &gt; Security &gt; Exceptions.</em></p>
<p>We thought it would be fun to style the browser with the Persona being mentioned — especially since we’re the only site that is allowed by the browser to do this. We simply fire an event when the video hits a certain point. To make sure the Personas are displayed instantly, we pre-load the Personas when you first click “Play”.</p>
<p><img src="http://blog.mozilla.com/webdev/files/2011/12/persona-off.jpg" onmouseover="this.src='http://blog.mozilla.com/webdev/files/2011/12/persona-on.jpg'" onmouseout="this.src='http://blog.mozilla.com/webdev/files/2011/12/persona-off.jpg'"></p>
<h2>Blown Away</h2>
<p>Later in the video, we see a plane fly across the screen. The papers and other items on the desk start to blow away as this happens. If you scroll down a bit, the add-ons below the video also start to flutter and are eventually caught in a JavaScript-y wind and blown away.</p>
<p>This is done using <em><a href="https://developer.mozilla.org/en/CSS/CSS_animations" target="_blank">-moz-animation</a></em> and <em><a href="https://developer.mozilla.org/en/CSS/transform#section_7" target="_blank">-moz-transform: matrix()</a></em>. Each add-on is given a class of “flutter” (starting at a staggered interval), and the add-ons flutter back and forth until they eventually “blow away”.</p>
<p><script src="https://gist.github.com/1524972.js?file=mozilla-flutter.css"></script></p>
<p>This isn&#8217;t Firefox-only; I just left out the Webkit code in the example for the sake of brevity.</p>
<p>In the next scene, both the backdrop in the video and the add-ons on the site drop back into place.</p>
<p><img src="http://blog.mozilla.com/webdev/files/2011/12/flutter.jpg"></p>
<h2>Other Things to Watch For</h2>
<p>During the scene with the cameras, the page flashes as though a picture with a flash was being taken. The elements are simply hidden, then faded back in.</p>
<p>When the video talks about how add-ons can translate a page, some of the text on the page is translated along with the text in the video. (Note: This only works if you have fewer than three add-ons installed or you watch using <a href="https://services.addons.mozilla.org/en-US/firefox/discovery/pane/8.0.1/Darwin" target="_blank">this link</a>. Otherwise, the top bar is not displayed.)</p>
<p><img src="http://blog.mozilla.com/webdev/files/2011/12/translate-off.jpg" onmouseover="this.src='http://blog.mozilla.com/webdev/files/2011/12/translate-on.jpg'" onmouseout="this.src='http://blog.mozilla.com/webdev/files/2011/12/translate-off.jpg'"></p>
<h2>Uh-oh</h2>
<p>We learned a few things along the way. We used popcorn-complete.js, which we didn’t realize loaded a few CSS, JS and SWF files off of popcornjs.org&#8217;s servers when the file was loaded. We mistakenly DOS’d popcornjs.org, which in turn made the add-ons site load slowly. Thanks to <a href="http://jbuckley.ca/" target="_blank">Jon Buckley</a> and <a href="http://twitter.com/#%21/rwaldron" target="_blank">Rick Waldron</a>, we were able to figure out what was going on and push a fix fairly quickly.</p>
<p>I also owe Chris and Krupa a big hug when I get back to the Mozilla office — they helped me out a ton by finding and fixing a bunch of bugs as we were pushing to production, since I was an unfortunate 30,000 feet in the air as the video was going live.</p>
<h2>Looking Ahead</h2>
<p>I have no doubt that Popcorn.js is going to become huge as HTML5 video takes off. News sites will use it to show relevant links and tweets, fashion sites will link to online stores as a celebrity is shown wearing a dress or shirt, video sites will provide closed captioning and annotations, media sites will use it to sync viewing across multiple computers — the possibilities are endless. I cannot wait to see what Popcorn powered videos people make next.</p>
<p style="text-align: center;"> <a href="https://services.addons.mozilla.org/en-US/firefox/discovery/pane/8.0.1/Darwin" target="_blank"><strong>Watch The Video</strong></a><br />
<em>On the page, click &#8220;Learn More&#8221; to play the video.</em></p>
<p>Since the add-ons site is open source, be sure to <a href="https://github.com/mozilla/zamboni/blob/master/media/js/zamboni/discovery_video.js" target="_blank">view the code</a> if you&#8217;re interested.</p>
<p>As for my family: not all is lost. The next morning I got an excited text from my cousin, who had watched the video. &#8220;Guess what I just did! I installed one of those picture addons on the top!&#8221; Sure, it pains me a bit that a <em>Justin Bieber</em> Persona now graces her Firefox — but hey, it&#8217;s a step in the right direction.</p>
<p>&nbsp;<br />
<img src="http://blog.mozilla.com/webdev/files/2011/12/persona-on.jpg" width="1" height="1"><br />
<img src="http://blog.mozilla.com/webdev/files/2011/12/show-on.jpg" width="1" height="1"><br />
<img src="http://blog.mozilla.com/webdev/files/2011/12/translate-on.jpg" width="1" height="1"></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2011/12/27/popcornjs_is_a-maize-ing/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>An optimization story with Django &#8211; one thousand times faster!</title>
		<link>http://blog.mozilla.com/webdev/2011/12/15/django-optimization-story-thousand-times-faster/</link>
		<comments>http://blog.mozilla.com/webdev/2011/12/15/django-optimization-story-thousand-times-faster/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 18:39:55 +0000</pubDate>
		<dc:creator>Peter Bengtsson</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2301</guid>
		<description><![CDATA[I&#8217;ve been working on a Django project that is going to be squeezed in as an external application under Pootle which is our tech of choice for the Mozilla Verbatim site which is where all awesome translations happen for Mozilla web projects. (translations for Firefox, Thunderbird, etc. is done by another project which I&#8217;ll blog [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a <a href="https://www.djangoproject.com/">Django</a> project that is going to be squeezed in as an external application under <a href="http://translate.sourceforge.net/wiki/pootle/index">Pootle</a> which is our tech of choice for the <a href="https://localize.mozilla.org/">Mozilla Verbatim</a> site which is where all awesome translations happen for Mozilla web projects. (translations for Firefox, Thunderbird, etc. is done by another project which I&#8217;ll blog about more in the next couple of weeks).</p>
<p>In Pootle, there are &#8220;Profiles&#8221; and that&#8217;s where the name and quick stats on contributions is stored. However, what I needed to do was to actually go through every &#8220;Suggestion&#8221;, &#8220;Submission&#8221; and &#8220;Review&#8221; and figure out who has contributed what on what project and language. Every such model has an overridden object manager that always joins on the &#8220;Users&#8221; model thus causing a &#8216;INNER JOIN&#8217; on every simple data query. Thus this would build up an accurate page of who has contributed to what on the fly. </p>
<p>There are 14 projects, 99 languages, 847 users, 37,681 suggestions (and reviews) and lastly 127,226 submissions. The task is to group these first by language and then by project and lastly for each project, list the contributors names in alphabetical order. After some getting used to the data model and where things are located this wasn&#8217;t difficult. I built a prototype that visually represents this and showed it to the stakeholder who wanted this built.<br />
The only problem is that due to the way the Django ORM and Pootle does this is that this takes on average: <strong>11 seconds and involves 2,544 SQL queries</strong>. Yikes!  </p>
<p>After some optimization (helped by my colleague Rob Hudson&#8217;s wonderful <a href="http://pypi.python.org/pypi/django-debug-toolbar">django-debug-toolbar</a>) I was able to turn <strong>11 seconds into 10 milliseconds</strong> (ie. <em><strong>one thousand times faster</strong></em>) and reduce the number of queries <strong>from 2,544 to 7</strong>! All it takes is just having to lessen some of the convenience of Django&#8217;s otherwise super practical ORM and get closer to the &#8220;SQL of things&#8221;. The code doesn&#8217;t express anything in raw SQL and everything is in Python with some very specific loops. </p>
<p>Why 7 queries and not 1, you might wonder. The reason is that the data I need to get to is spread across 7 different tables. Because some of them are large and joins are difficult what I do instead is pick only exactly what I want and need and nothing more. The logic kinda goes like this:</p>
<ul>
<li>Fetch all IDs and their Name (e.g. 52 and &#8220;Arabic&#8221;)</li>
<li>For relevant tables with foreign keys, only fetch its ID, the foreign key ID and keep this in a list or dictionary whose structure implies information</li>
<li>Sort and re-organize these lists and dictionaries in Python</li>
<li>Summarize and replace the IDs with the Names for the final template rendering</li>
</ol>
<p>I think the lesson here is that if your structures are big but not so big that you need a map/reduce job then getting closer to the raw SQL queries and doing the structure juggling in memory, you don&#8217;t need to replace your relational databases with NoSQL or typed raw SQL. Django&#8217;s ORM is fantastic. It&#8217;s slow because it chooses to be convenient but if it needs to be fast it&#8217;s just a few slight API calls away. If you&#8217;re curious, <a href="https://github.com/peterbe/mozilla-pootle-extras/blob/master/views.py">check out the code on Github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2011/12/15/django-optimization-story-thousand-times-faster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guest Post: &#8220;I want to contribute, how do I start?&#8221;</title>
		<link>http://blog.mozilla.com/webdev/2011/11/24/guest-post-i-want-to-contribute-how-do-i-start/</link>
		<comments>http://blog.mozilla.com/webdev/2011/11/24/guest-post-i-want-to-contribute-how-do-i-start/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 19:56:04 +0000</pubDate>
		<dc:creator>Matthew Riley MacPherson</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[contributors]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[vagrant]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=2287</guid>
		<description><![CDATA[Preface This is guest post from one of webdev&#8217;s awesomesauce community contributors: Nigel Babu. nigelb contributes to a bunch of Mozilla&#8217;s web apps including Firefox Input and Socorro. He writes about Mozilla and open source on his blog and hangs out on #webdev on IRC &#8212; where we often talk about motorcycles. At Mozcamp Asia, [...]]]></description>
			<content:encoded><![CDATA[<h3>Preface</h3>
<p>This is guest post from one of webdev&#8217;s awesomesauce community contributors: <strong>Nigel Babu</strong>. nigelb contributes to a bunch of Mozilla&#8217;s web apps including Firefox Input and Socorro. He writes about Mozilla and open source <a href="http://nigelb.me">on his blog</a> and hangs out on <code>#webdev</code> on IRC &#8212; where we often talk about motorcycles.</p>
<hr />
<p>At <a href="https://wiki.mozilla.org/AsiaCamp2011">Mozcamp Asia</a>, Tim Watts and I talked about contributing to Mozilla Webdev. When I met Tim, he asked me how I got started and what were some of the challenges I faced. This blog post is a summary of those challenges and a few solutions to help new contributors to Mozilla Webdev. This is also a condensed summary of our session, so if you missed it don&#8217;t feel too bad <img src='http://blog.mozilla.com/webdev/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Finding a Project</h2>
<p>Finding a project to work on is the first baby step. Everything from here down is easier if you know what you want to contribute to; of course, it&#8217;s perfectly normal to be clueless as well. Everyone is mildly lost at this step at first. It helps if you have a clear understanding about what kind of code you want to write. Webdev has lots of different projects requiring different skill sets: Python/Django, JavaScript, HTML/CSS, and PHP are all in use at Mozilla. Almost all new projects require Python and Django knowledge, but we still have a few projects on PHP that you could help with &#8212; like mozilla.org and Socorro. Talk to us in #webdev with what kind of code you want to write, and we can help you find a nice project that needs help. You can start with a smaller project with fewer moving parts if you feel like it&#8217;s too much to take in. But one tip I have is: the bigger the project, the greater the opportunities.</p>
<h2>&#8220;I Don&#8217;t Know What to Do&#8221;</h2>
<p>It&#8217;s not easy to find something to do. I can attest to that. I know I had some trouble as well. Once you have found a project to help with, it becomes easier finding something to do. You could look at bugs with [good first bug] in the whiteboard &#8212; they&#8217;re generally good to start with. Another idea is to follow all the bugs for that project (bugmail can be noisy: set a filter or get ready for inbox explosion), so you can pick new bugs as they come in. Being in the project&#8217;s IRC channel also helps immensely. When fellow webdevs and Web QA learn that you are a new contributor and want something to do, they&#8217;ll be happy to point you to easy bugs or subscribe you to easy ones they see.</p>
<h2>Finding a Mentor</h2>
<p>While finding a mentor is not strictly necessary; however, it helps when you can ping someone to help you. When you find a project, some of the developers on that project are good candidates to mentor you. Feel free to ping the maintainers/developers for help when you are stuck. There are also the Stewards (https://wiki.mozilla.org/Stewards/Webdev) who can help you find a match: don&#8217;t feel shy about asking them to help you out.</p>
<h2>Setting up Your Environment</h2>
<p>Earlier, this was a challenging experience, sometimes it even seemed downright impossible. With the recent work we&#8217;ve done with vagrant, everything is much easier! Almost all <a title="Developing with Vagrant, Puppet, and playdoh" href="http://blog.mozilla.com/webdev/2011/10/04/developing-with-vagrant-puppet-and-playdoh/">new projects have a vagrant-based setup</a> for the development environment and it should be much faster to get you off the ground. When in doubt, ask the project maintainers if there&#8217;s a vagrant setup for that project.</p>
<p>These were the 4 things that I faced and helped me start off. If you are interested in being a contributor and something ticked you off, talk to me &#8212; in the comments or on IRC. Feel free to reach us on <code>#webdev</code> on irc.mozilla.org with any questions or if you want to get started in contributing to Mozilla Webdev.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2011/11/24/guest-post-i-want-to-contribute-how-do-i-start/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

