<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Blog do Lameiro</title>
	<atom:link href="https://lameiro.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://lameiro.wordpress.com</link>
	<description></description>
	<lastBuildDate>Sun, 18 Jul 2010 22:47:10 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">493420</site><cloud domain='lameiro.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s0.wp.com/i/buttonw-com.png</url>
		<title>Blog do Lameiro</title>
		<link>https://lameiro.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://lameiro.wordpress.com/osd.xml" title="Blog do Lameiro" />
	<atom:link rel='hub' href='https://lameiro.wordpress.com/?pushpress=hub'/>
	<item>
		<title>Deixando o interpretador Python maluco por diversão e lucro, ou Como se livrar de um colega de trabalho desenvolvedor Python</title>
		<link>https://lameiro.wordpress.com/2010/07/18/deixando-o-interpretador-python-maluco/</link>
					<comments>https://lameiro.wordpress.com/2010/07/18/deixando-o-interpretador-python-maluco/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Sun, 18 Jul 2010 22:44:01 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=157</guid>

					<description><![CDATA[Você está lá, em apenas mais um dia comum de trabalho (ou diversão), debugando um sistema complexo e tentando entender porque diabos algo que deveria acontecer não acontece. Você consegue reduzir o seu problema a uma linha de código, que não se comporta como você espera: O resultado foi verdadeiro, ou seja, 42 realmente é [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Você está lá, em apenas mais um dia comum de trabalho (ou diversão), debugando um sistema complexo e tentando entender porque diabos algo que deveria acontecer não acontece. Você consegue reduzir o seu problema a uma linha de código, que não se comporta como você espera:</p>
<pre class="brush: python; title: ; notranslate">
&gt;&gt;&gt; print 42 == 0
True
</pre>
<p>O resultado foi verdadeiro, ou seja, 42 realmente é igual a 0 no momento em que esta comparação roda! Mas como assim?! Em Python não é possível reabrir a classe dos números (int), reescrever os métodos de comparação para fazer isso dar certo.<br />
Lembre-se que esta comparação estranha está no meio de um sistema complexo. Assim:</p>
<pre class="brush: python; title: ; notranslate">
algo_que_deixa_interpretador_maluco()
print 42 == 0
</pre>
<p>Explicação: A função <code>algo_que_deixa_interpretador_maluco</code> está modificando o objeto &#8220;número inteiro 42&#8221; (mesmo os números são objetos). Mas os números são objetos imutáveis, como assim você modificou o valor de 42? Um número inteiro em Python (na verdade, CPython) é representado por uma struct do C, que entre outras coisas, contém um long do C com o mesmo valor  &#8211; <a href="http://www.google.com/codesearch/p?hl=en#OmnqWr_pqG0/python/src/Include/intobject.h&amp;q=ob_ival&amp;sa=N&amp;cd=1&amp;ct=rc&amp;l=25" target="_blank">o atributo ob_ival</a>.</p>
<p>Simplificando uma longa história, quando temos uma comparação de números, ela é repassada para o nível do C, e os atributos ob_ival da struct C são comparados com o operador == do C. Basta então mudarmos o ob_ival do objeto &#8220;número 42&#8221; que podemos influenciar na comparação.</p>
<p>E para mudar o valor de ob_ival? Como é possível acessar e modificar o estado interno e a memória do interpretador? Com o <a href="http://docs.python.org/library/ctypes.html" target="_blank">módulo ctypes</a>, da biblioteca padrão, podemos acessar do Python os tipos do C. Basta então conseguirmos achar na memória a struct do número 42. Mas isso é fácil, a função builtin <code>id</code> retorna exatamente o lugar na memória onde o objeto está. Com isso, temos tudo que precisamos.</p>
<pre class="brush: python; title: ; notranslate">
import ctypes

if hasattr(ctypes.pythonapi, 'Py_InitModule4'):
    Py_ssize_t = ctypes.c_int
elif hasattr(ctypes.pythonapi, 'Py_InitModule4_64'):
    Py_ssize_t = ctypes.c_int64
else:
    raise TypeError(&quot;Cannot determine type of Py_ssize_t&quot;)

class PyObject(ctypes.Structure):
    pass # incomplete type

class PyObject(ctypes.Structure):
    _fields_ = [('ob_refcnt', Py_ssize_t),
                ('ob_type', ctypes.POINTER(PyObject))]

class PyIntObject(PyObject):
    _fields_ = [('ob_ival', ctypes.c_long)]

forty_two_object = PyIntObject.from_address(id(42))
forty_two_object.ob_ival = 0

print 42 == 0
</pre>
<p>Neste código, estamos primeiro conseguindo o endereço do objeto 42 (linha 20), depois criando a struct do ctypes (ponte entre o Python e a struct C), depois alteramos o ob_ival do 42 para 0, na memória do interpretador (linha 21).</p>
<p>A partir daí, quando o Python fizer a comparação entre o número 42 e 0 (linha 23), ela será verdadeira, já que seus ob_ival são iguais.</p>
<p>Extensões em C ou mesmo código Python com ctypes mal testados podem causar consequências imprevisíveis e bugs dificílimos de reproduzir, mesmo onde parece impossível. Mas também tem usos interessantes: Pense em um dos inúmeros jogos que suportam Python como <a href="http://en.wikipedia.org/wiki/Civilization_IV#Python" target="_blank">Civilization IV</a>, <a href="http://en.wikipedia.org/wiki/Battlefield_2" target="_blank">Battlefield 2</a> e <a href="http://en.wikipedia.org/wiki/Pirates_of_the_Caribbean_Online" target="_blank">Piratas do Caribe Online</a>. É possível fazer um script usando o mesmo princípio que modifica, por exemplo, as variáveis de controle de vidas do jogador, posição etc.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2010/07/18/deixando-o-interpretador-python-maluco/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">157</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Corrida de vetores, agora mais nerd</title>
		<link>https://lameiro.wordpress.com/2009/09/05/corrida-de-vetores-ainda-mais-nerd/</link>
					<comments>https://lameiro.wordpress.com/2009/09/05/corrida-de-vetores-ainda-mais-nerd/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Sat, 05 Sep 2009 03:45:59 +0000</pubDate>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=121</guid>

					<description><![CDATA[Quando eu estava no colegial, adorava jogar com meus colegas um joguinho meio matemático, entre nós conhecido como Corrida de Vetor.  É um jogo bastante popular, simples e divertido, bom para o tempo passar mais rápido naquelas aulas de chatas de Geografia. Tem uma versão online aqui. Esses dias apareceu no meu Google Reader (share [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Quando eu estava no colegial, adorava jogar com meus colegas  um joguinho meio matemático, entre nós conhecido como <a href="http://en.wikipedia.org/wiki/Racetrack_%28game%29">Corrida de Vetor</a>.  É um jogo bastante popular, simples e divertido, bom para o tempo passar mais rápido naquelas aulas de chatas de Geografia. Tem uma versão online <a href="http://vectorracer.boschloo.net/">aqui</a>.</p>
<p>Esses dias apareceu no meu Google Reader (share do <a href="http://www.ricbit.com/">ricbit</a>) <a href="http://3dpancakes.typepad.com/ernie/2009/06/how-hard-is-optimal-racing.html">um post</a> explicando um algoritmo para encontrar o caminho mínimo, dada a pista. Resumindo o post, o algoritmo é bem simples, usa apenas um grafo com todos os estados possíveis e uma busca em largura.</p>
<p>Cada vértice do grafo representará a posição na pista em x em y, e a velocidade em x e em y. Pra montar o grafo com todos os estados, é assim:</p>
<ul>
<li>Começar o grafo com um vértice, que é a posição de largada com velocidade zero e colocá-lo na fila de vértices a processar.</li>
<li>Enquanto ainda tiver vértices na fila a processar:
<ul>
<li>Processar o próximo vértice na fila de vértices a processar. Colocar os novos vértices resultantes no fim da fila.</li>
</ul>
</li>
</ul>
<p>OK, mas o que significa este &#8220;processar o vértice&#8221; ? Significa gerar todos os vértices alcançaveis a partir do atual, ou seja, os vértices que são atingidos partindo do vértice atual com a velocidade que ele tem e todas as possíveis variações na velocidade (combinação de +1, 0 ou -1 na horizontal com +1, 0 ou -1 na vertical).</p>
<p>Tendo o grafo com todos os possíveis estados do jogo, o caminho mais curto tem que estar no grafo. Como todas as arestas tem o mesmo peso, nem precisamos usar o <a href="http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm">algoritmo de Dijkstra</a> para achar o caminho mais curto. Ele será o primeiro a ser encontrado usando uma busca em largura. Na verdade, nem precisamos gerar todos os estados, podemos parar ao achar o fim da corrida, que é como eu implementei.</p>
<p>Como eu gostava muito do joguinho, fiz um programinha que lê uma pista em um arquivo texto, calcula o caminho mais curto e gera um gráfico com o caminho e uma representação das velocidades. O gráfico (tosquinho, eu sei), é assim:</p>
<div data-shortcode="caption" id="attachment_137" style="width: 727px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-137" data-attachment-id="137" data-permalink="https://lameiro.wordpress.com/2009/09/05/corrida-de-vetores-ainda-mais-nerd/track/" data-orig-file="https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png" data-orig-size="1024,512" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Resultado do programa" data-image-description="" data-image-caption="&lt;p&gt;Resultado do programa&lt;/p&gt;
" data-medium-file="https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png?w=300" data-large-file="https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png?w=780" class="size-full wp-image-137 " title="Resultado do programa" src="https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png?w=780" alt="Resultado do programa"   srcset="https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png?w=717&amp;h=359 717w, https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png?w=150&amp;h=75 150w, https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png?w=300&amp;h=150 300w, https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png?w=768&amp;h=384 768w, https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png 1024w" sizes="(max-width: 717px) 100vw, 717px" /><p id="caption-attachment-137" class="wp-caption-text">Os quadrados vermelhos representam os pontos onde o jogador decide o que fazer e o tom de vermelho representa a velocidade, quanto mais escuro mais rápido.</p></div>
<p>Podemos ver que até o algoritmo &#8220;rouba&#8221; no jogo, passando pela grama pra evitar algumas curvas muito fechadas. Acho que isso até era permitido na regra sim.</p>
<p><a href="http://github.com/lameiro/vector_race/tree/master">Código-fonte e arquivo de pista</a></p>
<p>Dependências: <a href="http://www.pythonware.com/products/pil/">PIL</a>, <a href="http://pypi.python.org/pypi/python-graph/1.6.1">python-graph</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2009/09/05/corrida-de-vetores-ainda-mais-nerd/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">121</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>

		<media:content url="https://lameiro.wordpress.com/wp-content/uploads/2009/07/track.png" medium="image">
			<media:title type="html">Resultado do programa</media:title>
		</media:content>
	</item>
		<item>
		<title>Yahoo! Open Hack Day Brazil 2008</title>
		<link>https://lameiro.wordpress.com/2008/11/11/yahoo-open-hack-day-brazil-2008/</link>
					<comments>https://lameiro.wordpress.com/2008/11/11/yahoo-open-hack-day-brazil-2008/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Tue, 11 Nov 2008 06:37:54 +0000</pubDate>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[brhackday]]></category>
		<category><![CDATA[brhackday08]]></category>
		<category><![CDATA[yahoo]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=100</guid>

					<description><![CDATA[Neste fim de semana eu participei do Yahoo! Open Hack Day Brazil. O evento foi feito pelo Yahoo! no Senac de Santo Amaro e as pessoas se divertiram com as APIs abertas do Yahoo!, fazendo mashups e algumas outras maluquices. Durou das 08:00 de sábado até as 20:00 de domingo, 36 horas ininterruptas de hacking. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Neste fim de semana eu participei do <a href="http://developer.yahoo.net/hackday/">Yahoo! Open Hack Day Brazil</a>. O evento foi feito pelo <a href="http://www.yahoo.com/">Yahoo!</a> no <a href="http://www.sp.senac.br/jsp/default.jsp?newsID=a3663.htm&amp;testeira=727&amp;unit=CAS&amp;sub=0">Senac de Santo Amaro</a> e as pessoas se divertiram com as APIs abertas do Yahoo!, fazendo <a href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)">mashups</a> e algumas outras maluquices. Durou das 08:00 de sábado até as 20:00 de domingo, 36 horas ininterruptas de hacking.</p>
<p>Só tenho coisas boas a dizer sobre o evento. O ambiente era muito confortável, a comida estava muito boa e fomos atendidos 100% do tempo, os hacks estavam muito legais, eles nos pegaram e levaram até estações de metrô e trem. Enfim, a organização do Yahoo! está de parabéns.</p>
<p>Eu como todo bom engenheiro eletricista fui ao HackDay munido de uma <a href="http://en.wikipedia.org/wiki/Breadboard">protoboard</a>, muito fio, vários <a href="http://en.wikipedia.org/wiki/LED">LEDs</a> e mais alguns componentes, ainda sem uma idéia mas com a certeza que seria útil.</p>
<p>O pessoal do <a href="http://www.pythonbrasil.com.br/moin.cgi/GrupySP">GruPy-SP</a> devidamente uniformizado formou um time e aos poucos várias pessoas foram se juntando ao time. Éramos um time enorme, com 11 pessoas. Tivemos várias idéias, como pode ser visto no brainstorm abaixo:</p>
<div style="width: 510px" class="wp-caption aligncenter"><a href="http://farm4.static.flickr.com/3140/3014775172_5fe3f74c34_d.jpg"><img src="https://i0.wp.com/farm4.static.flickr.com/3140/3014775172_5fe3f74c34_d.jpg" alt="Brainstorm do projeto" width="500" height="375" /></a><p class="wp-caption-text">Brainstorm do projeto</p></div>
<p>O projeto era um eventômetro: um medidor de quanto burburinho um evento está gerando no Twitter e Flicker. Várias idéias foram dadas no brainstorm: um algoritmo de <a href="http://en.wikipedia.org/wiki/Cluster_analysis">clustering</a> para posts no <a href="http://www.twitter.com/">Twitter</a> e <a href="http://www.flickr.com/">Flickr</a>, usar o <a href="http://en.wikipedia.org/wiki/Quartz_Composer">Quartz Composer</a> e o <a href="http://cocos2d.org/">Cocos2D</a> para gerar uns efeitos legais, <a href="http://mobile.yahoo.com/developers/roadmap">Yahoo! Blueprint</a> para fazer uma aplicação para celular, eletrônica para sair do comum e mais um monte de outras coisas.</p>
<p>Eu fiquei com o hardware do nosso hack, junto com o <a href="http://rubz.org/">Luiz Vitor Martinez Cardoso</a>. Depois que terminamos o hardware eu fui para o script que baixava as informações do Twitter e Flickr.</p>
<div style="width: 510px" class="wp-caption aligncenter"><a href="http://farm4.static.flickr.com/3159/3013937173_5c37a8d40d_d.jpg"><img src="https://i0.wp.com/farm4.static.flickr.com/3159/3013937173_5c37a8d40d_d.jpg" alt="Eu mostrando a protoboard" width="500" height="375" /></a><p class="wp-caption-text">Eu mostrando a protoboard</p></div>
<div style="width: 510px" class="wp-caption aligncenter"><a href="http://farm4.static.flickr.com/3145/3016354018_d286815241_d.jpg"><img src="https://i0.wp.com/farm4.static.flickr.com/3145/3016354018_d286815241_d.jpg" alt="Hardware do projeto" width="500" height="375" /></a><p class="wp-caption-text">Hardware do projeto</p></div>
<p>A maluquice acima é um <a href="http://en.wikipedia.org/wiki/Arduino">Arduino</a> controlando os LEDs e o <a href="http://en.wikipedia.org/wiki/Buzzer">buzzer</a> na protoboard. Os LEDs formam a palavra Yahoo! e piscam com uma frequência determinada pela quantidade de posts sobre o evento no Flickr na última hora. A quantidade de letras acesas do Yahoo! depende da quantidade de posts sobre o evento no Twitter na última hora. O buzzer tocava uma musiquinha cuja velocidade era a mesma com que os leds piscavam. Tudo era controlado pelo Arduino, uma plataforma aberta de hardware muito fácil de começar a fuçar, que recebia os dados do computador pela USB.</p>
<p>Usar os LEDs chamou muita atenção no evento, o tempo todo tinhamos jornalistas e outros participantes curiosos em saber o que era aquilo tão diferente.</p>
<p>Também tinhamos uma aplicação feita com Cocos2D que mostrava os últimos posts no Twitter e Flickr.</p>
<p>No final, não ganhamos os prêmios originalmente propostos, mas ganhamos outro prêmio. E a razão é bem simples: nosso projeto era bastante inútil, usava só uma API do Yahoo! (a do Flickr) e tinha um time muito maior que os outros. Mas ele era muito legal e diferente, então eles criaram mais 4 categorias e aí sim ganhamos um prêmio. A categoria foi chamada &#8220;What the hack was that?&#8221;, que reflete bem a surpresa com o nosso hack.</p>
<p>Concluindo, foi um fim de semana muito divertido, fiquei feliz com o nosso hack, com as pessoas que conheci, com os hacks legais apresentados e claro, com o prêmio.</p>
<div data-shortcode="caption" id="attachment_116" style="width: 235px" class="wp-caption aligncenter"><a href="https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg"><img aria-describedby="caption-attachment-116" data-attachment-id="116" data-permalink="https://lameiro.wordpress.com/2008/11/11/yahoo-open-hack-day-brazil-2008/imag01032/" data-orig-file="https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg" data-orig-size="1200,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;HTC_P3451&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1226257075&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="imag01032" data-image-description="" data-image-caption="&lt;p&gt;Lameiro feliz com o prêmio&lt;/p&gt;
" data-medium-file="https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg?w=225" data-large-file="https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg?w=768" class="size-medium wp-image-116" title="imag01032" src="https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg?w=225&#038;h=300" alt="Lameiro feliz com o prêmio" width="225" height="300" srcset="https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg?w=225 225w, https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg?w=450 450w, https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg?w=113 113w" sizes="(max-width: 225px) 100vw, 225px" /></a><p id="caption-attachment-116" class="wp-caption-text">Lameiro feliz com o prêmio</p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/11/11/yahoo-open-hack-day-brazil-2008/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">100</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3140/3014775172_5fe3f74c34_d.jpg" medium="image">
			<media:title type="html">Brainstorm do projeto</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3159/3013937173_5c37a8d40d_d.jpg" medium="image">
			<media:title type="html">Eu mostrando a protoboard</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3145/3016354018_d286815241_d.jpg" medium="image">
			<media:title type="html">Hardware do projeto</media:title>
		</media:content>

		<media:content url="https://lameiro.wordpress.com/wp-content/uploads/2008/11/imag01032.jpg?w=225" medium="image">
			<media:title type="html">imag01032</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;import antigravity&#8221; vai funcionar no Python 3</title>
		<link>https://lameiro.wordpress.com/2008/10/22/import-antigravity-vai-funcionar-no-python-3/</link>
					<comments>https://lameiro.wordpress.com/2008/10/22/import-antigravity-vai-funcionar-no-python-3/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Wed, 22 Oct 2008 17:30:30 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[xkcd]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=95</guid>

					<description><![CDATA[O Python 3 ganhou um novo easter egg: import antigravity O novo easter egg (commitado semana passada) é uma referência a uma tirinha do famoso XKCD, em que o personagem consegue voar apenas digitando &#8220;import antigravity&#8221;, se remetendo à facilidade de uso da linguagem. O novo módulo quando importado fará com que um browser seja [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>O Python 3 ganhou um novo easter egg: <code>import antigravity</code></p>
<p>O novo easter egg (<a href="http://svn.python.org/view/python/trunk/Lib/antigravity.py?rev=66902&amp;view=markup">commitado semana passada</a>) é uma referência a <a href="http://xkcd.com/353/">uma tirinha do famoso XKCD</a>, em que o personagem consegue voar apenas digitando &#8220;import antigravity&#8221;, se remetendo à facilidade de uso da linguagem. O novo módulo quando importado fará com que um browser seja aberto e a tirinha carregada da web.</p>
<p>O easter egg se junta aos já famosos <code>from __future__ import braces</code> e <code>import this</code>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/10/22/import-antigravity-vai-funcionar-no-python-3/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">95</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Gerando apresentações beamer for dummies</title>
		<link>https://lameiro.wordpress.com/2008/10/16/gerando-apresentacoes-beamer-for-dummies/</link>
					<comments>https://lameiro.wordpress.com/2008/10/16/gerando-apresentacoes-beamer-for-dummies/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Fri, 17 Oct 2008 02:09:28 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[beamer]]></category>
		<category><![CDATA[latex]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=89</guid>

					<description><![CDATA[O beamer gera apresentações muito legais, não há como duvidar. Se você ainda não o conhece, gaste um pouquinho do seu tempo e você fará apresentações muito mais bonitas e estruturadas do que as que você está acostumado a fazer no PowerPoint, OpenOffice ou Keynote. Mas ele tem um problema: o LaTeX. Eu até gosto [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>O <a href="http://latex-beamer.sourceforge.net/">beamer</a> gera apresentações muito legais, não há como duvidar. Se você ainda não o conhece, gaste um pouquinho do seu tempo e você fará apresentações muito mais bonitas e estruturadas do que as que você está acostumado a fazer no PowerPoint, OpenOffice ou Keynote.</p>
<p>Mas ele tem um problema: o <a href="http://en.wikipedia.org/wiki/LaTeX">LaTeX</a>. Eu até gosto do LaTeX e concordo que ele gera documentos com formatação bonita e consistente, já escrevi alguns documentos grandes com ele, mas pra fazer qualquer coisa eu preciso lembrar um markup muito chato e comandos mal-documentados.</p>
<p>Hoje eu descobri uma ferramentinha que resolve boa parte do problema: <a href="http://code.google.com/p/yml2tex/">yml2tex</a>. É um programa muito simples que converte um arquivo texto em <a href="http://en.wikipedia.org/wiki/YAML">notação YAML</a> para um arquivo TeX, quase pronto para ser &#8220;compilado&#8221; pelo pdflatex (o quase é porque a versão atual deixa o nome do autor hardcoded no &#8220;template&#8221; então você vai precisar editar).</p>
<p>Claro que com um YAML não dá pra aproveitar nem metade do poder do beamer, mas já fica bom. Ele faz 3 coisas e só isso: Gera o índice da apresentação, slides com &#8220;bullets&#8221; seguindo a hierarquia do YAML, inclui fotos e código-fonte (lindamente colorizado pelo <a href="http://pypi.python.org/pypi/Pygments">pygments</a>). Isso é suficiente para muitos casos. Para quem precisar personalizar mais alguma coisa, pode abrir o arquivo TeX e mandar bala.</p>
<p>Você pode ver um <a href="http://yml2tex.googlecode.com/files/release_idio.pdf">exemplo de apresentação gerada</a> de um <a href="http://yml2tex.googlecode.com/files/release_idio_source.zip">arquivo YAML</a>. O <a href="http://arthurkoziel.com/2008/06/23/latex-beamer-presentations-from-yaml-files/">blog do autor</a> tem mais detalhes de uso.</p>
<div style="width: 510px" class="wp-caption aligncenter"><img src="https://i0.wp.com/media.arthurkoziel.com/img/yml2tex_highlight_preview.png" alt="Exemplo de slide gerado pelo yml2tex" width="500" height="344" /><p class="wp-caption-text">Exemplo de slide gerado pelo yml2tex</p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/10/16/gerando-apresentacoes-beamer-for-dummies/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">89</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>

		<media:content url="http://media.arthurkoziel.com/img/yml2tex_highlight_preview.png" medium="image">
			<media:title type="html">Exemplo de slide gerado pelo yml2tex</media:title>
		</media:content>
	</item>
		<item>
		<title>Os podcasts que eu ouço</title>
		<link>https://lameiro.wordpress.com/2008/10/09/os-podcasts-que-eu-ouco/</link>
					<comments>https://lameiro.wordpress.com/2008/10/09/os-podcasts-que-eu-ouco/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Thu, 09 Oct 2008 09:25:43 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[podcast]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=74</guid>

					<description><![CDATA[Quando o Bruce Eckel veio pro Brasil para a PyConBrasil 2008 e para o workshop de design patterns, ele perguntou quem escutava podcasts regularmente e bem menos gente do que eu esperava levantou a mão. Então ele recomendou alguns podcasts e enfatizou que ouvir podcasts era quase como ir a conferências, mas ainda mais prático [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Quando o <a href="http://en.wikipedia.org/wiki/Bruce_Eckel">Bruce Eckel</a> veio pro Brasil para a <a href="http://pyconbrasil.com.br/">PyConBrasil 2008</a> e para o workshop de design patterns, ele perguntou quem escutava podcasts regularmente e bem menos gente do que eu esperava levantou a mão. Então ele recomendou <a href="http://www.javaposse.com/">alguns</a> <a href="http://www.se-radio.net/">podcasts</a> e enfatizou que ouvir podcasts era quase como ir a conferências, mas ainda mais prático você ouve quando puder. O <a href="http://humberto.digi.com.br/">Humberto Diógenes</a> então fez <a href="http://humberto.digi.com.br/blog/2008/10/09/escute-podcasts/">um post legal indicando os podcasts que ele ouve</a> e eu decidi fazer o mesmo. Os podcasts abaixo não estão em ordem de preferência:</p>
<p><a href="http://twit.tv/twit">This Week in Tech</a> &#8211; Muito bom. Conta com a presença regular do polêmico <a href="http://en.wikipedia.org/wiki/John_C._Dvorak">John C. Dvorak</a>. Normalmente são longos (mais de 1 hora). As edições que eu mais gostei foram sobre o <a href="http://twit.tv/144">The Internet Archive</a>, o <a href="http://twit.tv/140">lançamento do Microsoft Live Mesh</a> e <a href="http://twit.tv/138">sobre como a internet, blogs e twitter estão influenciando o jornalismo</a>. Periodicidade: Semanal.</p>
<div style="width: 210px" class="wp-caption aligncenter"><a href="http://twit.tv/twit"><img title="This Week in Tech" src="https://i0.wp.com/twit.tv/files/imagecache/coverart/coverart/podcast_1_3.jpg" alt="Capa TWiT" width="200" height="200" /></a><p class="wp-caption-text">This Week in Tech</p></div>
<p><a href="http://twit.tv/FLOSS">FLOSS Weekly</a> &#8211; Mais um podcast com o <a href="http://en.wikipedia.org/wiki/Leo_Laporte">Leo Laporte</a>. Neste podcast ele e <a href="http://en.wikipedia.org/wiki/Randal_L._Schwartz">Randal Schwartz</a> (sim, o cara do <a href="http://en.wikipedia.org/wiki/Perl">Perl</a> e agora <a href="http://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>) entrevistam personalidades do software livre, normalmente core developers de projetos grandes como o Drupal, Python, Audacity, mas também pessoas não tão ligadas a projetos como o <a href="http://en.wikipedia.org/wiki/Maddog">Maddog</a>, <a href="http://en.wikipedia.org/wiki/Larry_Augustin">Larry Augustin</a> e <a href="http://en.wikipedia.org/wiki/Ward_Cunningham">Ward Cunningham</a>. Os episódios que eu recomendo são: <a href="http://twit.tv/floss27">Ward Cunningham</a> (muito bom!), <a href="http://twit.tv/floss6">Larry Augustin</a>, <a href="http://twit.tv/floss17">Maddog</a>, <a href="http://twit.tv/floww14">Jeremy Allison</a>. Periodicidade: Deveria ser semanal, mas de vez em quando demora mais, de vez em quando menos. Nos últimos meses eles tem conseguido manter a regularidade.</p>
<div style="width: 210px" class="wp-caption aligncenter"><a href="http://www.twit.tv/floss"><img src="https://i0.wp.com/www.twit.tv/files/imagecache/coverart/coverart/podcast_5_3.jpg" alt="FLOSS Weekly" width="200" height="200" /></a><p class="wp-caption-text">FLOSS Weekly</p></div>
<p><a href="http://www.se-radio.net/">Software Engineering Radio</a> &#8211; Podcast já tradicional (mais de 3 anos e 100 episódios) que sempre conta com entrevistas interessantes normalmente com acadêmicos de várias áreas ligadas a software, por exemplo, linguagens funcionais, arquitetura de software, métodos ágeis, SOA, sistemas embarcados, sistemas distribuídos etc. Meus episódios preferidos: <a href="http://www.se-radio.net/podcast/2007-06/episode-59-static-code-analysis">Static Code Analysis</a>, <a href="http://www.se-radio.net/podcast/2007-09/episode-68-dan-grossman-garbage-collection-and-transactional-memory">Garbage Collection and Transactional Memory</a>, <a href="http://www.se-radio.net/podcast/2008-05/episode-97-interview-anders-hejlsberg">Anders Hejlsberg</a> (o cara do C#, Delphi e Turbo Pascal), <a href="http://www.se-radio.net/podcast/2008-01/episode-84-dick-gabriel-lisp">LISP</a>, <a href="http://www.se-radio.net/podcast/2007-12/episode-79-small-memory-software-weir-and-noble">Small Memory Software</a>. Periodicidade: De dez em dez dias.</p>
<div style="width: 477px" class="wp-caption aligncenter"><a href="http://www.se-radio.net/"><img src="https://i0.wp.com/www.se-radio.net/files/garland_logo.gif" alt="Software Engineering Radio" width="467" height="80" /></a><p class="wp-caption-text">Software Engineering Radio</p></div>
<p><a href="http://thisweekindjango.com/">This Week in Django</a> &#8211; Este podcast comenta os últimos desenvolvimento do <a href="http://en.wikipedia.org/wiki/Django_(web_framework)">Django</a> no SVN, aplicações interessantes feitas com o Django e entrevista pessoas ligadas a comunidade do framework. Periodicidade: Semanal.</p>
<div style="width: 160px" class="wp-caption aligncenter"><a href="http://thisweekindjango.com/"><img src="https://i0.wp.com/blog.michaeltrier.com/assets/2007/12/14/twid_small.png" alt="This Week in Django" width="150" height="150" /></a><p class="wp-caption-text">This Week in Django</p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/10/09/os-podcasts-que-eu-ouco/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">74</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>

		<media:content url="http://twit.tv/files/imagecache/coverart/coverart/podcast_1_3.jpg" medium="image">
			<media:title type="html">This Week in Tech</media:title>
		</media:content>

		<media:content url="http://www.twit.tv/files/imagecache/coverart/coverart/podcast_5_3.jpg" medium="image">
			<media:title type="html">FLOSS Weekly</media:title>
		</media:content>

		<media:content url="http://www.se-radio.net/files/garland_logo.gif" medium="image">
			<media:title type="html">Software Engineering Radio</media:title>
		</media:content>

		<media:content url="http://blog.michaeltrier.com/assets/2007/12/14/twid_small.png" medium="image">
			<media:title type="html">This Week in Django</media:title>
		</media:content>
	</item>
		<item>
		<title>Saiu o Python 2.6!</title>
		<link>https://lameiro.wordpress.com/2008/10/02/saiu-o-python-26/</link>
					<comments>https://lameiro.wordpress.com/2008/10/02/saiu-o-python-26/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Thu, 02 Oct 2008 06:21:11 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=63</guid>

					<description><![CDATA[Hoje saiu a primeira versão estável do Python 2.6. O principal objetivo deste release é começar a trilhar o caminho para o Python 3.0, que corrigirá problemas de design das versões anteriores. Algumas destas correções tornam o código escrito para versões anteriores incompatíveis com o novo Python 3.0. A versão 2.6 é uma versão intermediária [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hoje saiu a <a href="http://www.python.org/download/releases/2.6/">primeira versão estável do Python 2.6</a>. O principal objetivo deste release é começar a trilhar o caminho para o <a href="http://www.python.org/download/releases/3.0/">Python 3.0</a>, que corrigirá problemas de design das versões anteriores.</p>
<p>Algumas destas correções tornam o código escrito para versões anteriores incompatíveis com o novo Python 3.0. A versão 2.6 é uma versão intermediária que contém tanto funcionalidades das versões anteriores do Python quanto novidades do Python 3.0. Com esta versão intermediária os desenvolvedores podem começar a verificar a compatibilidade de suas aplicações com a futura versão 3.0 do Python e já começar as adaptações, garantindo uma transição suave entre as versões.</p>
<p>A versão 2.6 é compatível com as versões anteriores, mas auxiliará na migração <a href="http://docs.python.org/dev/whatsnew/2.6.html#python-3-0">emitindo avisos</a> caso haja construções incompatíveis com a versão 3.0. Além desta versão intermediária, a ferramenta <a href="http://svn.python.org/view/sandbox/trunk/2to3/">2to3</a> é capaz de realizar automaticamente muitas conversões (mas não todas).</p>
<p>As novidades da 3.0 já incorporadas na 2.6 são muitas: novos módulos para <a href="http://docs.python.org/dev/library/multiprocessing.html#module-multiprocessing">processamento paralelo</a> e <a href="http://docs.python.org/dev/library/json.html">codificação/decodificação JSON</a>, <a href="http://docs.python.org/dev/library/fractions.html">tratamento de frações</a>, correção de mais de 600 bugs, <a href="http://docs.python.org/dev/whatsnew/2.6.html#optimizations">otimizações</a>, <a href="http://docs.python.org/dev/whatsnew/2.6.html#pep-370-per-user-site-packages-directory">um diretório de pacotes por usuário</a> (o que facilitará a instalação em ambientes compartilhados), o novo <a href="http://docs.python.org/dev/whatsnew/2.6.html#pep-3101-advanced-string-formatting">método str.format</a> em substituição ao operador % das strings, <a href="http://docs.python.org/dev/whatsnew/2.6.html#pep-3129-class-decorators">decorators para classes</a>, melhorias na documentação (que ficou muito mais bonita usando o <a href="http://sphinx.pocoo.org/">Sphinx</a>). Enfim, são muitas novidades interessantes e eu não falei nem da metade!</p>
<p>Agora você pode <a href="http://www.python.org/download/releases/2.6/">fazer o download</a>, <a href="http://docs.python.org/dev/whatsnew/2.6.html">ler o changelog</a> e ver a <a href="http://www.youtube.com/watch?v=Zfq-gX0l_r8">apresentação do Guido</a>. Boas migrações!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/10/02/saiu-o-python-26/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">63</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>
	</item>
		<item>
		<title>PyConBrasil 2008</title>
		<link>https://lameiro.wordpress.com/2008/09/26/pyconbrasil2008/</link>
					<comments>https://lameiro.wordpress.com/2008/09/26/pyconbrasil2008/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Fri, 26 Sep 2008 23:08:23 +0000</pubDate>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[pyconbrasil2008]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=58</guid>

					<description><![CDATA[Para os que perderam a PyConBrasil 2008, segue o link da minha lightning talk sobre extensões para o Elixir/SQLAlchemy. Várias outras palestras legais estão no SlideShare com a tag pyconbrasil2008. Confiram! Destaque especial para a palestra do Daniel Baggio, sobre reconhecimento de imagens com demonstrações ao vivo, na minha opinião a melhor do evento.]]></description>
										<content:encoded><![CDATA[<p>Para os que perderam a <a href="http://pyconbrasil.com.br/">PyConBrasil 2008</a>, segue o link da <a href="http://www.slideshare.net/lameiro/leandro-lameiro-extenses-para-o-elixir-apresentao-na-pyconbrasil-2008-presentation/">minha lightning talk</a> sobre extensões para o <a href="http://elixir.ematia.de/trac/wiki">Elixir</a>/<a href="http://www.sqlalchemy.org/">SQLAlchemy</a>. Várias outras palestras legais estão no SlideShare com a <a href="http://www.slideshare.net/tag/pyconbrasil2008">tag pyconbrasil2008</a>. Confiram!</p>
<p>Destaque especial para a <a href="http://www.slideshare.net/dannyxyz22/ehci-interao-com-computador-atravs-de-webcam-presentation">palestra</a> do <a href="http://danielbaggio.blogspot.com/">Daniel Baggio</a>, sobre reconhecimento de imagens com demonstrações ao vivo, na minha opinião a melhor do evento.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/09/26/pyconbrasil2008/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">58</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Uma crítica construtiva às traduções do Ubuntu</title>
		<link>https://lameiro.wordpress.com/2008/04/28/uma-critica-construtiva-as-traducoes-do-ubuntu/</link>
					<comments>https://lameiro.wordpress.com/2008/04/28/uma-critica-construtiva-as-traducoes-do-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Mon, 28 Apr 2008 07:46:46 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=50</guid>

					<description><![CDATA[A notícia quente da semana foi o lançamento do novo Ubuntu versão 8.04, que eu fiz questão de instalar. Tudo funcionando bem: reconhecimento de hardware, particionamento, redimensionamento de NTFS e tudo mais. Era de se esperar, funcionava na versão anterior, não havia motivo para deixar de funcionar agora. Mas com as traduções por alguma razão [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A notícia quente da semana foi o lançamento do novo Ubuntu versão 8.04, que eu fiz questão de instalar.</p>
<p>Tudo funcionando bem: reconhecimento de hardware, particionamento, redimensionamento de NTFS e tudo mais. Era de se esperar, funcionava na versão anterior, não havia motivo para deixar de funcionar agora.</p>
<p>Mas com as traduções por alguma razão é diferente. O painel superior do GNOME conta com novos erros de tradução onde estava tudo certo nas versões anteriores. Alguns pequenos erros de tradução passarem é tolerável mas errar no painel principal do GNOME?! É simplesmente o principal programa do Ubuntu!</p>
<p>Em Aplicações-&gt;Acessórios temos o item &#8220;Consola&#8221; (provavelmente vindo do pt-PT), que antes era corretamente chamado &#8220;Terminal&#8221;.</p>
<p>Em Sistema-&gt;Preferências temos o item &#8220;Rato&#8221; (certamente vindo do pt-PT). A palavra mais usada no pt-BR para &#8220;Mouse&#8221; é &#8220;Mouse&#8221; mesmo.</p>
<p>Em Sistema-&gt;Administração temos o item &#8220;Testando hardware&#8221;, provavelmente vindo do inglês &#8220;Hardware testing&#8221;, que deveria ser traduzido como &#8220;Teste de hardware&#8221; ou &#8220;Testar hardware&#8221;.</p>
<p>E porque eu não vou lá e traduzo no Rosetta ao invés de reclamar? <a href="https://bugs.launchpad.net/rosetta/+bug/44">O Rosetta não conta com uma ferramenta de busca</a>, que é requisitada desde 2005. Eu não vou achar essas strings na mão no meio de mais de outras 600 para o painel do GNOME.</p>
<p>Fiquei bastante feliz com a <a href="http://br-linux.org/2008/brasileiro-e-destaque-no-indice-de-contribuicoes-a-traducao-do-ubuntu/">notícia que o brasileiro André Gondim é destaque nas traduções do Ubuntu</a>, mas fica a crítica construtiva ao atual sistema de tradução: Não existe um processo de revisão da tradução, principalmente para os programas mais usados? Como é que uma tradução adequada foi perdida?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/04/28/uma-critica-construtiva-as-traducoes-do-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">50</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Slashdot e o sensacionalismo</title>
		<link>https://lameiro.wordpress.com/2008/02/02/slashdot-e-o-sensacionalismo/</link>
					<comments>https://lameiro.wordpress.com/2008/02/02/slashdot-e-o-sensacionalismo/#comments</comments>
		
		<dc:creator><![CDATA[Leandro Lameiro]]></dc:creator>
		<pubDate>Sat, 02 Feb 2008 03:26:15 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[slashdot]]></category>
		<guid isPermaLink="false">http://lameiro.wordpress.com/?p=49</guid>

					<description><![CDATA[Estou cansado do sensacionalismo da Slashdot. A última foi com relação ao Python 3.0, reproduzido na íntegra abaixo: &#8220;Organizations using Python will be affected in a major way by changes in store for the language over the course of the next twelve months, Linux.conf.au attendees were told this morning. The Python development community is working [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Estou cansado do sensacionalismo da <a href="http://slashdot.org/">Slashdot</a>.</p>
<p><a href="http://it.slashdot.org/it/08/02/01/1624247.shtml">A última</a> foi com relação ao Python 3.0, reproduzido na íntegra abaixo:</p>
<blockquote><p><i>&#8220;Organizations using Python will be affected in a major way by changes in store for the language over the course of the next twelve months, Linux.conf.au attendees were told this morning. The Python development community is working towards a new, backwards-<i>incompatible</i> version of the language, version 3.0, which is slated for release in early 2009. Anthony Baxter, the release manager for Python and a senior software engineer at Google Australia, said &#8220;We are going to break pretty much all the code. Pretty much <a href="http://www.itnews.com.au/News/69326,breaking-the-python-code.aspx">every program will need changes</a>.&#8221; Baxter also added another tidbit for attendees, saying that Python accounts for around 15 percent of Google&#8217;s code base.&#8221;</i></p></blockquote>
<p>A notícia não é falsa (apesar de ser bem velha), o Python 3.0 vai realmente quebrar muito código. Mas ela não diz que praticamente todas as mudanças necessárias podem ser feitas por <a href="http://svn.python.org/view/sandbox/trunk/2to3/"><b>um script</b></a>. Também não diz que o Python 2.6 vai continuar a ser <b>desenvolvido e mantido</b> por mais alguns anos, nem que talvez exista um 2.7. Também não diz que o Python 2.6 além de rodar código atual, avisará de quebras de compatibilidade com a versão 3.0. Se não bastasse todo o esforço feito, a instalação paralela de Python 2.6 e 3.0 será possível, o que garante que as aplicações continuarão rodando.</p>
<p>Fora que isso é pratica completamente normal. Perl 6, VB.NET, C# 2.0, PHP5, não faltam exemplos de linguagens que quebraram compatibilidade com seus antecessores em algum momento.</p>
<p>Porque tanto exagero? Será que é porque traz visitantes e receita com as propagandas? Ou será apenas incompetência editorial?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lameiro.wordpress.com/2008/02/02/slashdot-e-o-sensacionalismo/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">49</post-id>
		<media:content url="https://0.gravatar.com/avatar/c995ec29cf02e959be3b76341b22a1a3c4f3609470e87a93f375326dead60975?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lameiro</media:title>
		</media:content>
	</item>
	</channel>
</rss>
