<?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>Coffee on the Keyboard &#187; mozilla</title>
	<atom:link href="http://coffeeonthekeyboard.com/tag/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://coffeeonthekeyboard.com</link>
	<description>by James Socol</description>
	<lastBuildDate>Fri, 16 Jul 2010 15:21:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>		<item>
		<title>Semi-disconnected this weekend</title>
		<link>http://coffeeonthekeyboard.com/semi-disconnected-this-weekend-469/</link>
		<comments>http://coffeeonthekeyboard.com/semi-disconnected-this-weekend-469/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 15:21:00 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[moving]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[new york]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=469</guid>
		<description><![CDATA[Shortly after I publish this blog post, I will disassemble the computer I&#8217;m using to write it and pack it all up. I&#8217;ll probably have WiFi until tomorrow, but the best ways to get in touch with me are Twitter and personal email, or phone/text message. I&#8217;ll try to check Mozilla email but don&#8217;t expect [...]]]></description>
			<content:encoded><![CDATA[<p>Shortly after I publish this blog post, I will disassemble the computer I&#8217;m using to write it and pack it all up.</p>
<p>I&#8217;ll probably have WiFi until tomorrow, but the best ways to get in touch with me are Twitter and personal email, or phone/text message. I&#8217;ll try to check Mozilla email but don&#8217;t expect a response before Monday.</p>
<p>Next week I&#8217;ll be in New York!</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/semi-disconnected-this-weekend-469/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Moving to New York</title>
		<link>http://coffeeonthekeyboard.com/moving-to-new-york-452/</link>
		<comments>http://coffeeonthekeyboard.com/moving-to-new-york-452/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 01:00:50 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=452</guid>
		<description><![CDATA[It&#8217;s summer, and you know what that means: big life change blog post! This one isn&#8217;t quite as big. I love the work I&#8217;m doing at Mozilla and not looking to make a change there. But I am moving across the country. Again. In July, a week after the Mozilla Summit, I&#8217;ll be picking up [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s summer, and you know what that means: <a href="http://coffeeonthekeyboard.com/my-new-job-257/">big life change blog post</a>!</p>
<p>This one isn&#8217;t quite as big. I love the work I&#8217;m doing at Mozilla and not looking to make a change there. But I am moving across the country. Again.</p>
<p>In July, a week after the Mozilla Summit, I&#8217;ll be picking up and making the move to New York.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/werkunz/3496250346/"><img class="aligncenter" title="Grand Central" src="http://farm4.static.flickr.com/3397/3496250346_6fd6f0a056.jpg" alt="" width="500" height="252" /></a></p>
<p>I will miss the Mozilla office. As I deliberated and thought about this decision, that was the colossal &#8220;pro&#8221; for staying in the Bay Area. I&#8217;ve made a number of friends here, even though I haven&#8217;t done a good enough job of getting to know people. Feel free to think back on your favorite, relevant Bilbo Baggins quote.</p>
<p>I&#8217;ll also miss the fantastic working environment Mozilla HQ offers. I joked about having 20 people in the same room talking to each other on IRC, but the truth is it&#8217;s a wonderfully collaborative environment, and having people nearby to talk through a problem will be hard to replace.</p>
<p>Seriously, <a href="http://www.mozilla.com/about/careers.html">it&#8217;s awesome</a>.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/fergusonphotography/3056953388/"><img class="aligncenter" title="Manhattan" src="http://farm4.static.flickr.com/3165/3056953388_4512c89d0a.jpg" alt="" width="500" height="333" /></a></p>
<p>But the East Coast, and New York in particular, has my family. And my family can take Mozilla HQ in a fight.</p>
<p>It&#8217;s not <em>just</em> about family, but family by itself is enough to sway me. It&#8217;s family and a bucket of little-to-medium things. The more I thought about it, the more of those piled up on the New York side—weather and climate, time zone, culture, music, night life, <a href="http://neilgaiman.com/p/Cool_Stuff/Essays/Essays_By_Neil/SIMCITY">urban personality</a>, getting rid of my car, and so on—all the little things to add up to quality of life.</p>
<p>(&#8220;Weather and climate?&#8221; I hear you inquire. Yes, weather. I&#8217;m a northerner. I grew up with 4 seasons—they weren&#8217;t all 3 months but they were all there—and they mark time for me. And frankly, I miss weather. The Valley has a climate, but it doesn&#8217;t really have &#8220;weather,&#8221; not in the sense I know.)</p>
<p>I don&#8217;t know exactly where I&#8217;ll be yet. Definitely Manhattan or Brooklyn, but I&#8217;m looking at a number of different neighborhoods, from the Upper West Side to Murray Hill to Fort Greene.</p>
<p><a href="http://www.flickr.com/photos/ktylerconk/1526148499/"><img class="aligncenter" title="Lion and Quote" src="http://farm3.static.flickr.com/2155/1526148499_686ffacbe4.jpg" alt="" width="500" height="381" /></a></p>
<p>Fortunately—obviously, I suppose—I have family I can stay with for a bit while I find a place. If anyone has realtor recommendations, I&#8217;m very interested!</p>
<p>New York is home. It&#8217;s where I was born. It&#8217;s where my father was born. It&#8217;s the best city in the world—Paris is a surprisingly close second—and it&#8217;s where I want to be.</p>
<p>See the form below?</p>
<p>Where&#8217;s home for you?</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/moving-to-new-york-452/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Weekly Update for 21/06/2010</title>
		<link>http://coffeeonthekeyboard.com/weekly-update-for-21062010-449/</link>
		<comments>http://coffeeonthekeyboard.com/weekly-update-for-21062010-449/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 05:40:04 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[weekly update]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=449</guid>
		<description><![CDATA[Happy Summer! Last week saw some good work done on the Support Questions for 2.2, and we now believe we&#8217;ve ironed out the issues that we saw during the 2.1 push—one of them was actually a Django bug we fixed by upgrading. Last week Helped come up with a solution to the issues with 2.1. [...]]]></description>
			<content:encoded><![CDATA[<p>Happy Summer!</p>
<p>Last week saw some good work done on the Support Questions for 2.2, and we now believe we&#8217;ve ironed out the issues that we saw during the 2.1 push—one of them was actually a <a href="http://code.djangoproject.com/ticket/13358">Django bug</a> we fixed by upgrading.</p>
<p><strong>Last week</strong></p>
<ul>
<li>Helped come up with a solution to the issues with 2.1.</li>
<li>Reviewed some UI work on 2.2.</li>
<li>Worked with IT to get replication in staging.</li>
<li>Got a plan together for a better staging environment early next quarter.</li>
<li>Helped Josh with a lightning talk topic for the Summit.</li>
<li>Worked on a plan for Q3, and goals with the team.</li>
<li>Worked with our stats provider.</li>
<li>Pushed out 1.5.4.2 (née 1.5.5.1) a minor update.</li>
</ul>
<p><strong>This week (me)</strong></p>
<ul>
<li>Get 2.1 out the door and 2.2 on staging.</li>
<li>Finish out a Q3 plan after working with the SUMO team.</li>
<li>Finish working with our stats provider.</li>
<li>Dig into some proper 2.2 bugs.</li>
<li>Focus more on the message I&#8217;m sending.</li>
<li>I&#8217;d really like to dig into Fantasai&#8217;s <a href="http://fantasai.inkedblade.net/style/discuss/border-transitions/find-the-dots">question about ellipses</a> some more.</li>
</ul>
<p><strong>This week (team)</strong></p>
<ul>
<li>Push 2.1.</li>
<li>Finish the AAQ form.</li>
<li>Finish the answering process.</li>
<li>Demo the normal beginning-to-end workflow on staging.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/weekly-update-for-21062010-449/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Developing at Scale: Database Replication</title>
		<link>http://coffeeonthekeyboard.com/developing-at-scale-database-replication-444/</link>
		<comments>http://coffeeonthekeyboard.com/developing-at-scale-database-replication-444/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 16:10:15 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Back-end]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=444</guid>
		<description><![CDATA[When a website is small—like this one, for example—usually the entire thing, from the web server to the database, can live on a single server. Even a single virtual server. One of the first things that happens when a web site gets bigger is this is no longer true. One reason is load. A popular [...]]]></description>
			<content:encoded><![CDATA[<p>When a website is small—like this one, for example—usually the entire thing, from the web server to the database, can live on a single server. Even a single virtual server. One of the first things that happens when a web site gets bigger is this is no longer true.</p>
<p>One reason is load. A popular website will simply require more than a single server, virtual or otherwise, can give, and the only way to keep scaling is to add more servers. For example, if the server runs out of available Apache connections and the number cannot be raised without negatively impacting performance.</p>
<p>Another reason is downtime. If a website is served from a single server, and that server goes down for any reason, planned or otherwise, then the website is down. At some point, downtime is essentially unacceptable—just ask Twitter—and redundancy is required.</p>
<h3>Enter Replication</h3>
<p>A common response is to set up database replication, where one database server operates as a &#8220;master,&#8221; and one or more other servers operate as &#8220;slaves.&#8221; In this setup, all of your <em>writes</em> to the database will go to the master, then &#8220;replicate&#8221; to the slaves, and all or most of the <em>reads</em> will come from the slaves. (Note that the slaves are doing both all the writes as well as all the reads: slaves are not a good place to recycle sub-par hardware.)</p>
<p>Replication introduces a new type of problem: if you naively send <em>all</em> reads to the slaves then data you just wrote <em>will not be there</em>.</p>
<h3>La&#8230;wait for it&#8230;g</h3>
<p>Even if the master and slave are sitting next to each other with a cable connecting them, replication will probably take more time than your code does to reach the next step. At a minimum, you need to assume that replication lag will be hundreds of milliseconds—an eternity when the time from one line in your web app to the next is measured in micro- or nanoseconds. In reality, replication in the real world may well take seconds, especially if your master and slaves are not physically next to each other.</p>
<p>The result is that <a href="http://en.wikipedia.org/wiki/ACID">ACIDity</a> is essentially broken, specifically the <strong>D</strong>urability part. You cannot simply write data and immediately rely on its existence.</p>
<p>For example, say you have a large discussion forum. If you naively send all reads to the slaves, then someone&#8217;s post may take seconds to appear on the site. This is a problem if you&#8217;re trying to show a user their post immediately after posting it.</p>
<h3>Smarter Reading</h3>
<p>The solution is to occasionally read from the master. When you need to access data that was just written, it is <em>probably</em> only available on the master, so that&#8217;s where you&#8217;ll read it. Within a single HTTP request, this is fairly simple: just force any queries that rely on recently-written data to the master.</p>
<p>Outside of a single HTTP request, this is slightly more complex. If you&#8217;re following the practice of redirecting after a POST request to a GET request (which you should) then creating a new forum post and viewing it will be on two different HTTP requests.</p>
<p>One way around this is to set a very short-lived cookie that tells your web app to continue reading from the master. If any write occurs in a request, the response should include this cookie. The exact time-to-live will depend on how long your replication lag usually is—cover at least 4 or 5 standard deviations. Any request that has this cookie should honor it by reading only from the master.</p>
<h3>A Pitch</h3>
<p>One of the hardest things for new web developers is developing large-scale applications: first, you need a large-scale application! Setting up database replication is a huge pain, and if your site isn&#8217;t getting enough traffic, it&#8217;s not worth it.</p>
<p>Mozilla is one way aspiring web developers can get some experience working with large-scale web apps. All of our web apps are open source and open to contributions from community members. To get involved, stop by <a href="irc://irc.mozilla.org/webdev">#webdev</a> in IRC!</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/developing-at-scale-database-replication-444/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Weekly Update for 06/14/2010</title>
		<link>http://coffeeonthekeyboard.com/weekly-update-for-06142010-438/</link>
		<comments>http://coffeeonthekeyboard.com/weekly-update-for-06142010-438/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 04:58:26 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[weekly update]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=438</guid>
		<description><![CDATA[Last week could have gone better. We tried to push SUMO 2.1 twice only to realize we had some issues with respect to replication that need to get ironed out. We think we have a fix for these issues and are rounding out the tests for that fix, but we won&#8217;t really know unless we [...]]]></description>
			<content:encoded><![CDATA[<p>Last week could have gone better. We tried to push SUMO 2.1 twice only to realize we had some issues with respect to replication that need to get ironed out.</p>
<p>We think we have a fix for these issues and are rounding out the tests for that fix, but we won&#8217;t <em>really</em> know unless we can test in a replicated environment. There are bugs open for IT to help us with that, and get replication set up for our staging server.</p>
<p>As <a href="http://morgamic.com/">Morgamic</a> said, we&#8217;ll gather info, document, learn and innovate, then repeat next time.</p>
<p>And, as &#8220;unsuccessful&#8221; pushes go, these went really well. Both times we gave it an hour, then were able to back everything out and reset in another half-hour, coming in well under the downtime window.</p>
<p><strong>Last week</strong></p>
<ul>
<li>Tried to push 2.1, twice. It didn&#8217;t take.</li>
<li>Filed IT bugs re: replication in staging.</li>
<li>Started thinking about Q3 goals.</li>
<li>Got the 2.2 (&#8220;questions&#8221;) branch rolling on Hudson.</li>
<li>Helped get people on the same page w/r/t 2.3 deliverables and timeline. (At least we&#8217;ll say I helped.)</li>
<li>Got all the people working on chat together.</li>
<li>Worked out a potential solution to our replication issues with Jeff and Erik.</li>
<li>Triaged 2.2—only about 5 bugs got moved out.</li>
<li>Reviewed 2.2 UI work, and a number of subsequent patches.</li>
</ul>
<p><strong>This week (me)<br />
</strong></p>
<ul>
<li>Have a timeline in place for 2.1 and 2.2.</li>
<li>Figure out replication in staging with IT.</li>
<li>Work out roughly what Q3 will look like.</li>
<li>1.5.5.1.</li>
<li>Get enough sleep.</li>
</ul>
<p><strong>This week (team)</strong></p>
<ul>
<li>Fix our replication issues.</li>
<li>Continue on 2.2 and accelerate.</li>
<li>Work with Cheng and Howse to get the AAQ done.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/weekly-update-for-06142010-438/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekly Update for 07/06/2010</title>
		<link>http://coffeeonthekeyboard.com/weekly-update-for-07062010-427/</link>
		<comments>http://coffeeonthekeyboard.com/weekly-update-for-07062010-427/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 05:23:37 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[weekly update]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=427</guid>
		<description><![CDATA[I missed last week. I blame the holiday on Monday. Also Erik started, which is very exciting! Tomorrow afternoon is our planned push for SUMO 2.1, which is our new discussion forum component, and migrating the old data into that component. This is huge, since it&#8217;s the first new component serving content creation. (We&#8217;ve been [...]]]></description>
			<content:encoded><![CDATA[<p>I missed last week. I blame <a href="http://en.wikipedia.org/wiki/Memorial_Day">the holiday</a> on Monday. Also Erik started, which is very exciting!</p>
<p>Tomorrow afternoon is our planned <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=570656">push for SUMO 2.1</a>, which is our new discussion forum component, and migrating the old data into that component. This is huge, since it&#8217;s the first new component serving content creation. (We&#8217;ve been running search results on Kitsune for a while now.)</p>
<p>Everything on our <a href="http://support-stage-new.mozilla.com/en-US/forums/contributors">staging server</a> feels faster on the Kitsune pages than the old pages. I can&#8217;t quite count to 2 loading a Kitsune page. I can usually get to 3 on a Tiki page. That in itself is a huge win, to me. On top of the speed, we&#8217;ve made some big leaps in our infrastructure and have done a lot of work that will directly enable 2.2, our support questions milestone</p>
<p><strong>Last two weeks</strong></p>
<ul>
<li>Closed out and reviewed a number of 2.1 bugs. Really, <a href="http://github.com/jsocol/kitsune/graphs/impact">I lost count</a>. It&#8217;s been fantastic to see the work spread out across the team.</li>
<li>Got <a href="http://moxie.jamessocol.com/bugstats/sumo/2.1">2.1</a> ready to go out tomorrow!(!!)</li>
<li>Fixed a number of small and last-minute 2.1 bugs.</li>
<li>Helped Paul finish out the data migration work so he could focus on his last final and graduate! (Congrats, Paul!)</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=555896">Built avatars</a> for <a href="http://support-stage-new.mozilla.com/en-US/forums/contributors/670992">users without them</a>.</li>
<li>Got <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=563991">email notifications</a> to go out with some help from Jeremy.</li>
<li>Welcomed Erik. Helped him get all the development environment stuff worked out.</li>
</ul>
<p><strong>This week (me)</strong></p>
<ul>
<li>Get everyone introduced to Rypple.</li>
<li>Navigate a smooth 2.1 launch.</li>
<li>Poll the team about a SUMOdev on-site.</li>
<li>Finish reviewing Ricky&#8217;s 2.2 UI work.</li>
<li>Triage 2.2 and focus the bugs.</li>
<li>Help everyone figure out deliverables and timelines for 2.3 mockups as best I can. (Mostly I&#8217;ve done what I can here, I think.)</li>
</ul>
<p><strong>This week (team)</strong></p>
<ul>
<li>Launch 2.1. Smoothly.</li>
<li>Go go go on 2.2. On staging the day (evening?) after 2.1 launches.</li>
<li>Start spreading around reviews more.</li>
<li>Help triage 2.2 and focus it.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/weekly-update-for-07062010-427/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surviving Pac Man</title>
		<link>http://coffeeonthekeyboard.com/surviving-pac-man-422/</link>
		<comments>http://coffeeonthekeyboard.com/surviving-pac-man-422/#comments</comments>
		<pubDate>Mon, 24 May 2010 06:09:36 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[pac man]]></category>
		<category><![CDATA[spike]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[traffic]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=422</guid>
		<description><![CDATA[On Friday, Google showed off a fun new doodle in honor of the 30th anniversary of Pac Man: a Pac Man clone, complete with sounds. Unfortunately, in the initial release, those sounds started playing automatically—an oversight or an homage to &#60;bgsound&#62;, I guess. Even if Google was open in a background tab or window, or [...]]]></description>
			<content:encoded><![CDATA[<p>On Friday, Google showed off a fun new <a href="http://www.google.com/logos/">doodle</a> in honor of the 30th anniversary of Pac Man: a <a href="http://www.google.com/pacman/">Pac Man clone</a>, complete with sounds.</p>
<p>Unfortunately, in the initial release, those sounds started playing automatically—an oversight or an homage to <code>&lt;bgsound&gt;</code>, I guess. Even if Google was open in a background tab or window, or in a hidden iframe created by an <a href="https://addons.mozilla.org/en-US/firefox/addon/2207/">add-on</a>, the Pac Man music and sound effects would start.</p>
<p>And that <a href="http://support.mozilla.com/en-US/forum/1/678028">confused some people</a>.</p>
<p>Many people came to <a href="http://support.mozilla.com/">SUMO</a> looking for an explanation, and many of them, not finding anything in the knowledge base, started posting to our forum. So many, in fact, that our database server started running out of connections.</p>
<p>The pounding we took on the forums also caused replication on our slave databases to fall behind by as much as 1.25 hours, so even when we wrote an article about the noises [article has been removed], it didn&#8217;t show up for most people.</p>
<p>As Sean put it: &#8220;We just got DDOSed by Pac Man.&#8221;</p>
<p>To shore up the site and bring it back from the brink of toppling over, we worked with IT (thanks, Dave!) to implement a number of temporary solutions. We&#8230;</p>
<ul>
<li>&#8230;disabled a particular kind of slow, frequent, and useless query.*</li>
<li>&#8230;blocked Google&#8217;s crawler from indexing the site.</li>
<li>&#8230;disabled our own sumobot&#8217;s forum-crawling features.</li>
<li>&#8230;rotated DB slaves out of the production pool to allow them to catch up.</li>
</ul>
<p>Google has already removed the Pac Man doodle from their home page, and we can revert most of the emergency measures here on Monday. But the event does remind us to look at what we&#8217;re doing in Kitsune, our rewrite, to weather storms like this in the future.</p>
<p>One idea, suggested by <a href="http://davedash.com/">Dave Dash</a>, is a read-only mode where all pages that can trigger database writes are temporarily disabled. We&#8217;ll be looking pretty seriously at this over the next couple of days.</p>
<p>Another important take-away is to make damn sure pages only trigger database writes if they really need to. Writes can never bounce off a cache, so they are very expensive.</p>
<p>Finally, we should be more proactive in how we interact with our Zeus cache. We&#8217;ll also think about whether it makes sense to start using <a href="http://micropipes.com/blog/">Wil Clouser&#8217;s</a> Zeus interface, <a href="http://github.com/clouserw/hera">Hera</a>, sooner than later.</p>
<p>&#8220;Too much traffic&#8221; is the best problem a web development team can have. Hopefully, the first time this happens to Kitsune, we&#8217;ll be ready.</p>
<p>* The queries that increment the number of views a forum thread has gotten are particularly slow for some reason. They&#8217;re also wildly inaccurate, since most people see a cached version of those pages and never trigger the query. The worst part: they occur on every (non-cached) page view, even while just reading.</p>
<p>(This post was <a href="http://pc.de/pages/surviving-pac-man-be">translated into Belorussian</a>, isn&#8217;t that cool?)</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/surviving-pac-man-422/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Weekly Update for 17/05/2010</title>
		<link>http://coffeeonthekeyboard.com/weekly-update-for-17052010-420/</link>
		<comments>http://coffeeonthekeyboard.com/weekly-update-for-17052010-420/#comments</comments>
		<pubDate>Wed, 19 May 2010 05:44:18 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[weekly update]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=420</guid>
		<description><![CDATA[Enjoyed the long weekend in New York, which was my big goal for this week. I was out Friday and Monday—which also happened to be the first day for Ricky, a new Mozillian, and Josh, an intern. Being in New York with my family was wonderful, and more than made up for the odious travel. [...]]]></description>
			<content:encoded><![CDATA[<p>Enjoyed the long weekend in New York, which was my big goal for this week. I was out Friday and Monday—which also happened to be the first day for Ricky, a new Mozillian, and Josh, an intern.</p>
<p>Being in New York with my family was wonderful, and more than made up for the odious travel. Wandering around Prospect Park on a beautiful Sunday afternoon made me think of Seurat: if only it had been a little more pointillist. The only part of the trip that worked well in both directions, though, was Caltrain. On the way to the airport, I just happened to get on the same car as an old high school friend I hadn&#8217;t seen in 4 or 5 years (I went to high school 2200 miles from here). Bizarre.</p>
<p>On to the business part:</p>
<p><strong>Last week</strong></p>
<ul>
<li>Put a lot of time into getting ready for Ricky and Josh.
<ul>
<li>Filing 2.1 and 2.2 bugs.</li>
<li>Triaging [good first bug]s.</li>
<li>Doing preliminary 2.2 work.</li>
</ul>
</li>
<li>Either worked on or reviewed basically all of the non-moderator UI for the discussion forums.</li>
<li>Reviewed wiki markup.</li>
<li>Started looking at new ways to use the SUMOdev meeting.
<ul>
<li>Need to think more about the meeting, mailing list, and channel.</li>
</ul>
</li>
<li>Pushed 2.0/1.5.4 then figured out what went wrong.
<ul>
<li>Reviewed the fix for it.</li>
</ul>
</li>
</ul>
<p><strong>This week (me)<br />
</strong></p>
<ul>
<li>Help Ricky and Josh get unblocked.
<ul>
<li>Get Kitsune and Tikiwiki set up.</li>
<li>Work through some code review and then turn them loose.</li>
</ul>
</li>
<li>Work with Paul on admin and moderation.
<ul>
<li>Then review it.</li>
</ul>
</li>
<li>Find the cause of the colossal memory errors.</li>
<li>Start planning a project with Josh.</li>
</ul>
<p><strong>This week (team)</strong></p>
<ul>
<li>Get everyone unblocked and ready to start contributing.</li>
<li>Get everyone to show up on the <a href="https://hudson.mozilla.org/cigame/?">leaderboard</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/weekly-update-for-17052010-420/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Weekly Update for 10/05/2010</title>
		<link>http://coffeeonthekeyboard.com/weekly-update-for-10052010-416/</link>
		<comments>http://coffeeonthekeyboard.com/weekly-update-for-10052010-416/#comments</comments>
		<pubDate>Tue, 11 May 2010 06:50:57 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[weekly update]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=416</guid>
		<description><![CDATA[Last week Filed lots of 2.1 bugs. Meet with IT and QA in preparation of 2.0 push. (It didn&#8217;t go well, but not for lack of planning.) Engineering plan is roughly complete through the end of the quarter. Came up with a plan for an intern project. Reviews. This week (me) Get things ready for [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Last week</strong></p>
<ul>
<li>Filed <a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=OPEN+product%3Asupport+milestone%3A2.1">lots of 2.1 bugs</a>.</li>
<li>Meet with IT and QA in preparation of 2.0 push. (It didn&#8217;t go well, but not for lack of planning.)</li>
<li>Engineering plan is roughly complete through the end of the quarter.</li>
<li>Came up with a plan for an intern project.</li>
<li>Reviews.</li>
</ul>
<p><strong>This week (me)</strong></p>
<ul>
<li>Get things ready for new people starting Monday.</li>
<li>Get Sphinx to index the new discussion forums.</li>
<li>Make creating new threads work through the UI.</li>
<li>Start filing 2.2 bugs.</li>
<li>Update <a href="https://wiki.mozilla.org/Support/Kitsune">Support/Kitsune</a>.</li>
<li>Think about ways to improve communication with the larger, more distributed team.</li>
<li>Enjoy my long weekend.</li>
</ul>
<p><strong>This week (team)</strong></p>
<ul>
<li>Push 1.5.4.</li>
<li>Finish 2.1 UI.</li>
<li>Start 2.1 admin and access control.</li>
<li>Get ready for two new people on Monday.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/weekly-update-for-10052010-416/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Farewell, Facebook</title>
		<link>http://coffeeonthekeyboard.com/farewell-facebook-410/</link>
		<comments>http://coffeeonthekeyboard.com/farewell-facebook-410/#comments</comments>
		<pubDate>Thu, 06 May 2010 06:40:46 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Social Networking]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=410</guid>
		<description><![CDATA[On Monday, I deleted my Facebook account. A day before I hit the button, I posted a note letting people know where they could find me online if they wanted, and promising more of an explanation: here it is. I&#8217;m a control freak. I run my own web servers, mail server, IRC server, CI server, [...]]]></description>
			<content:encoded><![CDATA[<p>On Monday, I <a href="https://ssl.facebook.com/help/contact.php?show_form=delete_account">deleted</a> my <a href="http://www.facebook.com/">Facebook</a> account. A day before I hit the button, I posted a note letting people know where they could find me online if they wanted, and promising more of an explanation: here it is.</p>
<p>I&#8217;m a control freak. I run my own <a href="http://jamessocol.com/">web servers</a>, <a href="http://jamessocolhosting.com/mail/">mail server</a>, <a href="irc://irc.jamessocol.net/">IRC server</a>, <a href="http://jamessocol.com:8080/">CI server</a>, <a href="http://svn.jamessocol.com/projects/maveric">SVN server</a>, so I have control. If I could afford the colocation, I&#8217;d run them on my own hardware. Hell, if I could afford the bandwidth, I&#8217;d install a rack in my closet.</p>
<p>But most importantly, I want control of the data. <em>My</em> data.</p>
<p>Facebook recently made two changes to their service that signal a significant and frightening shift in their position on data—specifically who owns and has control over data. They <a href="http://www.eff.org/deeplinks/2010/04/facebook-further-reduces-control-over-personal-information">automatically linked interests to public pages</a>, and they introduced &#8220;<a href="http://www.fastcompany.com/1624745/time-to-audit-your-facebook-privacy-settings">Social Plugins and Instant Personalization</a>.&#8221;</p>
<p>Until now, even if I decided to be permissive with my data, I still felt like I was in control of them on Facebook. With the new &#8220;connections&#8221; feature, as the EFF says, &#8220;Facebook users now face a <a href="http://en.wikipedia.org/wiki/Hobson%27s_choice">Hobson&#8217;s choice</a> between the new Connections and no listed interests at all.&#8221; I no longer have the option to share my data with the subset of people I know: either I share them with everyone, in particular advertisers, or I don&#8217;t post data at all.</p>
<p>I mention advertisers because they are most likely consumer of the vast quantities of aggregate data Facebook is creating with the new connections feature. Surely no individual will gain anything from knowing that several million people share their interest in Lady Gaga.</p>
<p>And until now, I had the ability to whitelist the applications with which I shared data. I routinely hit a wall as I browsed my friends&#8217; activity, where I would be asked to choose between sharing my data with an application or not seeing its content. More often than not, I chose not to share, and live without the content.</p>
<p>This makes three things about the Instant Personalization onerous: the presumptive sharing with third parties; the shift to a blacklist, where I must specifically opt out; and the willingness to share data even if I have opted out in general.</p>
<ul>
<li>Facebook has decided that Yelp, Microsoft&#8217;s Docs.com, and Pandora should have access to my data. I was not part of that decision.</li>
<li>If I opt out and turn off Instant Personalization, Facebook will <em>still</em> share my data with these third parties, if my friends choose to use their services. Again, I am not part of that decision.</li>
<li>In order to prevent Facebook from sharing my data with them, I have to manually block each application. That&#8217;s annoying, but manageable when it&#8217;s just three applications, but it&#8217;s not scalable.</li>
</ul>
<p>This is all <a href="http://www.theonion.com/articles/google-announces-plan-to-destroy-all-information-i,1783/">scary</a>. Facebook could not have made these changes if they honestly believed that I own my data, and they have access <em>with my permission</em>. These changes indicate that Facebook believes they own my data, and will do with them what they please, unless I go out of my way to ask them not to.</p>
<p>I&#8217;ve always had mixed feelings about the protest groups that form on Facebook after every major change. Sure, Facebook staff are more likely to notice a Facebook group with 100,000 members than 100,000 individual blog posts, but in our socio-economic system, the real way to signal displeasure to a business is to stop using that business—the online equivalent of &#8220;voting with your wallet.&#8221;</p>
<p>So, like <a href="http://blog.fligtar.com/2010/04/28/what-the-facebook/">a few others</a>, I&#8217;m taking my data and going home.</p>
<p>I&#8217;m willing to share my data with Facebook as long as I ultimately feel in control. It&#8217;s possible that I&#8217;ll come back to Facebook if they&#8217;re willing to not only fix these particular issues but also make it clear that I am ultimately in control of my own data. That doesn&#8217;t seem likely.</p>
<p>What do you think about Facebook, these changes, and your data? Let me know in the comments.</p>
<p>Facebook served as an aggregator of my activity online, and now all those aggregated feeds are alone and disparate again. I&#8217;m looking at turning <a href="http://jamessocol.com/">jamessocol.com</a> into a lifestream/aggregator to make up for it. I looked at <a href="http://intertwingly.net/code/venus/">Planet Venus</a> but wasn&#8217;t thrilled with it. If you know of any cool software for that, let me know. Otherwise I&#8217;ll write something and play with things like <a href="http://code.google.com/p/redis/">Redis</a>, <a href="http://nodejs.org/">Node.js</a>, <a href="http://www.tornadoweb.org/">Tornado</a>, and/or other neat stuff.</p>
<p>And yes, I know Tornado is from Facebook.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/farewell-facebook-410/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
