<?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>Henrique Bastos.NET &#187; English</title>
	<atom:link href="http://henriquebastos.net/category/en_us/feed/" rel="self" type="application/rss+xml" />
	<link>http://henriquebastos.net</link>
	<description></description>
	<lastBuildDate>Wed, 01 Sep 2010 15:07:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>PyCon, Python and Open Source community on FLOSS Weekly</title>
		<link>http://henriquebastos.net/2010/02/09/pycon-python-and-open-source-community-on-floss-weekly/</link>
		<comments>http://henriquebastos.net/2010/02/09/pycon-python-and-open-source-community-on-floss-weekly/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 23:52:25 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Português]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[entrevista]]></category>
		<category><![CDATA[FLOSS Weekly]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=603</guid>
		<description><![CDATA[This next wednesday, Feb 10th at 1:30pm PST (7:30pm in Rio de Janeiro) &#8211; I&#8217;ll have the pleasure to join Randal Schwartz and Leo Laporte on the FLOSS Weekly show. This show will be about Python and Open Source community, and I&#8217;ll talk about the upcoming PyCon in Atlanta. Join us at Live TWiT TV. [...]]]></description>
			<content:encoded><![CDATA[<p>This next wednesday, Feb 10th at 1:30pm PST (7:30pm in Rio de Janeiro) &#8211; I&#8217;ll have the pleasure to join <a href="http://www.stonehenge.com/merlyn/" onclick="pageTracker._trackPageview('/outgoing/www.stonehenge.com/merlyn/?referer=');">Randal Schwartz</a> and <a href="http://leoville.com/" onclick="pageTracker._trackPageview('/outgoing/leoville.com/?referer=');">Leo Laporte</a> on the <a href="http://twit.tv/FLOSS" onclick="pageTracker._trackPageview('/outgoing/twit.tv/FLOSS?referer=');">FLOSS Weekly</a> show.</p>
<p>This show will be about <a href="http://python.org" onclick="pageTracker._trackPageview('/outgoing/python.org?referer=');">Python</a> and <a href="http://www.opensource.org" onclick="pageTracker._trackPageview('/outgoing/www.opensource.org?referer=');">Open Source</a> community, and I&#8217;ll talk about the upcoming <a href="http://us.pycon.org" onclick="pageTracker._trackPageview('/outgoing/us.pycon.org?referer=');">PyCon in Atlanta</a>.</p>
<p>Join us at <a href="http://live.twit.tv/" onclick="pageTracker._trackPageview('/outgoing/live.twit.tv/?referer=');">Live TWiT TV</a>.</p>
<hr />
<p>Nesta próxima quarta-feira, dia 10 de fevereiro às 19:30, horário de Brasília &#8211; 13:30 horário do Pacífico &#8211; eu terei o prazer de participar da gravação do <a href="http://twit.tv/FLOSS" onclick="pageTracker._trackPageview('/outgoing/twit.tv/FLOSS?referer=');">FLOSS Weekly</a> com <a href="http://www.stonehenge.com/merlyn/" onclick="pageTracker._trackPageview('/outgoing/www.stonehenge.com/merlyn/?referer=');">Randal Schwartz</a> e <a href="http://leoville.com/" onclick="pageTracker._trackPageview('/outgoing/leoville.com/?referer=');">Leo Laporte</a>.</p>
<p>Neste show falaremos sobre comunidades <a href="http://python.org.br" onclick="pageTracker._trackPageview('/outgoing/python.org.br?referer=');">Python</a> e <a href="http://pt.wikipedia.org/wiki/Código_aberto" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/C_digo_aberto?referer=');">Open Source</a>, e eu vou falar sobre a <a href="http://us.pycon.org" onclick="pageTracker._trackPageview('/outgoing/us.pycon.org?referer=');">PyCon em Atlanta</a> que acontecerá na próxima semana.</p>
<p>Participe conosco em <a href="http://live.twit.tv/" onclick="pageTracker._trackPageview('/outgoing/live.twit.tv/?referer=');">Live TWiT TV</a>.</p>
<p>Até lá!</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2010/02/09/pycon-python-and-open-source-community-on-floss-weekly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adding SVG support to Sphinx&#8217;s Graphviz extension</title>
		<link>http://henriquebastos.net/2009/11/30/adding-svg-support-to-sphinxs-graphviz-extension/</link>
		<comments>http://henriquebastos.net/2009/11/30/adding-svg-support-to-sphinxs-graphviz-extension/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 05:01:42 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Português]]></category>
		<category><![CDATA[graphviz]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sphinx]]></category>
		<category><![CDATA[svg]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=500</guid>
		<description><![CDATA[Sphinx has a few built-in extensions to take your documentation one step further. Among all, I&#8217;ve been finding the Graphviz extension very useful. It enables the use of DOT language to describe a graph that will be converted into a PNG image by Graphviz. For some reason, the Graphviz version installed on my Mac is [...]]]></description>
			<content:encoded><![CDATA[<p><a title="The Python documentation tool" href="http://sphinx.pocoo.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sphinx.pocoo.org/?referer=');">Sphinx</a> has a few built-in extensions to take your documentation one step further. Among all, I&#8217;ve been finding the <a title="Graph Software Visualizer" href="http://www.graphviz.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/?referer=');">Graphviz</a> extension very useful. It enables the use of <a title="Graph description language." href="http://www.graphviz.org/doc/info/lang.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/doc/info/lang.html?referer=');">DOT language</a> to describe a graph that will be converted into a <a title="Learn mode about Portable Network Graphics" href="http://en.wikipedia.org/wiki/PNG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/PNG?referer=');">PNG</a> image by <a title="Graph Software Visualizer" href="http://www.graphviz.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/?referer=');">Graphviz</a>.</p>
<p>For some reason, the <a title="Graph Software Visualizer" href="http://www.graphviz.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/?referer=');">Graphviz</a> version installed on my <a title="Highly recommended!" href="http://apple.com/macbookpro" target="_blank" onclick="pageTracker._trackPageview('/outgoing/apple.com/macbookpro?referer=');">Mac</a> is generating corrupted <a title="Learn mode about Portable Network Graphics" href="http://en.wikipedia.org/wiki/PNG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/PNG?referer=');">PNG</a> files. Fortunately, it supports many other formats including <a title="Learn more about Scalable Vectorial Graphics" href="http://en.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/SVG?referer=');">SVG</a> which has the greatest results.<span id="more-500"></span></p>
<p>To add <a title="Learn more about Scalable Vectorial Graphics" href="http://en.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/SVG?referer=');">SVG</a> format support into <a title="The built-in extension" href="http://sphinx.pocoo.org/ext/graphviz.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sphinx.pocoo.org/ext/graphviz.html?referer=');">sphinx.ext.graphviz</a>, I had to do a little refactoring:</p>
<ol>
<li>Moved the default <em>hardcoded</em> <a title="Learn mode about Portable Network Graphics" href="http://en.wikipedia.org/wiki/PNG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/PNG?referer=');">PNG</a> format to a configuration variable named <strong>graphviz_output_format</strong>;</li>
<li>Render the <strong>object</strong> tag to display <a title="Learn more about Scalable Vectorial Graphics" href="http://en.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/SVG?referer=');">SVG</a> files properly on <a href="http://www.mozilla.com/firefox" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.mozilla.com/firefox?referer=');">Firefox</a> and <a href="http://www.apple.com/safari/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.apple.com/safari/?referer=');">Safari</a>.</li>
</ol>
<p>I had to use the <strong>object</strong> tag because Firefox can&#8217;t render  <a title="Learn more about Scalable Vectorial Graphics" href="http://en.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/SVG?referer=');">SVG</a> with the <strong>img</strong> tag. <a href="http://e.metaclarity.org/52/cross-browser-svg-issues/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/e.metaclarity.org/52/cross-browser-svg-issues/?referer=');">Read more about cross browsing SVG issues</a>.</p>
<p>To use it, follow these steps:</p>
<ol>
<li>Create an <strong>_ext</strong> subdirectory on your <a title="The Python documentation tool" href="http://sphinx.pocoo.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sphinx.pocoo.org/?referer=');">Sphinx</a> project;</li>
<li><a href="http://gist.github.com/245237" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/245237?referer=');">Download the modified extension</a> from <a href="http://gist.github.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/?referer=');">Gist</a> and save it to <strong>_ext</strong>;</li>
<li>Edit your <strong>config.py</strong> and make sure it contains the below lines;</li>
</ol>
<pre style="margin-left: 1.2em; font-size: 1.3em; margin-top: 1.2em; margin-bottom: 1.2em;">sys.path.append(os.path.abspath('_ext'))
extensions = ['graphviz_svg']
graphviz_output_format = 'svg'</pre>
<hr style="margin-bottom: 1.1em;" />
O <a title="Ferramenta para gerar documentação" href="http://sphinx.pocoo.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sphinx.pocoo.org?referer=');">Sphinx</a> vem com algumas extensões para tornar o resultado final da documentação ainda mais interessante. A extensão do <a title="Software de visualização de grafos" href="http://www.graphviz.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/?referer=');">Graphviz</a> vem se revelando bastante útil para mim. Ela possibilita a descrição de um grafo em <a title="Linguagem de descrição de grafos." href="http://www.graphviz.org/doc/info/lang.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/doc/info/lang.html?referer=');">linguagem DOT</a>, que no documento final será substituída por uma imagem <a title="Leia mais sobre Portable Network Graphics" href="http://pt.wikipedia.org/wiki/PNG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/PNG?referer=');">PNG</a> gerada pelo <a title="Software de visualização de grafos" href="http://www.graphviz.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/?referer=');">Graphviz</a>.</p>
<p>Por algum motivo, todos os arquivos <a title="Leia mais sobre Portable Network Graphics" href="http://pt.wikipedia.org/wiki/PNG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/PNG?referer=');">PNG</a> gerados pela versão do <a title="Software de visualização de grafos" href="http://www.graphviz.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/?referer=');">Graphviz</a> instalada no meu <a title="Recomendo fortemente!" href="http://apple.com/macbookpro" target="_blank" onclick="pageTracker._trackPageview('/outgoing/apple.com/macbookpro?referer=');">Mac</a> ficam corrompidos. Felizmente o <a title="Software de visualização de grafos" href="http://www.graphviz.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.graphviz.org/?referer=');">Graphviz</a> suporta outros formatos, dentre os quais o <a title="Leia mais sobre Scalable Vectorial Graphics" href="http://pt.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/SVG?referer=');">SVG</a> tem um resultado simplesmente fantástico.</p>
<p style="text-align: left;">Para adicionar o suporte ao formato <a title="Leia mais sobre Scalable Vectorial Graphics" href="http://pt.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/SVG?referer=');">SVG</a> na extensão <a title="A extensão padrão" href="http://sphinx.pocoo.org/ext/graphviz.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sphinx.pocoo.org/ext/graphviz.html?referer=');">sphinx.ext.graphviz</a>, fiz uma simples refatoração no código para:</p>
<ol>
<li>Mover a definição padrão do formato <a title="Leia mais sobre Portable Network Graphics" href="http://pt.wikipedia.org/wiki/PNG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/PNG?referer=');">PNG</a> que estava <em>hardcoded</em> para a opção de configuração <strong>graphviz_output_format</strong>;</li>
<li>Adicionar a renderização da tag <strong>object</strong> para exibir a imagem <a title="Leia mais sobre Scalable Vectorial Graphics" href="http://pt.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/SVG?referer=');">SVG</a> corretamente no <a href="http://www.mozilla.com/firefox" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.mozilla.com/firefox?referer=');">Firefox</a> e no <a href="http://www.apple.com/safari/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.apple.com/safari/?referer=');">Safari</a>.</li>
</ol>
<p>Precisei usar a tag <strong>object</strong>, pois o <a href="http://www.mozilla.com/firefox" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.mozilla.com/firefox?referer=');">Firefox</a> não exibe <a title="Leia mais sobre Scalable Vectorial Graphics" href="http://pt.wikipedia.org/wiki/SVG" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pt.wikipedia.org/wiki/SVG?referer=');">SVG</a> através da tag <strong>img</strong>. <a title="Como usar SVG em todos os browsers." href="http://e.metaclarity.org/52/cross-browser-svg-issues/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/e.metaclarity.org/52/cross-browser-svg-issues/?referer=');">Leia mais sobre esse inconveniente</a>.</p>
<p>Para usar a extensão, basta:</p>
<ol>
<li>Criar um subdiretório <strong>_ext</strong> no seu projeto <a title="Ferramenta para gerar documentação" href="http://sphinx.pocoo.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sphinx.pocoo.org/?referer=');">Sphinx</a>;</li>
<li>Fazer <a href="http://gist.github.com/245237" target="_blank" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/245237?referer=');">download do código da extensão modificada</a> no <a href="http://gist.github.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/?referer=');">Gist</a> e salvá-lo no diretório <strong>_ext</strong>;</li>
<li>Editar o <strong>config.py</strong> do seu projeto <a title="Ferramenta para gerar documentação" href="http://sphinx.pocoo.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sphinx.pocoo.org/?referer=');">Sphinx</a> para conter as linhas abaixo:</li>
</ol>
<pre style="margin-left: 1.2em; font-size: 1.3em; margin-top: 1.2em; margin-bottom: 1.2em;">sys.path.append(os.path.abspath('_ext'))
extensions = ['graphviz_svg']
graphviz_output_format = 'svg'</pre>
<p>[]&#8216;s!</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/11/30/adding-svg-support-to-sphinxs-graphviz-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pragmatic Virtualenvwrapper with a subshell sandbox</title>
		<link>http://henriquebastos.net/2009/11/16/pragmatic-virtualenvwrapper-with-a-subshell-sandbox/</link>
		<comments>http://henriquebastos.net/2009/11/16/pragmatic-virtualenvwrapper-with-a-subshell-sandbox/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 03:55:42 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[subshell]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[virtualenv]]></category>
		<category><![CDATA[virtualenvwrapper]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=484</guid>
		<description><![CDATA[Virtualenvwrapper makes working with Virtualenv a real pleasure. But for me it wasn&#8217;t enough, just because I&#8217;m that lazy. My idea was to type one command and get right into the repository directory. I&#8217;d like it to happen within a subshell so I would not need to deactivate the virtual environment. All I would need [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Extensions to Ian Bicking's virtualenv tool." href="http://www.doughellmann.com/projects/virtualenvwrapper/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.doughellmann.com/projects/virtualenvwrapper/?referer=');">Virtualenvwrapper</a> makes working with <a title="Virtualenv is a tool to create isolated Python environments." href="http://pypi.python.org/pypi/virtualenv" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pypi.python.org/pypi/virtualenv?referer=');">Virtualenv</a> a real pleasure. But for me it wasn&#8217;t enough, just because I&#8217;m that lazy.</p>
<p>My idea was to type <em>one command</em> and get right into the <em>repository directory</em>. I&#8217;d like it to happen within a <a title="Learn more about it." href="http://tldp.org/LDP/abs/html/subshells.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/tldp.org/LDP/abs/html/subshells.html?referer=');">subshell</a> so I would not need to <code>deactivate</code> the virtual environment. All I would need to do is press <code>CTRL+D</code> to exit the <a title="Learn more about it." href="http://tldp.org/LDP/abs/html/subshells.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/tldp.org/LDP/abs/html/subshells.html?referer=');">subshell</a> and close my sandbox.<span id="more-484"></span></p>
<p>To accomplish it, I managed to write this scratch shell script function:</p>
<pre>function work () {
    typeset env_name="$1"
    if [ "$env_name" = "" ]
    then
        virtualenvwrapper_show_workon_options
        return 1
    fi

    virtualenvwrapper_verify_workon_environment $env_name || return 1

    echo "source ~/.profile
          workon $env_name
          cdvirtualenv
          cd src" &gt; ~/.virtualenvrc

    bash --rcfile ~/.virtualenvrc
}</pre>
<p>Having <a title="Virtualenv is a tool to create isolated Python environments." href="http://pypi.python.org/pypi/virtualenv" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pypi.python.org/pypi/virtualenv?referer=');">virtualenv</a> and <a title="Extensions to Ian Bicking's virtualenv tool." href="http://www.doughellmann.com/projects/virtualenvwrapper/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.doughellmann.com/projects/virtualenvwrapper/?referer=');">virtualenvwrapper</a> installed on your system, just <strong>append</strong> this function <strong>to the end</strong> of your <code>.profile</code> or <code>.bash</code>. And type: <code>work <em>envname</em></code>.</p>
<p>[]&#8216;s!</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/11/16/pragmatic-virtualenvwrapper-with-a-subshell-sandbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The make it work, make it right, make it fast misconception</title>
		<link>http://henriquebastos.net/2009/08/18/the-make-it-work-make-it-right-make-it-fast-misconception/</link>
		<comments>http://henriquebastos.net/2009/08/18/the-make-it-work-make-it-right-make-it-fast-misconception/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 12:39:19 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=362</guid>
		<description><![CDATA[On the agile way of doing software development, one of developer&#8217;s favorite mantras is: Make it Work, Make it Right, Make it Fast. However, it&#8217;s not uncommon to see people complaining that by following this directions, their project never get to the make it fast stage. That happens because of a misconception where people treats [...]]]></description>
			<content:encoded><![CDATA[<p>On the <a title="Read the manifesto." href="http://agilemanifesto.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/agilemanifesto.org?referer=');">agile</a> way of doing software development, one of developer&#8217;s favorite mantras is: <strong>Make it Work, Make it Right, Make it Fast</strong>.</p>
<p>However, it&#8217;s not uncommon to see people complaining that by following this directions, their project never get to the <strong>make it fast stage</strong>. That happens because of a <em>misconception</em> where people treats these three steps as <em>isolated actions</em> of a project. And they are three stages of <strong>one</strong> development task.</p>
<p><span id="more-362"></span></p>
<p>While you start a development task, you have an early stage where you <em>need</em> to explore possibilities. You don&#8217;t quite know what is the best approach but have some ideas. If during that stage you go big looking for <em>THE</em> piece of code that will fit the problem perfectly, you will end up spending a considerable amount of time on that quest. That&#8217;s because you have <em>too many uncertainties</em> on your solution and you need to <em>discover</em> through experimentation to <em>reduce</em> those uncertainties to a comfortable amount so you can focus and implement your code. This experimentation process is the <strong>Make it Work</strong> stage where you just code to achieve the desired behavior or effect.</p>
<p>Just after that, you&#8217;d probably <em>discovered</em> what kind of libraries you will use, how the rest of your code base interacts with this new behavior, etc. That&#8217;s when you go for <em>refactoring</em> and <strong>Make it Right</strong>. Now you dry things out and organize your code properly to have a good design and be easily maintainable.</p>
<p>As Software Developers, we know it&#8217;s true that <em>restrictions are everywhere</em>. And for this we know that there are <em>tradeoffs</em> between <em>design</em> and <em>performance</em>. This is when you go for the last stage where you <strong>Make it Fast</strong> by optimizing your code to achieve the needed performance. By doing this at this point, you will see that it will require much less effort. That&#8217;s because you can focus on the small 20% of code you can tune to end up with a 80% performance increase.</p>
<p>Ending all those three stages, you will reach the end of your development task and can integrate this code into your project, delivering the desired value to your <a title="Learn more on Wikipedia." href="http://en.wikipedia.org/wiki/Scrum_(development) " target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Scrum_development?referer=');">Product Owner</a>.</p>
<p>If you ignore one of those steps while you&#8217;re coding that <strong>one</strong> task, you will probably suffer the effects of doing <em>big design up front</em>, <em>increasing technical debit</em>, and having a <em>awful system performance</em>.</p>
<p>That said, a last piece of advice: Be careful not to compensate bad time estimations delivering code that only <em>&#8220;works&#8221;</em>. If you do it as a rule, I assure you that you will end up with some <em>non-tested spaghetti project</em> where your cost of change will be so high that can put your business at risk and make your <em>&#8220;agile&#8221;</em> useless.</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/08/18/the-make-it-work-make-it-right-make-it-fast-misconception/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Be aware of the Embrace the Change Myth</title>
		<link>http://henriquebastos.net/2009/08/01/be-aware-of-the-embrace-the-change-myth/</link>
		<comments>http://henriquebastos.net/2009/08/01/be-aware-of-the-embrace-the-change-myth/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 15:55:24 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=339</guid>
		<description><![CDATA[The ability of &#8220;embrace the changes&#8221; is one of THE key values on selling Agile. While talking about the agile values. It&#8217;s common to see manager&#8217;s eyes glowing when you reach the concept of Embracing the Changes. Unfortunately it&#8217;s also common that they end up with the wrong idea of how to put it into [...]]]></description>
			<content:encoded><![CDATA[<p>The ability of <em>&#8220;embrace the changes&#8221;</em> is one of <strong>THE</strong> key values on <em>selling</em> <a title="Lern more about it." href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Agile_software_development?referer=');">Agile</a>.</p>
<p>While talking about the <a title="Read the manifesto." href="http://agilemanifesto.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/agilemanifesto.org?referer=');">agile values</a>. It&#8217;s common to see manager&#8217;s eyes glowing when you reach the concept of Embracing the Changes. Unfortunately it&#8217;s also common that they end up with the wrong idea of how to put it into actions.</p>
<p><span id="more-339"></span>I heard of stories where managers misunderstood the concept, and pressured by external forces, used it as a mantra to turn developers into <em>firefighters</em>. They needed to &#8220;embrace the change&#8221; and fight more than one firestorm at the same time, having their work interrupted by the manager whenever flames gained height.</p>
<p>He was doomed from the beginning! What about really stop the fire? What about not setting the fire in the first place? The result could not be different. His got <strong>everything</strong> burned out saying &#8220;Agile doesn&#8217;t work! It made my team unproductive&#8221;.</p>
<p>If you are a manager, don&#8217;t fool yourself! You can&#8217;t be agile buying a box. The traditional culture and miss-behavior affects you as well as your team. Revalue your truths and establish a better way of making things happen. Enjoy the ride with them.</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/08/01/be-aware-of-the-embrace-the-change-myth/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kent Beck talking about Ease at Work</title>
		<link>http://henriquebastos.net/2009/06/04/kent-beck-talking-about-ease-at-work/</link>
		<comments>http://henriquebastos.net/2009/06/04/kent-beck-talking-about-ease-at-work/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 02:07:32 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=271</guid>
		<description><![CDATA[Today I came across an old talk Kent Beck gave sometime near mid 2006 entitled &#8220;Ease at Work&#8221;. More than speak about professional behavior, Kent Beck describes by example the psychological structure of a software developer at work. In a more deep sense, this is a talk about self-awareness, getting real, and getting things done. [...]]]></description>
			<content:encoded><![CDATA[<p>Today I came across an old talk <a title="Know more about Kent on Wikipedia." href="http://en.wikipedia.org/wiki/Kent_Beck" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Kent_Beck?referer=');">Kent Beck</a> gave sometime near mid 2006 entitled  <em>&#8220;Ease at Work&#8221;</em>.</p>
<p>More than speak about professional behavior, <a title="Know more about Kent on Wikipedia." href="http://en.wikipedia.org/wiki/Kent_Beck" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Kent_Beck?referer=');">Kent Beck</a> describes by <strong>example</strong> the psychological structure of a software developer at work.</p>
<p>In a more deep sense, this is a talk about self-awareness, getting real, and getting things done. So even if you&#8217;re not a programmer, I recommend it.<span id="more-271"></span></p>
<p><center><br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/p/3CDEF6F7E1076B7E&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/p/3CDEF6F7E1076B7E&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/06/04/kent-beck-talking-about-ease-at-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bibliography gives you credibility</title>
		<link>http://henriquebastos.net/2009/06/02/bibliography-gives-you-credibility/</link>
		<comments>http://henriquebastos.net/2009/06/02/bibliography-gives-you-credibility/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 22:56:02 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[bloggers]]></category>
		<category><![CDATA[offtopic]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=267</guid>
		<description><![CDATA[After I released my post &#8220;Google Wave is not about text, it&#8217;s about data&#8221;, my friend Rafael Lima twitted praising it (in portuguese): Gosto de post que clico em vários links para ler mais como este&#8221;. Which means &#8220;I like posts with lots of links to read more about, like this&#8221;. It&#8217;s very important to [...]]]></description>
			<content:encoded><![CDATA[<p>After I released my post <a title="Read more..." href="http://henriquebastos.net/2009/06/01/google-wave-is-not-about-text-its-about-data-infrastructure/" target="_blank">&#8220;Google Wave is not about text, it&#8217;s about data&#8221;</a>, my friend <a title="Check out his blog and the famous CSS Browse Selector" href="http://rafael.adm.br/css_browser_selector" target="_blank" onclick="pageTracker._trackPageview('/outgoing/rafael.adm.br/css_browser_selector?referer=');">Rafael Lima</a> <em>twitted</em> praising it (<em>in portuguese</em>): <em><a title="The twitt..." href="http://twitter.com/rafaelp/status/1993680734" target="_blank" onclick="pageTracker._trackPageview('/outgoing/twitter.com/rafaelp/status/1993680734?referer=');">Gosto de post que clico em vários links para ler mais como este&#8221;</a></em>. Which means <em>&#8220;I like posts with lots of links to read more about, like this&#8221;</em>.</p>
<p>It&#8217;s very important to have the habit of spend some time finding the <strong>right links</strong> to reference in a blog post. Links are extremely powerful! It can turn a post into a knowledge hub.</p>
<p>Adding much <strong>relevant links</strong> as possible to your posts, not only add value to your text but gives <em>credibility</em> to it. It works just like <a title="Learn more on Wikipedia." href="http://en.wikipedia.org/wiki/Bibliography" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Bibliography?referer=');"><em>bibliography</em></a> in books.</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/06/02/bibliography-gives-you-credibility/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Wave is not about text, it&#8217;s about data infrastructure</title>
		<link>http://henriquebastos.net/2009/06/01/google-wave-is-not-about-text-its-about-data-infrastructure/</link>
		<comments>http://henriquebastos.net/2009/06/01/google-wave-is-not-about-text-its-about-data-infrastructure/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 15:58:45 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[trend]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=255</guid>
		<description><![CDATA[Google unveiled a new service called Google Wave, a new live communication and collaboration platform. This new wave got some attention and lot&#8217;s of rumors started with speculations and predictions about how it would impact e-mail, instant messaging, and even Twitter. Those articles were somehow superficial and focused too much on people &#8220;immediate&#8221; (as in [...]]]></description>
			<content:encoded><![CDATA[<p>Google unveiled a new service called <a href="http://wave.google.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wave.google.com?referer=');">Google Wave</a>, a new live communication and collaboration platform. This new <em>wave</em> got some attention and lot&#8217;s of rumors started with speculations and predictions about how it would impact e-mail, instant messaging, and even <a href="http://twitter.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/twitter.com?referer=');">Twitter</a>.</p>
<p>Those articles were somehow superficial and focused too much on people &#8220;immediate&#8221; (as in chat) communication and collaboration. Like instant messaging wasn&#8217;t real time enough so Google came up with an upgrade with it&#8217;s new web application.</p>
<p><a href="http://en.wiktionary.org/wiki/IMHO" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wiktionary.org/wiki/IMHO?referer=');">IMHO</a> that&#8217;s only the <a title="See what I mean..." href="http://www.sea-way.org/blog/Iceberg_Tip.jpg" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.sea-way.org/blog/Iceberg_Tip.jpg?referer=');">tip of the iceberg</a>. It&#8217;s not simply an improved way of communication. Putting directly: Google Wave is not about <em>text</em> it&#8217;s about <strong>data</strong>!</p>
<p><span id="more-255"></span>In order to understand  <a href="http://wave.google.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wave.google.com?referer=');">Google Wave</a>, we need to take a look at Google&#8217;s <em>mission</em>. If you visit the <a href="http://www.google.com/corporate/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/corporate/?referer=');">company&#8217;s website</a> you can read it: <em>&#8220;Google&#8217;s mission is to organize the world&#8217;s information and make it universally accessible and useful.&#8221;</em></p>
<p>Today they already know the current state of most somewhat-static data. <a href="http://en.wikipedia.org/wiki/Google_search" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Google_search?referer=');">Google&#8217;s Search Engine</a> robots crawl&#8217;s the entire web gathering data from web pages processing html and the related separating presentation data and scripts from <a href="http://en.wikipedia.org/wiki/Semantic_Web" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Semantic_Web?referer=');">semantic data</a>. They actually do a nice work and as the time passes they can identify <a href="http://www.google.com/trends" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/trends?referer=');">trends and people&#8217;s behavior</a>.</p>
<p>To fulfill it&#8217;s mission, Google needs more. It must know all information, at least all publicly available information by the time it is created, so Google can reduce the <a href="http://en.wikipedia.org/wiki/Lead_time" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Lead_time?referer=');">lead time</a> for organizing and make it useful and available.</p>
<p>So here enters the new <a href="http://wave.google.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wave.google.com?referer=');">Google Wave</a>, that will act as a <em>distributed data processing pipeline</em>.</p>
<p>Google&#8217;s announced that it was a new <strong>platform</strong> for <strong>communication</strong> and <strong>collaboration</strong>. But, this <em>wave</em> can go deep into the <em>&#8220;communication&#8221;</em> definition, <em>transcending</em> the simple layer that we all know about exchanging text messages to describe ideas, and build it&#8217;s representation: <em>a document</em>.</p>
<p>That&#8217;s not the first time Google tried something like that. <a href="http://www.google.com/base" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/base?referer=');">Google Base</a> was an attempt to group data and enable people to publish it. But Google Base wasn&#8217;t &#8220;fluid&#8221; and collaborative enough. There are lot&#8217;s of data that should be kept private and those data are stored in specific in house ways. This works as an entrance barrier, turning Google Base integration, a task with little appeal.</p>
<p>Google Wave solve this problem by being an open source <strong>platform</strong> divided in <em>Client</em>, <em>Server</em> and <em>Protocol</em> based on a real-time publishing strategy using the <a href="http://en.wikipedia.org/wiki/Operational_transformation" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Operational_transformation?referer=');">operational transformation</a> technology.</p>
<p>This enables companies to have their on Wave Servers where some waves are kept private and other can be shared with another Wave Servers through the <a href="http://www.waveprotocol.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.waveprotocol.org/?referer=');">Google Wave Federation Protocol</a>.</p>
<p>So basically any person&#8217;s action in the real world could generate a Wave transformation. Imagine that you buy something with your credit card. Your bank&#8217;s robot could publish this transaction, then your company&#8217;s ERP system could have a robot that monitors that wave and updates the company&#8217;s private cash flow wave, hosted on your own wave server.</p>
<p>Another internal robot, then updates the company&#8217;s public balance that is available in some shared wave that is visible to the internet through the <a href="http://www.waveprotocol.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.waveprotocol.org/?referer=');">Wave Federation Protocol</a> providing transparent real-time information to investors that could have robots capable of using <em>Wave&#8217;s Playback</em> features to analyze the balance document history and evolution through time.</p>
<p>This new way to transit and persist data make lot&#8217;s of sense if you analyze Google&#8217;s effort&#8217;s on developing it&#8217;s distributed storage named <a href="http://labs.google.com/papers/bigtable.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/labs.google.com/papers/bigtable.html?referer=');">Big Table</a> and making it available to users through <a href="http://appengine.google.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/appengine.google.com?referer=');">Google App Engine</a>. Then you can see a strong movement on the web development community to study and improve persistence strategies with initiatives like <a href="http://couchdb.apache.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/couchdb.apache.org?referer=');">CouchDB</a>.</p>
<p>It&#8217;s a new way to think the dynamics of data life cicle. It&#8217;s a new change from a <a href="http://en.wikipedia.org/wiki/Imperative_programming" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Imperative_programming?referer=');">imperative</a> way of computing and storing data, defining how it is persisted at the minimal structured level, to a more <a href="http://en.wikipedia.org/wiki/Declarative_programming" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Declarative_programming?referer=');">declarative</a> way of publishing data changes and letting the structure evolve as needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/06/01/google-wave-is-not-about-text-its-about-data-infrastructure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Automation with Applescript to generate Word for Mac documents from templates</title>
		<link>http://henriquebastos.net/2009/04/11/os-x-automation-with-applescript-to-generate-word-for-mac-documents-from-templates/</link>
		<comments>http://henriquebastos.net/2009/04/11/os-x-automation-with-applescript-to-generate-word-for-mac-documents-from-templates/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 16:09:08 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=166</guid>
		<description><![CDATA[Autoword Project is an OS X automation based on Applescript Application to DRY the process of filling up Microsoft Word 2008 for Mac template documents. As part of a selling processes, a friend had to fill up three documents with his client&#8217;s information: a letter, a label, and a warranty card. Doing this manually was [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Autoword Project is available at GitHub" href="http://github.com/henriquebastos/autoword" target="_blank" onclick="pageTracker._trackPageview('/outgoing/github.com/henriquebastos/autoword?referer=');">Autoword Project</a> is an <a title="Getting started with automation" href="http://developer.apple.com/referencelibrary/GettingStarted/GS_Scripting_and_Automation/index.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/developer.apple.com/referencelibrary/GettingStarted/GS_Scripting_and_Automation/index.html?referer=');">OS X automation</a> based on <a title="What is Applescript?" href="http://en.wikipedia.org/wiki/AppleScript" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/AppleScript?referer=');">Applescript Application</a> to <a title="Don't Repeat Yourself" href="http://en.wikipedia.org/wiki/DRY" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/DRY?referer=');">DRY</a> the process of filling up <a title="Word for Mac" href="http://www.microsoft.com/mac/products/Word2008/default.mspx" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/mac/products/Word2008/default.mspx?referer=');">Microsoft Word 2008 for Mac</a> template documents.</p>
<p>As part of a selling processes, a friend had to fill up <strong>three</strong> documents with his client&#8217;s information: <em>a letter</em>, <em>a label</em>, and <em>a warranty card</em>. Doing this manually was <strong>extremely</strong> error prone and annoying.</p>
<p>So what if he could type his customer&#8217;s data <em>once</em> and get all the three documents <em>ready to print</em>? That&#8217;s what the <a title="Autoword Project is available at GitHub" href="http://github.com/henriquebastos/autoword" target="_blank" onclick="pageTracker._trackPageview('/outgoing/github.com/henriquebastos/autoword?referer=');">Autoword Project</a> do!<span id="more-166"></span></p>
<p><a title="Autoword Project is available at GitHub" href="http://github.com/henriquebastos/autoword" target="_blank" onclick="pageTracker._trackPageview('/outgoing/github.com/henriquebastos/autoword?referer=');">Autoword Project</a> opens a <a href="http://developer.apple.com/cocoa/" onclick="pageTracker._trackPageview('/outgoing/developer.apple.com/cocoa/?referer=');">Cocoa</a> window with an <em>input form</em> and a <em>&#8220;generate&#8221;</em> button. The user enters the customer data and Autoword generates PDF files ready to print based on the given <a title="Word for Mac" href="http://www.microsoft.com/mac/products/Word2008/default.mspx" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/mac/products/Word2008/default.mspx?referer=');">Microsoft Word 2008 for Mac</a> template documents.</p>
<p>I had no intentions to create a generic program, since I had little time to do it and it was my first <a title="What is Applescript?" href="http://en.wikipedia.org/wiki/AppleScript" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/AppleScript?referer=');">Applescript</a> initiative. Instead I focused on develop a simple <a title="XCode is the OS X development tool" href="http://www.apple.com/macosx/developertools/xcode.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.apple.com/macosx/developertools/xcode.html?referer=');">XCode</a> Applescript Application that could serve as <em>baseline</em> to anyone who has similar needs. So adapting <a title="Autoword Project is available at GitHub" href="http://github.com/henriquebastos/autoword" target="_blank" onclick="pageTracker._trackPageview('/outgoing/github.com/henriquebastos/autoword?referer=');">Autoword Project</a> is simply a matter of:</p>
<ol>
<li>Set up the fields you need into the Cocoa window;</li>
<li>Create a Word for Mac <em>docx</em> template file with the proper <a title="Just a Field that shows the value of a VBA variable." href="http://office.microsoft.com/en-us/word/HP051895481033.aspx" target="_self" onclick="pageTracker._trackPageview('/outgoing/office.microsoft.com/en-us/word/HP051895481033.aspx?referer=');">docvariable fields</a>;</li>
<li>Reference your template files in the beginning of the <code>autoword.applescript</code>;</li>
<li> Adapt the <code>buildDocument</code> procedure to pass on your data if you changed the Cocoa form.</li>
</ol>
<p>You can clone <a title="Autoword Project is available at GitHub" href="http://github.com/henriquebastos/autoword" target="_blank" onclick="pageTracker._trackPageview('/outgoing/github.com/henriquebastos/autoword?referer=');">Autoword Project repository at GitHub</a>. I encourage you to fork the project and improve it at your will. And if you have more ideas, it would be great to hear, so please drop me a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/04/11/os-x-automation-with-applescript-to-generate-word-for-mac-documents-from-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patch for Redmine to persist form state when adding multiple issues</title>
		<link>http://henriquebastos.net/2009/03/26/patch-for-redmine-to-persist-form-state-when-adding-multiple-issues/</link>
		<comments>http://henriquebastos.net/2009/03/26/patch-for-redmine-to-persist-form-state-when-adding-multiple-issues/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 03:37:42 +0000</pubDate>
		<dc:creator>Henrique Bastos</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://henriquebastos.net/?p=148</guid>
		<description><![CDATA[When creating a new issue in Redmine, one remarkable feature is the possibility to save and continue. This simplifies the process of adding multiple issues from: click on new issue; describe and save it; get redirected to the saved issue details; click on &#8220;new issue&#8221;. To just: click on &#8220;new issue&#8221;; describe, save and continue. [...]]]></description>
			<content:encoded><![CDATA[<p>When creating a <strong>new issue</strong> in <a href="http://www.redmine.org/" onclick="pageTracker._trackPageview('/outgoing/www.redmine.org/?referer=');">Redmine</a>, one remarkable feature is the possibility to <strong>save and continue</strong>.</p>
<p>This simplifies the process of adding multiple issues from:</p>
<ol>
<li>click on new issue;</li>
<li>describe and save it;</li>
<li>get redirected to the saved issue details;</li>
<li>click on &#8220;new issue&#8221;.</li>
</ol>
<p>To just:</p>
<ol>
<li>click on &#8220;new issue&#8221;;</li>
<li>describe, save and continue.</li>
</ol>
<p>This is <em>very</em> useful! And could be better if <a href="http://www.redmine.org/" onclick="pageTracker._trackPageview('/outgoing/www.redmine.org/?referer=');">Redmine</a> didn&#8217;t  reset the entire form, making the user set every issue attribute again.<span id="more-148"></span></p>
<p>To solve this problem, I made <a href="http://gist.github.com/85856" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/85856?referer=');">this little patch</a> that enables a new issue to <em>inspire</em> itself <em>on</em> another issue.</p>
<p>It was done by adding the method <code>inspire_on</code> to the <em>issue model</em> plus adding 2 lines to it&#8217;s <em>controller</em>. This probably isn&#8217;t the best way to do it, since <a href="http://www.redmine.org/" onclick="pageTracker._trackPageview('/outgoing/www.redmine.org/?referer=');">Redmine</a> supports <a href="http://www.redmine.org/wiki/redmine/Plugins" onclick="pageTracker._trackPageview('/outgoing/www.redmine.org/wiki/redmine/Plugins?referer=');">plugins</a>. But it&#8217;s my first <a href="http://rubyonrails.org" onclick="pageTracker._trackPageview('/outgoing/rubyonrails.org?referer=');">Ruby on Rails</a> code, so that&#8217;s fine.</p>
<p>I&#8217;ve tested the patch against the <a href="http://rubyforge.org/frs/?group_id=1850" onclick="pageTracker._trackPageview('/outgoing/rubyforge.org/frs/?group_id=1850&amp;referer=');">stable releases 0.8.1 and 0.8.2</a>, and the result is really worthy. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://henriquebastos.net/2009/03/26/patch-for-redmine-to-persist-form-state-when-adding-multiple-issues/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
