<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Thiago Avelino</title>
	
	<link>http://avelino.us</link>
	<description>Python, MongoDB, Node.js, C, C++, NoSQL</description>
	<lastBuildDate>Mon, 07 May 2012 20:08:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/pyAvelino" /><feedburner:info uri="pyavelino" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><item>
		<title>Vagas de Python para trabalhar remoto</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/pcOrDltmoLM/</link>
		<comments>http://avelino.us/2012/05/07/vagas-de-python-para-trabalhar-remoto/#comments</comments>
		<pubDate>Mon, 07 May 2012 19:46:22 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Experiência]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[Vaga]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=165</guid>
		<description><![CDATA[A duas semana eu escrevi um blogpost sobre &#8220;Trabalhar para empresa de fora do Brasil&#8221; e realmente vale muito apena, como a demando do projeto aumentou consideravelmente estamos precisando de desenvolvedores para entrar no time. Nosso time é responsável por desenvolver &#8230; <a href="http://avelino.us/2012/05/07/vagas-de-python-para-trabalhar-remoto/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://mochii.co.uk/"><img class="alignleft" title="Mochii" src="http://mochii.co.uk/static/img/h_logo340x86.png" alt="" width="340" height="86" /></a></p>
<p>A duas semana eu escrevi um blogpost sobre &#8220;<a title="Trabalhar para empresa de fora do Brasil" href="http://avelino.us/2012/04/20/trabalhar-para-empresa-de-fora-do-brasil/">Trabalhar para empresa de fora do Brasil</a>&#8221; e realmente vale muito apena, como a demando do projeto aumentou consideravelmente estamos precisando de desenvolvedores para entrar no time. Nosso time é responsável por desenvolver algumas ferramentas de SEO.</p>
<p>Conhecimento necessario:</p>
<ul>
<li>Dominio do idioma inglês;</li>
<li>Python;</li>
<li>Django (Caso conheça outro frameworks é importante).</li>
</ul>
<p>Itens importante:</p>
<ul>
<li>Tradução de projeto open source;</li>
<li>Foco (Como o trabalho é remoto, temos que sempre ter foco no que estamos fazendo);</li>
<li>Conhecimento em arquitetura de software;</li>
<li>Contribuido com projeto open source (Ideal que tenho o repositorio aberto);</li>
<li>Ótimo conhecimento em desenvolvimento ágil;</li>
</ul>
<p>Estamos procurando por pessoas criativas, que gostem de inovação, de pesquisar e identificar novas tendências e de encarar desafios complexos com agilidade e velocidade.</p>
<p>Se você se encaixa neste perfil, envie seu curriculo em inglês para mim (thiagoavelinoster AT gmail.com) com uma lista dos últimos 5 livros técnicos que você leu, Github, Twitter, LinkedIn e o que você quiser compartilhar.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/NvIYMxWFlqWKAvR2r7gobI1cwqA/0/da"><img src="http://feedads.g.doubleclick.net/~a/NvIYMxWFlqWKAvR2r7gobI1cwqA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/NvIYMxWFlqWKAvR2r7gobI1cwqA/1/da"><img src="http://feedads.g.doubleclick.net/~a/NvIYMxWFlqWKAvR2r7gobI1cwqA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/pcOrDltmoLM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2012/05/07/vagas-de-python-para-trabalhar-remoto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://avelino.us/2012/05/07/vagas-de-python-para-trabalhar-remoto/</feedburner:origLink></item>
		<item>
		<title>Trabalhar para empresa de fora do Brasil</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/I4lNTpZZQQ8/</link>
		<comments>http://avelino.us/2012/04/20/trabalhar-para-empresa-de-fora-do-brasil/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 22:13:15 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>
		<category><![CDATA[Experiência]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=149</guid>
		<description><![CDATA[O tema é muito abrangente mas vou focar justamente para a área tecnologia onde temos a possibilidade de trabalhar remoto (vulgo home office, que é um outro tema que gera muita polemica). Hoje fecha um total de 3 dias trabalhando &#8230; <a href="http://avelino.us/2012/04/20/trabalhar-para-empresa-de-fora-do-brasil/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://avelino.us/wp-content/uploads/2012/04/London_Bus_Big_Ben_narrowweb__300x4000.jpg"><img class="size-medium wp-image-152 alignleft" title="LONDON GENERIC PIC WARRREN HACKSHALL AFR FIRST USE ONLY 060710" src="http://avelino.us/wp-content/uploads/2012/04/London_Bus_Big_Ben_narrowweb__300x4000-225x300.jpg" alt="Londres é a capital e a maior e mais importante cidade da Inglaterra e do Reino Unido." width="225" height="300" /></a>O tema é muito abrangente mas vou focar justamente para a área tecnologia onde temos a possibilidade de trabalhar remoto (vulgo home office, que é um outro tema que gera muita polemica).</p>
<p>Hoje fecha um total de 3 dias trabalhando na empresa <a title="Mochii" href="http://mochii.co.uk/" target="_blank">Mochii</a> (Realmente achei o site da empresa muito nerd e extremamente diferente, esse e outros motivo me fez trabalhar com eles) e durante esses três dias tive uma ótima experiencia para compartilhar.</p>
<p>Primeiro que o dono da empresa é muito acessível, sem essa frescura de hierarquia (Não que eu ache totalmente hierarquia desnecessário, mas em alguns caso ao meu ver não precisaria de tanta burocracia).</p>
<p>Segundo que o time de desenvolvimento de lá é 100% aberto a ideias e a criticas (logicamente que criticas construtivas e que saiba conversa sobre o porque não concorda com determinada parte do código), muito diferente de alguns desenvolvedores no Brasil (Sei que tem em outros lugares do mundo mas como trabalhei muito tempo no Brasil estou usando como referencia) que se apega com código desenvolvido.</p>
<p>Uma coisa que realmente me deixou muito surpreso foi em relação a cobrança de como esta indo a tarefa que eu (Thiago Avelino) assumi, o dono da empresa chegou para mim e falou que eu deveria conversa com um funcionario que saberia explicar melhor sobre o porque esta usando a tecnologia X, Y e Z, depois do lider do desenvolvimento me explicado foi atribuido uma tarefa e não fui cobrado nem uma vez sobre a tarefa, realmente isso é muito diferente aqui no Brasil, principalmente quando um desenvolvedor novo entra em um time, geralmente tem sempre um cara no time que fica pergunta &#8220;<em>e ai esta entendendo?</em>&#8220;, ao meu ver isso tem o seu lado bom e consequentemente o seu lado ruim.<br />
O lado bom é que tem a interação do time com o novo desenvolvedor, mais isso acaba ficando chato pois se o novo desenvolvedor não esta entendo ele vai ficar com vergonha (ou alguma coisa do genero) de se expressa falando que não esta entendo alguma parte do fluxo do projeto ou mesmo código.</p>
<p>Poderia falar mais 1001 experiência que tive essa semana, mas vou ir gerando blog post com os passar das semanas, assim posso ir aprofundando cada dia mais da experiência vivida.</p>
<blockquote><p>Realmente vale apena trabalhar para uma empresa de fora do Brasil.</p></blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/eVl7BzBKDha8L-__N-DXMrE4pkk/0/da"><img src="http://feedads.g.doubleclick.net/~a/eVl7BzBKDha8L-__N-DXMrE4pkk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/eVl7BzBKDha8L-__N-DXMrE4pkk/1/da"><img src="http://feedads.g.doubleclick.net/~a/eVl7BzBKDha8L-__N-DXMrE4pkk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/I4lNTpZZQQ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2012/04/20/trabalhar-para-empresa-de-fora-do-brasil/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://avelino.us/2012/04/20/trabalhar-para-empresa-de-fora-do-brasil/</feedburner:origLink></item>
		<item>
		<title>Node.js onde usar?</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/T6JTchq82gU/</link>
		<comments>http://avelino.us/2012/04/10/node-js-onde-usar/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 04:13:18 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Nodejs]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=124</guid>
		<description><![CDATA[Ultimamente estou estudando bastante Javascript para colocar algumas aplicações em Node.js no ar, ate que tive a minha primeira necessidade real de usar Nodejs. Na Nodegrid tivemos a necessidade fazer grande processamento assíncrono, temos um servidor de cache que foi &#8230; <a href="http://avelino.us/2012/04/10/node-js-onde-usar/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-131" title="nodejs" src="http://avelino.us/wp-content/uploads/2012/04/nodejs-300x168.png" alt="" width="300" height="168" /></p>
<p>Ultimamente estou estudando bastante Javascript para colocar algumas aplicações em Node.js no ar, ate que tive a minha primeira necessidade real de usar <a title="Node.js project" href="http://nodejs.org">Nodejs</a>.</p>
<p>Na <a href="http://nodegrid.com">Nodegrid</a> tivemos a necessidade fazer grande processamento assíncrono, temos um servidor de cache que foi desenvolvimento por necessidade de armazenamento e controle do que esta em cache e tempo para expirar o mesmo, poderia ser usado memcache mas a <a href="http://nodegrid.com">Nodegrid</a> esta fazendo um serviço de hosting de memcache, com isso teríamos o problema de concorrência de nome dentro do banco chave e valor (Memcache).</p>
<p>No case que tenho com a <a href="http://nodegrid.com">Nodegrid</a> na solução de cache (Djazz.cache) começamos a desenvolver usando &#8216;C&#8217;, funcionou muito bem, mas com o passar do tempo a manutenção do software começou ficar trabalhosa. Eu tenho experiencias com software grande em C <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html">(Kernel BSD)</a> e mesmo assim a manutenção de um software não é nada confortável. Migrei para Python com Twisted, mais infelizmente o códigos usando Twisted não fica muito agradável ou seja não é Pythônico então olhei para o projeto Node.js que tem a característica simples e facil de trabalhar com processamento assíncrono.</p>
<p>Recomendo olhar o trabalho que os commiters do Node.js estão fazendo, tem muitas ideias ótimas e outra que precisa ser melhoradas.</p>
<p>Vejo a Node.js como uma solução ótima e simples para trabalhar com conexões assíncrono, ainda hoje não vejo o Node.js substituindo uma linguagem que já esta a anos rodando em backend como Python, Ruby, Java e etc. Ao meu ver o Node.js vai crescer ainda mais o seu uso nas necessidades específica (assíncronas), pela simplicidade de implementação e fácil manutenção.</p>
<p>Link o slide da palestra &#8220;<a title="Node.js em produção, javascript no server side" href="http://www.slideshare.net/avelinoo/nodejs-em-produo-javascript-no-server-side" target="_blank">Node.js em produção</a>&#8220;</p>

<p><a href="http://feedads.g.doubleclick.net/~a/rZRPK7lHSdwhyERl7AGwJxW4g18/0/da"><img src="http://feedads.g.doubleclick.net/~a/rZRPK7lHSdwhyERl7AGwJxW4g18/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rZRPK7lHSdwhyERl7AGwJxW4g18/1/da"><img src="http://feedads.g.doubleclick.net/~a/rZRPK7lHSdwhyERl7AGwJxW4g18/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/T6JTchq82gU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2012/04/10/node-js-onde-usar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://avelino.us/2012/04/10/node-js-onde-usar/</feedburner:origLink></item>
		<item>
		<title>Test é para os fracos</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/9JKp3iKDjWY/</link>
		<comments>http://avelino.us/2012/02/24/test-e-para-os-fracos/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 01:48:59 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=122</guid>
		<description><![CDATA[Em novembro fiz mais uma palestra sobre teste unitários só que agora com o titulo da palestra bem diferente &#8220;Test é para os fracos&#8221;, o motivo desse titulo é para deixar a palestra mais dinâmica pois escrever teste não é &#8230; <a href="http://avelino.us/2012/02/24/test-e-para-os-fracos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Em novembro fiz mais uma palestra sobre <code>teste unitários</code> só que agora com o titulo da palestra bem diferente <a href="http://www.slideshare.net/avelinoo/test-para-os-fracos">&#8220;Test é para os fracos&#8221;</a>, o motivo desse titulo é para deixar a palestra mais dinâmica pois escrever teste não é uma tarefa muito simples no primeiro contato.</p>
<p>Tem muitas pessoas que acha que escrever teste não garante que o software não tem bug, isso é claro, mas vamos encarar o problema quando quando tiver que mudar o software, caso ele esteja como teste na parte onde esta sendo implementado novas funcionalidade e venha quebrar ai sim vamos dar valor aos teste.</p>
<p>Uns dos tópicos da minha palestra é como acostumar a escrever teste, geralmente não é um trabalho muito simples, quando começamos a praticar técnicas de desenvolvimento de software como <a href="http://en.wikipedia.org/wiki/Test_Driven_Development">TDD</a> é um trabalho muito chato pois não temos experiencia e nem costume de escrever um teste para depois implementar o software passar na quela teste, vendo este cenário podemos chegar a conclusão que muitos desenvolvedores não sabe realmente o que precisa ser desenvolvido e com isso fica ainda mais complicado de praticar TDD.</p>
<p>Antes de desenvolvermos um software a primeira coisa é saber o que o software vai fazer, só assim a pratica de TDD começa e ficar mais fácil e fluente, uma dica que dou para quem começa da implementa camada de teste unitário em um projeto é participar de Coding Dojo e de <a href="http://python.org.br/wiki/GrupySP/PythonStorm">PythonStorm</a> (Ideia do nosso amigo <a href="https://rodolphoeck.com/">Rodolpho Eckhardt</a>) onde é reunido um grupo para fazer para bater um papo sobre tecnologia (Python) e falar sobre melhores praticas.</p>
<p>Esse é referente aos primeiros slides da palestra, vou escrever as próximos slides no próximos webposts.</p>
<p>Link dos slides da palestra: <a href="http://www.slideshare.net/avelinoo/test-para-os-fracos">http://www.slideshare.net/avelinoo/test-para-os-fracos</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/tGihyLH1h1_LM2iEXcuUy_zHEsg/0/da"><img src="http://feedads.g.doubleclick.net/~a/tGihyLH1h1_LM2iEXcuUy_zHEsg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tGihyLH1h1_LM2iEXcuUy_zHEsg/1/da"><img src="http://feedads.g.doubleclick.net/~a/tGihyLH1h1_LM2iEXcuUy_zHEsg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/9JKp3iKDjWY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2012/02/24/test-e-para-os-fracos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://avelino.us/2012/02/24/test-e-para-os-fracos/</feedburner:origLink></item>
		<item>
		<title>VIM a IDE para programadores Python</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/UULJamWqoq0/</link>
		<comments>http://avelino.us/2011/12/22/vim-ide-para-programadores-python/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 01:47:39 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=118</guid>
		<description><![CDATA[Depois muito tempo sem escrever nada no meu blog, escolhi esse tema para chamar a atenção do pessoal que esta começando desenvolver em Python que sempre pergunta qual é a melhor IDE para desenvolver em Python ou qual quer programador &#8230; <a href="http://avelino.us/2011/12/22/vim-ide-para-programadores-python/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Depois muito tempo sem escrever nada no meu blog, escolhi esse tema para chamar a atenção do pessoal que esta começando desenvolver em Python que sempre pergunta qual é a melhor IDE para desenvolver em Python ou qual quer programador que usa uma super IDE pesado porque tem o recurso X, Y e Z.</p>
<p>Com o VIM podemos ter todos os recurso avançado que temos em qual quer IDE, basta algumas configurações para que esses recursos ser ativado, para facilitar a vida de todos compartilhei o meu <code>.vimrc</code> e nesse post vou explicar como usar o mesmo.</p>
<p><code>"Em 2 de novembro de 1991, Bram Moolenaar publicava a primeira versão do edito vim. O vim nasceu como um clone para Amiga do editor vi criado por Bill Joy em 1976, adicionando algumas funcionalidades extras, daí seu nome (VI iMproved ou VI Melhorado). Este editor se adaptou rapidamente a outras plataformas. "</code></p>
<p>Assumindo que o <code>vi</code> já esta instalado no meu micro, vamos instalar as configurações que eu fiz, basta rodar os seguintes comando no seu bash (Linux ou Mac):</p>
<pre><code>curl https://raw.github.com/avelino/.vimrc/master/bootstrap.sh -o - | sh
</code></pre>
<p>Após isso ele vai baixar o repositório na sua pasta <code>HOME</code>.<br />
Recomendo o uso o VIM em GUI pois podemos chegar 256 cores, ou seja, colocar temas mais agradável e assim deixando o uso do <code>vim</code> mais confortável para o desenvolvimento, para Linux é o <code>gvim</code> e para mac o <code>macvim</code> (Para mac o Björn Winckler fez um ótimo trabalho, na minha humilde opinião é a melhor versão do VIM via GUI).</p>
<p>Chega de blablabla né, vamos logo para o que realmente interessa, como o <code>VIM</code> ficou e como utilizar ele?</p>
<p><img alt="vim start" src="http://dl.dropbox.com/u/763381/avelino.us/vim-start.png" /></p>
<p>Usando o vim para navegar nas pasta de um projeto:</p>
<p><img alt="vim files" src="http://dl.dropbox.com/u/763381/avelino.us/vim-files.png" /></p>
<p>Buscando arquivo por nome dentro do projeto:</p>
<p><img alt="vim search file" src="http://dl.dropbox.com/u/763381/avelino.us/vim-search-files.png" /></p>
<p>Listar todas as class e def do arquivo esta esta aberto (Python)</p>
<p><img alt="vim list class" src="http://dl.dropbox.com/u/763381/avelino.us/vim-list-class.png" /></p>
<p>Lista de comandos para usar no &#8216;vim&#8217;, lembrando que esses comando foi customizado:</p>
<ul>
<li><code>:cd</code> /path Abrir pasta</li>
<li><code>tn</code> Abrir nova aba</li>
<li><code>te</code> Abrir nova aba e carregar arquivo</li>
<li><code>t]</code> Proxima aba</li>
<li><code>t[</code> Voltar aba</li>
<li><code>Ctrl+c</code> Adicionar todos os arquivos no cache para poder fazer busca de arquivo (recomendo fazer isso ao abrir o projeto)</li>
<li><code>Ctrl+f</code> Busca arquivo e abre na mesma aba</li>
<li><code>Ctrl+s</code> Busca arquivo e abre em uma nova aba</li>
<li><code>\b</code> Abre arquivo que esta no buffer do vim (Arquivo abertos)</li>
<li><code>\d</code>, <code>\n</code> ou <code>F3</code> Abre navegador de arquivo</li>
<li><code>\f</code> Lista todas as class e def (Python)</li>
<li><code>\j</code> Vai para declaração de um metodo</li>
<li><code>\r</code> Renomear todos os metodos</li>
<li><code>[e</code> Move linha para cima</li>
<li><code>e]</code> Move linha para baixo</li>
<li><code>\v ou</code>Ctrl+w + v` Divide a tela em vertical</li>
<li><code>\h</code> ou <code>Ctrl+w + s</code> Divide a tela em horizontal</li>
<li><code>\w</code> ou <code>Ctrl+w + q</code> Fecha a aba atual</li>
<li><code>Ctrl+k</code> Abre console Python</li>
<li><code>Ctrl+j</code> Roda o script Python aberto</li>
<li><code>\sh</code> Abre bash (shell)</li>
<li><code>\p</code> Manda o arquivo em aberto para o dpaste.com</li>
<li><code>\ga</code> Git add .</li>
<li><code>\gc</code> Git commit</li>
<li><code>\gsh</code> Git push</li>
<li><code>\gs</code> Git status</li>
<li><code>\gd</code> Git diff</li>
<li><code>\gr</code> Git remove</li>
<li><code>\S</code> Remove todos os espaços do final</li>
<li><code>\c</code> Lista controle de versao do buffer</li>
</ul>

<p><a href="http://feedads.g.doubleclick.net/~a/cXJ_lnmF4KIf8yzV2wjyyez-tyo/0/da"><img src="http://feedads.g.doubleclick.net/~a/cXJ_lnmF4KIf8yzV2wjyyez-tyo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cXJ_lnmF4KIf8yzV2wjyyez-tyo/1/da"><img src="http://feedads.g.doubleclick.net/~a/cXJ_lnmF4KIf8yzV2wjyyez-tyo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/UULJamWqoq0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2011/12/22/vim-ide-para-programadores-python/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://avelino.us/2011/12/22/vim-ide-para-programadores-python/</feedburner:origLink></item>
		<item>
		<title>Google Nexus S, atualização oficial para Android 4.0 (Ice Cream Sandwich)</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/7uVchCmbc_M/</link>
		<comments>http://avelino.us/2011/12/17/google-nexus-s-atualizacao-oficial-para-android-40/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 01:48:18 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=120</guid>
		<description><![CDATA[Dia 16/12/2011 o Google lançou oficialmente a atualização do aparelho Nexus S para Ice Cream Sandwich (Android 4.0), a noticia saiu no Twitter oficial do Google Nexus. Para você atualizar o seu Nexus S faça o seguinte procedimento: 1 &#8211; &#8230; <a href="http://avelino.us/2011/12/17/google-nexus-s-atualizacao-oficial-para-android-40/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dia 16/12/2011 o Google lançou oficialmente a atualização do aparelho Nexus S para Ice Cream Sandwich (Android 4.0), a noticia saiu no Twitter oficial do <a href="https://twitter.com/#!/googlenexus/status/147783081426817024">Google Nexus</a>.</p>
<h2>Para você atualizar o seu Nexus S faça o seguinte procedimento:</h2>
<ul>
<li><code>1</code> &#8211; Faça download da imagem do Android 4.0 para o Nexus S no seguinte link:<br />
<a href="http://android.clients.google.com/packages/ota/google_crespo/VQ8PQk_V.zip">http://android.clients.google.com/packages/ota/google_crespo/VQ8PQk_V.zip</a> ou <a href="http://dl.dropbox.com/u/763381/VQ8PQk_V.zip">http://dl.dropbox.com/u/763381/VQ8PQk_V.zip</a></li>
<li><code>2</code> &#8211; Coloque o <code>VQ8PQk_V.zip</code> SD do seu Nexus S e você deve renomear o arquivo para <code>update.zip</code></li>
<li><code>3</code> &#8211; Desligue o seu aparelho</li>
<li><code>4</code> &#8211; Aperte o botão do <code>volume</code> para cima + o botão <code>power</code>, seu celular vai iniciar no modulo <code>fastboot</code></li>
<li><code>5</code> &#8211; Selecione a opção <code>recovery</code></li>
<li><code>6</code> &#8211; Vai começa carregar e aparecera um <code>triângulo</code> com um <code>!</code>, nessa tela você deve aperta o botão <code>power</code> + <code>volume</code> para cima (<code>Deve ser na sequência relatado no post</code>)</li>
<li><code>7</code> &#8211; Vai aparecer um menu onde você deve selecionar a seguinte opção <code>Apply update from /sdcard</code></li>
<li><code>8</code> &#8211; Após instalar você deve selecionar <code>reboot system now</code></li>
<li><code>9</code> &#8211; Pronto, <code>Android 4.0.3</code> instalado no seu Nexus S</li>
</ul>
<p>Quando o seu celular for ligar a primeira vez com Android 4.0 ele vai ficar um pouco lento pois vai refazer o <code>dalvik cache</code>.</p>
<p><code>Lembrando que você tem que ter a versão do Android oficial do Google instalado no seu Nexus S, caso não esteja não vai conseguir fazer os procedimentos, pois estamos atualizando para a versão oficial do Google.</code></p>
<p>O Google vai liberar aos poucos a atualização automatica para os Nexus S pois se não vai acabar com o link das operadoras, no Brasil principalmente que nosso 3G é um 2G.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Y13bsfy1BVP4HDWJzViKZFFJRdE/0/da"><img src="http://feedads.g.doubleclick.net/~a/Y13bsfy1BVP4HDWJzViKZFFJRdE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Y13bsfy1BVP4HDWJzViKZFFJRdE/1/da"><img src="http://feedads.g.doubleclick.net/~a/Y13bsfy1BVP4HDWJzViKZFFJRdE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/7uVchCmbc_M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2011/12/17/google-nexus-s-atualizacao-oficial-para-android-40/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://avelino.us/2011/12/17/google-nexus-s-atualizacao-oficial-para-android-40/</feedburner:origLink></item>
		<item>
		<title>Nova versão da API do Dropbox</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/y1ah4ssPN48/</link>
		<comments>http://avelino.us/2011/10/13/nova-versao-da-api-do-dropbox/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 01:47:04 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=116</guid>
		<description><![CDATA[Dia 14.09.2011 o Dropbox lançou a nova versão 1.0 da API, nesse lançamento trouxe muitas novidades e melhorias: Suporte para aplicações web Suporte para criação de pasta (Na versão 0.1 da API não tinha) Novo site para desenvolvedores, com documentação &#8230; <a href="http://avelino.us/2011/10/13/nova-versao-da-api-do-dropbox/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dia 14.09.2011 o Dropbox lançou a nova versão 1.0 da API, nesse lançamento trouxe muitas novidades e melhorias:</p>
<ul>
<li>Suporte para aplicações web</li>
<li>Suporte para criação de pasta (Na versão 0.1 da API não tinha)</li>
<li>Novo site para desenvolvedores, com documentação simples e completa <a href="https://www.dropbox.com/developers_beta">https://www.dropbox.com/developers_beta</a></li>
<li>Melhor compartilhamento de arquivo, streaming, busca por arquivo e suporte para revisão de arquivo</li>
<li>Implementação no controle de nomes de arquivos, para não sobrescrever arquivos já salvo</li>
<li>SDK atualizado para iOS, Android, Python, Ruby e Java que implementa todas modificações e documentação</li>
</ul>
<p>Link do repositorio (Python Pypi) da nova biblioteca <a href="http://pypi.python.org/pypi/dropbox/1.1">http://pypi.python.org/pypi/dropbox/1.1</a></p>
<p>O dropbox implementou um oauth onde podemos desenvolver software e fazer o usuário usar a conta de dropbox dele para armazenamento de arquivos:<br />
<img alt="OAuth Dropbox" src="https://www.dropbox.com/static/images/oauth.png" title="OAuth Dropbox" /></p>
<p>Vou falar um pouco sobre 3 metodos que esta dentro da biblioteca &#8220;dropbox&#8221; client, rest e session:</p>
<p>Com o metodo session é por onde tudo começa, onde você linka o seu software com uma conta Dropbox, exemplo:</p>
<pre><code># Include the Dropbox SDK libraries
from dropbox import session

# Get your app key and secret from the Dropbox developer website
APP_KEY = 'INSERT_APP_KEY_HERE'
APP_SECRET = 'INSERT_SECRET_HERE'

# ACCESS_TYPE should be 'dropbox' or 'app_folder' as configured for your app
ACCESS_TYPE = 'INSERT_ACCESS_TYPE_HERE'
sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)
</code></pre>
<p>Caso esteja usando a conta do Dropbox do usuário podemos pegar informações da conta dele:</p>
<pre><code>client = client.DropboxClient(sess)
print "linked account:", client.account_info()
</code></pre>
<p>Agora usando o metodo &#8220;client&#8221; podemos fazer get e put de arquivos:</p>
<pre><code>from dropbox import client
f = open('working-draft.txt')
response = client.put_file('/magnum-opus.txt', f)
print "uploaded:", response
</code></pre>
<p>Após criar o arquivos podemos ler ele:</p>
<pre><code>print client.get_file('/magnum-opus.txt').read()
</code></pre>
<p>Reescrever o arquivo com uma nova revisão para criar um novo arquivo:</p>
<pre><code>out = open('magnum-opus.txt', 'w')
out.write(client.get_file('/magnum-opus.txt',rev='362e2029684fe').read())
</code></pre>
<p>Para trabalhar com REST temos um ótima documentação <a href="https://www.dropbox.com/developers_beta/reference/api">https://www.dropbox.com/developers_beta/reference/api</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/cuOqufp2uSgX2SDkDHFDPC6f2Qw/0/da"><img src="http://feedads.g.doubleclick.net/~a/cuOqufp2uSgX2SDkDHFDPC6f2Qw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cuOqufp2uSgX2SDkDHFDPC6f2Qw/1/da"><img src="http://feedads.g.doubleclick.net/~a/cuOqufp2uSgX2SDkDHFDPC6f2Qw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/y1ah4ssPN48" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2011/10/13/nova-versao-da-api-do-dropbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://avelino.us/2011/10/13/nova-versao-da-api-do-dropbox/</feedburner:origLink></item>
		<item>
		<title>Problema com hashlib + md5 (Python 2.7)</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/KNfjKVdF1bg/</link>
		<comments>http://avelino.us/2011/10/04/problema-com-hashlib-md5-python-27/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 01:46:05 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=114</guid>
		<description><![CDATA[Estava com o seguinte problema &#8220;Error: No module named _md5&#8243;, primeiramente pensei que foce problema de de compilação do Python, mas olhando o problema proximo achei alguns artigo falando desse problema e um deles estava no bug.python.org A solução que &#8230; <a href="http://avelino.us/2011/10/04/problema-com-hashlib-md5-python-27/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estava com o seguinte problema &#8220;Error: No module named _md5&#8243;, primeiramente pensei que foce problema de de compilação do Python, mas olhando o problema proximo achei alguns artigo falando desse problema e um deles estava no <a href="http://bugs.python.org/msg109485">bug.python.org</a></p>
<p>A solução que cheguei foi, criar uma lib chamada &#8220;_md5&#8243;, criei um arquivo chamado &#8220;_md5py&#8221;:</p>
<pre><code>class _md5:
    def __init__():
        import md5
        return md5
</code></pre>
<p>Lendo as documentação vi que a lib &#8220;hashlib._md5&#8243; foi deprecada pois a md5 ficou no lugar. Espero que ajude outras pessoas que esta com esse problema.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/bHd7dsigc2M_tQilk3HQom-fnH4/0/da"><img src="http://feedads.g.doubleclick.net/~a/bHd7dsigc2M_tQilk3HQom-fnH4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bHd7dsigc2M_tQilk3HQom-fnH4/1/da"><img src="http://feedads.g.doubleclick.net/~a/bHd7dsigc2M_tQilk3HQom-fnH4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/KNfjKVdF1bg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2011/10/04/problema-com-hashlib-md5-python-27/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://avelino.us/2011/10/04/problema-com-hashlib-md5-python-27/</feedburner:origLink></item>
		<item>
		<title>Porque fazer teste unitario em javascript?</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/Ep2w7ARiqKM/</link>
		<comments>http://avelino.us/2011/07/21/porque-fazer-teste-unitario-em-javascript/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 01:45:12 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=112</guid>
		<description><![CDATA[É complicado confiar em um software que não tem teste unitario. Hoje estava escrevendo alguns códigos em JavaScript e resolvi escrever esse post pois muitos desenvolvedores JavaScript não costumam testar seus códigos. QUnit é um Framework open source de teste &#8230; <a href="http://avelino.us/2011/07/21/porque-fazer-teste-unitario-em-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>É complicado confiar em um software que não tem teste unitario. Hoje estava escrevendo alguns códigos em JavaScript e resolvi escrever esse post pois muitos desenvolvedores JavaScript não costumam testar seus códigos.</p>
<p>QUnit é um Framework open source de teste unitário para JavaScript. Ele foi desenvolvido para fazer teste unitários no desenvolvimento do próprio Jquery, mas é capaz de testar qualquer código Javascript (Até mesmo testar código Javascript do lado do servidor NodeJS).</p>
<p>Segue abaixo o exemplo de uma implementação simples:</p>
<pre><code>&lt;html&gt;
&lt;head&gt;
  &lt;script src="http://code.jquery.com/jquery-latest.js"&gt;&lt;/script&gt;
  &lt;link rel="stylesheet" href="http://code.jquery.com/qunit/git/qunit.css" type="text/css" media="screen" /&gt;
  &lt;script type="text/javascript" src="http://code.jquery.com/qunit/git/qunit.js"&gt;&lt;/script&gt;
  &lt;script&gt;
    function calc(val1, val2, oper){
      val1 = typeof val1 == 'undefined' ? 0 : val1
      val2 = typeof val2 == 'undefined' ? 0 : val2
      oper = typeof oper == 'undefined' ? "+" : oper

      if(oper == "+")
        cal = val1 + val2
      else if(oper == "-")
        cal = val1 - val2
      else
        cal = false

      return cal
    }
  &lt;/script&gt;

  &lt;script&gt;
    $(document).ready(function(){

      module("Test render html")
      test("test valor in #test1", function(){
        equals("ok ok ok", $("#test1").html())
        notEqual("ok ok ok ", $("#test1").html())
      })

      module("Test function calc()")
      test("test basic return 10", function(){
        equals(10, calc(10))
        notEqual(10, calc(11))
      })

      test("test basic sum 2 parameter", function(){
        equals(20, calc(10, 10))
        notEqual(21, calc(10, 10))
        deepEqual(20, calc(10, 10))
        notStrictEqual("20", calc(10, 10))
      })

      test("set operator +", function(){
        equals(20, calc(10, 10, "+"))
        equals(false, calc(10, 10, "..."))
      })

      test("set operator -", function(){
        equals(1, calc(10, 9, "-"))
      })

    })
  &lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;
  &lt;h1 id="qunit-header"&gt;QUnit example&lt;/h1&gt;
  &lt;h2 id="qunit-banner"&gt;&lt;/h2&gt;
  &lt;div id="qunit-testrunner-toolbar"&gt;&lt;/div&gt;
  &lt;h2 id="qunit-userAgent"&gt;&lt;/h2&gt;
  &lt;ol id="qunit-tests"&gt;&lt;/ol&gt;
  &lt;div id="qunit-fixture"&gt;test markup, will be hidden&lt;/div&gt;

  &lt;div id="test1"&gt;ok ok ok&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>No código acima estou fazendo dois tipos de testes: um módulo de item renderizado na página, e outro módulo de teste de uma função de cálculo.</p>
<p>Segue abaixo o print de como ficou o test:<br />
<img alt="Alt text" src="http://s1.i1.picplzthumbs.com/upload/img/16/3f/a6/163fa61700835d5c6527f30c407f5815f206e47b_wmlg.jpg" title="Print de como ficou o teste" /></p>

<p><a href="http://feedads.g.doubleclick.net/~a/zNmzai7aDQmYnGrPNNF2Hzr_9hY/0/da"><img src="http://feedads.g.doubleclick.net/~a/zNmzai7aDQmYnGrPNNF2Hzr_9hY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/zNmzai7aDQmYnGrPNNF2Hzr_9hY/1/da"><img src="http://feedads.g.doubleclick.net/~a/zNmzai7aDQmYnGrPNNF2Hzr_9hY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/Ep2w7ARiqKM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2011/07/21/porque-fazer-teste-unitario-em-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://avelino.us/2011/07/21/porque-fazer-teste-unitario-em-javascript/</feedburner:origLink></item>
		<item>
		<title>Template Django com Haml</title>
		<link>http://feedproxy.google.com/~r/pyAvelino/~3/KPn71-BJk5o/</link>
		<comments>http://avelino.us/2011/05/28/template-django-com-haml/#comments</comments>
		<pubDate>Sun, 29 May 2011 01:44:32 +0000</pubDate>
		<dc:creator>Avelino</dc:creator>
				<category><![CDATA[Avelino]]></category>

		<guid isPermaLink="false">http://avelino.us/?p=110</guid>
		<description><![CDATA[Haml (HTML Abstraction Markup Language) é uma linguagem simples, que é usado para descrever XHTML de qualquer documento web sem precisar ficar abrindo e fechando tags HTML. Ele foi projetado para resolver muitos dos problemas de templates, bem como fazer &#8230; <a href="http://avelino.us/2011/05/28/template-django-com-haml/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://haml-lang.com/">Haml</a> (HTML Abstraction Markup Language) é uma linguagem simples, que é usado para descrever XHTML de qualquer documento web sem precisar ficar abrindo e fechando tags HTML. Ele foi projetado para resolver muitos dos problemas de templates, bem como fazer marcação tão elegante como ela pode ser.</p>
<p>Em Python temos a biblioteca <a href="https://github.com/jessemiller/HamlPy">HamlPy</a> ela pega os files HAML e gera o HTML para usarmos em nossos sistemas.</p>
<p>Vamos logo para a pratica, chega de lero lero.</p>
<pre><code>%html{'xmlns':"http://www.w3.org/1999/xhtml", 'lang':"en", "xml:lang":"en"}
  %head

    %title Testando Haml

    %style{'type': 'text/css'}
      body{font-family: verdana;}

    %script{'type':'text/javascript', 'src':'https://www.google.com/jsapi?key=ABQIAAAAUgaJsDgRTDbR5vvhnJ3iYBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxS2j2XMXVpjyqg8A7TkHl2W04abvA'}
    %script{'type': 'text/javascript'}
      google.load("jquery", "1.6.1");

  %body
    #header
      %h1#lero
        .test Haml
        %ul.navigation
          - for run in varloop
            %li= run
    #content
      Testando para ver se funciona o HamlPy
</code></pre>
<p>Esse é um layout feito com haml, é muito simples pois não precisamos ficar fechando as tags, assim os erros de html é 100% resolvido, como converte o haml para html:</p>
<pre><code>/Users/avelino/.virtualenvs/haml/bin/hamlpy template/index.haml template/index.html
</code></pre>
<p>O binario <em>hamlpy</em> recebe dois parâmetros o primeiro é o input file haml o segunda é o output a saída html, depois de rodarmos o hamlpy temos uma saida da seguinte forma:</p>
<pre><code>&lt;html lang='en' xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'&gt;
  &lt;head&gt;
    &lt;title&gt;Testando Haml&lt;/title&gt;
    &lt;style type='text/css'&gt;
      body{font-family: verdana;}
    &lt;/style&gt;
    &lt;script src='https://www.google.com/jsapi?key=ABQIAAAAUgaJsDgRTDbR5vvhnJ3iYBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxS2j2XMXVpjyqg8A7TkHl2W04abvA' type='text/javascript'&gt;&lt;/script&gt;
    &lt;script type='text/javascript'&gt;
      google.load("jquery", "1.6.1");
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div id='header'&gt;
      &lt;h1 id='lero'&gt;
        &lt;div class='test'&gt;Haml&lt;/div&gt;
        &lt;ul class='navigation'&gt;
          {% for run in varloop %}
            &lt;li&gt;{{ run }}&lt;/li&gt;
          {% endfor %}
        &lt;/ul&gt;
      &lt;/h1&gt;
    &lt;/div&gt;
    &lt;div id='content'&gt;
      Testando para ver se funciona o HamlPy
    &lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Minha views do Django declaro sempre com o arquivo .html que foi gerado com o hamlpy. Veja como ficou o meu views:</p>
<pre><code># -*- coding: utf-8 -*-
"""
    views

    :copyright: (c) 2011 by the Avelino Labs, see Thiago Avelino &lt;thiago@avelino.us&gt; for more details.
    :license: BSD, see LICENSE for more details.
"""

from django.shortcuts import render_to_response
from django.template import RequestContext

def index(request):
    return render_to_response(
            'index.html',
            context_instance=RequestContext(request))
</code></pre>

<p><a href="http://feedads.g.doubleclick.net/~a/77vlSTwENgNaQr2Wxr7YZp5DmCM/0/da"><img src="http://feedads.g.doubleclick.net/~a/77vlSTwENgNaQr2Wxr7YZp5DmCM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/77vlSTwENgNaQr2Wxr7YZp5DmCM/1/da"><img src="http://feedads.g.doubleclick.net/~a/77vlSTwENgNaQr2Wxr7YZp5DmCM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/pyAvelino/~4/KPn71-BJk5o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://avelino.us/2011/05/28/template-django-com-haml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://avelino.us/2011/05/28/template-django-com-haml/</feedburner:origLink></item>
	</channel>
</rss>

