<?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>Milton Soares Filho</title>
	<atom:link href="http://blog.msoares.pro.br/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.msoares.pro.br</link>
	<description>Random rants and SW developers' stuff</description>
	<lastBuildDate>Mon, 08 Aug 2011 16:02:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Using Textile+Trac to Manage Backlogs</title>
		<link>http://blog.msoares.pro.br/archives/using-textiletrac-to-manage-backlogs</link>
		<comments>http://blog.msoares.pro.br/archives/using-textiletrac-to-manage-backlogs#comments</comments>
		<pubDate>Sun, 07 Aug 2011 23:27:18 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[backlog]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[textile]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=296</guid>
		<description><![CDATA[<p>After two and a half days discussing features, estimating them as a team and preparing a decent backlog, it was time to decide how to publish it. The idea of e-mailing a spreadsheet around and trying to figure out what has been modified terrrorized me. I&#8217;d like to have it an a central place where [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>After two and a half days discussing features, estimating them as a team and preparing a decent backlog, it was time to decide how to publish it. The idea of e-mailing a spreadsheet around and trying to figure out what has been modified terrrorized me. I&#8217;d like to have it an a central place where everybody could edit it and the (properly versioned) changes would be immediately available.</p>

<p>Whilst Google Docs could have been a nice alternative, it&#8217;d take me some time (maybe forever) to convince the managerial ranks to endorse it. Time to look for an answer closer to our company&#8217;s chest, like some internal system for managing issues related to a project, with a coupled <acronym title="Version Control System">VCS</acronym>, user-based access and&#8230; Oh, wait! We already had Trac-Wiki<sup class="footnote"><a href="#fn1">1</a></sup> set on our project!</p>

<p>With an embedded <span class="caps">VCS </span>enabled on the wiki, the only missing feature was being capable of properly rendering backlog tables on it. The built-in wiki syntax wasn&#8217;t enough to create a functional table, however it had a WikiProcessor<sup class="footnote"><a href="#fn2">2</a></sup> extension mechanism which let me use other markups. As maintaining the backlog in pure <span class="caps">HTML </span>would be a pain, the alternative was to experiment a very flexible markup called Textile<sup class="footnote"><a href="#fn3">3</a></sup>.</p>

<p>After researching a bit of textile syntax<sup class="footnote"><a href="#fn4">4</a></sup> and trying some examples, the following snippet plus a tweak at the theme style sheet rendered something near to a backlog.</p>

<p></p><pre class="crayon-plain-tag">{{{
#!textile
table(backlog).
|_. ID |_. Name |_. Weight |
|/2. SW01 | Feature 1 | XXX |
|\2. (acceptance criteria 1) |
|/2. SW02 | Feature 2 | XXX |
|\2. (acceptance criteria 2) |
}}}

/* CSS required */
table.backlog { border-collapse: collapse; width: 100%; }
table.backlog th {
 border: 1px solid black;
 padding: 0.5em;
 font-weight: bold;
 background-color: #ccc;
}
table.backlog td {
 border: 1px solid black;
 padding: 0.5em;
 font-size: 12px;
}</pre><p></p>

<table class="backlog" cellspacing="0"><tr><th>ID</th><th>Name</th><th>Weight</th></tr><tr><td rowspan="2"><span class="caps">SW01</span></td><td>Feature 1</td><td>m</td></tr><tr><td colspan="2">(acceptance criteria 1)</td></tr><tr><td rowspan="2"><span class="caps">SW02</span></td><td>Feature 2</td><td>n</td></tr><tr><td colspan="2">(acceptance criteria 2)</td></tr></table>

<p>The acceptance criteria on a separate row was kind of lame, so lets try to join it with the story name.</p>

<p></p><pre class="crayon-plain-tag">{{{
#!textile
table(backlog).
|_. ID |_. Name |_. Weight |
| SW01 | %Feature 1% (acceptance criteria 1) | m |
| SW02 | %Feature 2% (acceptance criteria 2) | n |
}}}

/* CSS required */
table.backlog td &gt; span:first-child { display: block; font-weight: bold; }</pre><p></p>

<table class="backlog" cellspacing="0"><tr><th>ID</th><th>Name</th><th>Weight</th></tr><tr><td><span class="caps">SW01</span></td><td><span>Feature 1</span> (acceptance criteria 1)</td><td>m</td></tr><tr><td><span class="caps">SW02</span></td><td><span>Feature 2</span> (acceptance criteria 2)</td><td>n</td></tr></table>

<p>Much better! Now, what about appending dependencies to each story? Even better, why not referencing them as links to the story itself?</p>

<p></p><pre class="crayon-plain-tag">{{{
#!textile
table(backlog).
|_. ID |_. Name                              |_. Weight |_. Deps |
| SW01 | %(#SW01)Feature 1% (acceptance criteria 1) | m | &amp;nbsp; |
| SW02 | %(#SW02)Feature 2% (acceptance criteria 2) | n | &amp;nbsp; |
| SW03 | %Feature 3% (acceptance criteria 3) | o | &quot;SW01&quot;:#SW01  |
| SW04 | %Feature 4% (acceptance criteria 4) | p        | &amp;nbsp; |
| SW05 | %Feature 5% (acceptance criteria 5) | q        | &quot;SW01&quot;:#SW01, &quot;SW02&quot;:#SW02 |
| SW06 | %Feature 6% (acceptance criteria 6) | r        | &amp;nbsp; |
}}}</pre><p></p>

<table class="backlog" cellspacing="0"><tr><th>ID</th><th>Name</th><th>Weight</th><th>Deps</th></tr><tr><td><span class="caps">SW01</span></td><td><span id="SW01">Feature 1</span> (acceptance criteria 1)</td><td>m</td><td>&nbsp;</td></tr><tr><td><span class="caps">SW02</span></td><td><span id="SW02">Feature 2</span> (acceptance criteria 2)</td><td>n</td><td>&nbsp;</td></tr><tr><td><span class="caps">SW03</span></td><td><span>Feature 3</span> (acceptance criteria 3)</td><td>o</td><td><a href="#SW01"><span class="caps">SW01</span></a></td></tr><tr><td><span class="caps">SW04</span></td><td><span>Feature 4</span> (acceptance criteria 4)</td><td>p</td><td>&nbsp;</td></tr><tr><td><span class="caps">SW05</span></td><td><span>Feature 5</span> (acceptance criteria 5)</td><td>q</td><td><a href="#SW01"><span class="caps">SW01</span></a>, <a href="#SW02"><span class="caps">SW02</span></a></td></tr><tr><td><span class="caps">SW06</span></td><td><span>Feature 6</span> (acceptance criteria 6)</td><td>r</td><td>&nbsp;</td></tr></table>

<p>The <code>&amp;nbsp;</code> hack, used to prevent column spanning, may not be required in Trac as it is in my wordpress processor.</p>

<p>To finish a fancy and useful backlog we can add two classes to visualize the separation of stories per sprint. Those without a background color are still in the project&#8217;s pipeline.</p>

<p></p><pre class="crayon-plain-tag">{{{
#!textile
table(backlog).
        |_. ID |_. Name                              |_. Weight |_. Deps |
(odd).  | SW01 | %(#SW01)Feature 1% (acceptance criteria 1) | m | &amp;nbsp; |
(odd).  | SW02 | %(#SW02)Feature 2% (acceptance criteria 2) | n | &amp;nbsp; |
(even). | SW03 | %Feature 3% (acceptance criteria 3) | o | &quot;SW01&quot;:#SW01  |
(even). | SW04 | %Feature 4% (acceptance criteria 4) | p | &amp;nbsp; |
(odd).  | SW05 | %Feature 5% (acceptance criteria 5) | q | &quot;SW01&quot;:#SW01, &quot;SW02&quot;:#SW02 |
| SW06 | %Feature 6% (acceptance criteria 6) | r        | &amp;nbsp; |
}}}

/* CSS required */
table.backlog tr.odd { background-color: #ddd }
table.backlog tr.even { background-color: #ffa }</pre><p></p>

<table class="backlog" cellspacing="0"><tr><th>ID</th><th>Name</th><th>Weight</th><th>Deps</th></tr><tr class="odd"><td><span class="caps">SW01</span></td><td><span id="SW01">Feature 1</span> (acceptance criteria 1)</td><td>m</td><td>&nbsp;</td></tr><tr class="odd"><td><span class="caps">SW02</span></td><td><span id="SW02">Feature 2</span> (acceptance criteria 2)</td><td>n</td><td>&nbsp;</td></tr><tr class="even"><td><span class="caps">SW03</span></td><td><span>Feature 3</span> (acceptance criteria 3)</td><td>o</td><td><a href="#SW01"><span class="caps">SW01</span></a></td></tr><tr class="even"><td><span class="caps">SW04</span></td><td><span>Feature 4</span> (acceptance criteria 4)</td><td>p</td><td>&nbsp;</td></tr><tr class="odd"><td><span class="caps">SW05</span></td><td><span>Feature 5</span> (acceptance criteria 5)</td><td>q</td><td><a href="#SW01"><span class="caps">SW01</span></a>, <a href="#SW02"><span class="caps">SW02</span></a></td></tr><tr><td><span class="caps">SW06</span></td><td><span>Feature 6</span> (acceptance criteria 6)</td><td>r</td><td>&nbsp;</td></tr></table>

<p>With this template and relatively simple syntax, it seems easier to create, delete and move stories around. Modifications can be figured out at Trac&#8217;s page history and things get associated by the hyperlinks. Good bye, nasty spreadsheets! <img src='http://blog.msoares.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>

<p>Other advantage is that if you don&#8217;t use Trac for your projects, the only thing you need is a textile processor to get it done. You may auto-generate it from build-scripts, use another bug-tracker or integrate into WordPress (as I did it here).</p>

<p>A downside in this alternative is the need to specify custom <span class="caps">CSS </span>rules outside of textile content. I had to hack it into WordPress current theme&#8217;s style sheet and into Trac&#8217;s too. Look at the complete excerpt below.</p>

<p></p><pre class="crayon-plain-tag">table.backlog { border-collapse: collapse; width: 100%; }
table.backlog th {
 border: 1px solid black;
 padding: 0.5em;
 font-weight: bold;
 background-color: #ccc;
}
table.backlog td {
 border: 1px solid black;
 padding: 0.5em;
 font-size: 12px;
}
table.backlog td &gt; span:first-child { display: block; font-weight: bold; }
table.backlog tr.odd { background-color: #ddd }
table.backlog tr.even { background-color: #ffa }</pre><p></p>

<h3>References</h3>

<p class="footnote" id="fn1"><sup>1</sup> <a href="http://trac.edgewall.org/wiki/TracWiki">Trac Wiki webpage</a></p>

<p class="footnote" id="fn2"><sup>2</sup> <a href="http://trac.edgewall.org/wiki/WikiProcessors">Wiki Processors</a></p>

<p class="footnote" id="fn3"><sup>3</sup> <a href="http://www.textism.com/tools/textile">Textile homepage</a></p>

<p class="footnote" id="fn4"><sup>4</sup> <a href="http://redcloth.org/hobix.com/textile">Hobix Textile Reference</a></p>


<p><strong><span class="caps">UPDATE</span></strong>: better colors and avoid selecting spans after the first one.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/using-textiletrac-to-manage-backlogs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classificados Tocantins</title>
		<link>http://blog.msoares.pro.br/archives/classificados-tocantins</link>
		<comments>http://blog.msoares.pro.br/archives/classificados-tocantins#comments</comments>
		<pubDate>Fri, 25 Feb 2011 15:53:44 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[classificados]]></category>
		<category><![CDATA[manaus]]></category>
		<category><![CDATA[sales]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=281</guid>
		<description><![CDATA[<p>Eu e minha esposa estamos nos preparando para migrar de Manaus, portanto resolvemos nos desfazer de alguns bens que n&#195;&#163;o iremos levar. S&#195;&#163;o todos itens adquiridos desde 2007, com estado de conserva&#195;&#167;&#195;&#163;o razo&#195;&#161;vel. Estamos colocando as fotos aos poucos pra agilizar, mas quem quiser dar uma olhada, por favor, entre em contato (pode ser pelos [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Eu e minha esposa estamos nos preparando para migrar de Manaus, portanto resolvemos nos desfazer de alguns bens que n&Atilde;&pound;o iremos levar.</p>

<p>S&Atilde;&pound;o todos itens adquiridos desde 2007, com estado de conserva&Atilde;&sect;&Atilde;&pound;o razo&Atilde;&iexcl;vel. Estamos colocando as fotos aos poucos pra agilizar, mas quem quiser dar uma olhada, por favor, entre em contato (pode ser pelos coment&Atilde;&iexcl;rios aqui no blog mesmo ou pelo meu celular, caso me conhe&Atilde;&sect;a).</p>

<b>Detalhe</b>: os itens mais essenciais, como geladeira e fog&Atilde;&pound;o, s&Atilde;&sup3; poderemos entregar a partir do dia 12/03/11, que &Atilde;&copy; quando devemos fazer a mudan&Atilde;&sect;a para o novo &#8220;<i>lar de transi&Atilde;&sect;&Atilde;&pound;o</i>&#8220;.<br />
<h3>Cozinha</h3>
<table>
<tr>
<td  width="90%"><s>Fog&Atilde;&pound;o Mueller 4 bocas</s></td>
<td>150.00</td>
</tr>
<tr>
<td>M&Atilde;&iexcl;quina lava-roupas Electrolux 8kg</td>
<td>550.00</td>
</tr>
<tr>
<td>Liquidificador Mondial Ultramix 3 com coador</td>
<td>45.00</td>
</tr>
<tr>
<td>Geladeira Electrolux Frost Free <span class="caps">DF37</span></td>
<td>900.00</td>
</tr>
<tr>
<td>Rack Fruteira Cozinha</td>
<td>110.00</td>
</tr>
<tr>
<td><s>Bebedouro Refrigerador Mallory</s></td>
<td>180.00</td>
</tr>
<tr>
<td><s>Micro-ondas Electrolux</s></td>
<td>150.00</td>
</tr>
<tr>
<td>Arm&Atilde;&iexcl;rio Alum&Atilde;&shy;nio Colormaq Cozinha 3 portas</td>
<td>320.00</td>
</tr>
<tr>
<td><s>Grill George Foremann m&Atilde;&copy;dio com estufa para p&Atilde;&pound;o</s></td>
<td>100.00</td>
</tr>
<tr>
<td><embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&amp;noautoplay=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fmilton.soares.filho%2Falbumid%2F5577080454578863265%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></td>
</tr>
</table>
<h3>Sala</h3>
<table>
<tr>
<td  width="90%"><s>Rack grande</s></td>
<td>290.00</td>
</tr>
<tr>
<td>Rack pequeno</td>
<td>90.00</td>
</tr>
<tr>
<td><s>Sof&Atilde;&iexcl; Branco 3 lugares</s></td>
<td>400.00</td>
</tr>
<tr>
<td><s>Mesa com banquetas</s></td>
<td>150.00</td>
</tr>
<tr>
<td><s>Mesa retangular dobr&Atilde;&iexcl;vel</s></td>
<td>110.00</td>
</tr>
<tr>
<td>Mesa p/ computador</td>
<td>50.00</td>
</tr>
<tr>
<td><s>TV Sony <span class="caps">LCD</span> Bravia 32pol</s></td>
<td>850.00</td>
</tr>
<tr>
<td>TV Philips tubo 21pol</td>
<td>150.00</td>
</tr>
<tr>
<td>C&Atilde;&cent;mera Digital Kodac 4MegaPixel <span class="caps">C433 </span>+ 512MB</td>
<td>150.00</td>
</tr>
<tr>
<td><span class="caps">DVD </span>player philips <span class="caps">DVP320</span></td>
<td>70.00</td>
</tr>
<tr>
<td>Caixa Som + Subwoofer 2.1 Clone com entrada celular</td>
<td>180.00</td>
</tr>
<tr>
<td><s>Ventilador Seville Classic torre girat&Atilde;&sup3;ria</s></td>
<td>165.00</td>
</tr>
<tr>
<td>Bicicleta Caloi 18 marchas T-Type com acess&Atilde;&sup3;rios</td>
<td>700.00</td>
</tr>
<tr>
<td><embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&amp;noautoplay=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fmilton.soares.filho%2Falbumid%2F5577080931943509297%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></td>
</tr>
</table>
<h3>Quarto</h3>
<table>
<tr>
<td  width="90%"><s>Ar condicionado Consul 7500</s></td>
<td>300.00</td>
</tr>
<tr>
<td><s>Ar condicionado Eletrolux 7500 c/ controle</s></td>
<td>420.00</td>
</tr>
<tr>
<td><s>Ferro Walita</s></td>
<td>40.00</td>
</tr>
<tr>
<td>T&Atilde;&iexcl;bua de Passar</td>
<td>40.00</td>
</tr>
<tr>
<td>Maca para est&Atilde;&copy;tica branca</td>
<td>300.00</td>
</tr>
<tr>
<td><s>Vitrine vidro 6 m&Atilde;&sup3;dulos</s></td>
<td>250.00</td>
</tr>
<tr>
<td>Cabideiro/Arara</td>
<td>120.00</td>
</tr>
<tr>
<td><s>Sapateira 2 portas 4 estantes</s></td>
<td>120.00</td>
</tr>
<tr>
<td>Colch&Atilde;&pound;o Solteiro Probel 12cm</td>
<td>50.00</td>
</tr>
<tr>
<td>Apoio Tri&Atilde;&cent;ngulo</td>
<td>60.00</td>
</tr>
<tr>
<td><embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&amp;noautoplay=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fmilton.soares.filho%2Falbumid%2F5577079424040267457%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></td>
</tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/classificados-tocantins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hiding that horrible tabline in Vim</title>
		<link>http://blog.msoares.pro.br/archives/hiding-that-horrible-tabline-in-vim</link>
		<comments>http://blog.msoares.pro.br/archives/hiding-that-horrible-tabline-in-vim#comments</comments>
		<pubDate>Thu, 20 Jan 2011 04:26:52 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=223</guid>
		<description><![CDATA[<p>Long time no post in here, sorry. Since I&#8217;ve had the chance to review Kim Schulz&#8217;s Hacking Vim 7.2 ebook1 and a friend of mine started using vim as his main development tool, digging into Vim&#8217;s configurations and flavours has become somewhat even more pleasant. In an attempt to improve my performance when editing various [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Long time no post in here, sorry.</p>

<p>Since I&#8217;ve had the chance to review Kim Schulz&#8217;s <a href="https://www.packtpub.com/hacking-vim-7-2/book">Hacking Vim 7.2</a> ebook<sup class="footnote"><a href="#fn1">1</a></sup> and a friend of mine started using vim as his main development tool, digging into Vim&#8217;s configurations and flavours has become somewhat even more pleasant.</p>

<p>In an attempt to improve my performance when editing various files, I&#8217;m trying to use <code>tabpages</code> instead of only several <code>windows</code>. It&#8217;s been working as some kind of context stack for me, as there can be one <code>tabpage</code> (probably with fewer <code>windows</code>) for modifying files from a project and another <code>tabpage</code> for a different but related one (or a non-related task in the same project). Plus, using more <code>tabpages</code> and less <code>windows</code> can save precious screen space.</p>

<p>But what to do about that odious <code>tabline</code> which, besides hurting my sense of aesthetics, eats a whole line of the screen? Thankfully to the Vim&#8217;s extremely flexible nature, it didn&#8217;t take long to find an answer. It came in form of disabling the <code>tabline</code> entirely and putting its only usable information into the <code>statusline</code>. Used a bit of scripting to overcome the only corner case I could think of and took the chance to try my rusty skills on python + vim bindings. Pretty much everything someone will need to put both domains together is in this little example (besides the vim module complete <span class="caps">API, </span>easily accessible by issuing <code>:h python</code>).</p>

<p></p><pre class="crayon-plain-tag">function! MyTabMarker(disable)
python &lt;&lt; EOF
import vim
def tabpagecount():
        return int(vim.eval(&quot;tabpagenr('$')&quot;))
def tabpage():
        return int(vim.eval(&quot;tabpagenr()&quot;))
def tabmark():
        disable = int(vim.eval(&quot;a:disable&quot;))
        if tabpagecount() &gt; 1 and not disable:
                return &quot;\&quot;[tab %d/%d] \&quot;&quot; % (tabpage(), tabpagecount())
        return &quot;\&quot;\&quot;&quot;
vim.command(&quot;return &quot; + tabmark())
EOF
endfunction

set laststatus=2
set showtabline=0
set statusline=#%02n\ %{MyTabMarker(0)}%f\ %m%r%y%=\(%bd,%Bh)\ %c,%l/%L\ %P</pre><p></p>

<p>There you see how to pass arguments into python methods and how to feed values back from it to the vim environment. Eventually I&#8217;ll publish my entire .vimrc with comments so everyone can rant about how theirs way is better <img src='http://blog.msoares.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>

<p>[1] as I&#8217;ve lost my notebook due to a robbery at the technical assistance, my review annotations were lost too. I&#8217;ll need to re-review the book to get something published about it then.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/hiding-that-horrible-tabline-in-vim/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>gource: OpenGL-based 3D visualisation tool for source control repositories</title>
		<link>http://blog.msoares.pro.br/archives/gource-opengl-based-3d-visualisation-tool-for-source-control-repositories</link>
		<comments>http://blog.msoares.pro.br/archives/gource-opengl-based-3d-visualisation-tool-for-source-control-repositories#comments</comments>
		<pubDate>Fri, 28 May 2010 14:42:04 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Planet INdT]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gource]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=211</guid>
		<description><![CDATA[<p>Too much fun the tool I&#8217;ve came to know through my friend Adenilson&#8217;s blog. In a glance one can explore effort put into a project in a way much better than any other command-line or graphical application known. The only boring thing is to use it in my machine, a hp pavilion dv4-2167sb, which, AFAIK, [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Too much fun the tool I&#8217;ve came to know through my friend Adenilson&#8217;s <a href="http://savago.wordpress.com/2010/05/21/6-months-of-plasma-in-10-minutes">blog</a>. In a glance one can explore effort put into a project in a way much better than any other command-line or graphical application known.</p>

<p>The only boring thing is to use it in my machine, a hp pavilion dv4-2167sb, which, <span class="caps">AFAIK, </span>still lacks a good graphical acceleration support.</p>

<p>I&#8217;ve made a very basic debian package (using <a href="http://checkinstall.izto.org/">checkinstall</a>) for people too lazy to compile/install by themselves.</p>

<p><a href="wp-content/uploads/2010/01/gource_0.26b-1_i386.deb">Enjoy it</a> and have fun!</p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/gource-opengl-based-3d-visualisation-tool-for-source-control-repositories/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vendo Minha Moto</title>
		<link>http://blog.msoares.pro.br/archives/vendo-minha-moto</link>
		<comments>http://blog.msoares.pro.br/archives/vendo-minha-moto#comments</comments>
		<pubDate>Sun, 21 Mar 2010 04:47:25 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[classificados]]></category>
		<category><![CDATA[moto]]></category>
		<category><![CDATA[vendo]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=204</guid>
		<description><![CDATA[<p>Sorry, available only in pt_BR. Num esfor&#195;&#167;o de desapego, decidi passar pra frente minha fiel companheira&#8230; de estrada. &#195;‰ isso, pra quem se acostumou a me ver junto da minha m&#195;&#161;quina atravessando o Brasil e registrando no site do RockPesado, saiba que n&#195;&#163;o fa&#195;&#167;o isso por desgosto, mas simplesmente por adequa&#195;&#167;&#195;&#163;o, j&#195;&#161; que n&#195;&#163;o pretendo [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p><em>Sorry, available only in <a href="http://blog.msoares.pro.br/archives/vendo-minha-moto?lang=pt">pt_BR</a>.</em></p>

<p>Num esfor&Atilde;&sect;o de desapego, decidi passar pra frente minha fiel companheira&#8230; de estrada. &Atilde;‰ isso, pra quem se acostumou a me ver junto da minha m&Atilde;&iexcl;quina atravessando o Brasil e registrando no site do <a href="http://www.rockpesado.com.br">RockPesado</a>, saiba que n&Atilde;&pound;o fa&Atilde;&sect;o isso por desgosto, mas simplesmente por adequa&Atilde;&sect;&Atilde;&pound;o, j&Atilde;&iexcl; que n&Atilde;&pound;o pretendo traz&Atilde;&ordf;-la novamente para Manaus-AM para negar-lhe os prazeres que uma moto estradeira merece (asfalto bom, v&Atilde;&iexcl;rias op&Atilde;&sect;&Atilde;&micro;es de destino, pe&Atilde;&sect;as a pronta entrega, enfim, tudo que algu&Atilde;&copy;m morando no Sul ou Sudeste tem de sobra).</p>

<p>Minha moto &Atilde;&copy; uma Honda Shadow e foi apelidada de U&Atilde;&iexcl;kti, em homenagem a lenda do belo e encantador &Atilde;&shy;ndio que, ap&Atilde;&sup3;s ressucitar de uma morte com v&Atilde;&iexcl;rias flechadas, emitia um som de flauta quando o vento transpassava seu corpo, atraindo ainda mais as mulheres das tribos e provocando mais inveja dos homens. Abaixo uma breve ficha t&Atilde;&copy;cnica:</p>

<code>
Marca: Honda Shadow VT600C
Ano: 2002
Cor: cinza
Quilometragem: 63.000 km
&Atilde;šltimas trocas:
  - Corrente, coroa e pinh&Atilde;&pound;o (CoCoPi): 55.000 km
  - Pneu traseiro: ~55.000 km
  - Pneu dianteiro: ~57.000 km
  - Filtro de ar: ~60.000 km
</code>

<p>Como toda moto custom que se preze, traz v&Atilde;&iexcl;rios acess&Atilde;&sup3;rios estendendo suas configura&Atilde;&sect;&Atilde;&micro;es originais.</p>

<ul>
	<li>Sissy-bar com bagageiro</li>
	<li>Banco remodelado (feito pelo lend&Atilde;&iexcl;rio Peninha, artes&Atilde;&pound;o de estofamentos de Curitiba-PR)</li>
	<li>Comando avan&Atilde;&sect;ado</li>
	<li>Plataforma para os p&Atilde;&copy;s do piloto e carona</li>
	<li>Protetor de c&Atilde;&iexcl;rter (peito de a&Atilde;&sect;o)</li>
	<li>Protetor do reservat&Atilde;&sup3;rio de &Atilde;&iexcl;gua (ponto fraco das Shadow)</li>
	<li>Mata-cachorro</li>
	<li>Far&Atilde;&sup3;is de milha com lanterna</li>
	<li>Alforges laterais (surrados, mas ainda bem us&Atilde;&iexcl;veis)</li>
	<li>e mais alguns detalhes mais est&Atilde;&copy;ticos que funcionais (saia reduzida na placa traseira, tamp&Atilde;&pound;o cromado do retificador, suporte extra na grade da refrigera&Atilde;&sect;&Atilde;&pound;o, etc)</li>
</ul>

<p>Pela tabela <a href="http://www.fipe.org.br"><span class="caps">FIPE</span></a> ela custaria at&Atilde;&copy; R$16 mil reais, mas estou disposto a vend&Atilde;&ordf;-la por um pre&Atilde;&sect;o menor que este.</p>

<p>E tem mais, quem ligar agora leva tamb&Atilde;&copy;m um conjunto de c&Atilde;&cent;meras (dianteira e traseira) dos pneus de brinde! Totalmente gr&Atilde;&iexcl;tis! &#8211; momento polishop <img src='http://blog.msoares.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>

<p>Pra quem estiver interessado, ela se encontra em Curitiba na casa do meu pai. Pra aprecia&Atilde;&sect;&Atilde;&pound;o, mande-me um e-mail que arranjo a visita.</p>

<p>Essa moto &Atilde;&copy; guerreira, j&Atilde;&iexcl; me levou em seguran&Atilde;&sect;a por todo o litoral do Brasil e do Uruguai, sobreviveu a hostilidade da pol&Atilde;&shy;cia Argentina e cortou tranquilamente todo o Centro-Oeste brasileiro, inclusive passando pela capital federal. Portanto n&Atilde;&pound;o estranhe se ela reclamar quando tir&Atilde;&iexcl;-la de casa pra andar menos de 200km!</p>

<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com.br/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com.br&amp;captions=1&amp;noautoplay=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com.br%2Fdata%2Ffeed%2Fapi%2Fuser%2Fmilton.soares.filho%2Falbumid%2F5450938077202584769%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/vendo-minha-moto/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sale</title>
		<link>http://blog.msoares.pro.br/archives/salesaldao</link>
		<comments>http://blog.msoares.pro.br/archives/salesaldao#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:59:51 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[classificados]]></category>
		<category><![CDATA[God of War]]></category>
		<category><![CDATA[notebook]]></category>
		<category><![CDATA[ps2]]></category>
		<category><![CDATA[vendo]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=172</guid>
		<description><![CDATA[<p>Sorry, this entry is only available in Portugu&#195;&#170;s Brasil.</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Sorry, this entry is only available in <a href="http://blog.msoares.pro.br/feed?lang=pt">Portugu&Atilde;&ordf;s Brasil</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/salesaldao/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt/openBossa Challenge</title>
		<link>http://blog.msoares.pro.br/archives/qtopenbossa-challenge</link>
		<comments>http://blog.msoares.pro.br/archives/qtopenbossa-challenge#comments</comments>
		<pubDate>Wed, 17 Jun 2009 15:04:51 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Planet INdT]]></category>
		<category><![CDATA[FISL]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=143</guid>
		<description><![CDATA[<p>Nice opportunity to win a Nokia N810 tablet at the FISL. (Free translation from pt_BR) Do you have a good idea? Do you know the Qt library? Would you like to be awarded for that? The INdT (Nokia Technology Institute), nowadays one of the main development excellence centers in Brazil, promotes the first Qt/openBossa challenge. [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Nice opportunity to win a <a href="http://www.forum.nokia.com/devices/N810">Nokia <span class="caps">N810</span></a> tablet at the <a href="http://fisl.softwarelivre.org/10/www/"><span class="caps">FISL</span></a>. (Free translation from pt_BR)</p>

<blockquote>
Do you have a good idea? Do you know the Qt library? Would you like to be awarded for that?

<p>The INdT (Nokia Technology Institute), nowadays one of the main development excellence centers in Brazil, promotes the first Qt/openBossa challenge.</p>

We look for developers capable of putting your ideas into practice and build Qt applications designed to Nokia&#8217;s mobile devices. Participants will create innovations which will be evaluated and awarded during the 10th International Free Software Forum (FISL).<br />
</blockquote>

<p>More at <a href="http://openbossa.org/fisl/index.html">http://openbossa.org/fisl/index.html</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/qtopenbossa-challenge/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Qt Codestyle Automatic Check</title>
		<link>http://blog.msoares.pro.br/archives/qt-codestyle-automatic-check</link>
		<comments>http://blog.msoares.pro.br/archives/qt-codestyle-automatic-check#comments</comments>
		<pubDate>Sun, 14 Jun 2009 05:38:45 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Planet INdT]]></category>
		<category><![CDATA[astyle]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[code style]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[testcase]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=133</guid>
		<description><![CDATA[<p>Code style carries many benefits, such as improved maintainability and support for a rich Coding Standard. However it&#8217;s not safe to rely on developers to always comply to style rules along the source code, that&#8217;s why automatic code style verification should be an initial concern for professional-level works. For the sake of coding-style-importance-aware people, there [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Code style carries many <a href="http://www.articlesbase.com/programming-articles/10-benefits-of-using-coding-standards-to-software-development-team-312610.html">benefits</a>, such as improved maintainability and support for a rich <a href="http://www.ademar.org/texts/coding.html">Coding Standard</a>. However it&#8217;s not safe to rely on developers to always comply to style rules along the source code, that&#8217;s why automatic code style verification should be an initial concern for professional-level works.</p>

<p>For the sake of <em>coding-style-importance-aware people</em>, there are many great projects such as <a href="http://www.gnu.org/software/indent"><span class="caps">GNU </span>indent</a>, <a href="http://svn.browsershots.org/trunk/devtools/pep8/pep8.py">pep8</a> and <a href="http://astyle.sourceforge.net">astyle</a> that perform all the work for you, whose only need the appropriate setup <a href="http://techbase.kde.org/Policies/Kdelibs_Coding_Style">flags</a>.</p>

<p>For Qt projects, astyle is the recommended tool. But there are a few drawbacks on using it.</p>

<ul>
<li>it&#8217;s too intrusive. astyle performs code modification in-line, disturbing the repository sources instead of serving as a verification tool only</li>
<li>weak didactic factor. Unlike pep8 script, which tells the developer exactly what the problem is and contributes to avoid it at the future (as a <em>lesson learned</em> effect)</li>
<li>it&#8217;s output can not be <strong>easily</strong> integrated with another tools</li>
</ul>

<p>I&#8217;ve created a shell script in order to overcome some of the previous issues. It&#8217;s available <a href="http://gitorious.org/qt-codecheck">here</a>. Some relevant features.</p>

<ul>
<li><a href="http://www.vim.org/htmldoc/quickfix.html">quickfix</a>-style list output
</li>
<li><a href="http://doc.qtsoftware.com/4.5/qtestlib-manual.html">QTest</a> style output at the end
</li>
<li>Ignore moc created files</li>
<li>All suggested modifications can be applied as one patch, directly available to the user</li>
<li>Can be run inside a testsuite (make test) or as a standalone program
</li>
</ul>

<p><span class="caps">TODO</span></p>

<ul>
<li>try to <a href="http://astyle.sourceforge.net/develop">extend</a> astyle classes</li>
<li>allow alternative code styles</li>
<li>better source selection schema (integrated with qmake, maybe?)</li>
<li>fix-up improper indentation on some important macros (foreach, .e.g.)</li>
<li>test and make it work on MacOS</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/qt-codestyle-automatic-check/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(PortuguĂŞs Brasil) Teste Nerds</title>
		<link>http://blog.msoares.pro.br/archives/teste-nerds</link>
		<comments>http://blog.msoares.pro.br/archives/teste-nerds#comments</comments>
		<pubDate>Mon, 25 May 2009 21:59:13 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[nerd test]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=119</guid>
		<description><![CDATA[<p>Sorry, this entry is only available in Portugu&#195;&#170;s Brasil.</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Sorry, this entry is only available in <a href="http://blog.msoares.pro.br/feed?lang=pt">Portugu&Atilde;&ordf;s Brasil</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/teste-nerds/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Git Empty Branches</title>
		<link>http://blog.msoares.pro.br/archives/git-empty-branches</link>
		<comments>http://blog.msoares.pro.br/archives/git-empty-branches#comments</comments>
		<pubDate>Thu, 14 May 2009 18:38:15 +0000</pubDate>
		<dc:creator>milton</dc:creator>
				<category><![CDATA[Planet INdT]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://blog.msoares.pro.br/?p=85</guid>
		<description><![CDATA[<p>Found out some interesting Git Hints presented as webcasts at the site below. The most interesting part was to learn how to create empty branches on it, so a project can be functionally separated without having to kludge your working dir with several directories. GitCasts: Empty Branches Summarizing the lesson: The library versus website example [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Found out some interesting Git Hints presented as webcasts at the site below. The most interesting part was to learn how to create empty branches on it, so a project can be functionally separated without having to kludge your working dir with several directories.</p>

<p><a href="http://gitcasts.com/posts/empty-branches">GitCasts: Empty Branches</a></p>

<p>Summarizing the lesson:</p>

<p></p><pre class="crayon-plain-tag">$ git-symbolic-ref HEAD refs/heads/emptybranch
$ git-rm --cached -r .
$ git-commit --allow-empty -m &quot;Initial commit for empty branch&quot;</pre><p></p>

<p>The library versus website example was perfect, but one can think about other relevant situations, like sub-projects inside a bigger project, management documentation or even meta-files configuring the repository itself (description and <a href="http://en.wikipedia.org/wiki/Access_control_list"><span class="caps">ACL</span></a>).</p>]]></content:encoded>
			<wfw:commentRss>http://blog.msoares.pro.br/archives/git-empty-branches/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

