<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Nardol - Home</title>
  <id>tag:www.nardol.org,2010:mephisto/</id>
  <generator version="0.8.0" uri="http://mephistoblog.com">Mephisto Drax</generator>
  <link href="http://www.nardol.org/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://www.nardol.org/" rel="alternate" type="text/html"/>
  <updated>2010-02-03T09:54:01Z</updated>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2010-02-03:577</id>
    <published>2010-02-03T09:47:00Z</published>
    <updated>2010-02-03T09:54:01Z</updated>
    <category term="Code"/>
    <category term="Debian &amp; FLOSS"/>
    <category term="chess"/>
    <category term="knock-out tournaments"/>
    <category term="ruby"/>
    <category term="swiss tournament"/>
    <category term="xml-rpc"/>
    <link href="http://www.nardol.org/2010/2/3/swiss-tournament-in-ruby" rel="alternate" type="text/html"/>
    <title>Swiss Tournament in Ruby</title>
<content type="html">
            &lt;p&gt;Being a chess player (not a very good one), I&#8217;ve always been intrigued by &lt;a href=&quot;http://en.wikipedia.org/wiki/Swiss-system_tournament&quot;&gt;Swiss Tournaments&lt;/a&gt;. They are so practical, and ensure that even a lowsy player like myself, can play the same number of rounds as any other player. That&#8217;s being inclusive!&lt;/p&gt;


	&lt;p&gt;I&#8217;ve played some knock-out tournaments (to me it meant being kicked off in the second or third round), and, given their nature, not-so-good players tend not to attend these tournaments (since their fun will, almost surely, end before long).&lt;/p&gt;


	&lt;p&gt;Well, to solve a very similar problem, but not in any game championship, a co-worker suggested we could use a Swiss Tournament system. I liked the idea, but not being sure it could really solve the problem, I had to quickly implement something to test our data with&#8230; so Ruby to the rescue!&lt;/p&gt;


	&lt;p&gt;In no time we were up and running, and apart from minor issues that were being fixed along the way, I guess it&#8217;s a pretty good implementation. You can checkout &lt;a href=&quot;http://github.com/spectra/rswiss&quot;&gt;the code&lt;/a&gt; to get a feel of it. Of course, it doesn&#8217;t follow any rules from any Chess or Go association (Wikipedia, after all, was my guide here), but it serves our goal. Being a &#8220;proof-of-concept&#8221; code, feel free to improve it (just tell me about it, will you?).&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2010-01-28:575</id>
    <published>2010-01-28T10:42:00Z</published>
    <updated>2010-01-28T10:42:23Z</updated>
    <category term="clutter"/>
    <category term="news websites"/>
    <category term="readability"/>
    <link href="http://www.nardol.org/2010/1/28/good-tip-readability" rel="alternate" type="text/html"/>
    <title>Good tip: Readability</title>
<content type="html">
            &lt;p&gt;Folks at Arc90 have an interesting experiment going on: &lt;a href=&quot;http://lab.arc90.com/experiments/readability/&quot;&gt;Readability&lt;/a&gt;. That&#8217;s a tool you just drag to your bookmarks toolbar to improve readability of anything&#8230;&lt;/p&gt;


	&lt;p&gt;I&#8217;ve been using it for some time now, and my experience, specially in news websites, has been greatly improved. If you are like me, that get really bothered by the usual clutter of todays websites, this tool is for you.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2010-01-13:569</id>
    <published>2010-01-13T13:46:00Z</published>
    <updated>2010-01-13T13:48:39Z</updated>
    <category term="Debian &amp; FLOSS"/>
    <category term="cleverness"/>
    <category term="concurrency"/>
    <category term="mutex"/>
    <category term="real-life"/>
    <category term="restroom"/>
    <link href="http://www.nardol.org/2010/1/13/real-life-programming-is-about-logic-and-simplicity" rel="alternate" type="text/html"/>
    <title>Real Life: Programming is about logic and simplicity</title>
<content type="html">
            &lt;p&gt;Why is it so hard for non-programmers to understand mutex locks?&lt;/p&gt;


	&lt;p&gt;No&#8230; I am not asking non-programmers to understand programming at all. But concepts that we use in programming that came from real-life in the first place? Come on&#8230; Programmers learned from real-life, not the other way around!&lt;/p&gt;


	&lt;p&gt;Let me explain: at the hospital, after a not so clever renovation, we ended up with an employee restroom that is far from work place (in fact, almost in another department). Most of the times it is occupied&#8230; So it takes a trip to the restroom just to learn that it cannot be used at that moment! In a busy morning, one of those trips is just what one can do!&lt;/p&gt;


	&lt;p&gt;As a programmer I suggested a mutex lock: change the restroom door lock and make only one copy of the key, that should be kept in a common place and returned after being used. If you want to use the restroom and it&#8217;s occupied, just learning the key is not there is enough to save a useless trip.&lt;/p&gt;


	&lt;p&gt;Come on&#8230; that is not a hard concept! As I said, we, programmers, learned it from real-life, in settings just as the one I described above!&lt;/p&gt;


	&lt;p&gt;Well, I just got the key (&#8220;acquired the lock&#8221;, in programmer speech) and went to the restroom. When I unlocked the door I was surprised by someone already using it! How embarassing! Someone had the smart idea of making a copy of the key! What part of the mutex concept did people not understand?&lt;/p&gt;


	&lt;p&gt;Luckily, most computational mutex algorithms prevent &#8220;lock cloning&#8221;... :-)&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2010-01-06:562</id>
    <published>2010-01-06T19:12:00Z</published>
    <updated>2010-01-06T19:12:51Z</updated>
    <category term="pt-BR"/>
    <category term="bb"/>
    <category term="home banking"/>
    <link href="http://www.nardol.org/2010/1/6/regressao-no-atendimento-do-banco-do-brasil" rel="alternate" type="text/html"/>
    <title>Regress&#227;o no atendimento do Banco do Brasil</title>
<content type="html">
            &lt;p&gt;Eu sempre disse que o &lt;em&gt;Home Banking&lt;/em&gt; do Banco do Brasil era o melhor. Eu sempre achei muito concisa a apresentação, com uma página inicial personalizável com os links para o que você mais usa bem a mão. Até o pequeno probleminha que o tal do &#8220;Teclado Virtual&#8221; (em Java) representava não me afetava suficiente para mudar a minha opinião. Mais importante que tudo, funcionava &lt;strong&gt;perfeitamente&lt;/strong&gt; no meu Debian.&lt;/p&gt;


	&lt;p&gt;Há alguns dias fiquei ainda mais feliz com o sistema, quando substituiram o teclado virtual por uma caixa de texto&#8230; Finalmente eu podia digitar a minha senha no bloco numérico do teclado &#8220;real&#8221;. No entanto essa felicidade acabou hoje&#8230;&lt;/p&gt;


	&lt;p&gt;Hoje tentei acessar a minha conta, como sempre faço nessa época do mês. O acesso era ainda mais importante, já que tenho de fazer uma pequena transferência para saldar uma dívida que vence hoje. Uma transferência entre contas BB resolveria o problema&#8230; Mal sabia o que me esperava&#8230;&lt;/p&gt;


	&lt;p&gt;Logo após digitar minha agência e conta recebo o aviso que não foi possível instalar o &#8220;Módulo de Segurança&#8221;, sugerindo que instalasse o Java, junto com um 0800 caso continuasse com problemas. Liguei às 15:55 e depois de 8 minutos na espera, Luciane me atende. Após as confirmações de agência, conta, etc, eis o diálogo:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;strong&gt;BB:&lt;/strong&gt; O Java está instalado? &lt;strong&gt;Eu:&lt;/strong&gt; Sim (&lt;strong&gt;pensamento:&lt;/strong&gt; obviamente).&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;strong&gt;BB:&lt;/strong&gt; Desinstalou e instalou novamente? &lt;strong&gt;Eu:&lt;/strong&gt; (&lt;strong&gt;p:&lt;/strong&gt; não&#8230; não estou em Windows.) Sim (menti).&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;strong&gt;BB:&lt;/strong&gt; Qual a versão do Internet Explorer? &lt;strong&gt;Eu:&lt;/strong&gt; (&lt;strong&gt;p:&lt;/strong&gt; ahh&#8230; ela pensou q eu estava no Windows) Nenhuma, eu uso Firefox.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;strong&gt;BB:&lt;/strong&gt; Firefox&#8230; sei&#8230; Qual a versão do Windows? XP? &lt;strong&gt;Eu:&lt;/strong&gt; Não. Eu uso Linux (&lt;strong&gt;p:&lt;/strong&gt; isso está ficando chato).&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;(longos segundos depois&#8230;) &lt;strong&gt;BB:&lt;/strong&gt; O senhor precisa instalar o Java então. &lt;strong&gt;Eu:&lt;/strong&gt; (&lt;strong&gt;p:&lt;/strong&gt; ai meu Deus!) Eu já instalei o Java! Tenho a versão 1.6.0.15!&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;(longos segundos depois&#8230;) &lt;strong&gt;BB:&lt;/strong&gt; Mas a última versão é a 1.6.0.17&#8230; o senhor precisa atualizar. Como o senhor usa Linux, o senhor não precisa do Módulo de Segurança&#8230; é só instalar a última versão do Java e pronto. &lt;strong&gt;Eu:&lt;/strong&gt; (&lt;strong&gt;p:&lt;/strong&gt; pouco provável que faça alguma diferença) Ok&#8230; Eu vou instalar o negócio&#8230; se continuar não funcionando ligo de volta.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Eu sei&#8230; eu sei. Pouco provável que uma sub-sub-sub-versão do Java faça qualquer diferença. Ainda mais considerando que essa versão foi lançada no finalzinho de 2009! E que papo é esse de que &#8220;Não preciso do Módulo de Segurança&#8221;? Mas, vamos lá&#8230;&lt;/p&gt;


	&lt;p&gt;&lt;img src=&quot;http://www.nardol.org/assets/2010/1/6/bb-java.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


	&lt;p&gt;Muito bem&#8230; instalada a versão que o BB quer&#8230; Vamos a ligação. Agora são 16:42&#8230; fico na espera por mais 9 minutos e sou atendido pela mesma Luciane (espantosamente). Verificações de rotina, dou o número do protocolo de atendimento anterior e eis o curto diálogo:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;strong&gt;Eu:&lt;/strong&gt; Bem, atualizei o Java conforme foi solicitado, mas persiste o mesmo erro. &lt;strong&gt;BB:&lt;/strong&gt; Senhor Pablo, eu vou abrir o chamado para o segundo nível entrar em contato com o senhor por que não temos mais procedimentos.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;strong&gt;Eu:&lt;/strong&gt; E quando eles estrarão em contato? &lt;strong&gt;BB:&lt;/strong&gt; Não sei lhe informar já que é outro setor.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Bem&#8230; Longos minutos depois ela me pergunta tudo de novo (qual versão disso, qual versão daquilo, blá, blá, blá), me dá um novo número de protocolo e reafirma que o &#8220;segundo nível&#8221; vai entrar em contato comigo.&lt;/p&gt;


	&lt;p&gt;Resultado: não paguei a dívida e resolvi blogar a respeito na esperança que o credor se compadeça de mim e perdoe os juros&#8230; Enquanto isso não consigo acessar a minha conta, algo que há apenas 10 dias tinha realizado com sucesso, sem atualizar ou instalar nada.&lt;/p&gt;


	&lt;p&gt;Pra aderir ao &lt;em&gt;Twitt-speech&lt;/em&gt;: &lt;strong&gt;BB #FAIL!&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Eu volto a blogar sobre isso, se (1) encontrar uma solução independentemente; (2) Voltar a funcionar espontâneamente; (3) Na improvável hipótese de ser contatado por um &#8220;segundo nível&#8221;. Enquanto isso, se alguém souber a solução, comenta aí!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-12-16:561</id>
    <published>2009-12-16T10:22:00Z</published>
    <updated>2009-12-16T12:31:34Z</updated>
    <category term="Debian &amp; FLOSS"/>
    <category term="debian-rs"/>
    <category term="vincent danjean"/>
    <link href="http://www.nardol.org/2009/12/16/debian-rs-and-vincent-danjean" rel="alternate" type="text/html"/>
    <title>Debian-RS and Vincent Danjean</title>
<content type="html">
            &lt;p&gt;The day before yesterday I learned that a fellow Debian Developer was visiting Porto Alegre Federal University to do some work on Parallel Computing: Vincent Danjean. People from local user group organized a last minute get-together at Cavanhas (that served as last meeting of the year) and we had the most pleasant time. Guaraldo registered the moment with his cellphone camera:&lt;/p&gt;


	&lt;p&gt;&lt;img src=&quot;http://www.nardol.org/assets/2009/12/16/danjean.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


	&lt;p&gt;Vincent is flying back to France today or tomorrow. Hope he had a great time in Porto Alegre and have a safe trip back home.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-11-18:555</id>
    <published>2009-11-18T15:58:00Z</published>
    <updated>2009-11-18T15:59:04Z</updated>
    <category term="pt-BR"/>
    <category term="itaipu"/>
    <category term="simpsons"/>
    <link href="http://www.nardol.org/2009/11/18/agora-ta-tudo-explicado" rel="alternate" type="text/html"/>
    <title>Agora t&#225; tudo explicado</title>
<content type="html">
            &lt;p&gt;Não resisti. Olha só a cópia exclusiva de um email que vazou recentemente:&lt;/p&gt;


&lt;pre&gt;
From: Montgomery Burns
[mailto: Mr.Burns@springfieldnuclearplant.com ]

Sent: Tuesday , November, 09, 2009 3:38PM
Subject: Organizational Announcement

Dear all,

This morning our employee Homer J Simpson decided to leave Springfield
Nuclear Plant.
Please, join me in wishing good luck in his new role in Itaipu.

Mr.
Burns
&lt;/pre&gt;

	&lt;p&gt;Agora tá tudo explicado.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-11-17:537</id>
    <published>2009-11-17T17:39:00Z</published>
    <updated>2009-11-17T17:40:43Z</updated>
    <category term="Code"/>
    <category term="Debian &amp; FLOSS"/>
    <category term="ada"/>
    <category term="c"/>
    <category term="haskell"/>
    <category term="jocaml"/>
    <category term="lisp"/>
    <category term="memory leak"/>
    <category term="objective-c"/>
    <category term="ocaml"/>
    <category term="perl"/>
    <category term="python"/>
    <category term="reia"/>
    <category term="ruby"/>
    <category term="tcp socket"/>
    <category term="vala"/>
    <link href="http://www.nardol.org/2009/11/17/looking-for-a-new-programming-language-to-learn" rel="alternate" type="text/html"/>
    <title>Looking for a new programming language to learn</title>
<content type="html">
            &lt;p&gt;I know it has been a long time since my last post. I am sorry about that, but life has it&#8217;s complications every now and then (as you know)... Well, on to the article.&lt;/p&gt;


	&lt;p&gt;Recently I had to reimplement in C a prefork server I wrote in Ruby for an internal project at &lt;a href=&quot;http://www.propus.com.br/&quot;&gt;Propus&lt;/a&gt;. Not that the Ruby version wasn&#8217;t enough (after all, although being in Ruby, I was using Unix plumbing, much in the fashion Ryan tell us about in the &#8211; now famous &#8211; &lt;a href=&quot;http://tomayko.com/writings/unicorn-is-unix&quot;&gt;I like Unicorn because it&#8217;s Unix&lt;/a&gt; article)... The problem is that, in one of our clients, the only version available for Ruby was 1.8.1.&lt;/p&gt;


	&lt;p&gt;Yeah&#8230; I know&#8230; But we were not allowed to upgrade and, although it didn&#8217;t seem at first, the same server presented a nasty memory leak in 1.8.1 that was not present in 1.8.7 and 1.9.1. I still don&#8217;t know where the problem is&#8230; I suspect some of the C-to-Ruby glues around &lt;span class=&quot;caps&quot;&gt;TCP&lt;/span&gt; sockets might be blamed, but after a couple of days trying to figure it out, I decided it was easier just to reimplement it using C.&lt;/p&gt;


	&lt;p&gt;It actually took less than a day to get the C version going&#8230; nothing fancy and, apart from memory footprint, just the same functionality and about the same speed of the Ruby version. But it was enough to remind me I really don&#8217;t like all the scaffolding one has to raise in order to make something useful in C. It&#8217;s not just a matter of &lt;span class=&quot;caps&quot;&gt;SLOC&lt;/span&gt; (of course, C version was more than 3 times longer than Ruby one)... I am talking about all the manual memory management, pointer operations and the disgusting experience of dealing with strings in C. I know some people are addicted to that sort of thing like heroin, but to me it just slows development.&lt;/p&gt;


	&lt;p&gt;This experience made me think about learning a second compiled programming language. I do some &lt;a href=&quot;http://www.adahome.com/&quot;&gt;Perl&lt;/a&gt;, a lot of &lt;a href=&quot;http://www.adahome.com/&quot;&gt;Python&lt;/a&gt; and (of course) most of my work in &lt;a href=&quot;http://www.ruby-lang.org/&quot;&gt;Ruby&lt;/a&gt;, but those are all interpreted languages. For compiled languages I always resorted to C&#8230; So I am officially looking for a language to learn.&lt;/p&gt;


	&lt;p&gt;So far, the best candidates are &lt;a href=&quot;http://caml.inria.fr/ocaml/&quot;&gt;OCaml&lt;/a&gt; (I got a little excited about &lt;a href=&quot;http://jocaml.inria.fr/&quot;&gt;JoCaml&lt;/a&gt; a few months ago, now I might get serious about it), &lt;a href=&quot;http://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt;, &lt;a href=&quot;http://lisp.org/&quot;&gt;Lisp&lt;/a&gt;, &lt;a href=&quot;http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html&quot;&gt;Objective-C&lt;/a&gt;, &lt;a href=&quot;http://www.adahome.com/&quot;&gt;Ada&lt;/a&gt;, and &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;Vala&lt;/a&gt;. Of these, I&#8217;ve been reading a lot about OCaml&#8230; It seems a fine and expressive language, with decent foundations, object-oriented extension, broad standard library and (with JoCaml) concurrency&#8230; Also it might give me the proper excuse to finally wrap my mind around a functional language!&lt;/p&gt;


	&lt;p&gt;People keep me pointing to Java and Erlang&#8230; Well&#8230; for using Java I would much prefer using JRuby. Erlang, &lt;span class=&quot;caps&quot;&gt;ITOH&lt;/span&gt;, has a weird syntax (at least to me) and it seems much of what makes it great will, eventually, be part of Ruby (or already is using libraries) &#8211; either that or I&#8217;ll just wait for &lt;a href=&quot;http://www.adahome.com/&quot;&gt;Reia&lt;/a&gt; to be ready. Besides, neither can be compiled to native code (ok, that argument can be stretched both ways, so just ignore it).&lt;/p&gt;


	&lt;p&gt;So, what do you think? Any advice?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-10-19:536</id>
    <published>2009-10-19T12:54:00Z</published>
    <updated>2009-10-19T12:58:57Z</updated>
    <category term="pt-BR"/>
    <category term="conv&#234;nios"/>
    <category term="dia do m&#233;dico"/>
    <category term="governos"/>
    <category term="honor&#225;rios"/>
    <category term="remunera&#231;&#227;o"/>
    <category term="sacerd&#243;cio"/>
    <category term="sistemas de sa&#250;de"/>
    <category term="voca&#231;&#227;o"/>
    <link href="http://www.nardol.org/2009/10/19/feliz-dia-do-medico" rel="alternate" type="text/html"/>
    <title>Feliz Dia do M&#233;dico</title>
<content type="html">
            &lt;p&gt;Eu acho piegas e meio sem sentido as pessoas que escrevem exaltando a própria profissão. Ontem foi dia do Médico e vimos uma saraivada de médicos em condições diferenciadas e reconhecidas professando as dificuldades por que passaram e passam e entoando mantras como &#8220;ser médico é sacerdócio&#8221; e tantos outros que ouvimos vez por outra. Adivinhem: eu sou médico&#8230; e a coisa não é bem assim&#8230;&lt;/p&gt;


	&lt;p&gt;Todos os anos se repete o padrão: perguntam para os médicos mais afortunados o que é ser médico, e o que representa ser médico nos dias de hoje, e as respostas não variam muito no espectro que vai do sacerdócio à poesia. Embora eu compartilhe de muitas dessas visões, insisto que elas só servem para &#8220;consumo interno&#8221;, e serviriam melhor se fossem guardadas para si, e não proferidas aos quatro ventos. Penso que é um desserviço que esses médicos prestam aos seus semelhantes&#8230; &lt;em&gt;&#8220;Se medicina é um sacerdócio, vamos tratá-los como padres&#8221;&lt;/em&gt; é o que pensam os que contratam os médicos, ou seja, com remuneração &lt;em&gt;capuchinha&lt;/em&gt; e os mantendo em permanente serviço&#8230; em &lt;em&gt;missão&lt;/em&gt;. (Na realidade, um padre tem &#8220;ajuda de custo&#8221; paga pela diocese e que varia conforme a paróquia. Infelizmente não encontrei nada oficial a respeito, mas &lt;a href=&quot;http://br.answers.yahoo.com/question/index?qid=20070425040452AAaoJFG&quot;&gt;informações não oficiais&lt;/a&gt; trazem valores na ordem de R$ 2.000,00 &#8211; sem dedução de impostos, já que não se trata de salário).&lt;/p&gt;


	&lt;p&gt;Não quero ofender aos que professam essas coisas, muitos dos quais admiro tanto profissional quanto pessoalmente&#8230; Mas por que não perguntam para os médicos menos afortunados a mesma coisa? Talvez por que não gostem do que esses tenham a dizer? Talvez porque uma jornada de trabalho extenuante associada a uma remuneração completamente incompatível mantida por algum tempo seja o suficiente para destruir o poeta dentro de cada médico&#8230;&lt;/p&gt;


	&lt;p&gt;Começou a circular em 2003 (a referência mais antiga que tenho é do &lt;a href=&quot;http://jornal.cardiol.br/2003/mai-jun/paginas/diretoria/honorarios/default.asp&quot;&gt;jornal da Sociedade Brasileira de Cardiologia&lt;/a&gt;) um texto que comparava, em Natal/RN, a evolução dos honorários dos médicos com a dos Promotores Públicos. Na época, o autor do texto reclamava que o médico recebia R$ 755,00 (3,14 vezes o salário mínimo) e um promotor público, R$ 8.000,00 (33,33 vezes). Passados 6 anos, melhorou muito! Hoje os médicos &lt;a href=&quot;http://intertvonline.globo.com/rn/noticias.php?id=3709&quot;&gt;recebem R$ 2.000,00&lt;/a&gt; (4,3 vezes) enquanto os promotores públicos, &lt;a href=&quot;http://www.concursodapolicia.com/2009/03/04/ministerio-publico-do-rn-abre-20-vagas-para-promotor-de-justica-salario-de-r-145-mil/&quot;&gt;R$ 14.507,19 &#8211; inicialmente&lt;/a&gt; (31,19 vezes). Nesse ritmo, os médicos e os promores públicos do RN deverão ganhar a mesma coisa lá por 2060! Que avanço!&lt;/p&gt;


	&lt;p&gt;Tratar de remuneração é fácil e objetivo: os números são frios e qualquer adolescente do ensino médio tem ferramentas para analisá-los (talvez não a experiência para interpretá-los, mas isso é outra história)... Mas não quero tratar só de remuneração&#8230; Sem dúvida a medicina tem suas peculiaridades. Tratar com o &lt;em&gt;ser humano doente&lt;/em&gt;, enquanto a maioria das profissões trata com o &lt;em&gt;ser humano sadio&lt;/em&gt;, não é para qualquer um. Sem dúvida é uma vocação. Concordo com a opinião de um de meus mestres: &#8220;Formar um médico é como formar um filósofo&#8221;, mas acho que vai além: um filósofo capaz de apoiar o ser humano nos piores momentos de sua vida orgânica, no momento da dor e do sofrimento. Algumas pessoas poderão dizer que existem momentos piores do que esses&#8230; na minha humilde opinião, essas pessoas nunca passaram pelos momentos extremos que fazem parte do cotidiano de nossos pacientes.&lt;/p&gt;


	&lt;p&gt;É verdade que a medicina avançou muito e está em um período particularmente interessante, com avanços em ritmo quase exponencial. Mas com cada avanço, as áreas não cobertas por conhecimento sólido acabam crescendo também, a medida que descobrimos nuances ainda desconhecidos previamente. No entanto, nunca o que aprendemos na faculdade foi mais verdade do que hoje: &lt;em&gt;“Se puderes curar, cura; se não puderes curar, alivia; se não puderes aliviar, consola.”&lt;/em&gt;. Nisso se resume a real missão do médico: um pacto inequívoco com o paciente&#8230; o médico sempre tem algo a fazer, seja curar, aliviar ou consolar.&lt;/p&gt;


	&lt;p&gt;Com isso em mente, qualquer pessoa que acredita que saúde se compra está cometendo um erro filosófico grave: está dizendo que os abastados tem mais direito a saúde do que os desafortunados. Ora&#8230; a aplicação desse pacto entre médico e paciente não varia de acordo com as condições financeiras do último (ou não deveria), mas varia conforme as do primeiro (infelizmente). Na velocidade pós-moderna de transformação do conhecimento, um médico que recebe uma remuneração que permita uma educação continuada, uma situação familiar e social confortável (sem preocupações), necessidades básicas satisfeitas e tenha uma jornada de trabalho que permita pensar em cada paciente (ao invés de funcionar no &#8220;modo automático&#8221;) pode mover-se no espectro desse pacto entre consolar e aliviar, ou entre aliviar e curar!&lt;/p&gt;


	&lt;p&gt;Em última instância, é interesse da sociedade ter médicos bem remunerados. No entanto, a sociedade caminha no sentido oposto: pulveriza as faculdades médicas em nome de interesses comerciais, aumentando o número de vagas, azeitando a &#8220;linha de produção&#8221; de médicos que acabam em um mercado competitivo, aceitando remunerações vis que, acabam por piorar a própria capacidade de honrar a aplicação daquele pacto. A sociedade entende que temos médicos inaptos e responde criando mais faculdades e o ciclo vicioso está formado, alimentando-se do próprio monstro que criou e sendo alimentado por ele.&lt;/p&gt;


	&lt;p&gt;Mas aí entram convênios, governos e sistemas de saúde&#8230; cada um com o seu próprio conjunto de interesses. Olhando para esses interesses fica cada vez mais difícil acreditar que tenham entrado nessa história do lado dos médicos e pacientes&#8230; Mais provável que estejam do seu próprio lado, os convênios forçando cada vez mais trabalho em menos tempo para aumentar seu lucro; os governos usando a saúde como moeda de troca por votos e a falta de regulamentação da profissão como forma de controle dos profissionais; e os sistemas de saúde obrigando pacientes a intermináveis filas para atendimento, às vezes ativamente atuando contra uma maior eficiência.&lt;/p&gt;


	&lt;p&gt;Aquele texto de 2003 circula até hoje nos emails dos médicos (eu sempre recebo uma ou duas cópias nessa época do ano), invariavelmente adicionado a um chamado a ação, a um chamado para a união dos médicos bonzinhos contra os interesses mauzinhos de convênios, governos e sistemas de saúde. Eu acho tal chamado completamente ineficiente. Os advogados de tal chamado invertem o que propõe o autor original com a ilusão de que é preciso construir um &#8220;grande movimento nacional&#8221; e então partir para ação&#8230; é justamente o contrário! Temos de mudar as pequenas coisas do nosso dia-a-dia, olhando sempre para como melhor podemos exercer a nossa profissão e mostrar para os que nos administram que estamos certos naquele pequeno e específico ponto. Acaba que, fazendo isso, estamos exatamente construindo um &#8220;grande movimento nacional&#8221;, só que do Jeito Certo&#8482;: de baixo para cima.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-10-10:532</id>
    <published>2009-10-10T23:20:00Z</published>
    <updated>2009-10-10T23:22:18Z</updated>
    <category term="Debian &amp; FLOSS"/>
    <category term="gemcutter"/>
    <category term="github"/>
    <category term="observable"/>
    <category term="observer pattern"/>
    <category term="pubsub"/>
    <category term="rubygems"/>
    <category term="xmpp"/>
    <category term="xmpp4r-observable"/>
    <link href="http://www.nardol.org/2009/10/10/xmpp4r-observable-now-on-gemcutter" rel="alternate" type="text/html"/>
    <title>XMPP4R-Observable now on GemCutter</title>
<content type="html">
            &lt;p&gt;Just a quick update: &lt;a href=&quot;http://github.com/spectra/xmpp4r-observable&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XMPP4R&lt;/span&gt;-Observable&lt;/a&gt; is now on &lt;a href=&quot;http://gemcutter.org/gems/xmpp4r-observable&quot;&gt;GemCutter&lt;/a&gt;. That&#8217;s due to GitHub &lt;a href=&quot;http://github.com/blog/515-gem-building-is-defunct&quot;&gt;disabling gem building&lt;/a&gt;, and although everybody can get the source from GitHub as usual, those who want to quickly install it using Rubygems can do:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
bash$ gem install xmpp4r-observable -s http://gemcutter.org&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Happy Hacking.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-09-26:520</id>
    <published>2009-09-26T15:50:00Z</published>
    <updated>2009-09-26T15:52:22Z</updated>
    <category term="Code"/>
    <category term="Debian &amp; FLOSS"/>
    <category term="array sum"/>
    <category term="docstrings"/>
    <category term="python"/>
    <category term="rdoc"/>
    <category term="ruby"/>
    <category term="rubygems"/>
    <category term="speed"/>
    <category term="ternary if"/>
    <category term="whitespace"/>
    <link href="http://www.nardol.org/2009/9/26/ruby-versus-python" rel="alternate" type="text/html"/>
    <title>Ruby versus Python</title>
<content type="html">
            &lt;p&gt;This is not another rant to praise one in spite of the other (an everybody knows I love Ruby, so it would not be impartial), but sometimes people seems to live in another world and do things for the wrong reasons.&lt;/p&gt;


	&lt;p&gt;I just read &lt;a href=&quot;http://kanwei.com/code/2009/04/01/moving-to-python.html&quot;&gt;this blog post&lt;/a&gt; by Kanwei Li in which he gives 2 or 3 reasons he ditched Ruby in favor of Python. First of all, both are great languages and, although I favor Ruby, I use Python for some projects and they are not all that different. Of course, everyone is free to choose which language one favors, but Kanwei seems to be &#8220;ditching&#8221; Ruby out of not knowing much about it, or out of preferring one style over the other&#8230;&lt;/p&gt;


	&lt;p&gt;His first &#8220;reason&#8221; is that in Python white spaces matter. I used to think this is just a matter of style, but every now and then mandatory alignment hurts me (just try to put together a code generator and you&#8217;ll notice it). Although my code is always correctly aligned, I like that it&#8217;s done so because I want it that way, and not because some language demands it. Rants and more rants have been written about Python&#8217;s mandatory alignment (or other languages lack of it), and I am not going through all of it&#8230; Just I don&#8217;t think it&#8217;s a good reason to ditch Ruby&#8230;&lt;/p&gt;


After, he makes a big deal out of Ruby&#8217;s &lt;em&gt;ternary if&lt;/em&gt;. As written by him, he prefers
&lt;pre&gt;&lt;code class=&quot;py&quot;&gt;
#python
if len(a) &amp;gt; 0:
        v = a[0]
        a = a[1:]
else:
        v = None&lt;/code&gt;&lt;/pre&gt;
over Ruby&#8217;s &lt;em&gt;ternary if&lt;/em&gt;
&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;
#ruby
v = a.empty? ? a.shift : nil&lt;/code&gt;&lt;/pre&gt;
Hey! Come on&#8230; Ruby&#8217;s &lt;em&gt;ternary if&lt;/em&gt; is not mandatory&#8230; It was copied from C just as a syntax sugar. You can do without it, just as in Python:
&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;
#ruby
if ! a.empty?
    v = a.shift
else
    v = nil
end&lt;/code&gt;&lt;/pre&gt;
Better yet! you can use if&#8217;s return as v value:
&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;
#ruby
v = if ! a.empty?
    a.shift
else
    nil
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;How beautiful is that!&lt;/p&gt;


	&lt;p&gt;Python lacked &lt;em&gt;ternary if&lt;/em&gt; for a long time, and when it finally acquired one via &lt;a href=&quot;http://www.python.org/dev/peps/pep-0308/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PEP 308&lt;/span&gt;&lt;/a&gt; its syntax was made different from every other language! Although I don&#8217;t think that is a problem, some people might think it would be better not reinventing the wheel.&lt;/p&gt;


Next, Kanwei goes over a famous &#8220;problem&#8221; of Ruby: the lack of a sum method for Array. I admit it&#8217;s strange, but that is completely coherent: Ruby&#8217;s Arrays are ordered collection of objects and not mathematical arrays. How do you sum objects that are not numbers? Many different people will have many different answers to that, so Ruby leaves this decision for the programmer and provides basic methods to deal with collections of anything (that can be used to apply sum to numbers, if wished). So, in Ruby you have to use Array#inject to perform a sum:
&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;
[1,2,3].inject(0) { |sum, value| sum + value }&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Array#inject (actually Enumerable#inject) was borrowed from Smalltalk and allows you to loop through an array, building up an &#8220;accumulator value&#8221; as you go. When it’s done, the final value of this accumulator is returned. Very useful for combining array elements, whether by summing them, building up a pretty display string, whatever. In the example above, I am initializing the accumulator with 0.&lt;/p&gt;


If you use Array to mathematical operations and you want your arrays to work that way, you can always add a sum method to Array class:
&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;
class Array
    def sum
        self.inject(0) {|sum, value| sum + value}
    end
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Maybe it would be better if you just use Arrays as containers  (as it was intended to) and implement that sum inside your own class&#8230; I completely agree with &lt;a href=&quot;http://github.com/raganwald/homoiconic/blob/master/2009-04-09/my_objection_to_sum.md&quot;&gt;Reg Braithwaite&lt;/a&gt; here.&lt;/p&gt;


	&lt;p&gt;Kanwei also mention Python is faster than Ruby. That is true, but was &#8220;more true&#8221; some time ago. First of all, Python is older and has had more time to improve its speed. Ruby, &lt;span class=&quot;caps&quot;&gt;ITOH&lt;/span&gt;, just now acquired a good VM and improvements to it finally can run parallel to improvements in the language itself, so I am expecting this to be &lt;a href=&quot;http://railstooge.blogspot.com/2009/01/ruby-vs-python-lame-benchmark.html&quot;&gt;less true&lt;/a&gt; every release. Python is already not getting much faster between releases, unlike Ruby (the differences between 1.8.7 and 1.9.1 are really impressive!). &lt;span class=&quot;caps&quot;&gt;IMHO&lt;/span&gt; this is not a good reason to choose one instead of the other: if you really need speed, go for C :-)&lt;/p&gt;


	&lt;p&gt;Now this is something I find interesting Kanwei has mentioned: &#8220;Python is more production ready&#8221;. He argues that Google is using it, so it must be good. Well&#8230; I cannot argue against that: Google is really using Python. But &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt;, Oracle, EA, Cisco, Siemens, etc are using Ruby&#8230; so that is just a matter of preferring one or another company. Both are production ready&#8230; I agree, though, that Ruby 1.9.1 has many differences from 1.8.7, and that that may be seen as some inconsistency, but Python also has changed a lot since its 2.0 version, for that matter. And the changes to Ruby brought many benefits&#8230; I think they worth it.&lt;/p&gt;


	&lt;p&gt;At last, Kanwei compares Python and Ruby docstrings. Here I also have to agree with him: Ruby docstrings sucks. Actually that&#8217;s why everybody uses rdoc instead (and that is much more powerful than Python&#8217;s docstrings). Again, I don&#8217;t think that is reason enough to ditch Ruby (actually, the existence of rdoc, rubygems &#38; friends should bring people to Ruby instead), but that is a matter of personal taste.&lt;/p&gt;


	&lt;p&gt;Surely, Kanwei&#8217;s reasons were easy to argue against. There are areas were Python shines much more than Ruby (and vice-versa), but those Kanwei mentioned are not among them.&lt;/p&gt;


	&lt;p&gt;I think both languages are powerful enough, and both are way better than Perl or &lt;span class=&quot;caps&quot;&gt;PHP&lt;/span&gt;, so either one you choose would be fine. Better if you don&#8217;t have to choose and use both ;). If you have to, &lt;span class=&quot;caps&quot;&gt;ITOH&lt;/span&gt;, pay more attention on how you feel while coding in each one, and not to some cheap reasons such as above. If you are a programmer, what matters most is that you&#8217;ll spend a lot of time coding with any given language&#8230; let that be something pleasant then.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-09-13:519</id>
    <published>2009-09-13T12:29:00Z</published>
    <updated>2009-09-13T13:24:04Z</updated>
    <category term="addiction"/>
    <category term="empire"/>
    <category term="fiction"/>
    <category term="pocket books"/>
    <category term="reading habit"/>
    <category term="sam barone"/>
    <link href="http://www.nardol.org/2009/9/13/good-reading-empire-rising-by-sam-barone" rel="alternate" type="text/html"/>
    <title>Good reading: Empire Rising by Sam Barone</title>
<content type="html">
            &lt;p&gt;I usually don&#8217;t write about this, but along with technical and medicine books, I am always reading some fiction book. It began as an habit (every night I read some pages) when I was a teenager and now it became an addiction. I am always looking for good fiction books to read.&lt;/p&gt;


	&lt;p&gt;About 3 months ago I bought a pocket book (Dawn of Empire) by a first-time author (Sam Barone), and found it such a good story that I finished it in about a week and began looking for the sequence (Empire Rising). The story is about the dawn of civilization in Mesopotamia, and how humans left their days as nomadic tribes/clans in order to build villages and farms, and all the challenges that such a change brings along with it (including building and maintaining empires).&lt;/p&gt;


	&lt;p&gt;It took until last week for &lt;a href=&quot;http://www.livrariacultura.com.br/&quot;&gt;my favorite bookstore&lt;/a&gt; to get &lt;em&gt;Empire Rising&lt;/em&gt; to me, and I almost finished it already. So far I have to say it is even better than the first one!&lt;/p&gt;


	&lt;p&gt;So this is for the fiction books fans: get these two books at once! It&#8217;s amazing how a first-time author managed to write such great books. &lt;a href=&quot;http://www.sambarone.com/&quot;&gt;Sam Barone&lt;/a&gt; is really someone to keep an eye on. I am already looking forward his next books.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-09-10:518</id>
    <published>2009-09-10T04:46:00Z</published>
    <updated>2009-09-10T04:47:25Z</updated>
    <category term="Code"/>
    <category term="Debian &amp; FLOSS"/>
    <category term="code coverage"/>
    <category term="rcov"/>
    <category term="tdd"/>
    <category term="unit test"/>
    <category term="xmpp4r-observable"/>
    <link href="http://www.nardol.org/2009/9/10/code-testing-coverage" rel="alternate" type="text/html"/>
    <title>Code testing coverage</title>
<content type="html">
            &lt;p&gt;I like building tests for my code. That is not an old habit, it&#8217;s just something I&#8217;ve been developing in the recent months or some few years. No, I am not doing &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; (although that doesn&#8217;t sound like a bad idea): I just build tests after I code as a safeguard &#8211; to be sure I haven&#8217;t broken anything. I suspect there are more programmers like myself than those using tests as part of a &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; (BDD, &lt;span class=&quot;caps&quot;&gt;SDD&lt;/span&gt;, etc) approach, but that is just an opinion.&lt;/p&gt;


	&lt;p&gt;Well I just recently became found of code coverage estimates and tools, and &lt;a href=&quot;http://eigenclass.org/hiki.rb?rcov&quot;&gt;rcov&lt;/a&gt; is such a nice tool that sometimes I just find myself building tests just to &#8220;please&#8221; it. I also suspect there are at least a bunch of people that do the same. Here are the results of the test coverage of &lt;a href=&quot;http://github.com/spectra/xmpp4r-observable&quot;&gt;one of my projects&lt;/a&gt;:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
spectra@rohan:~/work/xmpp4r-observable$ rake rcov
(in /home/spectra/work/xmpp4r-observable)
rm -r coverage
Loaded suite /usr/bin/rcov
Started
........................
Finished in 70.995814 seconds.

24 tests, 97 assertions, 0 failures, 0 errors
+----------------------------------------------------+-------+-------+--------+
|                  File                              | Lines |  LOC  |  COV   |
+----------------------------------------------------+-------+-------+--------+
|lib/xmpp4r-observable.rb                            |   648 |   414 |  61.4% |
|lib/thread_store.rb                                 |    58 |    39 |  87.2% |
|lib/observable_thing.rb                             |   187 |   118 |  91.5% |
+----------------------------------------------------+-------+-------+--------+
|Total                                               |   893 |   571 |  69.4% |
+----------------------------------------------------+-------+-------+--------+
69.4%   3 file(s)   893 Lines   571 LOC
spectra@rohan:~/work/xmpp4r-observable$&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Sure it&#8217;s tempting to get more of &lt;em&gt;lib/xmpp4r-observable.rb&lt;/em&gt; covered, isn&#8217;t it?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-09-08:517</id>
    <published>2009-09-08T00:25:00Z</published>
    <updated>2010-01-25T19:53:46Z</updated>
    <category term="Code"/>
    <category term="Propus"/>
    <category term="pt-BR"/>
    <category term="fisl10"/>
    <category term="gem"/>
    <category term="github"/>
    <category term="jabber"/>
    <category term="observable"/>
    <category term="pooling"/>
    <category term="pubsub"/>
    <category term="xmpp"/>
    <category term="xmpp4r-observable"/>
    <category term="xmpp4r-simple"/>
    <link href="http://www.nardol.org/2009/9/8/apresentando-xmpp4r-observable" rel="alternate" type="text/html"/>
    <title>Apresentando XMPP4R-Observable</title>
<content type="html">
            &lt;p&gt;Há apenas alguns dias fiz uma apresentação no &lt;span class=&quot;caps&quot;&gt;FISL10&lt;/span&gt; sobre a utilização de &lt;a href=&quot;http://www.nardol.org/2009/6/29/fisl10-day-4&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XMPP&lt;/span&gt; PubSub com Ruby&lt;/a&gt; e sobre um fork de uma biblioteca popular à qual acrescentei os rudimentos do PubSub. Naquela mesma apresentação listei uma série de problemas que aquela abordagem tem e falei sobre um &lt;em&gt;roadmap&lt;/em&gt; para o futuro&#8230;&lt;/p&gt;


	&lt;p&gt;Acontece que acabei me convencendo de que não posso utilizar o PubSub no lado &lt;span class=&quot;caps&quot;&gt;XMPP&lt;/span&gt; da biblioteca e uma forma de &lt;em&gt;periodical pooling&lt;/em&gt; no lado Ruby. Resolvi, então, substituir a biblioteca que havia forkado por uma versão &lt;em&gt;Observable&lt;/em&gt;, preservando as coisas boas do &lt;span class=&quot;caps&quot;&gt;XMPP4R&lt;/span&gt;-Simple. O resultado chamei de &lt;span class=&quot;caps&quot;&gt;XMPP4R&lt;/span&gt;-Observable, e acabo de &lt;a href=&quot;http://github.com/spectra/xmpp4r-observable&quot;&gt;publicar no GitHub&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Uma boa parte do código está coberta por testes (e &#8220;roubei&#8221; alguns dos testes da própria &lt;span class=&quot;caps&quot;&gt;XMPP4R&lt;/span&gt;-Simple)... pretendo cobrir o restante ao longo do tempo (contribuições são bem-vindas). Por hora, chamei esse primeiro release de versão 0.5.1 e acrescentei um .gemspec para gerar um .gem automaticamente&#8230; No entanto, o GitHub ainda não publicou o .gem&#8230; Quando publicar, para instalá-lo deve ser tão simples quanto:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
bash# gem sources -a http://gems.github.com
bash# gem install spectra-xmpp4r-observable&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Não deixem de reportar qualquer erro. Happy hacking.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Update 2009-09-13 10:29:00:&lt;/strong&gt; Acabo de confirmar que o .gem foi publicado pelo GitHub.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Update 2009-10-10 20:21:00:&lt;/strong&gt; O .gem do &lt;span class=&quot;caps&quot;&gt;XMPP4R&lt;/span&gt;-Observable &lt;a href=&quot;http://www.nardol.org/2009/10/10/xmpp4r-observable-now-on-gemcutter&quot;&gt;vai ser mantido no GemCutter&lt;/a&gt;, a partir de hoje.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-09-03:513</id>
    <published>2009-09-03T00:47:00Z</published>
    <updated>2009-09-03T00:47:18Z</updated>
    <category term="Debian &amp; FLOSS"/>
    <category term="Gadgets"/>
    <category term="detergent"/>
    <category term="distilled water"/>
    <category term="eeepc"/>
    <category term="keyboard"/>
    <category term="malfuncion"/>
    <category term="tap water"/>
    <link href="http://www.nardol.org/2009/9/3/eeepc-surviving-liquid-spills-phase-ii" rel="alternate" type="text/html"/>
    <title>EeePC: Surviving liquid spills - phase II</title>
<content type="html">
            &lt;p&gt;About four months ago I described how &lt;a href=&quot;http://www.nardol.org/2009/4/30/eeepc-surviving-liquid-spills&quot;&gt;my EeePC survived the spilling of orange juice over its keyboard&lt;/a&gt;. No! I never spilled anything on it again, if that&#8217;s what you&#8217;re thinking&#8230; But I noticed that some keys (those that got more juice on) began to malfunction. At the beginning I paid no attention to it, hoping that it would just go away, but, eventually, they just stop working&#8230; And those are not just unimportant keys&#8230; I am talking about arrows and the forward-slash (/) keys in the lower right corner of the keyboard!!! How could I survive without those keys, without a quick access to my bash history and vim search?&lt;/p&gt;


	&lt;p&gt;Well, I began googling around and found some good advice. Everything that made sense regarding how to cleanup my keyboard I compiled and, when I was enough confident it would work, I just follow the procedure I&#8217;ve devised. This is what I did:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;After turning it off and removing the battery, I removed the keyboard. Check &lt;a href=&quot;http://forum.eeeuser.com/viewtopic.php?id=37050&quot;&gt;the instructions I linked in my previous article&lt;/a&gt; for some pictures on how to do it.&lt;/li&gt;
		&lt;li&gt;I poured 500 mL of distilled water in a clean plastic box (I bought 1L for &lt;span class=&quot;caps&quot;&gt;BRL 20&lt;/span&gt; at a local pharmacy), added enough dish detergent to make some foam (I was careful to select a non-biodegradable one) and drowned the whole keyboard in the solution.&lt;/li&gt;
		&lt;li&gt;For the next 30 minutes I pressed and released the affected keys over and over again. My intention was to dissolve anything that might have remained from the orange juice.&lt;/li&gt;
		&lt;li&gt;I left it soaking in the solution for the next 12 hours.&lt;/li&gt;
		&lt;li&gt;The next day I got the keyboard out of the solution and used current tap water to remove any detergent still left in it. This might have took about 10 minutes.&lt;/li&gt;
		&lt;li&gt;Our tap water is really clean, but its hard, and I would not like to remove any juice from the keyboard just to add some minerals that might have the same effect, so after I was certain all the detergent was removed, I left the keyboard in the remaining of the distilled water for another 12 hour soak.&lt;/li&gt;
		&lt;li&gt;After that I just removed the keyboard from the soak, dried it a little bit using a paper towel and left it to air-dry (away from the sun). I don&#8217;t remember how long it took, but I believe not more than 4 hours&#8230; Those were hot days&#8230; Anyway, I was &lt;strong&gt;really&lt;/strong&gt; sure it was dry.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;When I plugged it back, surprise! All keys are working again! Of course, that was just what worked for me&#8230; Best advice still is: Keep liquids away your EeePC!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.nardol.org/">
    <author>
      <name>spectra</name>
    </author>
    <id>tag:www.nardol.org,2009-09-01:512</id>
    <published>2009-09-01T00:13:00Z</published>
    <updated>2009-09-01T00:14:57Z</updated>
    <category term="pt-BR"/>
    <category term="Tolkien &amp; related"/>
    <category term="animated series"/>
    <category term="caverna do drag&#227;o"/>
    <category term="desenho animado"/>
    <category term="dungeons and dragons"/>
    <category term="roteiro"/>
    <link href="http://www.nardol.org/2009/9/1/caverna-do-dragao" rel="alternate" type="text/html"/>
    <title>Caverna do Drag&#227;o</title>
<content type="html">
            &lt;p&gt;Uma das coisas que fiz nas minhas férias foi ler o roteiro do último episódio de &#8220;Caverna do Dragão&#8221; (&lt;em&gt;Dungeons &#38; Dragons&lt;/em&gt; para os anglófonos), um desenho animado dos anos 80 que fez a festa dos que eram crianças na época (eu inclusive) e dos que jogavam &lt;span class=&quot;caps&quot;&gt;RPG&lt;/span&gt; (novamente, eu inclusive).&lt;/p&gt;


	&lt;p&gt;Eu tinha ouvido diversas teorias sobre o que representava o &lt;em&gt;Realm&lt;/em&gt; da Caverna do Dragão, e o que as crianças estavam fazendo lá&#8230; algumas bastante fantasiosas, mas devo admitir que o roteiro real é bem mais interessante do que todas as teorias paralelas. Quem quiser dar uma olhada, o original em inglês está &lt;a href=&quot;http://michaelreaves.com/pdf/requiem_sec.pdf&quot;&gt;no site do roteirista&lt;/a&gt; (eu também achei uma &lt;a href=&quot;http://www.podeservermei.com/Roteiro.pdf&quot;&gt;tradução para o português&lt;/a&gt;). Não vou estragar a festa de ninguém adiantando o final, mas tenho certeza que vocês vão gostar.&lt;/p&gt;


	&lt;p&gt;Pena que não produziram o último episódio&#8230; Realmente seria um belo encerramento para a série animada&#8230; Dei uma procurada por aí e não me aguentei: acabei &lt;a href=&quot;http://www.amazon.com/Dungeons-Dragons-Complete-Willie-Aames/dp/B000JBXY44&quot;&gt;comprando&lt;/a&gt; o pacote com os 5 DVDs da série&#8230; Agora é só aguardar a chegada&#8230;&lt;/p&gt;
          </content>  </entry>
</feed>
