<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.lifeofagizmo.com/wp-atom.php">
	<title type="text">life of a gizmo</title>
	<subtitle type="text">Software and business</subtitle>

	<updated>2010-08-19T07:00:51Z</updated>

	<link rel="alternate" type="text/html" href="http://www.lifeofagizmo.com" />
	<id>http://www.lifeofagizmo.com/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.0.1">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/LifeOfAGizmo" /><feedburner:info uri="lifeofagizmo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Wings for my business and why google is the BEST]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/B1s2rXwQWQw/" />
		<id>http://www.lifeofagizmo.com/?p=335</id>
		<updated>2010-08-19T07:00:51Z</updated>
		<published>2010-08-19T07:00:51Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="Web" /><category scheme="http://www.lifeofagizmo.com" term="business" /><category scheme="http://www.lifeofagizmo.com" term="startup" /><category scheme="http://www.lifeofagizmo.com" term="usability" /><category scheme="http://www.lifeofagizmo.com" term="Bing" /><category scheme="http://www.lifeofagizmo.com" term="Google" /><category scheme="http://www.lifeofagizmo.com" term="Kalif" /><category scheme="http://www.lifeofagizmo.com" term="Yahoo" />		<summary type="html"><![CDATA[My Web Design Business I just launched my web design business based in Lethbridge. This is something I&#8217;ve wanted to do since high school. There&#8217;s two types of people in the world: dreamers and doers. I&#8217;ve been (and still am to an extent) a dreamer. Dreamers are people with ideas. They&#8217;ll tell you about these [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/08/19/wings-for-my-business-and-why-google-is-the-best/">&lt;h1&gt;My Web Design Business&lt;/h1&gt;
&lt;p&gt;I just launched my &lt;a href="http://www.kalif.ca"&gt;web design business&lt;/a&gt; based in Lethbridge. &lt;em&gt;This is something I&amp;#8217;ve wanted to do since high school&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s two types of people in the world: dreamers and doers. I&amp;#8217;ve been (and still am to an extent) a dreamer. Dreamers are people with ideas. They&amp;#8217;ll tell you about these ideas until the cows come home (I wonder where that expression comes from. Cows don&amp;#8217;t graze on their own, but I heard goats do! Maybe it should be &amp;#8220;until the goats come home&amp;#8221;). Often these ideas are great and if executed properly could turn out to be BIG. However, that&amp;#8217;s just it, they don&amp;#8217;t execute and let their ideas rot. I&amp;#8217;m moving away from being a dreamer to being a doer. Doers execute in rapid succession. While dreamers talk about the awesome &lt;INSERT IDEA HERE&gt; they&amp;#8217;re going to make, doers are already doing it (and maybe failing and trying again!).&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve dreamt of having a web design business since high school. I&amp;#8217;ve even got mockups to prove it! I took forever to pick and name then didn&amp;#8217;t like it. Took forever to pick another one, registered a domain name. It went stale and I didn&amp;#8217;t like that one too. Rinse and repeat. That&amp;#8217;s until now. I pray to God that I start becoming more of a doer as dreaming alone leaves you immobile.&lt;/p&gt;
&lt;h1&gt;Why Google is the BEST&lt;/h1&gt;
&lt;p&gt;Google has something called &lt;a href="https://www.google.com/webmasters/tools"&gt;Google Webmaster Tools&lt;/a&gt;. As the name suggests, they are meant to help webmasters help google discover their websites. I used it, it worked!&lt;/p&gt;
&lt;p&gt;That same google page, kindly enough, mentioned that &lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt; and &lt;a href="http://www.yahoo.com"&gt;Yahoo!&lt;/a&gt; also have their version of webmaster tools. I tried both of them with nothing but problems! That&amp;#8217;s why google is the best. I didn&amp;#8217;t think the Google tools were special because they just worked, as expected. This was until I tried Bing and Yahoo! where the tools failed miserably. Especially Bing&amp;#8217;s.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F08%2F19%2Fwings-for-my-business-and-why-google-is-the-best%2F&amp;amp;linkname=Wings%20for%20my%20business%20and%20why%20google%20is%20the%20BEST"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/B1s2rXwQWQw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/08/19/wings-for-my-business-and-why-google-is-the-best/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/08/19/wings-for-my-business-and-why-google-is-the-best/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/08/19/wings-for-my-business-and-why-google-is-the-best/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[CSRF verification failed. Request aborted.]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/qeDrUAKLYA8/" />
		<id>http://www.lifeofagizmo.com/?p=321</id>
		<updated>2010-08-13T06:23:26Z</updated>
		<published>2010-08-13T06:23:02Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="django" /><category scheme="http://www.lifeofagizmo.com" term="dreamhost" /><category scheme="http://www.lifeofagizmo.com" term="python" /><category scheme="http://www.lifeofagizmo.com" term="CSRF" />		<summary type="html"><![CDATA[You may be doing your daily business, as I was, then get an email from a client saying there&#8217;s a problem with the (django) site you created. You think to yourself, hmm, that&#8217;s odd, nothing has changed in that since since X years. You check out the site and try to login only to discover [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/08/12/csrf-verification-failed-request-aborted/">&lt;p&gt;You may be doing your daily business, as I was, then get an email from a client saying there&amp;#8217;s a problem with the (django) site you created. You think to yourself, hmm, that&amp;#8217;s odd, nothing has changed in that since since X years.&lt;/p&gt;
&lt;p&gt;You check out the site and try to login only to discover this nasty error:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;FORBIDDEN&lt;br /&gt;
CSRF verification failed. Request aborted.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This is most likely caused by an intentional or unintentional upgrade to Django 1.2.x. For me this upgrade was unintentional. My host is dreamhost and they decided to upgrade their django version to 1.2.1. Once this happened I started getting that error out of the blue! If you did upgrade to django 1.2.x intentionally, you need to make sure you read the &lt;a href="http://docs.djangoproject.com/en/1.2/releases/1.2/"&gt;release notes&lt;/a&gt; and pay close attention to the &lt;a href="http://docs.djangoproject.com/en/1.2/releases/1.2/#backwards-incompatible-changes-in-1-2"&gt;backward incompatible changes&lt;/a&gt;. You will probably have to make changes to your code.&lt;/p&gt;
&lt;p&gt;I already had a &lt;a href="http://www.arthurkoziel.com/2008/10/22/working-virtualenv/"&gt;virtual-env&lt;/a&gt; with the old version of django installed, so all I had to do was change these two lines of code in my ./dispatch.fcgi.&lt;/p&gt;
&lt;p&gt;Before the change:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="python" style="font-family:monospace;"&gt;&lt;span style="color: #dc143c;"&gt;sys&lt;/span&gt;.&lt;span style="color: black;"&gt;path&lt;/span&gt; += &lt;span style="color: black;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #483d8b;"&gt;'/home/myuser/django_src'&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;#93;&lt;/span&gt;
&lt;span style="color: #dc143c;"&gt;sys&lt;/span&gt;.&lt;span style="color: black;"&gt;path&lt;/span&gt; += &lt;span style="color: black;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #483d8b;"&gt;'/home/myuser/beta_django_projects'&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After the change:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="python" style="font-family:monospace;"&gt;&lt;span style="color: #dc143c;"&gt;sys&lt;/span&gt;.&lt;span style="color: black;"&gt;path&lt;/span&gt;.&lt;span style="color: black;"&gt;insert&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff4500;"&gt;1&lt;/span&gt;, &lt;span style="color: #483d8b;"&gt;'/home/myuser/django_src'&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #dc143c;"&gt;sys&lt;/span&gt;.&lt;span style="color: black;"&gt;path&lt;/span&gt;.&lt;span style="color: black;"&gt;insert&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff4500;"&gt;1&lt;/span&gt;, &lt;span style="color: #483d8b;"&gt;'/home/myuser/beta_django_projects'&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This sets the your django_src path to higher priority in your PYTHONPATH which results in your django version being used over the one available at dreamhost.&lt;/p&gt;
&lt;p&gt;These instructions are very tailored to my dreamhost issue. If you something is not clear or this doesn&amp;#8217;t solve your CSRF problem, just leave a comment and I&amp;#8217;ll try to help you out.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F08%2F12%2Fcsrf-verification-failed-request-aborted%2F&amp;amp;linkname=CSRF%20verification%20failed.%20Request%20aborted."&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/qeDrUAKLYA8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/08/12/csrf-verification-failed-request-aborted/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/08/12/csrf-verification-failed-request-aborted/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/08/12/csrf-verification-failed-request-aborted/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Lethbridge Roofing and Insulation]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/ePyTpY_v388/" />
		<id>http://www.lifeofagizmo.com/?p=312</id>
		<updated>2010-08-04T19:43:03Z</updated>
		<published>2010-08-04T19:39:36Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="Marketing" /><category scheme="http://www.lifeofagizmo.com" term="business" />		<summary type="html"><![CDATA[Pleasure to Work With You Darren, the general manager at BHL, was essentially my first web design client. He&#8217;s an amazing guy to work with. No hassle and no pain. I do the work, get feedback, implement it, and he&#8217;s happy . Have you heard about the client from hell? Well, Darren, is the exact [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/08/04/lethbridge-roofing-and-insulation/">&lt;h2&gt;Pleasure to Work With You&lt;/h2&gt;
&lt;p&gt;Darren, the general manager at BHL, was essentially my first web design client. He&amp;#8217;s an amazing guy to work with. No hassle and no pain. I do the work, get feedback, implement it, and he&amp;#8217;s happy &lt;img src='http://www.lifeofagizmo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; . Have you heard about the &lt;em&gt;client from hell&lt;/em&gt;? Well, Darren, is the exact opposite!&lt;/p&gt;
&lt;h2&gt;&lt;a href="http://www.bhlcon.com/roofing.html"&gt;Lethbridge Roofing&lt;/a&gt; and &lt;a href="http://www.bhlcon.com/super_insulation.html"&gt;Insulation&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Today, we just launched the website for his company, &lt;a href="http://www.bhlcon.com/"&gt;BHL&lt;/a&gt;. BHL provides a number of services including &lt;a href="http://www.bhlcon.com/roofing.html"&gt;roofing&lt;/a&gt;, &lt;a href="http://www.bhlcon.com/insulation.html"&gt;insulation&lt;/a&gt;, &lt;a href="http://www.bhlcon.com/sound_proofing.html"&gt;sound proofing&lt;/a&gt;, &lt;a href="http://www.bhlcon.com/fireproofing.html"&gt;fireproofing&lt;/a&gt;, &lt;a href="http://www.bhlcon.com/construction.html"&gt;construction&lt;/a&gt; for the Lethbridge area.&lt;/p&gt;
&lt;h2&gt;Highly Recommended&lt;/h2&gt;
&lt;p&gt;I highly recommend Darren and BHL for &lt;a href="http://www.bhlcon.com/roofing.html"&gt;Lethbridge roofing&lt;/a&gt; and the other services they provide. Truly a great person to work with.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F08%2F04%2Flethbridge-roofing-and-insulation%2F&amp;amp;linkname=Lethbridge%20Roofing%20and%20Insulation"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/ePyTpY_v388" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/08/04/lethbridge-roofing-and-insulation/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/08/04/lethbridge-roofing-and-insulation/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/08/04/lethbridge-roofing-and-insulation/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Firsthand Experience with the Personal Software Process, part 2]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/WL6B9TZLZvI/" />
		<id>http://www.lifeofagizmo.com/?p=296</id>
		<updated>2010-07-30T08:02:45Z</updated>
		<published>2010-07-30T08:02:45Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="programming" /><category scheme="http://www.lifeofagizmo.com" term="Personal Software Process" /><category scheme="http://www.lifeofagizmo.com" term="PSP" />		<summary type="html"><![CDATA[This is a series of three posts on my experience with the PSP. PSP stands for Personal Software Process. For an introduction, see the wikipedia page on PSP. Part 1 was posted recently. Enjoy part 2: PSP Levels PSP℠ has been developed with training in mind. It starts you off with PSP 0 which is [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/07/30/firsthand-experience-with-the-personal-software-process-part-2/">&lt;p&gt;This is a series of three posts on my experience with the PSP.&lt;br /&gt;
PSP stands for Personal Software Process. For an introduction, see the &lt;a href="http://en.wikipedia.org/wiki/Personal_Software_Process"&gt;wikipedia page on PSP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.lifeofagizmo.com/2010/07/26/firsthand-experience-with-the-personal-software-process-part-1/"&gt;Part 1&lt;/a&gt; was posted recently. Enjoy part 2:&lt;/p&gt;
&lt;h1&gt;PSP Levels&lt;/h1&gt;
&lt;p&gt;PSP℠ has been developed with training in mind. It starts you off with PSP 0 which is essentially your existing software process but adds measurements and through a series of six steps exposes the student to all of the PSP processes and measures. Below I will describe each step in more detail and explain the benefits of each.&lt;/p&gt;
&lt;h2&gt;PSP 0&lt;/h2&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;p&gt;As mentioned above, this level attempts to establish a baseline for your existing development practices. It does, however, “force” you to split your development into phases: planning, development (design, code, compile, test) and postmortem. It also teaches you how to record development time and defects introduced. The only ‘planning’ aspect of it involves predicting how long each phase will take you. As you approach PSP 2.1, this data will show you how your predictions are better with PSP than without it&amp;#8211;or not!&lt;/p&gt;
&lt;h4&gt;Takeaway&lt;/h4&gt;
&lt;p&gt;It’s very tempting to start developing a project (especially when it starts out small) by opening an editor and coding. Compile. Fix errors. Repeat until good enough. From personal experience, this leads to a lot of minuscule bugs because no attention to detail has been paid. It’s easier to let the compiler find the bugs for you! Using PSP however, you’re forced to plan, design, code, compile, and test. When I started using PSP 0, I noticed I was a lot more careful even with the planning phase. I gave some thought to what the design and coding will encompass in order to estimate how long each phase would take me. Normally these steps would have been performed implicitly, if at all. In the design phase, I started giving more importance to defects and payed close attention to design completeness as I didn’t want defects to appear on the defect logs! Something magical happens when you actually track even your defects that don&amp;#8217;t make it into the &amp;#8220;field.&amp;#8221;&lt;/p&gt;
&lt;p&gt;In the postmortem phase, it was definitely eye opening to find that I spent 49 minutes in testing! That’s &lt;strong&gt;46 more minutes than I predicted&lt;/strong&gt;!&lt;/p&gt;
&lt;h2&gt;PSP 0.1&lt;/h2&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;p&gt;This level adds program size measurements, process improvement proposal, and a coding standard. The process improvement proposal is “a form that engineers use to record the process problems they encounter as well as their ideas for addressing them.” [4]&lt;/p&gt;
&lt;h4&gt;Takeaway&lt;/h4&gt;
&lt;p&gt;This level was a little more frustrating than the first. I think the challenge of doing a self-study of PSP is that instructions tend to lack a great deal (from the online materials). I initially didn’t understand (and still might not) the difference between base, deleted, modified, added, reused, and added and modified program size aspects. The especially annoying bit here is the reused category. In my opinion, since, I’m not designing libraries, my code is never 100% reusable like a library is meant to be.&lt;/p&gt;
&lt;p&gt;In addition, the process improvement proposal (PIP) form, I found, was not very useful as again, I wasn’t sure what parts of the process I could question or what I could do about it to begin with. In hindsight, I’m glad I stuck through with most of the process suggestions as I now have a better understanding and appreciation of some of them.&lt;/p&gt;
&lt;p&gt;On a more positive note, the coding standard was useful. As developers, we often have a personal coding style but, unfortunately, if it’s not documented we often end up straying from it.&lt;/p&gt;
&lt;h2&gt;PSP 1.0&lt;/h2&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;p&gt;This level was exciting. You will finally reap some benefits. “In this level, engineers are introduced to the PROBE method, which uses historical data to estimate size and determine the accuracy of the estimate. PROBE is a regression-based size-estimating method developed specifically for PSP.”[4]&lt;/p&gt;
&lt;p&gt;In addition to previous data, this level asks you to predict program size by breaking down the design into parts added and reused.&lt;/p&gt;
&lt;h4&gt;Takeaway&lt;/h4&gt;
&lt;p&gt;At this phase, you will get a lot more involved in the design as you are asked to list out the parts (functions, classes, modules) you’ll need to design your program. The notes on this level tell you to create a conceptual design in the planning phase in order to create somewhat of a parts inventory to allow you to predict how long each part and thus the whole program will take. Up to this point I was using a word processor to keep track of all my data which made the PROBE calculations a little cumbersome. These in the later phases lead to me dreading the planning phase the most! Luckily though, there’s a tool that makes all of this really easy, so use it: &lt;a href="http://www.processdash.com/"&gt;Process Dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;PSP 1.1&lt;/h2&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;p&gt;“This level adds resource and schedule estimating and earned-value tracking. Engineers often have trouble tracking their work because they do tasks in an order different from their plan. Earned-value tracking allows them to weight the relative importance of each task and to judge their progress as they finish some tasks early and others late.” [4]&lt;/p&gt;
&lt;h4&gt;Takeaway&lt;/h4&gt;
&lt;p&gt;The additions in this level seem really promising. It’s quite easy to get distracted by different projects at different times while letting other priorities slip. However, with the schedule and task planning you can keep track of your progress and your projected finish date. This allows you to renegotiate a deadline if you’re sure you will miss it. Having said that, the task planning and schedule planning template are meant to be used in project that will take more than one day. I attempted to use this in my 5th project, however, it didn’t prove too useful as it did not take more than one day. Interestingly enough, in the project that I should have used these tools (Project 6), I didn’t, since I anticipated to spend about 8 hours on it instead of the 45 hours the PROBE methods suggested! (Hint: I spent about 50 hours on Project 6!)&lt;/p&gt;
&lt;h2&gt;PSP 2.0&lt;/h2&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;p&gt;“This level introduces design and code reviews, as well as quality measurement and evaluation. Using defect data from their earlier exercises, engineers also develop personal design and code review checklists.” [4]&lt;/p&gt;
&lt;p&gt;PSP 2.0 does come with prebuilt design and code review checklists.&lt;/p&gt;
&lt;h4&gt;Takeaway&lt;/h4&gt;
&lt;p&gt;When completing the checklists you’re not supposed to work on more than one item at a time. For example, if you’re checking for &lt;em&gt;include&lt;/em&gt; statements, that’s all you’re doing. These checklists require a lot of discipline to not rush and get them over with. Perhaps, if feasible, it’s a good idea to postpone these reviews for some time (be it hours or days), in order not to speed through them and miss critical defects. From my personal experience, although I have not followed these to the dot (because some didn’t apply and some seemed too burdensome) they have proved very useful. A much better practice, which I shall do in the future, is to modify these checklists to suite your needs by examining the time of defects you’ve produced in the past.&lt;/p&gt;
&lt;h2&gt;PSP 2.1&lt;/h2&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;p&gt;This level breaks down the design phase into functional specification, operational specification, logic specifications,  state specification. The functional specification is essentially a UML diagram with method specifications. An operational specification can be compared to a use-case diagram. The logic specification is, as the name suggests, the logic of an item (e.g. method) and finally a state specification is a state machine.&lt;/p&gt;
&lt;h4&gt;Takeaway&lt;/h4&gt;
&lt;p&gt;I used PSP 2.1 for Project 6 which was essentially maintenance work on my textbook website. Instead of following these different specifications, I decided that a UML diagram representing the changes I intend to make to the software would be sufficient. I also added documentation to the classes and functions in order to cover functional specifications. As the use cases for my website are well defined as it’s already public, I didn’t feel a need for the operational specification or use-case diagrams. Likewise with the task at hand, a logic specification wasn’t needed as I was replacing a module with another one and not fixing any existing logical defects. And finally, a state chart diagram seemed too cumbersome to even start&amp;#8211;so I didn’t! These pain points of the PSP will be reflected in my own process which I will introduce below.&lt;/p&gt;
&lt;p&gt;Part 3 will be posted shortly. It basically describes some changes I intend to make to PSP to make it work for me. PSP is meant to be personalized and cusotmized, hence the name, &lt;em&gt;Personal&lt;/em&gt; Software Process.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;p&gt;[1] &lt;a href="http://en.wikipedia.org/wiki/Personal_Software_Process"&gt;http://en.wikipedia.org/wiki/Personal_Software_Process&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href="http://www.methodsandtools.com/archive/archive.php?id=60"&gt;http://www.methodsandtools.com/archive/archive.php?id=60&lt;/a&gt;&lt;br /&gt;
[3] &lt;a href="http://www.cs.uleth.ca/~rice/cs3720/papers/Cannon1999_PSPinpractice.pdf"&gt;http://www.cs.uleth.ca/~rice/cs3720/papers/Cannon1999_PSPinpractice.pdf&lt;/a&gt;&lt;br /&gt;
[4] &lt;a href="http://www.cs.uleth.ca/~rice/cs3720/papers/Humphrey1996-ResultsPSP.pdf"&gt;http://www.cs.uleth.ca/~rice/cs3720/papers/Humphrey1996-ResultsPSP.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F07%2F30%2Ffirsthand-experience-with-the-personal-software-process-part-2%2F&amp;amp;linkname=Firsthand%20Experience%20with%20the%20Personal%20Software%20Process%2C%20part%202"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/WL6B9TZLZvI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/07/30/firsthand-experience-with-the-personal-software-process-part-2/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/07/30/firsthand-experience-with-the-personal-software-process-part-2/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/07/30/firsthand-experience-with-the-personal-software-process-part-2/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Firsthand Experience with the Personal Software Process, part 1]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/uc44JgwnlW0/" />
		<id>http://www.lifeofagizmo.com/?p=282</id>
		<updated>2010-07-30T08:00:17Z</updated>
		<published>2010-07-26T11:39:35Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="programming" /><category scheme="http://www.lifeofagizmo.com" term="Personal Software Process" /><category scheme="http://www.lifeofagizmo.com" term="PSP" />		<summary type="html"><![CDATA[This is a series of three posts on my experience with the PSP. PSP stands for Personal Software Process. For an introduction, see the wikipedia page on PSP. This is part 1. Part 2 can be found here. What is the Personal Software Process℠? The Personal Software Process (PSP℠) was developed by Watts S. Humphrey from [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/07/26/firsthand-experience-with-the-personal-software-process-part-1/">&lt;p&gt;This is a series of three posts on my experience with the PSP.&lt;/p&gt;
&lt;p&gt;PSP stands for Personal Software Process. For an introduction, see the &lt;a href="http://en.wikipedia.org/wiki/Personal_Software_Process"&gt;wikipedia page on PSP&lt;/a&gt;. This is part 1. Part 2 can be found &lt;a href="http://www.lifeofagizmo.com/?p=296"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What is the Personal Software Process℠?&lt;/h2&gt;
&lt;p&gt;The Personal Software Process (PSP℠) was developed by Watts S. Humphrey from the Software Engineering Institution of Carnegie Mellon University. PSP℠ is a highly disciplined software development process. However that&amp;#8217;s not all&amp;#8211;it’s even described as the process that helps you develop software processes and not necessary a software process in itself. PSP℠ focuses on strict measurement of software development activities starting from planning, designing, coding, compiling, testing, and postmortem.&lt;/p&gt;
&lt;h2&gt;Why should you care?&lt;/h2&gt;
&lt;p&gt;In my Software Engineering class, through a number of papers (see References for a list), I was introduced to the Personal Software Process℠. These papers made some very seductive claims on improved completion estimates and software quality and they got my attention. Here are PSP success stories:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;At Advanced Information Services (AIS), before PSP training, schedule estimating error averaged 394 percent; &lt;strong&gt;afterward PSP training the average was -10.4 percent&lt;/strong&gt;. That is, &lt;strong&gt;projects were being completed even before their estimated deadline&lt;/strong&gt;.[4]&lt;/li&gt;
&lt;li&gt;Also at AIS, the software for a PSP trained team had 0.76 defects per 1,000 lines of code before PSP training and 0.17 defects per 1,000 lines of code after training, a &lt;strong&gt;78 percent improvement&lt;/strong&gt;. [4]&lt;/li&gt;
&lt;li&gt;In addition to the above, AIS compared the results of project with PSP trained engineers to those with engineers not trained in PSP. Here are the results [4]:
&lt;ul&gt;
&lt;li&gt;Project C (completed by &lt;strong&gt;non-PSP trained engineers&lt;/strong&gt;) was &lt;strong&gt;scheduled for two months, but took five&lt;/strong&gt; to reach the acceptance test stage.&lt;/li&gt;
&lt;li&gt;Likewise Project D (again, completed by &lt;strong&gt;non-PSP trained engineers&lt;/strong&gt;) was &lt;strong&gt;scheduled for 10 months, but took 19&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Project B, however, was &lt;strong&gt;scheduled for seven months, but took five&lt;/strong&gt;. This was completed by &lt;strong&gt;PSP trained engineers&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; At Motorola, of &lt;strong&gt;eighteen projects&lt;/strong&gt; completed by PSP-trained engineers, only &lt;strong&gt;one defect had been found after release&lt;/strong&gt;.[2]&lt;/li&gt;
&lt;li&gt;At Union Switch and Signal, PSP-trained engineers completed &lt;strong&gt;five projects &lt;/strong&gt;and &lt;strong&gt;no defects had been found after release&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;And finally, in my PSP training Project 1 consisted of a trivial 31 lines of code (LOC) which took 2.38 hours to complete but my schedule estimation error 26.55 percent. Project 6, on the other hand was a much more complex maintenance project with 247 LOC which took 50.42 hours to complete and I only had 10.36 percent schedule estimation error. (In reality if I had estimated Project 6 without the PSP tools like I estimated Project 1, I would have estimated development time to be about 8 hours which would have resulted in a 92.85 percent in estimation error!)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Further, you might wonder, while those numbers look really good, why are they so important. When it comes to schedule estimation, it’s important to get it right because you likely will be paying people (or are getting paid) to work on the software. These costs are covered by the client of the software (otherwise you’re not making a profit). If you underestimate how long it will take to develop a particular product (be it custom or packaged software), you’re bound to charge less than feasible prices and end up incurring a loss. This can lead your business (or employer) into trouble.&lt;/p&gt;
&lt;p&gt;Likewise, quality is very important. Removing defects gets more expensive as you progress in the development of your software (e.g. a defect that might cost one dollar to fix in the requirements phase may cost $10 during design, $100 during coding, $1,000 in test and $10,000 in the field.)[2] Again, if you reduce the number of defects that make it to the latter phases of a project you are contributing to your company’s (or your employer’s) bottom line.&lt;/p&gt;
&lt;p&gt;In a nutshell, that’s why schedule estimation and product quality are important in a software project. That is, without even considering the marketing benefits reaped from a quality product and good estimation.&lt;/p&gt;
&lt;h2&gt;How do I start?&lt;/h2&gt;
&lt;p&gt;If you’ve come to the conclusion, as I did, given these potential benefits it is worth trying PSP out, I recommend you start with the &lt;a href="http://www.sei.cmu.edu/tsp/tools/student/"&gt;Self-Study PSP material&lt;/a&gt; you can download from the &lt;a href="http://www.sei.cmu.edu/tsp/tools/index.cfm"&gt;SEI website&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;p&gt;[1] &lt;a href="http://en.wikipedia.org/wiki/Personal_Software_Process"&gt;http://en.wikipedia.org/wiki/Personal_Software_Process&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href="http://www.methodsandtools.com/archive/archive.php?id=60"&gt;http://www.methodsandtools.com/archive/archive.php?id=60&lt;/a&gt;&lt;br /&gt;
[3] &lt;a href="http://www.cs.uleth.ca/~rice/cs3720/papers/Cannon1999_PSPinpractice.pdf"&gt;http://www.cs.uleth.ca/~rice/cs3720/papers/Cannon1999_PSPinpractice.pdf&lt;/a&gt;&lt;br /&gt;
[4] &lt;a href="http://www.cs.uleth.ca/~rice/cs3720/papers/Humphrey1996-ResultsPSP.pdf"&gt;http://www.cs.uleth.ca/~rice/cs3720/papers/Humphrey1996-ResultsPSP.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That was part 1. I&amp;#8217;d love to hear your opinion on this especially if you&amp;#8217;ve tried PSP or a &amp;#8220;competing&amp;#8221; development process like SCRUM, etc. Until part 2!&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F07%2F26%2Ffirsthand-experience-with-the-personal-software-process-part-1%2F&amp;amp;linkname=Firsthand%20Experience%20with%20the%20Personal%20Software%20Process%2C%20part%201"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/uc44JgwnlW0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/07/26/firsthand-experience-with-the-personal-software-process-part-1/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/07/26/firsthand-experience-with-the-personal-software-process-part-1/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/07/26/firsthand-experience-with-the-personal-software-process-part-1/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Refreshing: Button Feedback]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/kt-ogGt7TXY/" />
		<id>http://www.lifeofagizmo.com/?p=265</id>
		<updated>2010-07-09T21:16:02Z</updated>
		<published>2010-07-09T21:16:02Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="usability" /><category scheme="http://www.lifeofagizmo.com" term="web forms" />		<summary type="html"><![CDATA[I came across printfriendly.com only to realize it&#8217;s user friendly too. One of the things that has bugged me but not enough to notice it, has been lack of feedback on a form (like a search form). You enter the text you wish to search for, hit Enter on the keyboard and you see nothing [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/07/09/refreshing-button-feedback/">&lt;p&gt;I came across &lt;a href="http://www.printfriendly.com/"&gt;printfriendly.com &lt;/a&gt; only to realize it&amp;#8217;s user friendly too.&lt;/p&gt;
&lt;p&gt;One of the things that has bugged me but not enough to notice it, has been lack of feedback on a form (like a search form). You enter the text you wish to search for, hit Enter on the keyboard and you see nothing until you look at the browser loading bar to notice that &amp;#8220;it&amp;#8217;s doing something.&amp;#8221;&lt;/p&gt;
&lt;div id="attachment_267" class="wp-caption aligncenter" style="width: 471px"&gt;&lt;a href="http://www.lifeofagizmo.com/wp-content/uploads/2010/07/printfriendly-1.png"&gt;&lt;img class="size-full wp-image-267  " title="Normal button state--dark gray" src="http://www.lifeofagizmo.com/wp-content/uploads/2010/07/printfriendly-1.png" alt="Normal button state--dark gray" width="461" height="101" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;Normal button state. Dark gray background color.&lt;/p&gt;&lt;/div&gt;
&lt;div id="attachment_268" class="wp-caption aligncenter" style="width: 489px"&gt;&lt;a href="http://www.lifeofagizmo.com/wp-content/uploads/2010/07/printfriendly-2.png"&gt;&lt;img class="size-full wp-image-268" title="Button feedback--flashes blue" src="http://www.lifeofagizmo.com/wp-content/uploads/2010/07/printfriendly-2.png" alt="Button feedback--flashes blue" width="479" height="110" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;Button feedback--flashes blue&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;What printfriendly has done though, is added feedback to the form. When you hit Enter, the &amp;#8220;print preview&amp;#8221; button flashes letting you know that, yes sir, your request went through! This type of feedback is common for mouse clicks and I&amp;#8217;m glad someone has thought of people who just hit Enter!&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F07%2F09%2Frefreshing-button-feedback%2F&amp;amp;linkname=Refreshing%3A%20Button%20Feedback"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/kt-ogGt7TXY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/07/09/refreshing-button-feedback/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/07/09/refreshing-button-feedback/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/07/09/refreshing-button-feedback/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[deploying websites on virtualenvs with deploy_pysite.sh]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/BTIV3jiUg8g/" />
		<id>http://www.lifeofagizmo.com/?p=252</id>
		<updated>2010-07-08T00:18:10Z</updated>
		<published>2010-07-08T00:12:58Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="django" /><category scheme="http://www.lifeofagizmo.com" term="programming" /><category scheme="http://www.lifeofagizmo.com" term="python" /><category scheme="http://www.lifeofagizmo.com" term="automation" /><category scheme="http://www.lifeofagizmo.com" term="virtualenv" /><category scheme="http://www.lifeofagizmo.com" term="virtualenvwrapper" />		<summary type="html"><![CDATA[The Story I had some work to do but instead found a perfect distraction. I decided to upgrade my textbook website to Django 1.2.x which is an updated version of the python framework I used to build it. Unlike in the past, where such a task would have not phased me and which I would [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/07/07/deploying-websites-on-virtualenvs-with-deploy_pysite-sh/">&lt;p&gt;The Story&lt;/p&gt;
&lt;p&gt;I had some work to do but instead found a perfect distraction. I decided to upgrade my &lt;a href="http://www.gizmobooks.com"&gt;textbook website&lt;/a&gt; to &lt;a href="http://docs.djangoproject.com/en/dev/releases/1.2/"&gt;Django 1.2.x&lt;/a&gt; which is an updated version of the python framework I used to build it.&lt;br /&gt;
&lt;a href="http://www.lifeofagizmo.com/wp-content/uploads/2010/07/1219283_sunbaking.jpg"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/uploads/2010/07/1219283_sunbaking.jpg" alt="" title="sunbaking" width="300" height="225" class="alignright size-full wp-image-259" /&gt;&lt;/a&gt;&lt;br /&gt;
Unlike in the past, where such a task would have not phased me and which I would have attempted to do on the live site, I decided to setup a beta site that runs along the main GizmoBooks website as a sandbox so to speak.&lt;/p&gt;
&lt;p&gt;I started upgrading and it turned out there were many changes that needed to be made. I came across this &lt;a href="http://andrew.io/weblog/2010/02/installing-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost/"&gt;very helpful guide on intalling python 2.6, virtualenv, and virtualenvwrapper&lt;/a&gt;. After a few attempts and tweaks it worked and beautifully too! Not only did I have python 2.6 installed but I also had virtualenv &lt;em&gt;and&lt;/em&gt; &lt;a href="http://www.doughellmann.com/projects/virtualenvwrapper/"&gt;virtualenvwrapper&lt;/a&gt; which I until I had it, I had no idea what I was missing. It&amp;#8217;s quite brilliant because it allows you to setup virtualenvironments like this *snaps fingers*.&lt;/p&gt;
&lt;p&gt;So far so good, I had my virtual environment setup but then came time to find all the different python PIP packages and other software that my website needed. This was okay for a bit, but then came time to install xapian-core, xapian-binding, blah blah blah. I quickly got tired of all this.&lt;/p&gt;
&lt;h2&gt;The Script&lt;/h2&gt;
&lt;p&gt;So, I did what all lazy programmers do: I wrote a script about it! The script is called &lt;a href="http://github.com/hgezim/deploy_pysite"&gt;deploy_pysite.sh&lt;/a&gt; and can be found at &lt;a href="http://github.com/hgezim/deploy_pysite"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You see, the beauty of virtualenv is that it allows you to quickly create a virtual environment from scratch. The problem, of course, is that (often) the virtualenv is empty and you need to go install all the packages to deploy your website. This is what the scripts aims to simplify.&lt;/p&gt;
&lt;h2&gt;Script Guide&lt;/h2&gt;
&lt;p&gt;Follow these steps to run it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If you&amp;#8217;re &lt;em&gt;not&lt;/em&gt; using virtualenvwrapper, set &lt;code&gt;VIRTUAL_ENV&lt;/code&gt; environment variable to your absolute virtual environment path. If you are using virtualenvwrapper, just &amp;#8220;workon&amp;#8221; the virtual env you wish to install the packages in.&lt;/li&gt;
&lt;li&gt;Add to, or remove from &lt;code&gt;nonpip_packages&lt;/code&gt; and &lt;code&gt;pip_packages&lt;/code&gt; arrays in SETTINGS section of deploy_pysite.sh source code. Use the formats specified in comments.&lt;/li&gt;
&lt;li&gt;(Optional) The default directory where software is downloaded and built is &lt;code&gt;$HOME/downloads&lt;/code&gt;. This is set in &lt;code&gt;dg_downloads_dir&lt;/code&gt; in deploy_pysite.sh SETTINGS section. Feel free to modify it.&lt;/li&gt;
&lt;li&gt;Execute the script.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;#8217;s pretty much all there is to it.&lt;/p&gt;
&lt;p&gt;Not surprisingly, it proved usefulx100 immediatly. You see, I was following another guide from andrew.io on &lt;a href="http://andrew.io/weblog/2010/02/installing-django-with-virtualenv-on-dreamhost/"&gt;installing Django with virtualenv on dreamhost&lt;/a&gt; and low and behold the guide said to &amp;#8220;[i]nstall any packages you may need for your project.&amp;#8221; &lt;code&gt;./deploy_pysite.sh&lt;/code&gt; was all I had to say at that point &lt;img src='http://www.lifeofagizmo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; .&lt;/p&gt;
&lt;h2&gt;Script Source&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;ll post the source here, but it&amp;#8217;s probably best to just grab it from &lt;a href="http://github.com/hgezim/deploy_pysite"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #666666; font-style: italic;"&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# ensure that exceptions are treated as such and program exists!&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: #660033;"&gt;-e&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = deploy_pysite version 0.1.0&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = &lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = Created by Gezim Hoxha&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = License: GPL 2&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = If you're using virtualenv, this script will&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =     install PIP packages and even build &lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =     build packages from source then install&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =     them into your virtual environment.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = See SETTINGS section for instructions.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = July, 2010&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = TO DO&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = - &lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = REQUIRES&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = bash &amp;gt;=3.1&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = curl&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# = pip&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #007800;"&gt;usage&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;
USAGE: &lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;
Modify nonpip_packages and pip_packages according to your needs. These can be found in the source
of this script in SETTINGS section.&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;
Once SETTINGS have been modified, activate your virtual environment, then call this script. &lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;
If you're not using virtualenvwrapper, set VIRTUAL_ENV environment variable 
to your virtual environemt directory. &lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;
&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;
Also, you may want to ensure that the download dir is set to where you want it in SETTINGS section.
&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# ensure we're in a virtual environment&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$VIRTUAL_ENV&lt;/span&gt;&amp;quot;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;then&lt;/span&gt;
    &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #660033;"&gt;-e&lt;/span&gt; &lt;span style="color: #007800;"&gt;$usage&lt;/span&gt;
    &lt;span style="color: #7a0874; font-weight: bold;"&gt;exit&lt;/span&gt; &lt;span style="color: #000000;"&gt;5&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;fi&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# ====================SETTINGS=====================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# Directory to store source archives&lt;/span&gt;
&lt;span style="color: #007800;"&gt;dg_downloads_dir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$HOME&lt;/span&gt;/downloads&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# Add/remove non-pip packages you [don't] want to install here.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# IMPORTANT: Only .tar.gz packages are supported.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# You must add a package URL and function pair to nonpip_packages array.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# If no custom install is required (i.e. normal ./config, make, make install will do) leave &lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   function call empty. For example:&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   &amp;quot;http://www.example.com/pack.tar.gz&amp;quot; &amp;quot;&amp;quot;&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# If you need custom install calls, create a function that makes those calls in CUSTOM FUNCTIONS&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   area below. The function calls can include arguments.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   For example:&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   &amp;quot;http://www.example.com/pack02.tar.gz&amp;quot; &amp;quot;install_pack02&amp;quot;&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   Or with a function call argument:&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   &amp;quot;http://www.example.com/pack04.tar.gz&amp;quot; &amp;quot;install_package four&amp;quot;&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# MAKE SURE YOU USE QUOTES.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#&lt;/span&gt;
&lt;span style="color: #007800;"&gt;nonpip_packages&lt;/span&gt;=&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;
    &lt;span style="color: #ff0000;"&gt;&amp;quot;http://oligarchy.co.uk/xapian/1.0.21/xapian-core-1.0.21.tar.gz&amp;quot;&lt;/span&gt;
        &lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span style="color: #ff0000;"&gt;&amp;quot;http://oligarchy.co.uk/xapian/1.0.21/xapian-bindings-1.0.21.tar.gz&amp;quot;&lt;/span&gt;
        &lt;span style="color: #ff0000;"&gt;&amp;quot;function_xapian_bindings&amp;quot;&lt;/span&gt;
    &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# Add/remove pip packages you [don't] want to install here.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# Version is included to ensure you get the same packages&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   whenever you install.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# Example:&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#   &amp;quot;django&amp;quot; &amp;quot;1.2.1&amp;quot;&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# MAKE SURE YOU USE QUOTES.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#&lt;/span&gt;
&lt;span style="color: #007800;"&gt;pip_packages&lt;/span&gt;=&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;
    &lt;span style="color: #ff0000;"&gt;&amp;quot;django&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;1.2.1&amp;quot;&lt;/span&gt;
    &lt;span style="color: #ff0000;"&gt;&amp;quot;django-haystack&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;1.0.1-final&amp;quot;&lt;/span&gt;
    &lt;span style="color: #ff0000;"&gt;&amp;quot;xapian-haystack&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;1.1.3beta&amp;quot;&lt;/span&gt;
    &lt;span style="color: #ff0000;"&gt;&amp;quot;MySQL-python&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;1.2.3c1&amp;quot;&lt;/span&gt;
    &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================CUSTOM FUNCTIONS================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# You should use variables such as $VIRTUAL_ENV.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
function_xapian_bindings&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#123;&lt;/span&gt;
    .&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;configure &lt;span style="color: #660033;"&gt;--with-python&lt;/span&gt; &lt;span style="color: #007800;"&gt;XAPIAN_CONFIG&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$VIRTUAL_ENV&lt;/span&gt;/bin/xapian-config&amp;quot;&lt;/span&gt; &lt;span style="color: #660033;"&gt;--prefix&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$VIRTUAL_ENV&lt;/span&gt;&amp;quot;&lt;/span&gt;
    &lt;span style="color: #c20cb9; font-weight: bold;"&gt;make&lt;/span&gt;
    &lt;span style="color: #c20cb9; font-weight: bold;"&gt;make&lt;/span&gt; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;install&lt;/span&gt;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# ====================REAL CODE====================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# ===Don't touch unless you are sure you need to.==&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# =================================================&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# Create the downloads dir.&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# Nothing will happen if it already exists.&lt;/span&gt;
&lt;span style="color: #c20cb9; font-weight: bold;"&gt;mkdir&lt;/span&gt; &lt;span style="color: #660033;"&gt;-p&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$dg_downloads_dir&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #007800;"&gt;temp_file&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/tmp/&lt;span style="color: #007800;"&gt;$(basename $0)&lt;/span&gt;.$$.tmp&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# Build and install non-pip packages&lt;/span&gt;
build_install&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #007800;"&gt;i&lt;/span&gt;=&lt;span style="color: #000000;"&gt;0&lt;/span&gt;; i&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;${#nonpip_packages[@]}&lt;/span&gt;; i+=&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;do&lt;/span&gt;
        &lt;span style="color: #666666; font-style: italic;"&gt;#pip_install &amp;quot;${pip_packages[i]}&amp;quot; &amp;quot;${pip_packages[i+1]}&amp;quot;&lt;/span&gt;
        &lt;span style="color: #666666; font-style: italic;"&gt;#get package name&lt;/span&gt;
        &lt;span style="color: #007800;"&gt;package_name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;${nonpip_packages[i]##*/}&lt;/span&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color: #007800;"&gt;package_dir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;${package_name%.tar.gz}&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Installing &lt;span style="color: #007800;"&gt;$package_name&lt;/span&gt; to &lt;span style="color: #007800;"&gt;$VIRTUAL_ENV&lt;/span&gt; with...&amp;quot;&lt;/span&gt;
        &lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$dg_downloads_dir&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #666666; font-style: italic;"&gt;# Check if directory exists.&lt;/span&gt;
        &lt;span style="color: #666666; font-style: italic;"&gt;# -d test doesn't work on case insensitive FS's (e.g. OS X)&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$package_dir&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;/&lt;/span&gt;dev&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;null&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;then&lt;/span&gt;
            &lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$package_dir&lt;/span&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;elif&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt; &lt;span style="color: #660033;"&gt;-f&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$package_name&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;then&lt;/span&gt;
            &lt;span style="color: #666666; font-style: italic;"&gt;# if package is already downloaded&lt;/span&gt;
            &lt;span style="color: #c20cb9; font-weight: bold;"&gt;tar&lt;/span&gt; xzf &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$package_name&lt;/span&gt;&amp;quot;&lt;/span&gt;
            &lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$package_dir&lt;/span&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;else&lt;/span&gt;
            curl &lt;span style="color: #660033;"&gt;-sS&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;${nonpip_packages[i]}&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #660033;"&gt;-O&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;dev&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;null
            &lt;span style="color: #c20cb9; font-weight: bold;"&gt;tar&lt;/span&gt; xzf &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$package_name&lt;/span&gt;&amp;quot;&lt;/span&gt;
            &lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$package_dir&lt;/span&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;fi&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #666666; font-style: italic;"&gt;# if odd array index has no function, do a standard make&lt;/span&gt;
        &lt;span style="color: #666666; font-style: italic;"&gt;# Otherwise, run custom function.&lt;/span&gt;
        &lt;span style="color: #007800;"&gt;custom_function&lt;/span&gt;=&lt;span style="color: #800000;"&gt;${nonpip_packages[i+1]}&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$custom_function&lt;/span&gt;&amp;quot;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;then&lt;/span&gt;
            &lt;span style="color: #000000; font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: #660033;"&gt;-x&lt;/span&gt;
            .&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;configure &lt;span style="color: #660033;"&gt;--prefix&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$VIRTUAL_ENV&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$temp_file&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;
            &lt;span style="color: #c20cb9; font-weight: bold;"&gt;make&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$temp_file&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;
            &lt;span style="color: #c20cb9; font-weight: bold;"&gt;make&lt;/span&gt; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;install&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$temp_file&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;
            &lt;span style="color: #000000; font-weight: bold;"&gt;set&lt;/span&gt; +x
        &lt;span style="color: #000000; font-weight: bold;"&gt;else&lt;/span&gt;
            &lt;span style="color: #000000; font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: #660033;"&gt;-x&lt;/span&gt;
            &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$custom_function&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$temp_file&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;
            &lt;span style="color: #000000; font-weight: bold;"&gt;set&lt;/span&gt; +x
        &lt;span style="color: #000000; font-weight: bold;"&gt;fi&lt;/span&gt;
        &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;...done.&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #000000; font-weight: bold;"&gt;done&lt;/span&gt;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# Install pip packages&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# param: $1 is the package name&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# param: $2 is the package version&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;# The package version is required&lt;/span&gt;
&lt;span style="color: #666666; font-style: italic;"&gt;#  to ensure the exact setup is installed everytime.&lt;/span&gt;
pip_install&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt; &lt;span style="color: #007800;"&gt;$#&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;!&lt;/span&gt;= &lt;span style="color: #000000;"&gt;2&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;then&lt;/span&gt;
        &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;pip_install requires 2 arguments.&amp;quot;&lt;/span&gt;
        &lt;span style="color: #7a0874; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000;"&gt;25&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;fi&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Installing $1 to &lt;span style="color: #007800;"&gt;$VIRTUAL_ENV&lt;/span&gt; with...&amp;quot;&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: #660033;"&gt;-x&lt;/span&gt;
    pip &lt;span style="color: #c20cb9; font-weight: bold;"&gt;install&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;$1&amp;quot;&lt;/span&gt;==&lt;span style="color: #ff0000;"&gt;&amp;quot;$2&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;$temp_file&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;set&lt;/span&gt; +x
    &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;...done.&amp;quot;&lt;/span&gt;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #666666; font-style: italic;"&gt;# Now install the packages if they're enabled.&lt;/span&gt;
build_install
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #007800;"&gt;i&lt;/span&gt;=&lt;span style="color: #000000;"&gt;0&lt;/span&gt;; i&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;${#pip_packages[@]}&lt;/span&gt;; i+=&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;do&lt;/span&gt;
    pip_install &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;${pip_packages[i]}&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #007800;"&gt;${pip_packages[i+1]}&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;done&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #660033;"&gt;-e&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;Install was successful. See &lt;span style="color: #007800;"&gt;$temp_file&lt;/span&gt; for details.&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now, what was I doing?&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F07%2F07%2Fdeploying-websites-on-virtualenvs-with-deploy_pysite-sh%2F&amp;amp;linkname=deploying%20websites%20on%20virtualenvs%20with%20deploy_pysite.sh"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/BTIV3jiUg8g" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/07/07/deploying-websites-on-virtualenvs-with-deploy_pysite-sh/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/07/07/deploying-websites-on-virtualenvs-with-deploy_pysite-sh/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/07/07/deploying-websites-on-virtualenvs-with-deploy_pysite-sh/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Installing Python 2.6, virtualenv and virtualenvwrapper on Dreamhost]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/DpUXhfpdhK0/" />
		<id>http://www.lifeofagizmo.com/?p=248</id>
		<updated>2010-07-06T19:37:16Z</updated>
		<published>2010-07-06T19:37:16Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="dreamhost" /><category scheme="http://www.lifeofagizmo.com" term="python" /><category scheme="http://www.lifeofagizmo.com" term="python 2.6" /><category scheme="http://www.lifeofagizmo.com" term="virtualenv" /><category scheme="http://www.lifeofagizmo.com" term="virtualenvwrapper" />		<summary type="html"><![CDATA[I came across this excellent and very useful installation guide on installing python 2.6, virtualenv, and virtualenwrapper.]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/07/06/installing-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost/">&lt;p&gt;I came across this &lt;a href="http://andrew.io/weblog/2010/02/installing-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost/"&gt;excellent and very useful installation guide&lt;/a&gt; on installing python 2.6, virtualenv, and virtualenwrapper.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F07%2F06%2Finstalling-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost%2F&amp;amp;linkname=Installing%20Python%202.6%2C%20virtualenv%20and%20virtualenvwrapper%20on%20Dreamhost"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/DpUXhfpdhK0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/07/06/installing-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/07/06/installing-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/07/06/installing-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Recovering MySQL and MySQLdb (python module) after upgrading to Snow Leopard]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/lZ2ZEWO34OY/" />
		<id>http://www.lifeofagizmo.com/?p=236</id>
		<updated>2010-07-06T00:14:39Z</updated>
		<published>2010-07-06T00:12:19Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="programming" /><category scheme="http://www.lifeofagizmo.com" term="python" /><category scheme="http://www.lifeofagizmo.com" term="bugs" /><category scheme="http://www.lifeofagizmo.com" term="mysql" /><category scheme="http://www.lifeofagizmo.com" term="MySQLdb" /><category scheme="http://www.lifeofagizmo.com" term="Snow Leopard" /><category scheme="http://www.lifeofagizmo.com" term="upgrade" />		<summary type="html"><![CDATA[Ahh, that&#8217;s a nice and descriptive title. Needless to say, I had the darnest time doing this. Upgrading mysql was not too big of an issue, but getting MySQLdb to work was a whole other game. Anyway, here are the steps I took. The instructions for upgrading MySQL came from entropy.ch and are as follows: [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/07/05/recovering-mysql-and-mysqldb-python-module-after-upgrading-to-snow-leopard/">&lt;p&gt;Ahh, that&amp;#8217;s a nice and descriptive title.&lt;/p&gt;
&lt;p&gt;Needless to say, I had the darnest time doing this. Upgrading mysql was not too big of an issue, but getting MySQLdb to work was a whole other game.&lt;/p&gt;
&lt;p&gt;Anyway, here are the steps I took.&lt;br /&gt;
The instructions for upgrading MySQL came from &lt;a href="http://www.entropy.ch/software/MacOSx/mysql/"&gt;entropy.ch&lt;/a&gt; and are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Save your current database data before doing anything: &lt;code&gt;cd /usr/local/mysql; sudo tar -cvf /tmp/mysql-data.tar data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Then download the MySQL installer from the &lt;a href="http://dev.mysql.com/downloads/mysql/5.1.html"&gt;MySQL website&lt;/a&gt;. At first I chose to download &amp;#8220;Mac OS X ver. 10.6 (x86, 32-bit), DMG&amp;#8221; which, I believe, caused all my problems with MySQLdb. So &lt;strong&gt;download Mac OS X ver. 10.6 (x86, 64-bit), DMG &lt;/strong&gt; unless you know you have a 32 bit machine.&lt;/li&gt;
&lt;li&gt;Once downloaded, unpack and install the MySQL package and even the prefPane to make your life easier.&lt;/li&gt;
&lt;li&gt;To restore your old data, run this command: &lt;code&gt;cd /usr/local/mysql; sudo tar -xf /tmp/mysql-data.tar&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I&amp;#8217;m not sure if this is needed, in the attempt that worked, I followed the instructions to the dot so I did reboot my computer (although the MySQL install didn&amp;#8217;t require me to).&lt;/li&gt;
&lt;li&gt;Start MySQL either through the System Preferences (if you installed the prefPane above) or by running: &lt;code&gt;sudo /usr/local/mysql/bin/mysqld_safe&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;#8217;s all there was to installing MySQL. Note that in my system I didn&amp;#8217;t have to change the ownership of the database data when it was &amp;#8220;imported&amp;#8221; into the new install. If you have to do that (i.e. can&amp;#8217;t login with the usual username/password combo) see the instructions in the link I posted above.&lt;/p&gt;
&lt;p&gt;Now onto MySQLdb. These instructions are taken from &lt;a href="http://geert.vanderkelen.org/2009/09/mysql-python-and-macos-x-106-snow.html"&gt;Geert JM Vanderkelen&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download MySQL-python-1.2.3c1.tar.gz from the &lt;a href="http://pypi.python.org/pypi/MySQL-python/"&gt;Python Package Index&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Untar it and ensure &amp;#8220;/usr/local/mysql/bin&amp;#8221; is in your PATH, if not see the above link on how to add it.&lt;/li&gt;
&lt;li&gt;Run this command: &lt;code&gt;ARCHFLAGS="-arch x86_64" /usr/bin/python setup.py build&lt;/code&gt; (Ensure you don&amp;#8217;t have a 64 bit machine before changing it.)&lt;/li&gt;
&lt;li&gt;And finally, install it with the following command: &lt;code&gt;sudo /usr/bin/python setup.py install&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once all that is done. You can test it like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ python&lt;br /&gt;
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)&lt;br /&gt;
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin&lt;br /&gt;
Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import MySQLdb&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If that gives you no errors, you&amp;#8217;re set. Now get back to doing actual work &lt;img src='http://www.lifeofagizmo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; .&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F07%2F05%2Frecovering-mysql-and-mysqldb-python-module-after-upgrading-to-snow-leopard%2F&amp;amp;linkname=Recovering%20MySQL%20and%20MySQLdb%20%28python%20module%29%20after%20upgrading%20to%20Snow%20Leopard"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/lZ2ZEWO34OY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/07/05/recovering-mysql-and-mysqldb-python-module-after-upgrading-to-snow-leopard/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/07/05/recovering-mysql-and-mysqldb-python-module-after-upgrading-to-snow-leopard/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/07/05/recovering-mysql-and-mysqldb-python-module-after-upgrading-to-snow-leopard/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>gizmo</name>
						<uri>http://www.lifeofagizmo.com</uri>
					</author>
		<title type="html"><![CDATA[Speeding to your Lord]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LifeOfAGizmo/~3/UlW5BqCULK0/" />
		<id>http://www.lifeofagizmo.com/?p=232</id>
		<updated>2010-06-24T07:13:57Z</updated>
		<published>2010-06-24T07:13:57Z</published>
		<category scheme="http://www.lifeofagizmo.com" term="poetry" /><category scheme="http://www.lifeofagizmo.com" term="Reflection" /><category scheme="http://www.lifeofagizmo.com" term="Spirituality" />		<summary type="html"><![CDATA[Speeding to your Lord They speed by at 90 or more While the ants crawl on the floor They speed like from a roaring lion, tsunami or hell While the ants are just trying to dwell In an effort to achieve great &#8216;heights&#8217; The birds don&#8217;t share our &#8216;insights&#8217; The only heights they will gain; [...]]]></summary>
		<content type="html" xml:base="http://www.lifeofagizmo.com/2010/06/24/speeding-to-your-lord/">&lt;h1&gt;Speeding to your Lord&lt;/h1&gt;
&lt;p&gt;They speed by at 90 or more&lt;br /&gt;
While the ants crawl on the floor&lt;br /&gt;
They speed like from a roaring lion, tsunami or hell&lt;br /&gt;
While the ants are just trying to dwell&lt;br /&gt;
In an effort to achieve great &amp;#8216;heights&amp;#8217;&lt;br /&gt;
The birds don&amp;#8217;t share our &amp;#8216;insights&amp;#8217;&lt;br /&gt;
The only heights they will gain; 6 feet under in self disdain&lt;br /&gt;
They live with the Law as they should&lt;br /&gt;
Or much deeper than that if they would&lt;br /&gt;
In their obedience they don&amp;#8217;t fall behind&lt;br /&gt;
Oh mankind, why don&amp;#8217;t you live with your Lord in mind?&lt;/p&gt;
&lt;p&gt;The One who Created, Proportioned and more&lt;br /&gt;
This world for us to adore&lt;br /&gt;
Adore, adore but not just that&lt;br /&gt;
Lest the reason we&amp;#8217;re created for, we forget&lt;br /&gt;
&amp;#8220;I&amp;#8217;ve not created man and jinn except to worship Me[*]&amp;#8221;&lt;br /&gt;
What&amp;#8217;s holding you back my dear Akhi[**]?&lt;/p&gt;
&lt;p&gt;* &lt;a href="http://allahsquran.com/read/verses.php?ch=51" target="_blank"&gt;Quran 51:56&lt;/a&gt;.&lt;br /&gt;
**Arabic word for brother.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.lifeofagizmo.com%2F2010%2F06%2F24%2Fspeeding-to-your-lord%2F&amp;amp;linkname=Speeding%20to%20your%20Lord"&gt;&lt;img src="http://www.lifeofagizmo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/&gt;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeOfAGizmo/~4/UlW5BqCULK0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.lifeofagizmo.com/2010/06/24/speeding-to-your-lord/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.lifeofagizmo.com/2010/06/24/speeding-to-your-lord/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.lifeofagizmo.com/2010/06/24/speeding-to-your-lord/</feedburner:origLink></entry>
	</feed>
