<?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>fredericiana &#187; Tech Talk</title>
	<atom:link href="http://fredericiana.com/category/english/tech-talk/feed/" rel="self" type="application/rss+xml" />
	<link>http://fredericiana.com</link>
	<description>Open Source, The Web, And German-American Oddities</description>
	<lastBuildDate>Fri, 27 Jan 2012 16:14:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mozilla, PyPI and the &#8220;vendor library&#8221;</title>
		<link>http://fredericiana.com/2011/09/23/mozilla-pypi-and-the-vendor-library/</link>
		<comments>http://fredericiana.com/2011/09/23/mozilla-pypi-and-the-vendor-library/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 00:07:38 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Mozilla Crosspost]]></category>
		<category><![CDATA[Tech Talk]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=4372</guid>
		<description><![CDATA[Yesterday, I read a nice blog post by Alex Clark outlining his experience setting up an instance of Zamboni (the Mozilla Add-ons codebase). The main source of confusion was that Zamboni, like most Django-based Mozilla web applications, uses something we call a vendor library to deploy their third-party library dependencies, as opposed to installing them [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I read a nice blog post by <a href="http://blog.aclark.net/2011/09/22/mozilla-and-pypi/">Alex Clark</a> outlining his experience setting up an instance of <a href="http://github.com/jbalogh/zamboni">Zamboni</a> (the <a href="https://addons.mozilla.org/">Mozilla Add-ons</a> codebase). The main source of confusion was that Zamboni, like most Django-based Mozilla web applications, uses something we call a <a href="http://playdoh.readthedocs.org/en/latest/packages.html"><strong>vendor library</strong></a> to deploy their third-party library dependencies, as opposed to installing them from <a href="http://pypi.python.org/">PyPI</a> using <a href="http://www.pip-installer.org/">pip</a>.</p>
<p>Alex writes:</p>
<blockquote><p>
  I would LOVE to see PyPI become a place that Mozilla felt confident it could use to deploy Python software.
</p></blockquote>
<p>I am happy about this conversation-starter and would like to contribute some of our reasoning for using a &#8220;vendor library&#8221; over pip requirements files. I, too, am not a huge fan of the vendor library, but understand how it solves some of the problems we&#8217;ve been having with plain PyPI at Mozilla.</p>
<p>Let&#8217;s discuss some of our main concerns and how the vendor library solves (or does not solve) them for us.<br />
<span id="more-4372"></span></p>
<h2>Risky dependence on PyPI and other third-party servers</h2>
<p>In the past, PyPI has not always been the most stable of services. Even though PyPI has been vastly improved meanwhile, not all libraries we use can be pulled from PyPI, some come from code repositories on various services. Pulling in files at deploy time from numerous places all over the Internet is a huge risk, particularly if your deployment requires downtime and you need to be done as soon as possible. In other words: A setup that doesn&#8217;t allow us to (mostly) bundle one neat package before actually performing the deployment to our servers is a huge risk we&#8217;re not willing to take lightly.</p>
<p>Some, but not all of this, could be mitigated with a private PyPI mirror, though that comes with a maintenance overhead and does not help for non-PyPI libraries at all.</p>
<h2>We deploy to, potentially, many servers</h2>
<p>Second part of the &#8220;one neat package&#8221; issue: Running <code>pip install</code> on one server is fun and games. On 50? Not so much. It takes a long time, even if you run it on all of them in parallel. Quite possibly, a few of them will have hiccups (network trouble, for example) in the process, so good luck finding out which ones failed and manually fixing those before moving on.</p>
<h2>Package &#8220;migrations&#8221;</h2>
<p>Imagine an upgrade to an already-deployed application. How do you add two libraries, remove three, and upgrade five existing ones? Installing and upgrading might work with pip, for uninstalling we&#8217;d (probably?) need to write some sort of <strong>migration script</strong>, hope it all runs smoothly on all servers, then carry on. Or we blow away the <a href="http://www.virtualenv.org/">virtualenv</a> altogether for every push and reinstall all libraries from scratch.</p>
<p>This is many things, none of which is elegant.</p>
<h2>Contributors</h2>
<p>We want it to be reasonably easy for contributors to set up our code and <strong>start developing</strong>. With the vendor library, it basically boils down to a few git commands, while <code>pip install</code> is a much longer process. In addition, the &#8220;migration problem&#8221; is present here too: The developer has to constantly monitor changes to the requirements files (or realize that the source of an unexpected, new error is a missing library) and run pip as appropriate. In contrast, updating the vendor library is part of the regular pull-from-git process any developer has to do anyway to stay up to date with the main repository.</p>
<p><a href="http://vagrantup.com/">Vagrant</a> mitigates some of these concerns by automating the setup process, but not all.</p>
<h2>Compiled packages</h2>
<p>One thing <em>neither</em> PyPI nor <em>vendor</em> solve is the deployment of packages with <strong>binary components</strong> (usually: C libraries with a Python wrapper). For that reason, we keep those libraries to a bare minimum and prefer pure Python variants wherever feasible. The few unavoidable compiled libraries (such as <a href="http://jinja.pocoo.org/">Jinja2</a> or <a href="http://www.mindrot.org/projects/py-bcrypt/">py-bcrypt</a>) we deploy to our servers through <a href="http://en.wikipedia.org/wiki/RPM_Package_Manager">RPM packages</a> (by sticking these requirements into a common <a href="http://en.wikipedia.org/wiki/Puppet_%28software%29">Puppet</a> file shared by all our webservers). That&#8217;s not too elegant, but as these cases are somewhat rare, it works. In any case, a server running the actual <code>pip</code> command to install these packages needs to have a full compiler toolchain, which production web servers are unlikely to have.</p>
<h2>What it boils down to</h2>
<p>The base concerns here circle around <strong>robustness</strong> and <strong>scalability</strong>, both for deployments to real-world servers and for various, globally distributed developers.</p>
<p>Really, the key is <strong>minimal human involvement</strong>: We love our developers, and we love our sysadmins. Any part of a requirements system with a high chance of <strong>repeatedly requiring human involvement is broken</strong> and needs fixed.</p>
<p>If you have any suggestions on how to improve this setup, I am all ears. As always, Mozilla&#8217;s code and processes are Open Source so we are happy to listen to your ideas!</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/09/23/mozilla-pypi-and-the-vendor-library/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Day 264 &#8211; A Firefox-Themed QR Code</title>
		<link>http://fredericiana.com/2011/09/21/day-264-a-firefox-themed-qr-code/</link>
		<comments>http://fredericiana.com/2011/09/21/day-264-a-firefox-themed-qr-code/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 02:00:35 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Mozilla Crosspost]]></category>
		<category><![CDATA[Project 365]]></category>
		<category><![CDATA[Tech Talk]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=4365</guid>
		<description><![CDATA[This is me, reading a Firefox-themed QR Code with my cell phone. After getting the idea from this excellent blog post, I made a QR code pointing to mozilla.org/firefox, sporting a nice little Firefox logo in the middle. For the geeks among you who would like the 411, this works because QR codes have a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/freeed/6171185138/" title="Day 264 - A Firefox-Themed QR Code by Fred​, on Flickr"><img src="http://farm7.static.flickr.com/6164/6171185138_b45c55f9f9.jpg" width="333" height="500" alt="Day 264 - A Firefox-Themed QR Code"/></a></p>
<p>This is me, reading a Firefox-themed <a href="http://en.wikipedia.org/wiki/QR_code">QR Code</a> with my cell phone.</p>
<p>After getting the idea from this <a href="http://hackaday.com/2011/08/11/how-to-put-your-logo-in-a-qr-code/">excellent blog post</a>, I made a QR code pointing to mozilla.org/firefox, sporting a nice little Firefox logo in the middle.</p>
<p>For the geeks among you who would like the 411, this works because QR codes have a certain degree of redundancy for error correction. The logo in the middle is considered an &#8220;error&#8221; and thus, the rest of the code is used to puzzle together the information in the code anyway.</p>
<p><img src="http://fredericiana.com/wp-content/uploads/2011/09/fx-qr.png" alt="" title="Firefox QR Code" width="174" height="174" class="alignnone size-full wp-image-4366" /></p>
<p>Try it out with your smart phone (on Android, with an app like <a href="https://market.android.com/details?id=com.google.zxing.client.android&#038;hl=en">Barcode Scanner</a>), it really works!</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/09/21/day-264-a-firefox-themed-qr-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>On Insecure Facebook Apps</title>
		<link>http://fredericiana.com/2011/08/08/on-insecure-facebook-apps/</link>
		<comments>http://fredericiana.com/2011/08/08/on-insecure-facebook-apps/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 17:09:13 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Mozilla Crosspost]]></category>
		<category><![CDATA[Tech Talk]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=4132</guid>
		<description><![CDATA[I am a fan of Words with Friends, a Scrabble clone made by Zynga (of FarmVille fame). The app&#8217;s competitive edge is the availability across platforms (iOS and Android). In the same, cross-platform, spirit, they recently started offering a Facebook app, so people can waste their time not only when they are out and about, [...]]]></description>
			<content:encoded><![CDATA[<p>I am a fan of Words with Friends, a Scrabble clone made by Zynga (of FarmVille fame). The app&#8217;s competitive edge is the availability across platforms (iOS and Android). In the same, cross-platform, spirit, they recently started offering a Facebook app, so people can waste their time not only when they are out and about, but also wherever they have access to a full-blown computer. Unfortunately, clicking on the <strong>Words With Friends Facebook app</strong> leads to this screen:</p>
<p><a href="http://fredericiana.com/wp-content/uploads/2011/08/wordswithfriends-insecure.jpg"><img src="http://fredericiana.com/wp-content/uploads/2011/08/wordswithfriends-insecure-575x267.jpg" alt="" title="Words with Friends: Insecure Connection" width="575" height="267" class="aligncenter size-large wp-image-4133" /></a></p>
<p>My Facebook session is SSL-encrypted by default, but Words with Friends requires me to disable this encryption. This is wrong on many levels. Most notably, if I disable &#8220;secure browsing&#8221; on Facebook altogether, even only for this session, my session cookie will be sent in plain text over the wire (or worse, on Wifi, over the air). If I do this at a coffee shop or airport, this is a great invitation for every evildoer in the general vicinity to hijack my Facebook account.</p>
<p>While I appreciate Facebook&#8217;s transparency in the matter, I find it upsetting that companies like Zynga wouldn&#8217;t account for Facebook users on SSL. By encouraging people to access Facebook over an unencrypted connection, they are foolishly endangering user data and are demonstrating an utter disregard for user privacy.</p>
<p>I wish Facebook <strong>enabled SSL encryption by default</strong>, and furthermore <strong>required third party apps</strong> to be served over SSL. You can&#8217;t have it both ways: Either you don&#8217;t handle user data, then you don&#8217;t need to care about encryption. Or you <em>do</em> handle user data (and yes, a session cookie counts!), then you need to properly secure it. I am tired of software makers weaseling themselves out of their self-imposed responsibility.</p>
<p><strong>Update:</strong> As pointed out in the comments, moving to HTTPS for apps is on <a href="https://developers.facebook.com/blog/post/497/">Facebook&#8217;s developer roadmap</a>. I appreciate it!</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/08/08/on-insecure-facebook-apps/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mozilla&#8217;s mission is more than just Firefox</title>
		<link>http://fredericiana.com/2011/07/20/mozillas-mission-is-more-than-just-firefox/</link>
		<comments>http://fredericiana.com/2011/07/20/mozillas-mission-is-more-than-just-firefox/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 21:07:15 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Mozilla Crosspost]]></category>
		<category><![CDATA[Tech Talk]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=4047</guid>
		<description><![CDATA[One basic question keeps coming up when I talk to people about my job at Mozilla (be it in a social setting or even in interviews with people applying for a job at Mozilla): &#8220;What, Mozilla makes websites? I thought all you did was Firefox.&#8221; It&#8217;s usually followed by a second question: &#8220;what, your websites [...]]]></description>
			<content:encoded><![CDATA[<p>One basic question keeps coming up when I talk to people about my job at Mozilla (be it in a social setting or even in interviews with people applying for a job at Mozilla):</p>
<p><em>&#8220;What, Mozilla makes websites? I thought all you did was Firefox.&#8221;</em></p>
<p>It&#8217;s usually followed by a second question: <em>&#8220;what, your websites are open source, too?&#8221;</em></p>
<p>The basic misconception here is that <em>Firefox is Mozilla&#8217;s mission</em>. This is not true. Mozilla&#8217;s mission is outlined, in broad strokes, in the <a href="http://www.mozilla.org/about/manifesto.en.html">Mozilla Manifesto</a>, and the <strong>core of Mozilla&#8217;s mission is to make the Internet better for the users</strong> (which goes beyond the Web and includes technologies like email, for example). And we believe that the best Internet for the users is one that inherently supports openness and choice.</p>
<p>Now don&#8217;t get me wrong. <strong>Firefox is important.</strong> Because the Web is the most visible thing that people like you and I are using the Internet for nowadays, <strong>Firefox is our most important tool</strong> to make the Internet better for the users. But it is not enough. The Web is not television. On the Web, the <strong>users are also the producers</strong>.</p>
<p>And this is why Mozilla&#8217;s mission goes beyond Firefox, beyond Thunderbird, deeply into the development and privacy space. A participatory Web based on Open standards, powerful APIs, along with the inherent freedom of choice and users&#8217; control over their own personal data are what Mozilla is all about. Apart from Firefox, don&#8217;t be surprised to see Mozilla write state-of-the art, open source <a href="https://github.com/mozilla">web applications and developer tools</a>, be involved in the development of various <a href="https://developer.mozilla.org/en/HTML/HTML5">open</a> <a href="https://wiki.mozilla.org/Security/CSP">standards</a> and play an important role in <a href="http://blog.lizardwrangler.com/2011/07/14/mozilla-in-the-new-internet-era-more-than-the-browser/">many other spaces that are relevant to the Internet today</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/07/20/mozillas-mission-is-more-than-just-firefox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Day 85 &#8211; Minecraft</title>
		<link>http://fredericiana.com/2011/03/27/day-85-minecraft/</link>
		<comments>http://fredericiana.com/2011/03/27/day-85-minecraft/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 17:17:12 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Project 365]]></category>
		<category><![CDATA[Tech Talk]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=3562</guid>
		<description><![CDATA[Oh no! Yesterday was the first day in 85 days of &#8220;Project 365&#8243; that I failed to take and post a picture that same day. I blame Minecraft: During the day I was busy, but usually catch up on the photo taking before the end of day. But then I gave Minecraft a shot: It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/freeed/5564934620/" title="Day 85 - Minecraft by Fred​, on Flickr"><img src="http://farm6.static.flickr.com/5310/5564934620_d4238c8b65.jpg" width="500" height="280" alt="Day 85 - Minecraft" /></a></p>
<p>Oh no! Yesterday was the first day in 85 days of &#8220;Project 365&#8243; that I failed to take and post a picture that same day. I blame <a href="http://www.minecraft.net/">Minecraft</a>: During the day I was busy, but usually catch up on the photo taking before the end of day. But then I gave Minecraft a shot: It&#8217;s a fantastic little game about converting a world made of blocks into something awesome (and all the while staying safe from the monsters that come out at night). I like the gameplay and how&#8211;in this xbox and PS3-saturated world of ours&#8211;it&#8217;s a game that totally pulls off the 8-bit graphics.</p>
<p>Apologies for the delayed post and I&#8217;ll try to be on top of it again (unless I get sucked into the game agai&#8230;&#8230;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/03/27/day-85-minecraft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter has a fail-robot, too</title>
		<link>http://fredericiana.com/2011/03/16/twitter-has-a-fail-robot-too/</link>
		<comments>http://fredericiana.com/2011/03/16/twitter-has-a-fail-robot-too/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 20:54:44 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[websights]]></category>
		<category><![CDATA[failpet]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=3491</guid>
		<description><![CDATA[Twitter&#8217;s fail whale has a little friend, a fail robot. Not sure how the two relate to each other, but it seems the whale comes out when twitter struggles under the sheer load of tweets, while the fail robot denotes service errors not caused by load? Now, evil tongues would claim that there&#8217;s so much [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://fredericiana.com/wp-content/uploads/2011/03/twitter-failrobot.jpg"><img src="http://fredericiana.com/wp-content/uploads/2011/03/twitter-failrobot-575x325.jpg" alt="" title="Twitter Failrobot" width="575" height="325" class="aligncenter size-large wp-image-3492" /></a></p>
<p>Twitter&#8217;s <a href="http://fredericiana.com/2009/08/01/why-wikipedia-might-need-a-fail-pet-and-why-mozilla-does-not/">fail whale</a> has a little friend, a <strong>fail robot</strong>. Not sure how the two relate to each other, but it seems the whale comes out when twitter struggles under the sheer load of tweets, while the fail robot denotes service errors not caused by load?</p>
<p>Now, <abbr title="Feel free to call this a Germanism, or better yet, based on a quote from ancient Roman politician Cato maior: &quot;We cannot control the evil tongues of others; but a good life enables us to disregard them.&quot;">evil tongues</abbr> would claim that there&#8217;s so much fail at Twitter that a single <em>fail pet</em> just doesn&#8217;t do it justice&#8230; But, knowing how challenging it is to scale a service to millions of users, I wouldn&#8217;t quite dare to say so &#8212; and therefore, I welcome the poor injured robot to my <a href="http://fredericiana.com/tag/failpet/">fail pet collection</a>. Quick! To the fail pet emergency room!</p>
<p class="credits">Thanks to jabba for taking a screenshot for me!</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/03/16/twitter-has-a-fail-robot-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tumblr&#8217;s Fail Pet: The Tumbeasts</title>
		<link>http://fredericiana.com/2011/01/27/tumblrs-fail-pet-the-tumbeasts/</link>
		<comments>http://fredericiana.com/2011/01/27/tumblrs-fail-pet-the-tumbeasts/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 01:25:12 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[websights]]></category>
		<category><![CDATA[failpet]]></category>
		<category><![CDATA[tumblr]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=3231</guid>
		<description><![CDATA[In a recent comic, The Oatmeal asked tumblr to blame their service outages on an imaginary animal like twitter&#8217;s Fail Whale and promptly came up with one, the Tumbeasts. What&#8217;s awesome is that Tumblr actually did end up using his artwork on their error page. This is what it looks like: Mad props to the [...]]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://theoatmeal.com/comics/state_web_winter">recent comic</a>, The Oatmeal asked tumblr to blame their service outages on an imaginary animal like twitter&#8217;s Fail Whale and promptly came up with one, the <a href="http://s3.amazonaws.com/theoatmeal-img/comics/state_web_winter/tumblr.jpg">Tumbeasts</a>.</p>
<p>What&#8217;s awesome is that Tumblr actually did end up <a href="http://oatmeal.tumblr.com/post/2916375890/thank-you-tumblr">using his artwork</a> on their <a href="http://www.tumblr.com/503.html">error page</a>. This is what it looks like:</p>
<p><a href="http://fredericiana.com/wp-content/uploads/2011/01/tumbeasts.jpg"><img src="http://fredericiana.com/wp-content/uploads/2011/01/tumbeasts-439x400.jpg" alt="" title="Tumbeasts" width="439" height="400" class="aligncenter size-large wp-image-3232" /></a></p>
<p>Mad props to the Oatmeal and Tumblr for this stellar addition to my <a href="http://fredericiana.com/tag/failpet/">fail pet collection</a>!</p>
<p><span class="credits">And thanks to michaelk for pointing it out to me!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/01/27/tumblrs-fail-pet-the-tumbeasts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I am a Web Developer. I don&#8217;t usually compile code.</title>
		<link>http://fredericiana.com/2011/01/11/i-am-a-web-developer-i-dont-usually-compile-code/</link>
		<comments>http://fredericiana.com/2011/01/11/i-am-a-web-developer-i-dont-usually-compile-code/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 22:07:01 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Mozilla Crosspost]]></category>
		<category><![CDATA[Tech Talk]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=3158</guid>
		<description><![CDATA[There&#8217;s an excellent xkcd web comic about slacking off while compiling code, but of course, I don&#8217;t usually compile code, because I code in Python. In the wake of a little server outage here at Mozilla, here&#8217;s my version of the comic: (Based on the above xkcd web comic. Licensed under a CC by-nc license.)]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s an excellent <em>xkcd</em> web comic about <a href="http://xkcd.com/303/">slacking off while compiling</a> code, but of course, I don&#8217;t usually compile code, because I code in Python.</p>
<p>In the wake of a little server outage here at Mozilla, here&#8217;s my version of the comic:</p>
<p><a href="http://fredericiana.com/wp-content/uploads/2011/01/no-bugzilla.png"><img src="http://fredericiana.com/wp-content/uploads/2011/01/no-bugzilla.png" alt="" title="No Bugzilla" width="413" height="360" class="aligncenter size-full wp-image-3159" /></a></p>
<p class="credits">(Based on the above <a href="http://xkcd.com/303/">xkcd web comic</a>. Licensed under a CC by-nc license.)</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2011/01/11/i-am-a-web-developer-i-dont-usually-compile-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better web forms with HTML5 and Firefox 4</title>
		<link>http://fredericiana.com/2010/12/14/better-web-forms-with-html5-and-firefox-4/</link>
		<comments>http://fredericiana.com/2010/12/14/better-web-forms-with-html5-and-firefox-4/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 23:51:51 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Mozilla Crosspost]]></category>
		<category><![CDATA[OSU OSL Crosspost]]></category>
		<category><![CDATA[Tech Talk]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=3078</guid>
		<description><![CDATA[Surely, you&#8217;ve heard of many fancy new features that HTML5 and related technologies bring to the Web now and in the future: open video on the web, canvas, transitions, what have you. But sometimes it&#8217;s the smallest things that have the biggest impact. Besides these hyped features, HTML5 also introduces a number of semantic form [...]]]></description>
			<content:encoded><![CDATA[<p>Surely, you&#8217;ve heard of many fancy new features that HTML5 and related technologies bring to the Web now and in the future: open video on the web, canvas, transitions, what have you.</p>
<p>But sometimes it&#8217;s the <em>smallest things</em> that have the biggest impact. Besides these hyped features, HTML5 also introduces a number of <strong>semantic form fields</strong>. Before, the only textual input the web knew was, well, <em>plain text</em>. It was up to the web application developer to enforce certain rules around that, like making sure the input is a number, or not empty, or even a valid website address (URL).</p>
<p>Firefox 4 <strong>understands</strong> these new input types and helps the user by <strong>enforcing correct values</strong> even before the users submits the form. By handling validation on the client, this enables a consistent form validation UI across websites and keeps the user from constantly submitting forms and wait for the server-side form validation to pass or fail. (NB: This does not relieve the developers of performing server-side checks in order to ensure the security of their web application).</p>
<p>Here is what this looks like in a recent prototype of the <a href="http://input.mozilla.com">Firefox Input</a> site:</p>
<p><a href="http://fredericiana.com/wp-content/uploads/2010/12/html5-feedback-forms-1.jpg"><img src="http://fredericiana.com/wp-content/uploads/2010/12/html5-feedback-forms-1-570x400.jpg" alt="" title="HTML5 Feedback Forms" width="570" height="400" class="aligncenter size-large wp-image-3079" /></a></p>
<p>Another fun little feature, also pictured, is the <strong>placeholder</strong> text attribute. The grayed-out placeholder in a text box shows you an example of what you might enter into this field. Rather than explaining correct values in a huge label or a side note next to the field, developers can show their users much more easily what data they would like them to enter into the form fields.</p>
<p>All of this makes for fewer mistakes entering data into web forms, which is both beneficial to the user (getting the job done faster) and the developer (collecting better data). Win-win!</p>
<p>For much more detailed on HTML5 forms, placeholders, validation, etc., take a look at Mark Pilgrim&#8217;s excellent <a href="http://diveintohtml5.org/forms.html">Dive Into HTML5</a>. Also, don&#8217;t miss out on Anthony Ricaud&#8217;s <a href="http://hacks.mozilla.org/2010/11/firefox-4-html5-forms/">in-depth description of HTML5 forms in Firefox</a> on the Mozilla Hacks blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2010/12/14/better-web-forms-with-html5-and-firefox-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hiring Awesome People is Hard</title>
		<link>http://fredericiana.com/2010/11/08/hiring-awesome-people-is-hard/</link>
		<comments>http://fredericiana.com/2010/11/08/hiring-awesome-people-is-hard/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 20:04:36 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Mozilla Crosspost]]></category>
		<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[jobs]]></category>

		<guid isPermaLink="false">http://fredericiana.com/?p=3034</guid>
		<description><![CDATA[Note: In case this is not clear, this blog post reflects my own opinion and experience, and is not an official statement on behalf of my employer. Since I started working at Mozilla headquarters, my job interview volume has drastically increased &#8212; both in person and phone. As I had rarely conducted any job interviews [...]]]></description>
			<content:encoded><![CDATA[<p><small><strong>Note:</strong> In case this is not clear, this blog post reflects my own opinion and experience, and is not an official statement on behalf of my employer.</small></p>
<p>Since I started working at Mozilla headquarters, my <strong>job interview</strong> volume has drastically increased &#8212; both in person and phone. As I had rarely conducted any job interviews before that, it was as much a learning experience for me as it was a critical part of their job search for the applicants. Initially, I was perhaps just as nervous as the interviewee.</p>
<p>The experience was mixed: Sometimes, candidates come up with surprising answers, elegant solutions to simple problems &#8212; or even just show that they have <strong>grasped a problem</strong> and its solutions <strong>from beginning to end</strong>.</p>
<p>Perhaps just as often, however, the experience is also increasingly <strong>frustrating</strong>. One of the worst things to notice is that the <a href="http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html">candidate can&#8217;t code</a>. Seriously? Yes, seriously. Given a relatively simple programming question, they fail to come up with a solution either at all, or worse, they produce a solution that reveals <strong>shocking gaps</strong> in their knowledge of basic algorithms, understanding of code, or other qualities you would hope for in someone who makes software for a living and claims to have done so for awhile.</p>
<p>Another thing that disappoints me in candidates is when it turns out, they don&#8217;t have <strong>professional goals</strong>. Sure, you can&#8217;t be prepared for every question in the world. But if you are looking for a job, yet you are unsure where you want to go if you do get the position, how can this possibly convince me that you are the right person for the job?</p>
<p>For our web development team, this makes me wonder: Do people consider <strong>&#8220;web&#8221;</strong> in front of &#8220;developer&#8221; to be a <strong>weakening qualifier</strong>? Or more generally, does software engineering have a secret reputation of not being a real profession, with real professional requirements? </p>
<p><strong>Mozilla</strong> is perhaps one of the fewer companies without a strict degree requirement: Some of our brightest minds have no formal college education, yet are incredibly successful and valued members of our community. The reason why this works out is that the Mozilla project, with many more volunteers than employees, is a meritocracy: If you do awesome things, people will respect you and turn to you for more awesomeness. If you aren&#8217;t doing a good job, your impact on the community will be minute (and stay that way).</p>
<p>Maybe, though, this is sometimes mistaken as an excuse not to be really, really good. It&#8217;s not about knowing everything there is about writing software. But if they are applying for one of the best positions in the industry, where they have to earn their respect rather than show off their formal credentials, shouldn&#8217;t they at least try a little harder?</p>
<p>If I could give a few tips to applicants across the Web industry, to perhaps raise their chances of getting a job, and to improve the interview experience for both interviewer and interviewee, I would say:</p>
<ul>
<li><strong>Know your basics.</strong> There is a reason they teach algorithms and data structures very, very early in college. And complexity and logic. <a href="http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions">The works.</a> Even more so, know your Web. If you can&#8217;t explain the nature of an HTTP request, how can you know your own applications by heart? If you don&#8217;t know how to secure a web application, how can you protect the privacy of your users?</li>
<li><strong>Know why you&#8217;re awesome.</strong> When an interviewer goes home that day, they want to feel excited about hiring you. Give them a reason. That&#8217;s no invitation to be snotty &#8212; but one to not hold back on exciting things there are to know about you professionally.</li>
</ul>
<p>What&#8217;s <em>your</em> experience with interviewing and hiring people? What are the things you want to see in an applicant? And what have you done to find the people who are right for you? I am interested in hearing your opinions in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://fredericiana.com/2010/11/08/hiring-awesome-people-is-hard/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

