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

<channel>
	<title>AURELIO.NET &#187; Funções ZZ</title>
	<atom:link href="http://aurelio.net/tag/funcoeszz/feed/" rel="self" type="application/rss+xml" />
	<link>http://aurelio.net</link>
	<description>Relaxe, leia com calma, aproveite a viagem.</description>
	<lastBuildDate>Mon, 21 Oct 2013 21:17:01 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6</generator>
		<item>
		<title>Novo coautor das Funções ZZ: Itamar Santos de Souza</title>
		<link>http://aurelio.net/blog/2013/08/30/novo-coautor-das-funcoes-zz-itamar-santos-de-souza/</link>
		<comments>http://aurelio.net/blog/2013/08/30/novo-coautor-das-funcoes-zz-itamar-santos-de-souza/#comments</comments>
		<pubDate>Fri, 30 Aug 2013 19:41:50 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Meu querido diário]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://aurelio.net/?p=4268</guid>
		<description><![CDATA[A primeira contribuição do Itamar (@itamarnet) às Funções ZZ foi há quase 4 anos, com a criação da zzbolsas em 04/out/2009: https://github.com/aureliojargas/funcoeszz/commit/5527cd16 Desde então, ele já criou 24 funções novas: zzaleatorio, zzbicho, zzbolsas, zzbraille, zzcorrida, zzcotacao, zzdivisores, zzfatorar, zzjuros, zzlibertadores, zzloteria2, &#8230; <a href="http://aurelio.net/blog/2013/08/30/novo-coautor-das-funcoes-zz-itamar-santos-de-souza/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://funcoeszz.net"><img class="aligncenter" title="Logo Funções ZZ" alt="" src="http://funcoeszz.net/img/logo/zzlogo-cygwin.png" width="256" height="256" /></a></p>
<p>A primeira contribuição do <a href="https://github.com/itamarnet">Itamar</a> (<a href="https://twitter.com/itamarnet">@itamarnet</a>) às <a href="http://funcoeszz.net/">Funções ZZ</a> foi há quase 4 anos, com a criação da <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzbolsas.sh">zzbolsas</a> em 04/out/2009:</p>
<ul>
<li><a href="https://github.com/aureliojargas/funcoeszz/commit/5527cd16">https://github.com/aureliojargas/funcoeszz/commit/5527cd16</a></li>
</ul>
<p>Desde então, ele já criou 24 funções novas: <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzaleatorio.sh">zzaleatorio</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzbicho.sh">zzbicho</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzbolsas.sh">zzbolsas</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzbraille.sh">zzbraille</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzcorrida.sh">zzcorrida</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzcotacao.sh">zzcotacao</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzdivisores.sh">zzdivisores</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzfatorar.sh">zzfatorar</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzjuros.sh">zzjuros</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzlibertadores.sh">zzlibertadores</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzloteria2.sh">zzloteria2</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzlua.sh">zzlua</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzmariadb.sh">zzmariadb</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzmat.sh">zzmat</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zznome.sh">zznome</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zznumero.sh">zznumero</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzpais.sh">zzpais</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzpalpite.sh">zzpalpite</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzpgsql.sh">zzpgsql</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzphp.sh">zzphp</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzplay.sh">zzplay</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzquimica.sh">zzquimica</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzvdp.sh">zzvdp</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzve.sh">zzve</a>.</p>
<p>Sem medo de encarar grandes desafios, ele é o autor de algumas das funções mais complexas do pacote, com uma queda por cálculos (<a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzmat.sh">zzmat</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzdivisores.sh">zzdivisores</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzfatorar.sh">zzfatorar</a>) e por valores monetários (<a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzbolsas.sh">zzbolsas</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzcotacao.sh">zzcotacao</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzjuros.sh">zzjuros</a>, <a href="https://github.com/aureliojargas/funcoeszz/blob/master/zz/zzve.sh">zzve</a>).</p>
<p>Além de cuidar de suas próprias funções, o Itamar também faz correções e melhorias no código de várias outras funções e <a href="https://github.com/itamarnet?tab=activity">contribui ativamente</a> para o projeto como um todo: core, testes, website, bug reports, ideias.</p>
<p>Como bônus, ele manja de awk (que eu sou leigo), ampliando o poder das funções que são historicamente baseadas em <a href="http://aurelio.net/sed/">sed</a> (que eu manjo).</p>
<p><a href="https://github.com/aureliojargas/funcoeszz/commit/dd8a8316">Empossá-lo</a> como coautor hoje, na realidade, é uma mera formalidade que atesta o que já vem há tempos acontecendo na prática: o Itamar me ajuda a tocar o projeto adiante.</p>
<blockquote><p>Curiosidade: Este ano o projeto Funções ZZ completou 13 anos de existência! <a href="http://aurelio.net/blog/2013/02/28/13-anos-de-funcoes-zz/">Veja o post</a>.</p></blockquote>
<p>E vamo que vamo!</p>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2013/08/30/novo-coautor-das-funcoes-zz-itamar-santos-de-souza/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>13 anos de Funções ZZ</title>
		<link>http://aurelio.net/blog/2013/02/28/13-anos-de-funcoes-zz/</link>
		<comments>http://aurelio.net/blog/2013/02/28/13-anos-de-funcoes-zz/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 02:30:48 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Meu querido diário]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://aurelio.net/?p=4239</guid>
		<description><![CDATA[— Deixa ver… A primeira versão é do dia 22/02/2000. — Dois mil? — É. — Ah, pára. — Sério! — Caraca… 13 anos? Tá certa essa data? — Pior que tá. — Mas nem faz tanto tempo assim! — &#8230; <a href="http://aurelio.net/blog/2013/02/28/13-anos-de-funcoes-zz/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://funcoeszz.net"><img class="aligncenter" title="Logo Funções ZZ" src="http://funcoeszz.net/img/logo/zzlogo-cygwin.png" alt="" width="256" height="256" /></a></p>
<p>— Deixa ver… A primeira versão é do dia 22/02/2000.<br />
— Dois mil?<br />
— É.<br />
— Ah, pára.<br />
— Sério!<br />
— Caraca… 13 anos? Tá certa essa data?<br />
— Pior que tá.<br />
— Mas nem faz tanto tempo assim!<br />
— Pois é, nem parece…<br />
— Credo, sou oficialmente um VELHO.<br />
— Concordo!<br />
— Ei!<br />
— :P</p>
<p>Se há 13 anos atrás, no dia em que criei as <a href="http://funcoeszz.net">Funções ZZ</a>, eu soubesse que iria trabalhar naquelas singelas funções durante mais de uma década, eu acho que teria apagado o arquivo :)</p>
<p>Mas felizmente eu não sabia, e de grão em grão, aos trancos e barrancos, eis que todos esses anos passaram e eu ainda estou aqui. Mudei de sistema operacional (Linux → Mac), mudei de editor de textos (Vim → TextMate) e mudei de cidade (Curitiba → Florianópolis → Matinhos → Joinville), mas continuo programando as ZZ.</p>
<p>E sabe que não enjoa?</p>
<p>Talvez por ter tantas funções diferentes, com finalidades e algoritmos diferentes. Sempre tem algo novo para testar, arrumar, melhorar, criar. É um trabalho infinito, mas felizmente, não é repetitivo.</p>
<p>Um ponto marcante na vida das ZZ foi a <a href="http://aurelio.net/blog/2008/03/05/a-nova-geracao-das-funcoes-zz/">grande reforma em 2008</a>, quando trabalhei durante meses para conseguir limpar e organizar todo o código-fonte, que até então era indecifrável (até pra mim!). Desde então não tive mais &#8220;medo&#8221; do código, agora ele está claro, comentado e simples de entender. Ficou tão didático que até entrou no meu livro.</p>
<p>Mais recentemente, a novidade do <a href="https://github.com/aureliojargas/funcoeszz">GitHub</a> tornou a programação mais social e divertida. Parece besta, mas faz toda a diferença ele ser um site bonito e moderno, com fotinhos e comentários em todos os cantos. A programação, tarefa primordialmente solitária e que exige muita concentração, ganhou um toque de humanidade.</p>
<p>Tem também os <a href="http://funcoeszz.net/thanks.html">colaboradores</a>: outros programadores que criam, testam e alteram funções, tornando o conjunto algo muito melhor do que eu faria sozinho. É curioso perceber que eles também mudam com o tempo. Pessoas que eram bem ativas no projeto há sei lá, oito anos atrás, hoje não estão mais lá. Prioridades e gostos mudam, tudo muda. Mas felizmente há uma renovação, e na mesma medida que os veteranos perdem o interesse, há novatos cheios de vontade que aparecem e acabam ficando. E assim vamos, sem pressa, tocando o barco.</p>
<p>Durante cinco anos (2002-2006) contei com a ajuda do <a href="http://funcoeszz.net/hist.html#thobias">Thobias</a>, super parceiro de programação que foi coautor das funções. Juntos (<a href="http://funcoeszz.net/aovivo.html">porém remotamente</a>) programamos muitas, muitas, mas MUUUUUUITAS horas para manter o projeto ativo. E tudo nas horas livres, de noite, quando dava. Sem ganhar um tostão. Gostei muito da experiência de parceria, pois é importante um incentivar quando o outro desanima. O Thobias conseguiu se <a title="Processo de desnerdização" href="http://aurelio.net/blog/2005/11/30/processo-de-desnerdizacao/">desnerdizar</a>, já eu… FAIL.</p>
<p>Esse lance de &#8220;13 anos&#8221; me fez pensar: <strong>o que me faz continuar?</strong></p>
<p>Invisto MUITO tempo (estou trabalhando direto há 7 dias, fim de semana inclusive, para fechar a versão nova das ZZ) e não ganho um tostão com isso. Não é aí que está o motivador, não é grana. Mas então o que é?</p>
<p>Não tem uma resposta simples. É tudo isso que acabei de contar. Também é o prazer de trabalhar em sua própria criação, o prazer de programar, os usuários que dão retorno positivo, não deixar o projeto morrer… São vários fatores, pequenos incentivos aqui e ali que juntos têm força suficiente para manter as peças no lugar. E assim a máquina segue em frente, um passo de cada vez.</p>
<p>E por falar em seguir em frente…</p>
<h2>Novidade! — <a href="http://funcoeszz.net">Site novo das Funções ZZ, lotado de exemplos</a></h2>
<h2>Novidade! — Versão nova 13.2, comemorativa dos 13 anos, com 33 funções novas! [<a href="http://funcoeszz.net/download.html">download</a>, <a href="http://funcoeszz.net/changelog.html">changelog</a>]</h2>
<p>:)</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2013/02/28/13-anos-de-funcoes-zz/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Erro 404 na Web API REST/JSON &#8211; O que fazer?</title>
		<link>http://aurelio.net/blog/2012/03/20/erro-404-na-web-api-rest-json-o-que-fazer/</link>
		<comments>http://aurelio.net/blog/2012/03/20/erro-404-na-web-api-rest-json-o-que-fazer/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 20:20:42 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://aurelio.net/?p=3595</guid>
		<description><![CDATA[Hoje comecei a estudar sobre Web APIs do tipo REST, para fazer uma API bacana para as Funções ZZ. A ideia é facilitar o acesso às funções por outros programas, via Internet. Como parte de meus estudos, fui ver como &#8230; <a href="http://aurelio.net/blog/2012/03/20/erro-404-na-web-api-rest-json-o-que-fazer/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hoje comecei a estudar sobre <a href="http://en.wikipedia.org/wiki/Web_service#Web_API">Web APIs</a> do tipo <a href="http://en.wikipedia.org/wiki/Representational_state_transfer">REST</a>, para fazer uma API bacana para as <a href="http://funcoeszz.net">Funções ZZ</a>. A ideia é facilitar o acesso às funções por outros programas, via Internet.</p>
<p>Como parte de meus estudos, fui ver como se comportam as Web APIs de serviços famosos, para ver nos exemplos &#8220;do mundo real&#8221; quais as melhores práticas de sua implementação.</p>
<p>Comecei por uma tarefa bem simples: o que o servidor responde quanto eu tento acessar uma URL inválida na API?</p>
<p>Eu esperava encontrar um padrão, e simplesmente usar este padrão na minha própria API. Mas veja só o que encontrei.</p>
<h2>Dropbox</h2>
<p><a href="https://api.dropbox.com/1/foo">https://api.dropbox.com/1/foo</a></p>
<pre>{
    error: "Not Found"
}</pre>
<h2>Flickr</h2>
<p><a href="http://api.flickr.com/services/rest/?format=json&amp;method=foo">http://api.flickr.com/services/rest/?format=json&amp;method=foo</a></p>
<pre>jsonFlickrApi({
    "stat":"fail",
    "code":112,
    "message":"Method \"foo\" not found"
})</pre>
<h2>Google</h2>
<p><a href="http://ajax.googleapis.com/ajax/services/foo">http://ajax.googleapis.com/ajax/services/foo</a></p>
<pre>404</pre>
<p><a href="http://ajax.googleapis.com/ajax/services/search/foo">http://ajax.googleapis.com/ajax/services/search/foo</a></p>
<pre>404</pre>
<p><a href="https://www.googleapis.com/language/foo">https://www.googleapis.com/language/foo</a></p>
<pre>"Not Found"</pre>
<p><a href="https://www.googleapis.com/language/translate/foo">https://www.googleapis.com/language/translate/foo</a></p>
<pre>"Not Found"</pre>
<h2>Facebook</h2>
<p><a href="https://graph.facebook.com/foo">https://graph.facebook.com/foo</a></p>
<pre>{
   "error": {
      "message": "(#803) Some of the aliases you requested do not exist: foo",
      "type": "OAuthException",
      "code": 803
   }
}</pre>
<h2>Twitter</h2>
<p><a href="https://dev.twitter.com/docs/error-codes-responses">A documentação</a> me disse que eu encontraria esta mensagem de erro:</p>
<pre>{
    "errors": [
        {
            "message": "Sorry, that page does not exist",
            "code": 34
        }
    ]
}</pre>
<p>Eu juro que tentei, mas essa mensagem específica eu não consegui ver :)</p>
<p><a href="https://api.twitter.com/1/foo">https://api.twitter.com/1/foo</a></p>
<pre>404</pre>
<p><a href="https://api.twitter.com/1/foo.json">https://api.twitter.com/1/foo.json</a></p>
<pre>404</pre>
<p><a href="https://api.twitter.com/1/statuses/foo.json">https://api.twitter.com/1/statuses/foo.json</a></p>
<pre>{
    error: "Could not authenticate you.",
    request: "/1/statuses/foo.json"
}</pre>
<p><a href="https://api.twitter.com/1/statuses/show.json?id=foo">https://api.twitter.com/1/statuses/show.json?id=foo</a></p>
<pre>{
    request: "/1/statuses/show.json?id=foo",
    error: "No status found with that ID."
}</pre>
<h2>Conclusão</h2>
<p>Nenhuma :)</p>
<p>Ainda não sei qual é o &#8220;certo&#8221; a se fazer quando alguém tentar acessar uma URL inválida dentro da minha API.</p>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2012/03/20/erro-404-na-web-api-rest-json-o-que-fazer/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>10 anos de SedSokoban</title>
		<link>http://aurelio.net/blog/2012/03/16/10-anos-de-sedsokoban/</link>
		<comments>http://aurelio.net/blog/2012/03/16/10-anos-de-sedsokoban/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 15:08:14 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[10anos]]></category>
		<category><![CDATA[Coisinha]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Livro]]></category>
		<category><![CDATA[mídia]]></category>
		<category><![CDATA[MiGuXeiToR]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[sedsed]]></category>
		<category><![CDATA[SedSokoban]]></category>
		<category><![CDATA[Shell Script Profissional]]></category>

		<guid isPermaLink="false">http://aurelio.net/?p=3589</guid>
		<description><![CDATA[Agora que vi aqui no calendário, que ontem foi uma data especial: dia 15/3 marca o nascimento do meu &#8220;filhote&#8221; mais bizarro, o joguinho SedSokoban, que agora em 2012 completa 10 anos! Eita, mas olhar para essa foto antiga, além &#8230; <a href="http://aurelio.net/blog/2012/03/16/10-anos-de-sedsokoban/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Agora que vi aqui no calendário, que ontem foi uma data especial: dia 15/3 marca o nascimento do meu &#8220;filhote&#8221; mais bizarro, o joguinho <a href="http://aurelio.net/bin/#sokoban">SedSokoban</a>, que agora em 2012 completa 10 anos!</p>
<div class="wp-caption aligncenter" style="width: 345px"><img title="SedSokoban" src="http://aurelio.net/soft/sedsokoban/shot.png" alt="" width="335" height="399" /><p class="wp-caption-text">O clássico jogo Sokoban, escrito em Sed</p></div>
<p>Eita, mas olhar para essa foto antiga, além do saudosismo do joguinho em si, me traz lembranças de toda uma época: eu usava Linux, fvwm como gerenciador de janelas (<a href="http://aurelio.net/doc/dotfiles/fvwmrc.txt">.fvwmrc</a>), e ali está o inseparável xterm, com sua tela preta e sua fonte… peculiar.</p>
<p>Era bom, mas hoje é tudo melhor. E viva o progresso :)</p>
<p>Quer rodar o SedSokoban agora, em sua máquina? Tá fácil. Vá num terminal e cole estes dois comandos:</p>
<pre>wget http://aurelio.net/sed/sokoban/sokoban.sed
sed -nf sokoban.sed</pre>
<p>Já aviso que a jogabilidade é horrível. Você deve apertar a seta e depois dar Enter, para cada movimento. Este é um jogo que não serve para divertir nem para passar o tempo. O seu grande mérito foi ter sido escrito usando uma ferramenta limitada, o <a href="http://aurelio.net/sed/">sed</a>, que não é uma linguagem de programação, mas sim um editor de textos! Coisa de nerd :P</p>
<p><a href="http://aurelio.net/sed/sokoban/sokoban.sed.html">Dá uma olhada no código-fonte dele</a>. A parte boa está no final, depois dos mapas. Dez anos atrás, quando fiz este código, eu entendia ele. Hoje ele me dá medo :)</p>
<blockquote><p>Estou pensando em talvez dissecar este código em um apêndice no (ainda não iniciado) <a href="http://aurelio.net/blog/2011/06/24/vi-livro-sed-txt/">livro de sed</a>, igual fiz com as <a href="http://funcoeszz.net">Funções ZZ</a> no livro <a href="http://www.shellscript.com.br">Shell Script Profissional</a>.</p></blockquote>
<p>Mas uma lição importante que este joguinho me ensinou, e que depois reaprendi com o <a href="http://www.coisinha.com.br/miguxeitor/">MiGuXeiToR</a> e outros, é que fazer coisas sérias/úteis não tem apelo popular. O povão gosta mesmo é de futilidades.</p>
<blockquote><p><a href="http://aurelio.net/blog/2009/07/03/10anos-sed/">http://aurelio.net/blog/2009/07/03/10anos-sed/</a></p></blockquote>
<blockquote><p>Em 2002 [...] vi <a href="http://games.slashdot.org/story/02/03/21/0217219/SedSokoban">meu nome no maior site nerd da época</a>: o Slashdot. Mas o motivo foi meio frustrante para mim. Pra ver como as coisas são: o <a href="http://aurelio.net/sedsed/">sedsed</a> levou meses para ficar pronto e exigiu todo meu conhecimento de Sed, ao extremo. Mas o que me deixou “famoso” foi o trabalho de uma única noite: ter feito o jogo Sokoban em Sed.</p></blockquote>
<blockquote><p><a href="http://aurelio.net/blog/2008/05/22/um-ano-de-miguxeitor/">http://aurelio.net/blog/2008/05/22/um-ano-de-miguxeitor/</a></p></blockquote>
<blockquote><p>O MiGuXeiToR correu o país pela Internet, divulgado pelo boca a boca, até chegar à mídia tradicional. Dei entrevistas, vi meu nome em jornais, até de um programa de televisão participei. Tudo muito rápido e inesperado, nada disso foi planejado. Sem querer eu tinha criado um viral.</p></blockquote>
<p>Olha, esse negócio de <a href="http://aurelio.net/tag/10anos/">comemorar 10 anos</a> das coisas faz eu me sentir tão… velho.</p>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2012/03/16/10-anos-de-sedsokoban/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>$ vi livro-sed.txt</title>
		<link>http://aurelio.net/blog/2011/06/24/vi-livro-sed-txt/</link>
		<comments>http://aurelio.net/blog/2011/06/24/vi-livro-sed-txt/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 01:44:13 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Livro]]></category>
		<category><![CDATA[Conectiva]]></category>
		<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[Shell Script]]></category>
		<category><![CDATA[txt2tags]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://aurelio.net/?p=3032</guid>
		<description><![CDATA[Amiguinhos, MUITO OBRIGADO a todos que mandaram sugestões, eu finalmente me decidi e gostaria de avisar que ontem comecei a trabalhar no meu próximo livro, que será sobre o comando sed. Eu sei que estou atrasado, eu sei que isso &#8230; <a href="http://aurelio.net/blog/2011/06/24/vi-livro-sed-txt/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Amiguinhos, MUITO OBRIGADO a todos que <a href="http://aurelio.net/proximo-livro/">mandaram sugestões</a>, eu finalmente me decidi e gostaria de avisar que <strong>ontem comecei a trabalhar no meu próximo livro</strong>, que será sobre o <a href="http://aurelio.net/sed/">comando sed</a>.</p>
<p>Eu sei que estou atrasado, eu sei que isso já deveria estar pronto há anos, e é deprimente perceber quanto tempo passou sem eu ter feito um livro novo. O <a href="http://www.shellscript.com.br/">Shell Script Profissional</a> é de abril de 2008! Mas é assim que funciona, durante estes anos não deu o tesão de escrever, e <strong>sem tesão não tem ação</strong>, é um loop infinito de escreve-apaga-escreve-apaga e nunca sai do lugar.</p>
<p>Felizmente a abstinência terminou e agora estou aqui, empolgadíssimo para ficar semanas (meses?) enclausurado, escrevendo um livrinho novo. A escolha do tema favoreceu muito a volta da inspiração, pois <strong>o sed é meu comando Unix preferido</strong> e posso ficar horas falando sem parar sobre ele :)</p>
<p>O sed é uma ferramenta que, <a href="http://aurelio.net/blog/2009/07/03/10anos-sed/">após uma década</a>, continuo usando quase que diariamente. Sempre tem algum texto pra limpar, pra reformatar, pra apagar algum pedaço e quando vejo <a href="http://aurelio.net/blog/2011/04/19/o-jeito-shell-script-de-resolver-problemas/">lá estou eu na tela preta digitando algum comando sed</a>. Esse é um filme mais repetido que <a href="http://www.youtube.com/watch?v=8WCXDsXDAcc">Curtindo a Vida Adoidado</a> na Sessão da Tarde :)</p>
<p>Uso o sed porque é útil e porque eu gosto. Ele é um bichinho estranho, que parece alienígena, mas esconde uma simplicidade bela, que só quem o conhece bem sabe admirar (tipo o <a href="http://aurelio.net/vim/">Vim</a>). E quando combinado com <a href="http://aurelio.net/regex/">expressões regulares</a>, mostra seu verdadeiro poder e faz mágicas.</p>
<blockquote><p>Já cheguei ao cúmulo de <a href="http://aurelio.net/sed/sokoban/sokoban.sed.html">fazer joguinho com sed</a>, mas <a href="https://github.com/aureliojargas/scripts/blob/master/html-scraps-to-wordpress-xml/recados2wordpress-meta.sh#L92">hoje sou mais moderado</a> :)</p></blockquote>
<p>O sed foi importante desde o ínicio de minha carreira: foi a primeira ferramenta do Unix que aprendi a dominar, quando ainda era estagiário. Ser o &#8220;guru do sed&#8221; dentro da empresa (Conectiva) significou muito para mim na época. Foi por causa do sed que tive que aprender expressões regulares, as <a href="http://funcoeszz.net">Funções ZZ</a> usam sed no lugar de outras ferramentas para garantir compatibilidade entre sistemas e o <a href="http://txt2tags.org/pt/">txt2tags</a> só existe porque um dia eu quis escrever um <a href="http://aurelio.net/sed/sed-HOWTO/">sed-HOWTO</a> em SGML. Mais detalhes sobre essas histórias no post <a href="http://aurelio.net/blog/2009/07/03/10anos-sed/">10 anos: Sed</a>.</p>
<pre>$ ls -1 zz* | wc -l             # Nas 125 funções ZZ...
     125
$ grep -w sed zz* | wc -l       # ...o sed é usado 331 vezes!
     311</pre>
<p>Enfim, o sed estava lá desde o começo, participou das minhas criações mais importantes e continua firme e forte na minha rotina. Fazendo esse retrospecto, fica claro que é minha obrigação moral retribuir e fazer esta homenagem à ferramenta, fechando a trinca de livros: <strong>Shell + Sed + Expressões Regulares</strong>.</p>
<ul>
<li>Eu sei que sed é um assunto de nicho.</li>
<li>Eu sei que o público é restrito.</li>
<li>Eu sei que vai vender pouco.</li>
</ul>
<p>Mas tudo bem, quero fazer este livro de qualquer jeito. Não quero morrer com este conhecimento guardado na cabeça. <strong>Quero poder &#8220;mostrar a luz&#8221; do sed para outros nerds</strong>.</p>
<p>Já fiz <a href="http://aurelio.net/sed/">vários documentos</a> sobre o sed, inclusive <a href="http://aurelio.net/sed/livro/">um livro inacabado</a>, mas falta a obra definitiva: um texto completo, coeso, que parte do zero e <strong>ensina</strong> como funciona e como usar. E claro, o mais importante: o texto tem que ser leve e divertido, como uma conversa entre amigos. Detesto livros técnicos chatões.</p>
<p>O trabalho começou ontem, mas a escrita de verdade ainda leva um tempo. Esta fase inicial é de ambientação e planejamento. Estou definindo a forma do livro e sua didática: que assuntos vai ter, em que ordem, como será a narrativa, os exemplos, qual será o nível técnico, o público-alvo, essas coisas. <strong>Preciso primeiro &#8220;enxergar&#8221; o livro todo</strong>, do início ao fim, e quando essa massa imaginária de ideias toma forma e fica consistente, formando um ensinamento coeso de complexidade crescente, então estarei pronto para começar a escrever. Considero esta parte inicial a mais importante e difícil. Escrever o texto é a parte fácil.</p>
<p>Então, agora, mais do que em qualquer outra parte o processo, <strong>é a hora certa para você ajudar</strong>. Como a forma final ainda não foi definida, esta é a fase em que estou mais influenciável :) Por favor, use a caixa de comentários para dar sua opinião e suas ideias:</p>
<ul>
<li>O que você gostaria de aprender sobre o sed?</li>
<li>Quais suas dificuldades?</li>
<li>Quais tarefas você gostaria de usar o sed mas não sabe como?</li>
<li>O que te impede de aproveitar melhor o sed?</li>
<li>Como é seu uso atual do sed? Usa para quais tarefas?</li>
<li>Fora o s///, usa outros comandos?</li>
<li>Em qual sistema você usa(ria) o sed: Linux, Mac, Windows, Unix, outro?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2011/06/24/vi-livro-sed-txt/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Em regex, nem sempre menos é mais</title>
		<link>http://aurelio.net/blog/2011/02/10/em-regex-nem-sempre-menos-e-mais/</link>
		<comments>http://aurelio.net/blog/2011/02/10/em-regex-nem-sempre-menos-e-mais/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 15:02:48 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[Funções ZZ]]></category>

		<guid isPermaLink="false">http://aurelio.net/blog/?p=1487</guid>
		<description><![CDATA[Uso expressões regulares há tantos anos, que hoje para mim é muito natural, diria até automático, ficar compondo uma regex na cabeça, nas mais diversas (e inúteis) situações. Por exemplo, se estou relaxado lendo um artigo e em seu texto &#8230; <a href="http://aurelio.net/blog/2011/02/10/em-regex-nem-sempre-menos-e-mais/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Uso <a href="http://aurelio.net/regex/">expressões regulares</a> há tantos anos, que hoje para mim é muito natural, diria até automático, ficar compondo uma regex na cabeça, nas mais diversas (e inúteis) situações. Por exemplo, se estou relaxado lendo um artigo e em seu texto aparece alguma repetição, pequena variação ou formato numérico, me pego pensando nos metacaracteres que casariam aquilo.</p>
<blockquote><p>Tá, é bizarro, eu sei :)</p></blockquote>
<p>Nos <a href="http://aurelio.net/blog/2011/01/28/salvar-site-como-pdf-no-iphone-ipod-ipad/">artigos</a> <a href="http://aurelio.net/blog/2011/02/04/imprimir-como-pdf-do-iphone-ipod-ipad-para-o-dropbox-via-airprint/">anteriores</a> do blog, falei sobre os equipamentos da Apple e várias vezes precisei citar os três brinquedos pretos: <strong>iPod</strong>, <strong>iPad</strong> e <strong>iPhone</strong>. Ao escrever estes nomes, um alerta apita aqui dentro: <em>Epa! Repetição e variação detectados!</em></p>
<blockquote><p><a href="http://macmagazine.com.br/2010/10/11/theres-an-app-for-that-agora-e-uma-marca-registrada-da-apple/">There&#8217;s a regex for that</a> :)</p></blockquote>
<p>Compor uma expressão regular que case os três nomes não é difícil. Uma primeira alternativa, mais simplista, seria usar o metacaractere <strong>ou</strong> para fazer a lista de palavras permitidas:</p>
<pre>iPod|iPad|iPhone</pre>
<p>A barra vertical indica que esta expressão casa iPod <strong>ou</strong> iPad <strong>ou</strong> iPhone. Simples, não? Fácil de ler e entender. Mas podemos tornar esta expressão menor e mais eficiente.</p>
<p>O segredo para fazer uma boa expressão é saber identificar padrões. Ao olhar com atenção para estas três palavras, percebemos que todas possuem o mesmo prefixo, ou seja, todas iniciam com as letras &#8220;iP&#8221;:</p>
<ul>
<li><strong>iP</strong>od</li>
<li><strong>iP</strong>ad</li>
<li><strong>iP</strong>hone</li>
</ul>
<p>Assim, podemos tornar nossa expressão mais eficiente deixando claro que o padrão começa com &#8220;iP&#8221;, e depois disso, há três alternativas:</p>
<pre>iP(od|ad|hone)</pre>
<p>Essa nova expressão continua casando as três palavras, mas agora ficou menor e mais rápida. Porém, agora ela ficou mais difícil para ler e entender. <strong>Trocamos legibilidade por eficiência.</strong></p>
<p>Aplicando mais uma vez a mesma técnica de identificar padrões e melhorar a expressão, podemos perceber que tanto iPod quanto iPad terminam com a letra &#8220;d&#8221;. Podemos isolar esta letra, trocando o trecho <code>od|ad</code> por <code>[oa]d</code>:</p>
<pre>iP([oa]d|hone)</pre>
<p>Continuamos casando as mesmas palavras, porém agora a legibilidade foi pelo ralo. É preciso interpretar a expressão mentalmente para saber quais são as palavras que ela casa. Será que <strong>fomos longe demais?</strong></p>
<p>Você sempre deve avaliar se esse tipo de melhoria é mesmo uma vantagem.</p>
<ul>
<li>Era necessário otimizar a expressão?</li>
<li>A expressão anterior estava lenta?</li>
<li>Todos que darão manutenção nesta expressão saberão entendê-la?</li>
<li>O que é mais importante: <strong>velocidade</strong> ou <strong>legibilidade</strong>?</li>
</ul>
<p>Acostume-se a <strong>sempre</strong> fazer estas perguntas a si mesm[ao] cada vez que for melhorar alguma expressão regular. Você pode se surpreender com as respostas :)</p>
<p>Às vezes, é possível encontrar um meio termo que não prejudica tanto a legibilidade, mas resulta em um ganho na performance.</p>
<pre>i(Pod|Pad|Phone)</pre>
<p>Nesta expressão, isolei somente a letra &#8220;i&#8221;, que é um prefixo muito conhecido para os produtos da Apple. Deixei o &#8220;P&#8221; repetindo em todas as alternativas para não quebrar as palavras. Assim fica clara a separação entre o prefixo &#8220;i&#8221; e o nome dos produtos: Pod, Pad e Phone.</p>
<pre>i(Phone|Pod|Pad)</pre>
<p>Como última melhoria, movi o trecho &#8220;Phone&#8221; para o início das possibilidades, para deixar mais claro que esta é uma lista de palavras com produtos da Apple. As alternativas Pod e Pad são muito parecidas e podem gerar confusão. Deixando o &#8220;Phone&#8221; no início, ali bem pertinho do &#8220;i&#8221;, fica mais fácil do leitor enxergar &#8220;iPhone&#8221; e deduzir o iPod e iPad com mais facilidade.</p>
<p>Agora, comparemos as duas expressões:</p>
<pre>iP([oa]d|hone)

i(Phone|Pod|Pad)</pre>
<p>A primeira seguiu somente o caminho da eficiência, enquanto a segunda fez um balanço entre eficiência e legibilidade.</p>
<p>Nos meus primeiros anos de expressões regulares, eu faria sempre a primeira, pois é a <strong>menor</strong> e mais <strong>eficiente</strong>. Hoje, depois de já ter sofrido muito dando <strong>manutenção</strong> para minhas próprias expressões enigmáticas do passado, valorizo mais uma expressão <strong>legível</strong>, melhorando a velocidade somente quando <a href="http://www.c2.com/cgi/wiki?PrematureOptimization">estritamente necessário</a>.</p>
<blockquote><p>Quem já usa as <a href="http://funcoeszz.net/">Funções ZZ</a> há tempos, sabe que <a href="http://funcoeszz.net/passado/funcoeszz-0.0915">seu código era afetado</a> por essa mentalidade do &#8220;menor é melhor&#8221;. Ainda bem que <a href="http://code.google.com/p/funcoeszz/source/browse/trunk/zz/zzcores">evoluí</a> :)</p></blockquote>
<p>Aprenda mais sobre os tópicos deste texto:</p>
<ul>
<li><a href="http://aurelio.net/regex/guia/ou.html">http://guia-er.sourceforge.net/ou.html</a></li>
<li><a href="http://aurelio.net/regex/guia/grupo.html">http://guia-er.sourceforge.net/grupo.html</a></li>
<li><a href="http://aurelio.net/regex/guia/lista.html">http://guia-er.sourceforge.net/lista.html</a></li>
<li><a href="http://aurelio.net/regex/guia/nao-complique.html">http://guia-er.sourceforge.net/nao-complique.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2011/02/10/em-regex-nem-sempre-menos-e-mais/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Versão nova das Funções ZZ (10.12)</title>
		<link>http://aurelio.net/blog/2010/12/23/versao-nova-das-funcoes-zz-10-12/</link>
		<comments>http://aurelio.net/blog/2010/12/23/versao-nova-das-funcoes-zz-10-12/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 09:05:09 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[Shell Script]]></category>

		<guid isPermaLink="false">http://aurelio.net/blog/?p=1383</guid>
		<description><![CDATA[Funções ZZ é uma coletânea com mais de 100 miniaplicativos de utilidades diversas, prontos para serem usados na linha de comando do Linux, BSD, Mac e Cygwin. Software livre 100% nacional e maduro, que já completou 10 anos de existência. &#8230; <a href="http://aurelio.net/blog/2010/12/23/versao-nova-das-funcoes-zz-10-12/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://funcoeszz.net"><img class="aligncenter" title="Logo ZZ" src="http://funcoeszz.net/img/logo/zzlogo-cygwin.png" alt="" width="205" height="205" /></a></p>
<p><a href="http://funcoeszz.net">Funções ZZ</a> é uma coletânea com mais de 100 miniaplicativos de utilidades diversas, prontos para serem usados na linha de comando do Linux, BSD, Mac e Cygwin. Software livre 100% nacional e maduro, que já completou 10 anos de existência.</p>
<p>Neste finalzinho de 2010 foi lançada a versão de Natal das Funções ZZ, com a impressionante marca de <strong>37 miniaplicativos novos</strong>. É um trenó cheio de presentes para os usuários do shell, com novidades para todos os gostos:</p>
<ul>
<li>Vai encurtar uma URL no <a href="http://migre.me">migre.me</a>? <a href="http://funcoeszz.net/zzajuda.html#zzminiurl">zzminiurl</a>.</li>
<li>Não sabe o que pedir no <a href="http://www.subway.com.br/">Subway</a>? <a href="http://funcoeszz.net/zzajuda.html#zzsubway">zzsubway</a>.</li>
<li>O que vai passar na TV nas próximas horas? <a href="http://funcoeszz.net/zzajuda.html#zzglobo">zzglobo</a>.</li>
<li>Quer o <a href="http://translate.google.com.br">Google Tradutor</a> ao alcance de um Enter na shell? <a href="http://funcoeszz.net/zzajuda.html#zztradutor">zztradutor</a>.</li>
<li>Cálculos complicados com porcentagens? <a href="http://funcoeszz.net/zzajuda.html#zzporcento">zzporcento</a>.</li>
<li>Que tal uma piada? <a href="http://funcoeszz.net/zzajuda.html#zzpiada">zzpiada</a>.</li>
<li>E aquela sua encomenda do <a href="http://www.dealextreme.com/">DX</a> que não chega nunca? <a href="http://funcoeszz.net/zzajuda.html#zzrastreamento">zzrastreamento</a>.</li>
</ul>
<p>Tudo muito prático, basta digitar o comando e ver o resultado. Sem perda de tempo com navegadores, janelas, botões&#8230; Por falar em praticidade, saiba que o programa todo está em um único arquivo de texto, é só baixar e usar: <a href="http://funcoeszz.net/funcoeszz">http://funcoeszz.net/funcoeszz</a>.</p>
<p>Saiba mais sobre as funções no site <a href="http://funcoeszz.net">http://funcoeszz.net</a>.<br />
Divirta-se!</p>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2010/12/23/versao-nova-das-funcoes-zz-10-12/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Coisinhas novas: Subwaytor, Tabuada e Relógio</title>
		<link>http://aurelio.net/blog/2009/03/31/coisinhas-novas-subwaytor-tabuada-e-relogio/</link>
		<comments>http://aurelio.net/blog/2009/03/31/coisinhas-novas-subwaytor-tabuada-e-relogio/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 02:37:01 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[AdSense]]></category>
		<category><![CDATA[Coisinha]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Relógio]]></category>
		<category><![CDATA[Subwaytor]]></category>
		<category><![CDATA[Tabuada]]></category>
		<category><![CDATA[Webstandards]]></category>

		<guid isPermaLink="false">http://aurelio.wordpress.com/?p=768</guid>
		<description><![CDATA[Oi pessoal, Após um longo período intocado, o site www.COISINHA.com.br ganhou uma atualização merecida. O quê, você nem se lembra mais que site é esse? Tá, eu refresco tua memória: é a casa do MiGuXeiToR, do Engripeitor e do Embriagueitor. &#8230; <a href="http://aurelio.net/blog/2009/03/31/coisinhas-novas-subwaytor-tabuada-e-relogio/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Oi pessoal,</p>
<p>Após um longo período intocado, o site <a href="http://www.coisinha.com.br/">www.COISINHA.com.br</a> ganhou uma atualização merecida.</p>
<blockquote>
<p style="text-align: left;">O quê, você nem se lembra mais que site é esse? Tá, eu refresco tua memória: é a casa do <a href="http://www.coisinha.com.br/miguxeitor/">MiGuXeiToR</a>, do <a href="http://www.coisinha.com.br/engripeitor/">Engripeitor</a> e do <a href="http://www.coisinha.com.br/embriagueitor/">Embriagueitor</a>. Refrescou? :)</p>
<p style="text-align: center;"><a href="http://www.coisinha.com.br/miguxeitor/"><img class="alignnone" src="http://www.coisinha.com.br/img/icon/miguxeitor.jpg" alt="" width="64" height="64" /></a> <a href="http://www.coisinha.com.br/engripeitor/"><img class="alignnone" src="http://www.coisinha.com.br/img/icon/engripeitor.png" alt="" width="64" height="64" /></a><a href="http://www.coisinha.com.br/embriagueitor/"><img class="alignnone" src="http://www.coisinha.com.br/img/icon/embriagueitor.gif" alt="" width="64" height="64" /></a></p>
</blockquote>
<p>Eu fiz esse site para abrigar alguns brinquedos que eu faço em <a href="http://pt.wikipedia.org/wiki/JavaScript">JavaScript</a> (e poder ganhar uns trocos com o <a href="http://aurelio.net/adsense/">AdSense</a>, claro). Mas como apareceram <a href="http://www.shellscript.com.br/">outras</a> <a href="http://www.piazinho.com.br/">coisinhas</a> <a href="http://umportugues.com/">mais</a> <a href="http://code.google.com/u/aureliojargas/updates">importantes</a> para fazer neste meio de tempo, sabe como é&#8230;</p>
<p>Mas tá, lamentações à parte, o que importa é que temos três brinquedos novos* no parquinho.</p>
<blockquote><p>* Seminovos na verdade, pois eu fiz todos eles em 2007/2008 e os coitadinhos ficaram na fila esperando a sua vez de serem apresentados ao mundo :)</p></blockquote>
<p style="text-align: center;"><a href="http://www.coisinha.com.br/subwaytor/"><img class="aligncenter" src="http://www.coisinha.com.br/img/icon/subwaytor.png" alt="" /></a></p>
<p style="text-align: center;"><a href="http://www.coisinha.com.br/subwaytor/"><strong>SUBWAYTOR</strong></a></p>
<p>Esse os leitores antigos do blog já conhecem! Quer dizer, pelo menos a versão inicial dele.</p>
<p>Lembra <a href="http://aurelio.net/blog/2008/05/19/nao-sei-fazer-barquinho-de-papel/">daquele texto que contei que fui com a Mog no Subway</a>, e de como é complicado escolher seu sanduíche? Com o bate-papo nos comentários surgiu a ideia de fazer um programinha que montasse o sanduíche automaticamente, escolhendo os ingredientes ao acaso. Surgiu então a <a href="http://funcoeszz.net/zzsubway/">zzsubway</a>.</p>
<p>A evolução do programa é o <a href="http://www.coisinha.com.br/subwaytor/">Subwaytor</a>, que também mostra fotinhos de sanduíches apetitosos :)</p>
<p>Além disso o programa possui uma inteligência artificial avançada, que com o mero contato de seu dedo na tela do computador, consegue analisar suas características biológicas e escolhe a melhor combinação de ingredientes para manter a sua saúde em dia.</p>
<p>Mais informações lá no <a href="http://www.coisinha.com.br/subwaytor/">site do Subwaytor</a>. Ah, e leia o rodapé ;)</p>
<p style="text-align: center;"><a href="http://www.coisinha.com.br/tabuada/"><img class="aligncenter" src="http://www.coisinha.com.br/img/icon/tabuada.jpg" alt="" width="128" height="128" /></a><a href="http://www.coisinha.com.br/tabuada/"><strong></strong></a></p>
<p style="text-align: center;"><a href="http://www.coisinha.com.br/tabuada/"><strong>TABUADA</strong></a></p>
<p>Uma tabelinha interativa que mostra a tabuada dos números de 1 a 10.</p>
<p>Não consigo me lembrar porque fiz esse programa, se foi uma ideia que tive ao acordar (dessas ideias tolas que na hora do almoço já foram embora) ou eu estava testando alguma coisa com CSS+JavaScript.</p>
<p>O fato é que eu achei legal destacar linhas e colunas com o movimento do mouse, então a tabuada veio de lambuja :)</p>
<p>De qualquer forma, talvez possa servir para crianças como uma alternativa aos livros chatos. Talvez não. Sei lá. Enfim. Se você achar um uso pra isso me avise :)</p>
<p style="text-align: center;"><strong><a href="http://www.coisinha.com.br/relogio/"><img class="aligncenter" src="http://www.coisinha.com.br/img/icon/relogio.gif" alt="" width="128" height="128" /></a></strong></p>
<p style="text-align: center;"><strong><a href="http://www.coisinha.com.br/relogio/"></a><a href="http://www.coisinha.com.br/relogio/">RELÓGIO</a></strong></p>
<p>Esse eu fiz em <a href="http://aurelio.net/blog/2007/11/">novembro de 2007</a> (!!), o coitado ficou mais de um ano esquecido na geladeira. Mas é meu brinquedo preferido.</p>
<p>A ideia não é minha, eu lembro de ter visto algo parecido em algum blog ou site ou&#8230; <del datetime="2009-04-17T14:45:36+00:00">Nunca vou saber.</del> (<a href="http://aurelio.net/blog/2009/03/31/coisinhas-novas-subwaytor-tabuada-e-relogio/#comment-45840">o Diogo achou</a>, era um <a href="http://www.simonheys.com/wordclock/">screensaver joiado</a>!) Mas como todo bom programador, ao ver o brinquedo a primeira coisa que pensei foi: como eu faço um desses? :)</p>
<p>O mais complicado foi aprender como definir um timer em JavaScript (<a href="http://www.google.com/search?q=simple+javascript+clock">obrigado Google</a>), pois o código mesmo acabou saindo em poucos minutos. Nada de mais: colocar e apagar classes nas palavras, cores no CSS e tá feito. Veja o fonte da página se ficou curioso(a).</p>
<p>Mas é incrível como essas coisinhas (taí o porquê do nome do site!) são prazerosas de fazer. É um desafio que aparece do nada no seu dia, cai no seu colo e você simplesmente não consegue dizer não. Parei tudo o que estava fazendo para poder programar o brinquedinho. Isso é tãaaaao legal :)</p>
<p>Veja lá o resultado: <a href="http://www.coisinha.com.br/relogio/">relógio com palavras</a>.</p>
<p><a href="http://www.coisinha.com.br/relogio/"><img class="aligncenter size-full wp-image-771" title="relogio-200" src="http://aurelio.net/wp/wp-content/uploads/2009/03/relogio-200.png" alt="relogio-200" width="200" height="200" /></a></p>
<p>Eu gostei, achei bonito e chique.<br />
E nerd, claro :)</p>
<p>Bem era isso.</p>
<p>Aceito sugestões de melhorias, e de coisinhas novas também!</p>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2009/03/31/coisinhas-novas-subwaytor-tabuada-e-relogio/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Garoto de programa</title>
		<link>http://aurelio.net/blog/2009/03/11/garoto-de-programa/</link>
		<comments>http://aurelio.net/blog/2009/03/11/garoto-de-programa/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 02:59:13 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[AdiumBook]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[DMG]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mog]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Sparkle]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[txt2tags]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[ZIP]]></category>

		<guid isPermaLink="false">http://aurelio.wordpress.com/?p=739</guid>
		<description><![CDATA[Nossa, o blog está agitado nos últimos dias. O texto anterior feito pela Mog gerou uma avalanche de comentários! E legal que são vários assuntos acontecendo ao mesmo tempo, graças à novidade de poder responder a um comentário específico (basta &#8230; <a href="http://aurelio.net/blog/2009/03/11/garoto-de-programa/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Nossa, o blog está agitado nos últimos dias.</p>
<p>O <a href="http://aurelio.net/blog/2009/03/05/o-que-ta-acontecendo-com-o-aurelio/">texto anterior feito pela Mog</a> gerou uma avalanche de comentários! E legal que são vários assuntos acontecendo ao mesmo tempo, graças à novidade de poder responder a um comentário específico (basta clicar em &#8220;Responder&#8221;, ao lado da data). Como a resposta aparece logo após o comentário e não lá no final, fica fácil de acompanhar o bate-papo. Quer participar também? <a href="http://aurelio.net/blog/2009/03/05/o-que-ta-acontecendo-com-o-aurelio/#comments">Vai lá agora</a> e também <a href="http://feeds.feedburner.com/AurelioJargasComentarios">assine o feed de comentários</a>!</p>
<p>O que mais gostei foi da sinceridade e conteúdo de muitos dos comentários. <a href="http://aurelio.net/blog/2009/03/05/o-que-ta-acontecendo-com-o-aurelio/#comment-45658">Tomei um puxão de orelha</a> (aliás, vários) que estava precisando, afinal, o blog acabou ficando meio de lado nos últimos meses.</p>
<p>Mas em vez de desculpas e lamentações, prefiro acatar a vontade popular e&#8230; escrever. <strong>Você pediu, agora aguenta!</strong> :)</p>
<p>Então, vamos falar de nerdices. Hoje lancei <a href="http://aureliosoft.wordpress.com/2009/03/11/adiumbook-version-15/">uma versão nova</a> do programinha <a href="http://aurelio.net/soft/adiumbook/">AdiumBook</a>, que serve para organizar seus contatos no <a href="http://aurelio.net/mac/">Mac</a>. Mas esqueça o programa, ele não é importante agora. O que quero é falar sobre desenvolvimento de software. Olha só:</p>
<div id="attachment_747" class="wp-caption aligncenter" style="width: 310px"><a href="http://aurelio.net/wp/wp-content/uploads/2009/03/billable-adiumbook.jpg"><img class="size-medium wp-image-747" title="billable-adiumbook" src="http://aurelio.net/wp/wp-content/uploads/2009/03/billable-adiumbook.jpg?w=300" alt="billable-adiumbook" width="300" height="266" /></a><p class="wp-caption-text">Clique na foto para aumentar</p></div>
<blockquote><p>Dica: Faz o seguinte, abra essa imagem em uma nova janela e deixe à vista, pois todo o texto falará sobre ela. Assim vai ficar mais fácil de entender.</p></blockquote>
<p>Agora vem uns quatro parágrafos bem chatos, mas aguente firme que é necessário para acompanhar o resto do texto. Eu prometo que depois melhora, tá?</p>
<p>Esta é uma foto do programa <a href="http://clickablebliss.com/billable/">Billable</a>, que uso para contabilizar as horas que gasto em cada tarefa durante o trabalho. Ele tem um relojinho que eu disparo quando começo e depois paro no final. No lado esquerdo estão os projetos e na tabelinha estão as tarefas. As linhas em azul estão selecionadas. Então o que estamos vendo são as tarefas do projeto AdiumBook.</p>
<p>Dentro da tabela, selecionei apenas as tarefas mais recentes deste projeto, que mostram todo o trabalho feito nesta versão nova lançada hoje.</p>
<p>Aquele total em reais no canto direito da tabela indica o valor de cada tarefa. Mas eu coloquei o valor/hora como R$ 1,00 para ficar fácil ver a quantidade de horas de cada tarefa. Então um valor de R$ 2,50 na verdade indica que a tarefa demorou duas horas e meia para ficar pronta.</p>
<p>Eu também sempre arredondo o tempo de cada tarefa, usando intervalos de no mínimo 15 minutos. Assim fica melhor de ter uma visão geral das coisas, valores muito picadinhos apenas confundem.</p>
<p>Bem, mas então tá. Agora você já sabe achar as informações ali :)</p>
<p>Eu gosto de sempre analisar os dados sobre as coisas que faço, para avaliar se tudo correu bem e para poder tomar decisões para o futuro. Dessa vez quero fazer a análise junto com vocês, para mostrar um pouco como é essa <strong>rotina de ser programador e lançar programas</strong>.</p>
<p>Primeiro vamos às datas. A versão anterior do AdiumBook (1.4) foi lançada em 29 de julho de 2008. Tá lá, na primeira linha da tabela, que não está selecionada. Esse lançamento tomou quase oito horas para ficar pronto! Vejamos quais tarefas foram feitas neste dia:</p>
<ul>
<li>Testes no iBook (Tiger)</li>
<li>Atualização SVN</li>
<li>DMG feito</li>
<li>site atualizado</li>
<li>anúncio nos sites (Xtras, Apple, ScriptBuilders)</li>
<li>anúncio no blog do aurélio</li>
<li>anúncio no blog aureliosoft</li>
</ul>
<p>Nada de substancial, certo? Eu nunca diria que essas tarefinhas iriam levar oito horas&#8230; Mas cada uma tem vários passos a seguir e os famosos &#8220;5 minutinhos&#8221; acabam virando horas.</p>
<blockquote><p>A Mog, depois de um tempo comigo, instituiu a regra do &#8220;<strong>vezes dois</strong>&#8221; para os meus prazos. Cada vez que eu digo algo como &#8220;só vou levar mais meia hora para terminar esse texto do blog&#8221;, ela responde: &#8220;vezes dois&#8221;. E não dá outra: acabo levando pelo menos mais uma hora para terminar. Sabe o que é? Ou eu sou otimista demais nos meus prazos, ou o universo conspira para sempre dar alguma coisa errada no meio do caminho ;)</p></blockquote>
<p>O lançamento de hoje foi mais rápido, demorou apenas quatro horas. Já estou mais familiarizado com o <a href="http://code.google.com/p/adiumbook/source/checkout">SVN</a>, por preguiça não fiz os testes no <a href="http://www.apple.com/support/tiger/">Tiger</a> (sistema anterior, já antiquado) e o anúncio no blog é este texto que estou escrevendo agora, mas dessa vez contabilizando no projeto &#8220;Blog&#8221;. Vejamos, já deu uma hora e oito minutos até aqui. Será que conseguirei terminar em menos de três horas? Duvido :)</p>
<p><strong>Primeira lição</strong> que os dados nos ensinam: leva tempo!</p>
<p>O lançamento de uma versão nova de um programa não é feito em 15 minutos, nem em uma hora. É um processo trabalhoso e desgastante, onde você deve ter atenção máxima para não errar. Concentração é tudo.</p>
<blockquote><p>E cansa mesmo, mental e fisicamente. Hoje, logo que terminei o lançamento do AdiumBook fui tomar um banho para relaxar, pois estava acabado. O bom é que no banho tive a ideia de um <a href="http://aurelio.net/livro/">livro</a> sobre desenvolvimento de software, mas isso eu deixo para falar outro dia&#8230; :)</p></blockquote>
<p>Voltando à fotinho e à tabela, a segunda linha mostra que no dia seguinte ao lançamento da versão anterior, gastei somente uma hora e pouco fazendo faxina (todos = &#8220;to do&#8221;s, do inglês, a fazer) e cadastrando o programa no site <a href="http://freshmeat.net/projects/adiumbook">Freshmeat</a>. Nada glorioso, trabalho de peão.</p>
<p>Só fui mexer no programa novamente um mês depois, em agosto, que levei uma hora para arrumar alguns probleminhas que apareceram ao instalar a versão nova do <a href="http://adium.im/">Adium</a> (1.3).</p>
<p>Em setembro mexi mais uma única vez para resolver outro problema que os usuários relataram, que deu muito trabalho levando mais de cinco horas para resolver. E depois mais nada, esqueci do programa por vários meses.</p>
<blockquote><p>Eu gosto assim. Passar um bom tempo sem mexer no programa, que quando eu volto, a disposição é grande. Se mexer todo dia um pouquinho enche o saco rapidinho.</p></blockquote>
<p><strong>Segunda lição:<br />
</strong>Relaxe! Só mexa no programa quando tiver tempo e disposição.</p>
<p>Vieram as festas de fim de ano, a praia, o Carnaval, e nada de vontade de mexer no programa. Porém, os e-mails de usuários começaram a acumular e comecei a ficar incomodado. Geralmente é neste momento que decido que é &#8220;hora de fazer alguma coisa&#8221;.</p>
<blockquote><p>Ei, <a href="http://txt2tags.org/pt/">txt2tags</a>, estou olhando pra você.</p></blockquote>
<p>Depois que terminei as tarefas mais importantes do <a href="http://umportugues.com">UmPortugues</a>, me programei para &#8220;dar um jeito&#8221; no AdiumBook. Eu sabia que essa pegada iria resultar em uma versão nova, pois haviam muitas pendências a serem resolvidas. Então era preciso de bastante tempo reservado para poder mergulhar no código.</p>
<p>Aí começou o trabalho de verdade, no dia sete deste mês, sábado passado, num final de semana que excepcionalmente eu não iria ver a <a href="http://aurelio.net/tag/mog/">Mog</a>. Veja na foto as cinco últimas linhas selecionadas na tabela, que mostram cinco dias seguidos de trabalho no programa, de sábado até hoje.</p>
<p>Eu preciso dessa imersão quando tenho algo maior a fazer. Trabalhar meia hora por dia em uma coisa não dá certo. Eu levo esse tempo somente para me concentrar 100% e &#8220;mergulhar&#8221; no código. Sabe aquele estado de atenção em que você não sente fome nem vontade de ir ao banheiro? É isso :)</p>
<p><strong>Terceira lição:<br />
</strong> Prepare-se para trabalhar pesado quando for finalizar um programa para lançamento de versão nova.</p>
<p>Mas tive alguns problemas não planejados.</p>
<p>Dias atrás instalei o <a href="http://www.apple.com/safari/">Safari 4 Beta</a> e gostei que ele está mais rápido e consome menos memória (nem preciso mais encerrá-lo diariamente!). Porém, ele <a href="http://compgroups.net/comp.sys.mac.apps/safari-4-kills-xcode/195514">quebrou</a> o <a href="http://en.wikipedia.org/wiki/Xcode">Xcode</a>, que é o programa que uso para mexer no AdiumBook. Tive que atualizá-lo. Foram horas até os seus malditos 900 e poucos megas serem baixados pela minha conexão barata. Uma baita água fria em quem achava que já ia colocar a mão no código naquele momento.</p>
<p>Com o Xcode atualizado, o próximo que me deu dores de cabeça foi o <a href="http://sparkle.andymatuschak.org/">Sparkle</a>. Ele é um carinha muito bacana que você enfia no teu programa e ele faz a mágica da atualização automática. Funciona assim: a próxima vez que eu lançar uma versão nova do AdiumBook, vai aparecer automaticamente uma janelinha para o usuário, dizendo: &#8220;tem uma versão nova desse programa, quer baixar e instalar?&#8221; e então ele faz tudo sozinho. É lindo de ver. Mas&#8230; Levei horas para fazer ele funcionar. E nem posso xingar o carinha, pois o erro foi meu. A maneira que eu informava a versão do AdiumBook no Xcode estava errada. Arrumei isso e o Sparkle começou a funcionar. Coisas da vida&#8230;</p>
<div id="attachment_748" class="wp-caption aligncenter" style="width: 310px"><a href="http://aurelio.net/wp/wp-content/uploads/2009/03/sparkle-window.jpg"><img class="size-medium wp-image-748" title="sparkle-window" src="http://aurelio.net/wp/wp-content/uploads/2009/03/sparkle-window.jpg?w=300" alt="sparkle-window" width="300" height="200" /></a><p class="wp-caption-text">Janelinha do Sparkle atualizando o AdiumBook</p></div>
<blockquote><p>Estou há duas horas escrevendo esse texto já. Isso que nem revisei nada ainda. É, vai demorar&#8230;</p></blockquote>
<p>Já que fui forçado (para o bem) a mudar meu esquema de versões, resolvi por o número de revisão do SVN ali também, para ficar igual software de gente grande. A versão de lançamento ficou &#8220;1.5 (50)&#8221;, ou seja, <a href="http://code.google.com/p/adiumbook/source/browse/#svn/tags/1.5">versão 1.5</a>, <a href="http://code.google.com/p/adiumbook/source/detail?r=50#">revisão 50 do SVN</a>. Mas como eu não ia ficar mudando a revisão do SVN &#8220;na mão&#8221; a cada alteração, procurei uma maneira de fazer isso automaticamente. Achei <a href="http://blog.shinyfrog.net/2008/05/19/sync-svn-version-and-cfbundleversion-xcode/">um script em Python</a> que deu erro aqui mas consegui arrumar. No fim, todo esse problema acabou deixando o programa mais profissional e ainda pude automatizar a geração do ZIP para lançamento.</p>
<p>Ah é, o <a href="http://en.wikipedia.org/wiki/ZIP_(file_format)">ZIP</a>. Antes eu usava o formato <a href="http://en.wikipedia.org/wiki/Apple_Disk_Image">DMG</a> (Disk Image) para &#8220;empacotar&#8221; e distribuir o AdiumBook. Esse tal DMG é um treco que só tem no Mac. É bacana, imagine um arquivo ZIP que quando você abre aparece uma janelinha bonitinha, com desenhos, cores, tudo bem personalizado para o seu programa. Só que o Sparkle tem <a href="https://github.com/andymatuschak/Sparkle/wiki/Publishing-An-Update">algumas pegadinhas</a> para usar com o DMG. Então para simplificar as coisas para mim, mudei para o ZIP, que é mais padrão.</p>
<div id="attachment_746" class="wp-caption aligncenter" style="width: 310px"><a href="http://aurelio.net/wp/wp-content/uploads/2009/03/adium-dmg.jpg"><img class="size-medium wp-image-746" title="adium-dmg" src="http://aurelio.net/wp/wp-content/uploads/2009/03/adium-dmg.jpg?w=300" alt="adium-dmg" width="300" height="226" /></a><p class="wp-caption-text">O DMG do Adium é tãaaao bonitinho</p></div>
<p>Percebeu o tamanho das encrencas não-planejadas que aparecem quando você só quer mexer sossegado no seu programa e nada mais? Recapitulando: baixar e instalar o Xcode, Sparkle com problemas, mudar o esquema de versionamento, script para versão automática, mudar de DMG para ZIP. Por isso ocorre o &#8220;vezes dois&#8221;, que nesse caso foi um &#8220;vezes quatro&#8221; pelo menos :)</p>
<p><strong>Quarta lição:<br />
</strong> Prepare-se para enfrentar problemas inesperados. O ato de &#8220;programar&#8221; envolve muito mais do que sentar numa cadeira e digitar códigos. Ah, se não fosse o Google&#8230;</p>
<p>Bem, resolvidos estes contratempos, pude finalmente fazer aquilo que gosto: <a href="http://code.google.com/p/adiumbook/source/list">criar códigos</a>. E assim foram corrigidos os bugs e implementadas as funcionalidades novas.</p>
<blockquote><p>Se você quiser acompanhar &#8220;ao vivo&#8221; a evolução de um software, assine <a href="http://code.google.com/feeds/u/aureliojargas/updates/user/basic">meu feed no Google Code</a>. Assim você fica sabendo na hora sobre as mudanças mais recentes no AdiumBook, no txt2tags e nas <a href="http://funcoeszz.net">Funções ZZ</a>.</p></blockquote>
<p>Com tudo pronto, hoje atualizei <a href="http://code.google.com/p/adiumbook/source/browse/trunk/AdiumBook%20Help/index.html">o texto de ajuda</a> (Help), rodei o programa e testei todos os botões e itens de menu, fiz o <a href="http://adiumbook.googlecode.com/files/AdiumBook-1.5.zip">ZIP final</a> e mandei para o <a href="http://code.google.com/p/adiumbook/downloads/list">servidor</a>. Contemplei por alguns segundos o arquivo na tela, mostrando zero downloads. É o nascimento.</p>
<blockquote><p>Dá uma emoção ao enviar o arquivo, sabia? Uma vez no servidor, seu &#8220;filho&#8221; vai para o mundo. Ali é o ponto sem retorno, onde você declarou publicamente que fez o seu melhor. Encontrar uma falha logo após enviar o arquivo é motivo de vergonha para três gerações futuras de sua família.</p></blockquote>
<p>Depois foi aquela novela de atualizar o <a href="http://aurelio.net/soft/adiumbook/">site do programa</a>, atualizar o <a href="http://aurelio.net/soft/padfiles/adiumbook-pad.xml">arquivo PAD</a> e anunciar a versão nova para os principais sites de download. Vou colar aqui um pedaço do meu arquivo release-checklist.txt, que lista todas as tarefas obrigatórias de cada lançamento (em ordem de execução):</p>
<blockquote><p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-8&lt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
upload ZIP pro Google Code<br />
baixar ZIP e testar<br />
deprecate release anterior no Google Code<br />
atualizar Changelog no Google Code (wiki)<br />
atualizar issues (&#8220;closes issue #12&#8243; no Changelog)<br />
fazer Changelog mini (&lt;300) para PAD e sites<br />
screenshot novidades<br />
atualizar site<br />
atualizar appcast.xml (e changelog: 1.5.html)<br />
atualizar PAD file (editar, upload, validate, enviar repositório)<br />
atualizar no Adium Xtras http://www.adiumxtras.com/?a=xtras&amp;xtra_id=2069<br />
atualizar no ScriptBuilders (Upload your Scripts! &gt; Update Existing)<br />
atualizar no VersionTracker (MacUpdate segue, acho)<br />
atualizar no Freshmeat http://freshmeat.net/projects/adiumbook/<br />
atualizar no site da Apple https://adcweb.apple.com/downloads/<br />
atualizar no i use this (textile: listas com * e **)<br />
post blog aureliosoft<br />
post blog aurelio<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&gt;8&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p></blockquote>
<p>Ufa! Pensou que era fácil lançar um programa? :)</p>
<p><strong>Quinta lição:<br />
</strong>Codificar é divertido, lançar é estressante. Por isso não compensa fazer muitos lançamentos em um curto período.</p>
<p>De volta à foto, veja que logo abaixo das linhas azuis da tabela, há uma linha mostrando os números totais. Ali no meio é possível ver no item &#8220;Time-based&#8221; qual foi o tempo total que eu levei para fazer todas as tarefas dessa versão nova do programa: mais de 30 horas.</p>
<p>Pena que faz pouco tempo que eu comecei a contabilizar as horas do AdiumBook, mas como eu apanhei muito lá no início (em 2005) por não saber AppleScript direito, acredito que o total já investido nesse programa passa das 200 horas de trabalho.</p>
<p>Lembrando: o AdiumBook é um programa gratuito.</p>
<p>Se você me perguntar &#8220;<strong>por quê?</strong>&#8220;,<br />
eu respondo &#8220;<strong>porque vale a pena!</strong>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2009/03/11/garoto-de-programa/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>É nóis no Tchelinux 2008</title>
		<link>http://aurelio.net/blog/2008/11/14/e-nois-no-tchelinux-2008/</link>
		<comments>http://aurelio.net/blog/2008/11/14/e-nois-no-tchelinux-2008/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 19:05:24 +0000</pubDate>
		<dc:creator>Aurelio Jargas</dc:creator>
				<category><![CDATA[Meu querido diário]]></category>
		<category><![CDATA[AdSense]]></category>
		<category><![CDATA[apostila]]></category>
		<category><![CDATA[Curitiba]]></category>
		<category><![CDATA[Funções ZZ]]></category>
		<category><![CDATA[Joinville]]></category>
		<category><![CDATA[Livro]]></category>
		<category><![CDATA[Matrix]]></category>
		<category><![CDATA[Mog]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[Porto Alegre]]></category>
		<category><![CDATA[txt2tags]]></category>
		<category><![CDATA[viagem]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://aurelio.wordpress.com/?p=635</guid>
		<description><![CDATA[Já falei que não gosto da rotina de palestrante, mas o meu amigo Leo me convidou para palestrar em seu evento Tchelinux e achou um jeito de me convencer a sair da toca: levar a Mog junto :) É uma &#8230; <a href="http://aurelio.net/blog/2008/11/14/e-nois-no-tchelinux-2008/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://aurelio.net/blog/2007/08/21/minha-palestra-na-pyconbrasil/">Já falei que não gosto da rotina de palestrante</a>, mas o meu amigo Leo me convidou para palestrar em seu evento <a href="http://tchelinux.org">Tchelinux</a> e achou um jeito de me convencer a sair da toca: levar a Mog junto :)</p>
<p>É uma ótima idéia, pois além de ela me ajudar com tudo lá no evento, no tempo que sobra podemos passear juntos pela cidade, com calma, aproveitando de verdade a viagem, que fica sendo meio trabalho e meio passeio.</p>
<p>E foi exatamente isso o que fizemos neste final de semana: fomos à Porto Alegre para passear e participar do Tchelinux 2008.</p>
<p style="text-align:center;"><a href="https://picasaweb.google.com/109483631753960149638/TchelinuxPortoAlegre2008#5267202464036171586"><img class="aligncenter" title="Tchelinux" src="http://lh4.ggpht.com/_unFTYA8V_sE/SRjcu_TwL0I/AAAAAAAAARo/kH1vGfUF7Vo/s640/web-DSC01790.JPG" alt="" width="202" height="269" /></a></p>
<p>Nosso avião era sábado às 7h30 da madrugada, e como o aeroporto de Curitiba é BEM longe do centro da cidade, tivemos que acordar às 5h30. Como se esse horário já não fosse desumano o bastante, tínhamos ido dormir à 1h30, totalizando incríveis <strong>quatro horas de sono</strong>. Isso explica as caras de sono na maioria das fotos :)</p>
<blockquote><p>Não teve jeito de ir dormir antes, pois a Mog veio lá de Joinville, acabou pegando a rodoviária lotada e o ônibus atrasou um monte.</p></blockquote>
<p>Já no avião, voando acima das nuvens e admirando aquela incrível paisagem de sonho, de um mar de algodão-doce que ia até onde os olhos não alcançavam mais, colocamos nossas <strong>alianças</strong> pela primeira vez. <a href="http://aurelio.net/blog/2008/07/18/a-lua-a-pedra-e-o-amor/">O noivado aconteceu em junho</a>, com um anel provisório, porém agora tínhamos nos dedos nossas alianças de verdade. Viva! \o/</p>
<div id="attachment_657" class="wp-caption aligncenter" style="width: 410px"><img class="size-full wp-image-657" title="aviao-aliancas" src="http://aurelio.net/wp/wp-content/uploads/2008/11/aviao-aliancas1.jpg" alt="aviao-aliancas" width="400" height="300" /><p class="wp-caption-text">Aliança nas nuvens</p></div>
<p>O evento foi na PUC, mesmo lugar do <a href="http://aurelio.net/blog/2008/04/22/a-mog-foi-no-fisl/">FISL</a>. Chegando lá, a grata surpresa de ver vários <strong>amigos</strong> que há tempos não conversava. Amigos da Conectiva, da Internet, de outros eventos e até alguns leitores aqui do blog.</p>
<p>Depois do almoço eu e a Mog demos uma descansada na <strong>grama</strong>, pois a noite curta de sono ainda estava pesando muito as pálpebras. Aproveitei também para dar uma última olhada nos <a href="http://www.tchelinux.org/2008/portoalegre/slides/aurelio-sl-fonte-de-renda.pdf">slides da palestra</a>, pois eu ainda não sabia direito o que iria falar nas duas horas com o microfone na mão :)</p>
<div class="wp-caption aligncenter" style="width: 410px"><a href="https://plus.google.com/photos/109483631753960149638/albums/5267202413205877937/5267314727220769010?banner=pwa"><img title="Pensando na grama" src="http://lh5.ggpht.com/_unFTYA8V_sE/SRlC1kQtcPI/AAAAAAAAAac/pbEjOAeHMGY/s720/web-DSC01810.JPG" alt="" width="400" height="300" /></a><p class="wp-caption-text">Que que eu vou falar lá...</p></div>
<blockquote><p><strong>Sobre a palestra</strong></p>
<p>O nome da palestra é &#8220;<em>$oftware Livre como fonte de renda</em>&#8220;, onde explico o que eu fiz para <a href="http://aurelio.net/blog/2007/03/29/vamos-falar-de-grana/">ganhar dinheiro como autônomo</a>, desde que <a href="http://aurelio.net/blog/2005/09/23/free-as-in-bird/">saí da Conectiva</a>, no ano de 2005.</p>
<p><a href="http://aurelio.net/curso/material/aurelio-sl-fonte-de-renda.pdf"><img class="aligncenter size-full wp-image-653" title="sl-como-fonte-de-renda" src="http://aurelio.net/wp/wp-content/uploads/2008/11/sl-como-fonte-de-renda.jpg" alt="sl-como-fonte-de-renda" width="311" height="233" /></a></p>
<p>Pode ser encarada como a continuação da palestra &#8220;<a href="http://aurelio.net/curso/linuxchix/">Como ser um desenvolvedor de Software Livre</a>&#8220;, que eu fazia em 2004. Mas naquela época eu era empregado e tinha um salário, então o dinheiro não era uma preocupação. Hoje minha realidade é outra, e essa palestra nova reflete essa mudança.</p>
<p>Passei dois dias inteiros preparando <a href="http://aurelio.net/curso/material/aurelio-sl-fonte-de-renda.pdf">os slides</a>, deu um trabalhão. Mas valeu, foi revelador, pois primeiro precisei fazer todo um levantamento do que aconteceu nos últimos anos. Quanto gastei? Quanto vendi? Quanto ganhei? Em quanto tempo? De onde veio? Para onde foi? Fiz planilhas, gerei gráficos, comparei dados. Números, números, números.</p>
<p>Resumindo o assunto em uma palavra: $$$ GRANA $$$ :)</p>
<p style="text-align:center;"><a href="https://plus.google.com/photos/109483631753960149638/albums/5267202413205877937/5267316422188213122?banner=pwa"><img class="size-full wp-image-659 aligncenter" title="mr-burns" src="http://aurelio.net/wp/wp-content/uploads/2008/11/mr-burns.jpg" alt="mr-burns" width="266" height="251" /></a></p>
</blockquote>
<p>Nos slides eu tinha todos os dados. Exatos, porém frios. O calor e o humor viriam da minha história pessoal. Mas ainda faltava algo&#8230; Uma mensagem, um objetivo&#8230; A resposta veio rápido: a Mog e o Leo sugeriram que aquele público (jovens, estudantes) precisava mesmo era de <strong>motivação</strong>. Isso! Essa era a peça que faltava.</p>
<p>Como eu já não tinha mais tempo de preparar nada, foi tudo &#8220;ao vivo&#8221;, sem ensaio. Com o microfone na mão e slides no projetor, diante de 200 pessoas, <strong>a palestra nasceu</strong>.</p>
<p>À medida que eu ia contando as histórias e mostrava os dados dos slides, lembrava daquela época de dúvidas, e de como o futuro era incerto. Eu fazia as coisas sem saber onde iam dar. Hoje é fácil entender o processo, mas lá atrás tudo o que eu sabia era que eu precisava <strong>fazer</strong>. O resultado era uma incógnita.</p>
<blockquote><p>E esse foi o grande recado: <strong>faça</strong>.</p>
<p>Não importa se não der em nada.<br />
Não importa se não tem objetivo.<br />
Não importa se ninguém te apóia.<br />
Faça.<br />
Simplesmente faça.<br />
Pode demorar vários anos, mas o resultado vem.</p>
<p>Eu fiz, e <strong>o resultado veio</strong>.</p></blockquote>
<p>E assim foram duas horas que passaram em instantes. Falei da <a href="http://funcoeszz.net/camiseta.html">camiseta das Funções ZZ</a>, da <a href="http://aurelio.net/shell/apostila/">apostila de shell</a>, das doações via PayPal, dos <a href="http://aurelio.net/adsense/">anúncios do  Google (AdSense)</a> e dos <a href="http://aurelio.net/livro/">livros que escrevi</a>. Quer assistir?</p>
<p>Aqui tem a primeira metade:</p>
<p><embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=-2132264072983568211&amp;hl=en&amp;fs=true" style="width:640px;height:518px" allowFullScreen="true" allowScriptAccess="always" /></p>
<p>E aqui tem a segunda metade (valeu <a href="http://blog.griebeler.com">Bruna</a>!):</p>
<p><embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=2963572980768934059&amp;hl=en&amp;fs=true" style="width:640px;height:518px" allowFullScreen="true" allowScriptAccess="always" /></p>
<p>No final, um palestrante emocionado por perceber que hoje está vivendo o seu sonho de ontem e um público satisfeito que aplaudiu com vigor.</p>
<p>Missão cumprida.</p>
<blockquote><p><strong>O e-mendigo recebe doações :)</strong></p>
<p>No meio da palestra o Leo me perguntou qual era o meu e-mail do PayPal. &#8220;<em>É verde arroba aurelio ponto net</em>&#8221; e voltei a palestrar. &#8220;<em>Acho que ele vai por isso no site do Tchelinux</em>&#8220;, pensei. Instantes depois, com um sorrisinho maroto no rosto, ele mostra a tela do notebook e diz que tinha acabado de me fazer uma doação. E mais, que também tinha <strong>quebrado o recorde</strong> de 100 dólares como a maior doação que eu já tinha recebido. UAU! Como assim? Massa!</p>
<p>No fim da palestra, recebi uma lista de nomes e um bolo de notas e moedas. &#8220;<em>Que isso?</em>&#8220;, perguntei. Eu não tinha percebido, mas por iniciativa do Leo e do Evaldo (UdontKnow), durante o &#8220;culto&#8221; eles <strong>passaram a &#8220;sacolinha&#8221;</strong> e colheram &#8220;ofertas&#8221; para este &#8220;pastor&#8221; que vos escreve :)</p>
<p>Pô, isso <strong>tocou fundo</strong> (no bom sentido, claro). Nos slides eu mostrei que os brasileiros contribuem muito pouco, apesar de serem os maiores usuários de meus programas livres. Mas ali, durante a palestra, o pessoal resolveu mudar essa realidade.</p>
<p>MUITO OBRIGADO MESMO!</p>
<div id="attachment_650" class="wp-caption alignnone" style="width: 310px"><a href="http://aurelio.net/wp/wp-content/uploads/2008/11/lista-doadores.jpg"><img class="size-medium wp-image-650" title="lista-doadores" src="http://aurelio.net/wp/wp-content/uploads/2008/11/lista-doadores.jpg?w=300" alt="46 pessoas doaram R$160,75 durante a palestra \o/" width="300" height="183" /></a><p class="wp-caption-text">46 pessoas doaram...</p></div>
<div id="attachment_655" class="wp-caption alignnone" style="width: 310px"><a href="http://aurelio.net/wp/wp-content/uploads/2008/11/dinheiro-doacoes1.jpg"><img class="size-medium wp-image-655" title="dinheiro-doacoes" src="http://aurelio.net/wp/wp-content/uploads/2008/11/dinheiro-doacoes1.jpg?w=300" alt="foo" width="300" height="185" /></a><p class="wp-caption-text">... R$160,75 durante a palestra...</p></div>
<div id="attachment_651" class="wp-caption alignnone" style="width: 310px"><a href="http://aurelio.net/wp/wp-content/uploads/2008/11/paises-doadores-nq8.png"><img class="size-medium wp-image-651" title="paises-doadores-nq8" src="http://aurelio.net/wp/wp-content/uploads/2008/11/paises-doadores-nq8.png?w=300" alt="paises-doadores-nq8" width="300" height="138" /></a><p class="wp-caption-text">... e o Brasil é campeão Galvão! \o/</p></div></blockquote>
<p>Logo depois da palestra fizemos um <strong>painel</strong> (ou mesa, ou algo parecido&#8230;), onde o tema era carreira profissional no software livre, com apresentação do Carlos Santos (casantos), em que eu, o <a href="http://acmel.wordpress.com/">Arnaldo</a> (acme) e o <a href="http://fabioolive.blogspot.com/">Fábio Olivé</a> (leitinho) respondíamos perguntas. Eu não tenho carreira, então não tinha muito a falar :)</p>
<p>Depois veio o <strong>encerramento</strong>, com a mensagem final do Leo, sorteio de brindes e arremessos de bottoms assassinos do Firefox, mas felizmente todos sobreviveram :) Aproveitei para vender os livros que eu tinha levado, e felizmente eles sumiram rapidinho!</p>
<p>De noite teve um <strong>mega churrasco nerd</strong>, num lugar bacana onde cada mesa tinha uma churrasqueira &#8220;pessoal&#8221; na ponta, para o grupo assar sua própria carne. Ao redor várias quadras de futebol onde jogavam times femininos, todas uniformizadas, com &#8220;uns coxão&#8221; como disse a Mog. Eu já estava entorpecido de tanto cansaço e sono, mas acabamos ficando lá até perto da meia-noite.</p>
<p style="text-align:center;"><a href="https://picasaweb.google.com/103827113319064343034/TcheLinux2008#5266669200954389378"><img class="aligncenter" title="Churrascada Nerd" src="http://lh6.ggpht.com/_OjastaZGyRk/SRb3u_hgc4I/AAAAAAAAAMY/G69FpGX8yDk/s720/dsc00404.jpg" alt="" width="400" height="300" /></a></p>
<p>Dia seguinte acordamos tarde, tomamos aquele café reforçado no hotel e fomos torrar todo o dinheiro que ganhamos no evento :D Passamos o <strong>domingo</strong> no <a href="http://www.briquedaredencao.com.br/">Brique da Redenção</a>, e lá compramos alguns apetrechos (e até um quadro!) para decorar nosso futuro apartamento em Joinville. Assim toda vez que olharmos para o quadro, lembraremos dessa viagem, do evento, dos amigos e daqueles que fizeram parte dessa história.</p>
<blockquote><p>Ah, eu ainda não contei sobre Joinville? Tá, um dia eu conto então ;)</p></blockquote>
<p>Para terminar, gostaria de fazer um <strong>agradecimento especial ao Leo</strong>, que é um cara mais do que especial, que fez tudo isso acontecer. O <a href="http://tchelinux.org">Tchelinux</a> foi um evento que eu tive prazer em participar, feitos por nerds, para nerds, sem politicagem. Altamente recomendado! Irmão, muito obrigado pela experiência, eu e a Mog ficamos MUITO satisfeitos com a viagem!</p>
<div class="wp-caption aligncenter" style="width: 410px"><a href="https://picasaweb.google.com/109483631753960149638/TchelinuxPortoAlegre2008#5267317324509989906"><img class=" " title="Leo" src="http://lh5.ggpht.com/_unFTYA8V_sE/SRlFMv6tzBI/AAAAAAAAAd4/y4r626x-HQc/s720/web-DSC01912.JPG" alt="Leo é o cara" width="400" height="300" /></a><p class="wp-caption-text">Leo é o cara</p></div>
]]></content:encoded>
			<wfw:commentRss>http://aurelio.net/blog/2008/11/14/e-nois-no-tchelinux-2008/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 2.610 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2014-02-16 22:29:33 -->

<!-- Compression = gzip -->