<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GString *blog = g_string_new(&#34;Hacking&#34;); &#187; Python</title>
	<atom:link href="http://gabrielfalcao.com/category/programming/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://gabrielfalcao.com</link>
	<description>Hacking for a better world</description>
	<lastBuildDate>Thu, 21 Jan 2010 10:59:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>New projects + agile = releases</title>
		<link>http://gabrielfalcao.com/2009/07/05/new-projects-agile-releases/</link>
		<comments>http://gabrielfalcao.com/2009/07/05/new-projects-agile-releases/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 20:50:31 +0000</pubDate>
		<dc:creator>Gabriel Falcão</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://gabrielfalcao.com/?p=113</guid>
		<description><![CDATA[When I lived in Belo Horizonte/MG, I used to make hack parties with some friends of mine (nothing to say about all those pizzas and beer).
The hack parties had no specific goal, but a main idea: Hack some free software, and share the knowledge.
Many of us, but specifically Lincoln and I, used to create new [...]]]></description>
			<content:encoded><![CDATA[<p>When I lived in Belo Horizonte/MG, I used to make hack <a href="http://leoserra.iaaeee.org/">parties</a> <a href="http://lincoln.alfaiati.net/">with</a> <a href="http://cascardo.info/">some</a> <a href="http://blog.kov.eti.br/">friends</a> <a href="http://fujii.iaaeee.org/diario/">of</a> <a href="http://metaldot.alucinados.com/">mine</a> (nothing to say about all those pizzas and beer).</p>
<p>The hack parties had no specific goal, but a main idea: Hack some free software, and share the knowledge.</p>
<p>Many of us, but specifically Lincoln and I, used to create new projects in every hack party,but only a handful of those were actually released. It was often matter for jokes like: &#8220;Oh, you are up to raise the &#8220;too many projects&#8221; exception&#8221;.</p>
<p>I have two words for that fact: &#8220;not agile&#8221;.</p>
<p>Our projects were often <a href="http://en.wikipedia.org/wiki/Proof_of_concept">POCs</a>, and we had no culture of TDD, short releases and so on.</p>
<p>But since I started to work at <a href="http://globo.com">Globo.com</a>, I learned so much about agile, specially Scrum. And some months ago I&#8217;ve just accomplished what I call as &#8220;agile feeling&#8221;.</p>
<p>I mean, it&#8217;s a feeling that I can deliver software with quality in a short period of time.</p>
<p>But how ?</p>
<p>The idea is quite simple, you just have to follow some principles:</p>
<h2>Think simple</h2>
<p>This basically means focusing at the problem at hand, never trying to solve future problems you don&#8217;t have. Most of the time the problems your foresaw will never happen, yet you spent a lot of time preparing for them.</p>
<h2>Test before programming</h2>
<p>Write tests for small parts of your software, they will be very modular, and you will get a trust-able software, and I can assure you that you will be 100% able to embrace the changes.</p>
<h2>Release fully functional versions, with simple features</h2>
<p>As human beings, we want to embrace all possibilities and solve all possible problems at once.</p>
<p>But this is not agile at all. Talk to your client, be pragmatic, he will like to listen the truth: &#8220;You can not ship a full-featured final version of software within the term. But you can totally ship a primary version, fully functional, with all the basic needs of the client. Keep improving the software in next releases&#8221;</p>
<p>I tried to summarize those thoughts, but I need blog posts for each one.</p>
<h1>Applying those thoughts to personal projects</h1>
<p>As I said, I have unfinished projects, and they are still unfinished, mostly because were started with a non-agile approach, and I can&#8217;t get interested to finish them.</p>
<p>But there are a few projects I worked in, and others I am the creator. For instance:</p>
<ul>
<li>Dead Parrot, a pythonic RESTFul framework django-based. Is on release 0.1-hellopolly, being used within some globo.com projects.</li>
<li>Ma-Chérie, a simple filesystem-based web application to navigate through pictures. Current release: 0.1</li>
<li>Sponge, a tiny web framework built on top of CherryPy and used Genshi as default template language. Sponge is the base of Ma-Chérie. Current release: 0.1</li>
<li>Pyccuracy, s BDD acceptance testing tool. <a href="http://tinyurl.com/heynemann">Heynemann</a> started that project, as a comitter, I worked in the biggest refactoring. Current release 1.0.3-viagra</li>
<li>Sleepy, is a crude, slow and rough template language, 100% based in regular expressions (which mades sleepy so slow). Actually I do not plan release it by now,  I am just having some proofs of concept of how possible is to write a template language 100% regex based, just with TDD.</li>
</ul>
<p>All projects above, except Sleepy, were released as well, all them were developed with TDD and have  a good code coverage.</p>
<p>But the big deal is that, actually they will never get finished, for a simple reason. They will be in continuous development and continuous released as well.</p>
<p>By the way, if you want to contribute, just go to <a href="https://github.com/gabrielfalcao">my github</a> profile and check them out.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrielfalcao.com/2009/07/05/new-projects-agile-releases/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hosting and deploying django apps on Dreamhost</title>
		<link>http://gabrielfalcao.com/2008/12/02/hosting-and-deploying-django-apps-on-dreamhost/</link>
		<comments>http://gabrielfalcao.com/2008/12/02/hosting-and-deploying-django-apps-on-dreamhost/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 12:12:00 +0000</pubDate>
		<dc:creator>gabriel</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://gabrielfalcao.com/?p=10</guid>
		<description><![CDATA[About two years ago, I&#8217;ve signed up to Dreamhost. My goals were and still being to host my personal projects, websites and so on.
Once I am a Django web developer, one of my first actions were to create a django deployment setup, good and flexible enough. The time passed on and have been got new [...]]]></description>
			<content:encoded><![CDATA[<p>About two years ago, I&#8217;ve signed up to Dreamhost. My goals were and still being to host my personal projects, websites and so on.</p>
<p>Once I am a <a href="http://www.djangoproject.com/">Django</a> web developer, one of my first actions were to create a django deployment setup, good and flexible enough. The time passed on and have been got new experiences, and the best desision, i think, was to create a new python sandbox, i mean, a customized python environment.</p>
<h2>How is it possible ?</h2>
<p>Simple! Just compiling python from scratch, with a fake root path (a prefix)</p>
<p>Anyway, the deployment process involves more variables, like setting both htaccess and dispatch files for each project, installing some basic modules such <a href="http://www.pythonware.com/products/pil/">PIL</a> and <a href="http://sourceforge.net/projects/mysql-python/">MySQL</a> and so on&#8230;</p>
<p>So, i ever wanted to create a super duper script to do all that &#8220;dirty&#8221; work. And i did it last weekend!</p>
<p>I were working ia a freelance job and decided to create a subdomain to host test instance of them.</p>
<p>A new sandbox, ready to make my tests to create the super script.</p>
<p>So folks, i present you the brand new: <strong>django_dreamhost.sh</strong> <img src='http://gabrielfalcao.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>It&#8217;s composed by 4 files:</p>
<ul>
<li><strong>django_dreamhost.sh</strong> itself</li>
<li><strong>djangify.template</strong> &#8211; a template with will become a script to setup new projects (htaccess and dipatch files, for instance)</li>
<li><strong>htaccess.template</strong> &#8211; a template that will become the .htaccess of each project of yours</li>
<li><strong>dispatch.template</strong> &#8211; will become the dispatch.fcgi for your projects as well</li>
</ul>
<p>&#8220;But do i need to download all them ?&#8221;, of course NO!</p>
<p>You just download the main script, and he will do all do hard work!</p>
<p>&#8220;I wanna contribute, modify or do anything with that script, can I ?&#8221;, of course yes! All parts of the script are GPLv2 +</p>
<p>You can also always get the development version through <a href="http://git.or.cz/">git</a> repository:</p>
<p><strong>git clone http://git.nacaolivre.org/django_dreamhost</strong></p>
<p>Don&#8217;t want to get all code, just the script ?</p>
<p>Download it at: <a href="http://gnu.gabrielfalcao.com/django_dreamhost/django_dreamhost.sh"><strong>http://gnu.gabrielfalcao.com/django_dreamhost/django_dreamhost.sh</strong></a></p>
<h2><strong>What does that script do ?</strong></h2>
<p>He will do the following steps:</p>
<ol>
<li>Download Python, Django, Python-setuptools, Python-fastcgi to a directory called downloads</li>
<li>Extract all</li>
<li>Create a local root at $HOME/.myroot and the subdirs etc and usr</li>
<li>Set the new bin path to you global path through bashrc and bash_profile</li>
<li>Compile and install python to the new prefix: $HOME/.myroot/usr</li>
<li>Install Django, rename django-admin.py to django-admin</li>
<li>Setup your bash-completion to support django scripts</li>
<li>Install the python modules above with the new python</li>
<li>Install PIL and MYSQL modules through easy_install (setuptools)</li>
<li>Download the template scripts to $HOME/projects/script_templates</li>
<li>Replace the custom tags in templates</li>
<li>Move the djangify.template to the new bin PATH: $HOME/usr/bin and give it execution permission</li>
</ol>
<p>I thinks it&#8217;s all.</p>
<p>I currently use <a href="http://www.nongnu.org/fab/">Fabric</a> to help on deployment, and i have a quite smart basic setup for it to work with this dreamhost django environment, but it will be approached in the next blog post <img src='http://gabrielfalcao.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>See you, folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrielfalcao.com/2008/12/02/hosting-and-deploying-django-apps-on-dreamhost/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
