<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Alex Clark » Mozilla</title>
	
	<link>http://blog.aclark.net</link>
	<description>Python programmer</description>
	<lastBuildDate>Thu, 24 May 2012 03:00:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/aclark/mozilla" /><feedburner:info uri="aclark/mozilla" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>Adam Yauch has passed</title>
		<link>http://blog.aclark.net/2012/05/11/adam-yauch-has-passed/</link>
		<comments>http://blog.aclark.net/2012/05/11/adam-yauch-has-passed/#comments</comments>
		<pubDate>Fri, 11 May 2012 13:58:46 +0000</pubDate>
		<dc:creator>Alex Clark</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.aclark.net/?p=4650</guid>
		<description><![CDATA[And why it matters to tech people, like me (I hope my tech colleagues will indulge my thoughts on the recent passing of Beastie Boy Adam Yauch.) TL;DR: I &#60;3 the Beastie Boys and will miss Adam Yauch; and I &#8230; <a href="http://blog.aclark.net/2012/05/11/adam-yauch-has-passed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>And why it matters to tech people, like me</em></p>
<p>(I hope my tech colleagues will indulge my thoughts on the recent passing of Beastie Boy Adam Yauch.)</p>
<p>TL;DR: I &lt;3 the Beastie Boys and will miss Adam Yauch; and I suspect many others in the tech world do, and will, too</p>
<h2>Where I came from</h2>
<p>For as long as I can remember, I&#8217;ve been trying to emulate my heroes. It started with pop music in the 80s and artists like Michael Jackson, Madonna, and of course the Beastie Boys. While I was obsessed with Michael Jackson back then, I don&#8217;t recall trying too hard to emulate the Beastie Boys… until the 90s.</p>
<p>In the early 90s, I was just out of high school (where I discovered Led Zeppelin, Pink Floyd, Beatles, Stones etc), was working full time at Chili&#8217;s, and had no serious plans for college. I was really into music, but didn&#8217;t have the social skills required to participate in any meaningful activities, like playing in a band.</p>
<p>But I loved music.</p>
<p>I listened to Nirvana, Beastie Boys, and any number of other pop, rock and rap acts of the 90s. I went to rock shows at the 8&#215;10 in Baltimore and 9:30 club in DC. I went to festivals like the HFSistival and Lollapalooza. Throughout the decade, I formulated my thoughts on how I would, one day, start a band.</p>
<p>To say the Beastie Boys were inspirational to me during this time period would be a colossal understatement (remember the first time you saw the &#8220;So Watcha Want?&#8221; video?) While I wholly identified with the angst-ridden music of Nirvana, I also equally identified with the good natured spirit of, and dope-ass-jams from, the Beastie Boys: three guys producing kick ass music with, among other instruments, a &#8220;bullshit mic, made out of plastic&#8221;. Most importantly: they never took themselves too seriously. They made great music, but they were also just like you and me. They made you feel like you could do it, too.</p>
<p>In the late 90s and early to mid 2000s, I finally got a chance to play music. I started a band, played some shows, recorded a few albums, and had a lot of fun. Most importantly: I proved to myself I could do it. The shows I put on with my band were awesome; they were true rock shows: those in which the audience responded positively, viscerally. There is no better feeling in the world than that type of self-expression.</p>
<h2><a href="http://blog.aclark.net/wp-content/uploads/2012/05/IMG_0391.jpg"><img class="alignright" title="IMG_0391" src="http://blog.aclark.net/wp-content/uploads/2012/05/IMG_0391.jpg" alt="" width="349" height="467" /></a>Who I am now</h2>
<p>Eventually the band imploded, and I found a new obsession: technology. I have always been obsessed with tech, but never focused on it exclusively until the mid to late 2000s. Now I have a new set of heroes to emulate, and many new things to prove to myself I can do. Maybe I&#8217;ll even play music again one day, but if I don&#8217;t, I know that I accomplished, on some level, what I set out to do. And that is a great feeling.</p>
<h2>Where we are all headed</h2>
<p>We are all headed forward, now, without Adam Yauch to inspire us anew. This sucks more than words can express; but it is, alas, a part of life. Without death to make life precious, there would be no joy in living. We all only have a short period of time in life to accomplish our goals, so it is important that we spend time trying to do so. (And if your goals include helping other people, bonus points from Adam.)</p>
<p>I cannot thank Adam Yauch (MCA), Adam Horovitz (Ad-Rock), and Mike D enough; for providing me with all the inspiration I needed, when I needed it, to live my life; it has made all the difference. I know that Ad-Rock and Mike D will continue to live their lives; and whether that includes performing as &#8220;Beastie Boys&#8221; or not, does not matter to me; I will still be watching, waiting to be inspired again. And to Adam Yauch who has rapped, joked, snowboarded, and philanthropized his way through all our lives: thank you for the inspiration; I use it every day, and I&#8217;ll never forget it was <em>you</em> and your closest two brothers Ad-Rock and Mike D who gave it to me.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aclark.net/2012/05/11/adam-yauch-has-passed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Year’s Python Meme 2012</title>
		<link>http://blog.aclark.net/2011/12/21/new-years-python-meme-2012/</link>
		<comments>http://blog.aclark.net/2011/12/21/new-years-python-meme-2012/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 18:11:32 +0000</pubDate>
		<dc:creator>Alex Clark</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.aclark.net/?p=4250</guid>
		<description><![CDATA[My response to http://tarekziade.wordpress.com/2011/12/20/new-years-python-meme-2/  (with gratuitous links to pythonpackages.com, my new project, sprinkled throughout). It was fun answering in 2009, so I thought I&#8217;d play again. What’s the coolest Python application, framework or library you have discovered in 2011? Pyramid. &#8230; <a href="http://blog.aclark.net/2011/12/21/new-years-python-meme-2012/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>My response to <a href="http://tarekziade.wordpress.com/2011/12/20/new-years-python-meme-2/">http://tarekziade.wordpress.com/2011/12/20/new-years-python-meme-2/</a>  (with gratuitous links to <a href="http://pythonpackages.com">pythonpackages.com</a>, my new project, sprinkled throughout).</em></p>
<p>It was fun <a href="http://blog.aclark.net/2009/12/31/new-years-python-meme/">answering in 2009</a>, so I thought I&#8217;d play again.</p>
<h1>What’s the coolest Python application, framework or library you have discovered in 2011?</h1>
<p><a href="http://www.pylonsproject.org/">Pyramid</a>. In early 2011 I released <a href="http://pythonpackages.com/info/vanity">vanity</a>, which later became <a href="http://pythonpackages.com">pythonpackages.com </a>(more or less). I used building the site as an excuse to learn Pyramid, and it was well worth it.</p>
<p><strong>What new programming technique did you learn in 2011?</strong></p>
<p>I learned to <strong>not</strong> reinvent the wheel, and to collaborate with others on solving hard problems (which in and of itself is hard). Long story short, I took a little bit of heat within the Plone CMS community for creating a &#8220;one off&#8221; migration script:</p>
<ul>
<li><a href="http://pythonpackages.com/info/parse2plone">http://pythonpackages.com/info/parse2plone</a></li>
</ul>
<p>I&#8217;ve since learned my lesson and have been collaborating meaningfully with <a href="https://twitter.com/#!/djay75">Dylan Jay </a>on the more widely-supported <a href="http://pythonpackages.com/info/mr.migrator">mr.migrator</a> and friends.</p>
<p><strong>What’s the name of the open source project you contributed to the most in 2011? What did you do?</strong></p>
<p>I contributed to the <a href="http://plone.org">Plone</a> project quite a bit (as I have been doing for years now), but I also fell in love with <a href="http://mozilla.org">Mozilla</a> (and their mission) and began working on various things, including a virtual machine to help with the development of <a href="http://support.mozilla.com">support.mozilla.com</a>:</p>
<ul>
<li><a href="https://github.com/aclark4life/kitsune-vagrant"><strong></strong>https://github.com/aclark4life/kitsune-vagrant</a></li>
</ul>
<p><strong>What was the Python blog or website you read the most in 2011?</strong></p>
<p><a href="http://news.ycombinator.com/">Hacker news</a>. I have the start-up bug.</p>
<p><strong>What are the three top things you want to learn in 2012?</strong></p>
<p>JavaScript, JavaScript, and JavaScript. I first heard the term 15 years ago and have been avoiding it ever since. Time to jump in.</p>
<p><strong>What is the top software, application or library you wish someone would write in 2012?</strong></p>
<p>I hope someone (me) writes a &#8220;secret&#8221; feature for <a href="http://pythonpackages.com">pythonpackages.com</a> and launches it in first quarter of 2012; and I hope folks find it useful.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aclark.net/2011/12/21/new-years-python-meme-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vagrant, Puppet and Mozilla, oh my!</title>
		<link>http://blog.aclark.net/2011/10/03/vagrant-puppet-and-mozilla-oh-my/</link>
		<comments>http://blog.aclark.net/2011/10/03/vagrant-puppet-and-mozilla-oh-my/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 21:25:45 +0000</pubDate>
		<dc:creator>Alex Clark</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.aclark.net/?p=3655</guid>
		<description><![CDATA[Warning: This post is only loosely Python related and not at all Plone related, but I thought folks might enjoy hearing about Vagrant and Puppet because these tools may help you do your Plone and Python jobs better. For the &#8230; <a href="http://blog.aclark.net/2011/10/03/vagrant-puppet-and-mozilla-oh-my/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Warning: This post is only loosely Python related and not at all Plone related, but I thought folks might enjoy hearing about Vagrant and Puppet because these tools may help you do your Plone and Python jobs better.</em></p>
<p>For the past couple weeks I&#8217;ve been working on creating a virtual machine to bootstrap a kitsune environment. Kitsune is the Django site that powers support.mozilla.com. I&#8217;ve now reached what I call the <strong>2nd milestone</strong>.</p>
<h2>Milestones</h2>
<p>The milestones are as follows:</p>
<ol>
<li>Get the VM running to the point where one can type <strong>./manage.py</strong> and receive the help output (and not a traceback). This sounds trivial but there is actually a lot of work involved to get to this point. Namely, figuring out how to make <a href="http://puppetlabs.com/">Puppet</a> execute each of the required steps successfully, together. (You would expect to be able to just define the steps in order, but those with this expectation will be disappointed. I assume Puppet has their reasons, and they are probably even good ones. <img src='http://blog.aclark.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</li>
<li><strong>Get the VM running to the point where one can open http://33.33.33.10:8000 from the host to see kitsune running. Once step #1 is done, this is actually easier than it sounds because I&#8217;m &#8220;cheating&#8221;. Test data has been imported and a syncdb has been run, but I&#8217;m using supervisor to manage the runserver process (for now).</strong></li>
<li>Get the VM running like it does in production. This will involve configuring <strong>Apache </strong>and <strong>mod_wsgi</strong> as well as resolving any issues that remain with the app. I&#8217;ll rely on the kitsune team to help with this, as I&#8217;m still learning the app. This is the &#8220;exciting&#8221; part for me because I get to learn something new. While Vagrant and Puppet are also new to me, I consider these technologies part of my &#8220;past life&#8221; (as a system administrator) and Django sites part of my &#8220;future life&#8221; (as a web developer).</li>
</ol>
<p>Now about the technologies.</p>
<h2>Vagrant</h2>
<p>I had heard of <a href="http://vagrantup.com/">Vagrant</a> before, but never tried it. I am now sorry I waited so long because the &#8220;cool factor&#8221; is very high. It requires that <a href="https://www.virtualbox.org/">Virtualbox</a> be installed, which I also danced around for too long before committing (being a former Parallels user).</p>
<p>On OS X Lion[1], installing Vagrant is simply a matter of:</p>
<pre>$ gem install vagrant</pre>
<p>Once you have `vagrant` installed you can do:</p>
<pre>$ vagrant init</pre>
<p>inside some revision-controlled directory and you have the beginnings of a virtual machine you can share with the masses. This is how <a href="https://github.com/aclark4life/kitsune-vagrant">kitsune-vagrant</a> was born. Hopefully this shared virtual machine will eventually make some new developer&#8217;s life much easier.</p>
<p>We now arrive at a fork in the road; though Vagrant makes it easy to follow both paths: Chef or Puppet (it supports both). I don&#8217;t recall what made me choose Puppet over Chef, but it might have been that the <a href="https://github.com/rhelmer/socorro-vagrant">Socorro folks were using it already</a>.</p>
<p>Once you decide on Puppet (and assuming you do), it&#8217;s pretty easy to figure out that your next move is to create a manifest file for Puppet to apply[2].</p>
<h2>Puppet</h2>
<p>My knowledge of Puppet is currently quite limited. Specifically, I only know how to create a manifest file. (Vagrant does the rest!) I imagine there is much more to Puppet, especially with regard to doing actual configuration management on production servers. But I have not explored any of that yet.</p>
<p>However, I did learn quite a bit about Puppet just from writing the manifest. The first most important thing I learned is this: <strong>Puppet is in charge</strong>. It does things the way it wants to and you need to follow its rules. The first and biggest challenge is to achieve a linear execution of tasks.</p>
<p>You cannot write rules in order and hope for the best. This will fail spectacularly when something executes before something else was supposed to. The way around this is via `require =&gt;` statements.</p>
<p>A grep through kitsune.pp reveals:</p>
<pre>    require =&gt; Exec['git_clone'],
    require =&gt; Exec['db_sync'],
    require =&gt; Exec['packages_upgrade'],
    require =&gt; Exec['packages_update'],
    require =&gt; Package[$packages_native],
    require =&gt; Exec['git_clone'],
    require =&gt; Exec['chown_kitsune'],
    require =&gt; Exec['packages_compiled'],
    require =&gt; Exec['packages_vendor'],
    require =&gt; Exec['db_create'],
    require =&gt; Exec['db_import'],
    require =&gt; file['/etc/supervisor/supervisord.conf'],
    require =&gt; Exec['supervisor_stop'],</pre>
<p>This roughly translates to the following workflow logic:</p>
<ul>
<li>Ensure that `aptitude -y update; aptitude -y upgrade` have been run before you try to install the list of packages we require.</li>
<li>Ensure the list of packages we require is installed before we checkout the code.</li>
<li>Ensure the code has been checked out (and pip install / git submodule have been run) before you try to syncdb and run the application.</li>
</ul>
<p>There is a bit more to it, but with that knowledge you should be able to <a href="https://github.com/aclark4life/kitsune-vagrant/blob/master/manifests/kitsune.pp">read and understand kitsune.pp in full</a>. I learned most of the remaining required puppeteering from this site:<a href="http://www.puppetcookbook.com/"> http://www.puppetcookbook.com/</a>.</p>
<h2>Mozilla</h2>
<p>Oh my! This Mozilla work is a ton of fun[3]; I attribute this in part due to the structure of their organization: I was invited immediately to collaborate in IRC with the kitsune team and as a result, we all have something to show for it[4].</p>
<p style="text-align: center;"><a href="http://blog.aclark.net/wp-content/uploads/2011/10/Screen-Shot-2011-10-03-at-5.12.42-PM.png"><img class="aligncenter size-full wp-image-3693" title="Screen Shot 2011-10-03 at 5.12.42 PM" src="http://blog.aclark.net/wp-content/uploads/2011/10/Screen-Shot-2011-10-03-at-5.12.42-PM.png" alt="" width="556" height="390" /></a></p>
<p>Next I will be working on the 3rd milestone! Hope to finish by the end of this week.</p>
<h2>Notes</h2>
<p>[1] This did not work on Snow Leopard, because `gem` is too old. However if you `brew install ruby` and try again, it should work.</p>
<p>[2] I didn&#8217;t bother to investigate Chef, but I am curious about it.</p>
<p>[3] And I hope this is only the beginning.</p>
<p>[4] I hope to get a Mozilla gig but even if I don&#8217;t, being able to do this type of work is very rewarding (which is why you will often hear people in open source say that to get paid for the type of work they do is a dream come true <img src='http://blog.aclark.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aclark.net/2011/10/03/vagrant-puppet-and-mozilla-oh-my/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

