quinta-feira, 14 de dezembro de 2006

Urnas Eletrônicas e Segurança

A questão da segurança do processo eleitoral baseado em urnas eletrônicas é bastante controvertida. Acho que a maioria de nós, brasileiros, tem dificuldade em analisar criticamente essa questão. Afinal, dá um certo orgulho ver que o nosso sistema é mais moderno e eficiente que os sistemas eleitorais da maioria dos países mais evoluídos. Mas fechar os olhos pra essa questão é muito perigoso. Afinal, o risco é sempre proporcional ao valor daquilo que se quer proteger, e há poucos "prêmios" mais valiosos pra um ladrão que um cargo político.

O Bruce Schneier já escreveu bastante sobre os riscos dos processos eleitorais eletrônicos em seu blog. Há alguns dias ele escreveu uma análise da questão muito interessante porque sumariza a maioria dos problemas envolvidos. Segue minha tradução do texto.

Na semana passada, no 13º distrito congressional da Flórida, a margem de vitória foi de apenas 386 votos num total de 153.000. Haverá uma recontagem mandatória, mas ela não incluirá os quase 18.000 votos que parecem ter desaparecido. As urnas eletrônicas não os incluíram em seus registros finais e não há backups que sirvam para a recontagem. O distrito escolherá um vencedor para a cadeira em Washington, mas não será porque eles terão certeza de que a maioria votou por ele. Talvez sim, talvez não. Não há como saber.

As urnas eletrônicas representam uma grave ameaça para eleições justas e corretas, uma ameaça que deveria preocupar a todo estadunidense -- seja ele republicano, democrata ou independente. Por serem baseadas em computadores, as ações deliberadas ou acidentais de uns poucos podem afetar o resultado de toda uma eleição. A solução: cédulas de papel, que podem ser verificadas pelos eleitores e recontadas, se necessário.

Para entender a segurança das urnas eletrônicas você precisa antes considerar a segurança do processo eleitoral como um todo. O objetivo de qualquer sistema eleitoral é capturar a intenção de cada eleitor e somá-las gerando uma somatória consolidada. Na prática isso ocorre através de uma série de transferências. Quando eu votei na semana passada, eu transferi minha intenção para uma cédula de papel, que foi então transferida para uma máquina de tabulação através de uma leitora óptica; no fim da noite, as somas individuais dessas máquinas foram transferidas por oficiais eleitorais para uma central de processamento e combinadas em um resultado único que eu vi na televisão.

Todos os problemas eleitorais são erros introduzidos em uma dessas transferências, seja cadastro errado de eleitores, cédulas confusas, máquinas que não funcionam ou erros de contagem de votos. Mesmo em operação normal cada um desses passos pode introduzir erros. A correção do resultado, portanto, é uma questão de (1) minimizar o número de transferências e (2) aumentar a confiabilidade de cada passo.

Grande parte da segurança de nossas eleições é baseada na "competição de interesses". Cada passo, com exceção do preenchimento do voto pelos eleitores em cédulas anônimas, é testemunhado por delegados de cada partido majoritário; isto garante que qualquer ação maliciosa de uma parte -- ou mesmo erros honestos -- serão detectados pelos observadores do outro partido. Este sistema não é perfeito, mas ele tem funcionado bem nos últimos duzentos anos.

Eleições eletrônicas são como um iceberg; as ameaças reais estão abaixo da superfície, onde não se pode vê-las. Urnas eletrônicas que não imprimem o voto em papel subvertem este processo de segurança, permitindo que um pequeno grupo de pessoas -- ou mesmo um único hacker -- seja capaz de afetar toda uma eleição. O problema é o software -- programas invisíveis e que não podem ser verificados por um time de juízes eleitorais republicanos ou democratas, programas que podem alterar drasticamente o resultado final da eleição. E como tudo o que resta ao final do dia são as somatórias eletrônicas, não há como verificar os resultados ou realizar uma recontagem. Recontagens são importantes.

Este não é um problema teórico. Nos EUA existem centenas de casos documentados sobre urnas eletrônicas distorcendo o voto em detrimento de candidatos dos dois partidos políticos: urnas perdendo votos, trocando os votos dos candidatos, registrando mais votos que o total de eleitores e não registrando voto algum. Eu sinceramente gostaria de acreditar que todos esses casos foram erros e não fraudes deliberadas, mas a verdade é que nós não temos como saber. E estes são apenas os problemas detectados; é quase certo que muitos outros problemas passaram despercebidos porque ninguém estava prestando atenção.

Isto é ao mesmo tempo novo e terrível. Historicamente, fraudes eleitorais em grande escala sempre foram muito difíceis de implementar, pois requeriam ações muito ostensivas ou um governo muito corrupto -- ou ambos. Mas eleições eletrônicas são diferentes: um hacker solitário pode afetar uma eleição. Ele pode realizar seu trabalho secretamente antes de as urnas serem despachadas para os locais de votação. Ele pode afetar as urnas eletrônicas de toda uma região. E ele pode cobrir seus rastros completamente, escrevendo código que se auto-remove depois da eleição.

Isso, assumindo que as urnas eletrônicas sejam bem projetadas. As urnas reais, vendidas por empresas como a Diebold, a Sequoia Voting Systems e a Election Systems & Software são muito piores. O software é pessimamente projetado. As urnas são "protegidas" por chaves de frigobar. As somatórias dos votos são armazenadas em arquivos facilmente modificáveis. As urnas podem ser infectadas por vírus. O software de algumas destas urnas usa o Microsoft Windows, com todos os bugs, travamentos e vulnerabilidades de segurança que ele introduz. A lista de práticas inadequadas de segurança é interminável.

As empresas que fabricam urnas eletrônicas contra-argumentam que estes ataques são impossíveis porque as urnas nunca são deixadas sem vigilância (são sim), os cartões de memória que armazenam os votos são cuidadosamente controlados (não são) e tudo é supervisionado (não é). Sim, eles estão mentindo, mas também não estão entendendo o problema.

Nós não deveríamos -- e não precisamos -- ter que aceitar urnas eletrônicas que podem algum dia ser seguras quando uma longa lista de procedimentos operacionais forem seguidos precisamente. Nós precisamos de urnas eletrônicas que sejam seguras independentemente de como elas sejam programadas, manipuladas e usadas, e que possam ser confiáveis mesmo se forem vendidas por uma empresa afiliada a algum partido ou uma empresa com possíveis ligações com a Venezuela.

Parece uma tarefa impossível, mas, na verdade a solução é surpreendentemente simples. O truque é utilizar urnas eletrônicas como impressoras de cédulas. Vote usando qualquer sistema automático e eletrônico de tela-ativa que você prefira: uma máquina que não mantenha registros ou somatórias dos votos, mas que apenas imprima o voto em papel. O eleitor pode verificá-lo, pra ter certeza do voto, e depositá-lo em uma urna provida de um scanner óptico. A urna detecta o voto e provê a somatória inicial, enquanto as cédulas impressas em papel provêm os meios necessários para uma eventual recontagem. E as cédulas dos ausentes ou de backup podem ser contadas da mesma maneira. Você pode até mesmo abrir mão da máquina impressora do voto e preenchê-los a mão, como fazemos em Minnesota. Ou executar uma eleição 100% pelo correio, como fazem em Oregon. Novamente, cédulas de papel são a chave da solução.

Papel? Sim, papel. Uma pilha de papel é mais difícil de modificar que um número na memória de um computador. Os eleitores podem ver seus votos em papel, independentemente do que acontece dentro do computador. E, mais importante, todo o mundo entende papel. Temos problemas com nossas contas telefônicas e com débitos indevidos em nossas contas de cartão de crédito, mas quando foi a última vez que você teve problemas com uma cédula de 20 dólares? Sabemos como contar papel. Os bancos contam papel o tempo todo. Tanto o Canadá quanto a Inglaterra contam cédulas de papel sem problemas, assim como a Suíça. Nós também podemos fazê-lo. Num mundo cheio de travamentos, vírus e hackers, uma solução de baixa tecnologia é a mais segura.

Urnas eletrônicas seguras são apenas um dos componentes de uma eleição justa e honesta, mas elas são uma parte cada vez mais importante. Elas são o componente onde um atacante dedicado pode cometer a fraude da maneira mais efetiva (e sabemos que alterar o resultado pode render milhões). Mas não deveríamos nos esquecer de outras táticas de supressão de votos: indicar aos eleitores o local ou a data errada da eleição, tirar os eleitores registrados da lista oficial, colocar urnas insuficientes nos locais de eleição ou encarecer o processo de registro dos eleitores. (Por estranho que pareça, votos de eleitores inelegíveis não são um problema nos EUA, apesar da retórica política dizendo o contrário; todo estudo mostra que o número destes eleitores é tão pequeno que se torna insignificante. E requerer identificação fotográfica na verdade causa mais problemas do que é capaz de resolver.)

As eleições são uma questão tanto de tecnologia quanto de percepção. Não basta o resultado ser matematicamente correto; todos os cidadãos precisam poder confiar no processo e acreditar nos resultados. Em todo o mundo, as pessoas protestam depois de uma eleição não porque o seu candidato tenha perdido, mas porque elas acreditam que ele tenha perdido injustamente. É vital para uma democracia que o processo eleitoral determine corretamente o vencedor e convença adequadamente o perdedor. Nos EUA, estamos perdendo a batalha da percepção.

As urnas eletrônicas que temos disponíveis no momento falham nestes dois quesitos. Os resultados do 13º distrito congressional da Flórida não corretos e tampouco convincentes. Como uma democracia, nós merecemos mais. Devemos nos recusar a votar em urnas eletrônicas que não ofereçam a garantia de uma cédula de papel e continuar a pressionar nossos legisladores para implementar tecnologia de votação que funcione.

Este ensaio apareceu originalmente na Forbes.com.

Avi Rubin escreveu um bom ensaio sobre eleições pra Forbes também.

© 2006 Bruce Schneier

É interessante que as urnas eletrônicas usadas no Brasil já contêm uma impressora usada para gerar os relatórios finais de votação em papel. Não deveria ser muito mais caro acoplá-las a umas daquelas antigas urnas de lona, de modo que ao votar o eleitor pudesse ler seu voto impresso, conferi-lo e depositá-lo na urna antiga. Imagino que só isso já conferiria um grau de auditabilidade muito maior, permitindo que eventuais recontagens fossem feitas com a abertura das urnas de lona.

O Schneier propõe um sistema mais complexo, envolvendo duas máquinas. O eleitor vota na primeira máquina que imprime o voto. O eleitor pega o voto e insere na segunda máquina que é uma urna com um scanner óptico, capaz de ler o voto do papel e de somá-lo ao total de votos. O resultado final é obtido da segunda máquina.

Mas em que estes sistema é melhor que o primeiro? Não consegui encontrar uma explicação direta, mas imagino que seja a garantia da privacidade do voto. Lembrem-se que quando vamos votar por aqui o fiscal insere nossos dados no sistema pra liberar a urna. Seria perfeitamente possível ao sistema relacionar meu título de eleitor ao meu voto. Mas no sistema de duas máquinas isto já não é mais possível. O voto impresso não deve conter nenhuma identificação do eleitor, de modo que a urna não conseguiria fazer a correlação. Já a máquina de votação não deve gerar nenhum relatório, sendo meramente uma impressora de votos.

É impressionante, mas creio que os custos pra implantar um sistema como este seriam maiores que uma mera adaptação das urnas atuais para imprimir o voto e depositá-lo numa urna sem scanner. Na minha opinião deveríamos adotar um sistema simples como esse já e estudar a propriedade de adotarmos o sistema mais complexo no futuro.

É interessante saber que as urnas brasileiras têm parentesco com as americanas. A Procomp, fabricante original das urnas brasileiras, foi comprada pela Procomp há alguns anos. De acordo com o ótimo artigo do Eng. Amílcar Brunazo Filho, 2/3 das urnas brasileiras ainda utilizam a tecnologia original, baseada num sistema operacional DOS-like. As 1/3 mais recentes utilizam essencialmente o sistema das urnas americanas da Diebold, baseados no Windows CE.

As conclusões deste artigo são preocupantes. Ele diz que o TSE tem-se recusado a permitir que sejam realizados testes de penetração nas urnas eletrônicas brasileiras. Tanto o PT quanto o PDT já fizeram petições formais ao TSE neste sentido mas elas foram ou ignoradas ou indeferidas. Essa história é contada em detalhes em outro artigo de Brunazo. Lendo a história quero crer que haja um misto de ignorância em relação aos riscos envolvidos e de prepotência guiando estas atitudes do TSE. A alternativa seria maquiavélica demais pra cogitar.

(Agradeço ao meu colega Marcos Ide pelas longas e por vezes acaloradas discussões sobre este assunto.)

quarta-feira, 13 de dezembro de 2006

Relatividade e Pi

Como eu disse, ontem estive conversando com a professora do meu filho Tiago sobre o seu desempenho durante o segundo ano primário. O interessante dessas conversas é que sempre somos surpreendidos por algum aspecto da visão que os professores têm de nossos filhos. Sempre temos a ilusão de que os conhecemos melhor que ninguém, mas o fato é que eles se comportam de maneira diferente quando estão conosco e quando estão na escola.

O Tiago é um menino bastante curioso. Quase todos os meninos oito anos o são, é verdade, mas há curiosidades de vários tipos. Algumas são enervantes, como a ansiedade em que ele fica quando não está participando de uma conversa e quer saber do que estamos falando. É impossível conversar no carro sem a sua participação.

Mas há outras mais raras. Anteontem à noite, depois de lermos um pouco do nosso livro e de nos darmos boa-noite, eu achava que ele já estava entregue aos braços de Morfeu quando ele se vira e pergunta:

- Pai?
- Oi, filho.
- Por que é mesmo que o tempo passa mais devagar quando a gente viaja na velocidade da luz?

Toin! E essa agora? É o tipo de pergunta que eu gostaria de poder responder de um jeito que o estimulasse a continuar a pensar no assunto. Afinal, não é à toa que eu costumo contar histórias de cientistas e descobertas. É pra ver se ele se interessa pelo assunto. Infelizmente, essa eu não sabia responder. Acho que disse mais ou menos o seguinte:

- Não sei, filhão. O Einstein descobriu que devia ser assim e os cientistas já conseguiram fazer experiências que comprovaram que é assim. Mas eu acho que ninguém sabe "por que" é assim. Sacou?
- Mas pai...
- Vamos dormir, filhão. O papai tá com sono.

Preciso retomar o assunto quando tiver algo instigante pra dizer pra ele. Hoje cedo ele estava me perguntando sobre o Big Bang. (E eu nem me lembro direito quando é que eu falei disso pra ele antes.) Parece que eu lhe disse que antes do Big Bang não devia existir nada: nem matéria, nem energia, nem tempo e nem espaço. Mas é óbvio que esse papo não colou. Ele ficou me perguntando de que cor devia ser o universo antes do Big Bang. Pra ele, como não tem nada, devia ou ser branco, ou transparente ou preto. Conversamos um pouco e eu o convenci de que se fosse pra ter cor tinha que ser preto. Mas eu acho que nem cor tinha... ele saiu matutando. He he, espero que ele não me venha com outra que me faça cair do cavalo.

Acho importante um pai dar atenção às dúvidas dos filhos. Nossa tendência imediata é encerrar a questão pra podermos nos dedicar aos assuntos que nos interessam. Mas as dúvidas deles são uma boa pista para os assuntos que lhes interessam. Uma reação de desprezo só pode ter um efeito ruim, seja insinuar que os seus assuntos não são interessantes, ou que sua dúvidas são bobas ou que não vale a pena "querer saber", já que ninguém se interessa mesmo. Não. É preciso um pequeno esforço pra que eles sintam que é legal ser curioso e aprender.

Quando eu tinha uns 11 anos e estava na quinta série tive uma experiência marcante. Meu pai, que é engenheiro e gostava de me ensinar matemática, um dia me falou sobre Pi. Entendi os fatos básicos sobre ele ser a razão entre a circunferência e o diâmetro de qualquer círculo, mas o que me fascinou foi tentar entender como é que os seus dígitos decimais nunca acabam. Acho que eu já sabia, a essa altura, sobre dízimas periódicas, como 3,333... Mas foi difícil engolir um número que nunca acabava. Como é que os caras podiam saber?

Lembro-me de ter ido à cozinha com um carretel de linha e uma régua. Peguei uma lata de Nescau, envolvi-a com a linha e medi a circunferência com a régua. Depois, medi o melhor que pude o diâmetro. Pus os valores no papel e comecei a calcular a razão. Devo ter chegado a um número próximo a 3,1. Não me lembro se o resultado foi exato ou se me deparei com uma dízima periódica. Acontece que fiquei matutando sobre isso. É claro que eu tinha noção que minhas medições não eram exatas e que havia algum erro nos números que eu dividi.

Mas não era o erro que me intrigava. Era algo relacionado ao algoritmo da divisão. Eu fiquei pensando sobre como é que o algoritmo gerava novas casas decimais. Eu tinha que acrescentar um zero à direita do último resto e fazer mais um passo da divisão e assim sucessivamente, até que o resto do passo desse zero, quando a divisão acabava, ou que repetisse um resto já obtido, quando começava uma dízima. Não tinha outra opção: ou terminava ou começava uma dízima periódica. Caramba! Será que ninguém nunca tinha pensado nisso? Se Pi é o resultado de uma divisão, não tem como ele não ter fim.

Eu me lembro que fiquei eufórico com a descoberta. Corri pra falar pro meu pai. Tentei explicar mas tive a impressão de que ele não deu muita bola. Ele me disse pra procurar o professor de matemática e perguntar pra ele. Hoje eu acho que o que aconteceu foi parecido com o que ocorreu entre mim e o Tiago. Meu pai deve ter ficado sem resposta pra dar e preferiu repassar a responsabilidade pro professor. Talvez o ideal seria ele ter se entregado ao prazer da investigação e tentado entender o meu erro pra me explicar. Mas isso custa. Hoje eu sei.

Eu não procurei meu professor. Fiquei com medo que ele pudesse se apossar da minha descoberta e o mundo não ia ficar sabendo que eu era o responsável. Guardei meu segredo por mais uns dois anos até que, na sétima série, aprendi os fatos sobre os números irracionais e a incomensurabilidade entre o diâmetro e a circunferência. Em retrospecto, acho que não teria sido muito difícil descobrir sozinho meu erro se eu tivesse pensado mais no assunto. Eu podia ter imaginado que quanto maior o número de dígitos necessários para representar o denominador da divisão, maior a quantidade de restos possíveis e que, no limite, se o denominador tiver um número infinito de dígitos (essencialmente, se ele próprio for uma dízima não-periódica ou um número irracional), então o resultado da divisão pode perfeitamente ser assim também.

Mas foram dois anos emocionantes enquanto eu esperava ter a maturidade suficiente pra publicar minha própria descoberta.

Nem todos fazem grandes descobertas. Mas eu senti o gostinho de ter feito uma, pelo menos enquanto durou minha ilusão. Certamente esta experiência influiu positivamente nos meus interesses futuros. Gostaria que meu filho continuasse a pensar nesses assuntos interessantes e importantes. Tomara que ele possa sentir o prazer de realizar uma grande descoberta. E se for sem se iludir, tanto melhor.

Ode ao Rafa

Ontem fui à reunião de final de ano na escola de meus filhos conversar com suas respectivas professoras. Saí de lá todo orgulhoso, como convém. A professora de meu filho mais velho, Tiago, me deu um cartão de Natal que ele fizera pra família. No computador, bem bacana. Ele o escreveu em duas estrofes. A primeira é pra família:

Querida família,
Eu desejo um ótimo natal e final
de ano e um ótimo 2007 eu
quero que vocês ganhem belos
presentes.

Bastante apropriado. Mas a segunda é genial:

Razão da minha vida
A estrela do meu coração
Força que nos uni
Alegria da minha vida
Energia do universo
Lutador da humanidade
Laço da paz
Ordem do universo você é o
Rafaello.

Enquanto eu lia os primeiros versos ficava imaginando ansioso pra quem é que ele estaria dizendo essas coisas tão bonitas. (Seria pra mim? Pra sua mãe? Pra babá?) Sua professora disse que quando leu seu queixo caiu e ela lhe perguntou:

- Rafaello, o pintor?
- Não, meu gato.
- Ah... é claro...seu gato.

Acontece.

terça-feira, 12 de dezembro de 2006

Pai de quem?

O telefone toca e eu atendo.
- Alô?
- Gustavo?
- Sim.
- Aqui é o Roberto, paisagista.
<... eu, pensando ...>
- Pai de quem?
- Paisagista!
- Ah! Putz... com tantos coleguinhas dos meus filhos eu fiquei pensando quem seria essa Gista.
- Sei.

Acontece.

segunda-feira, 20 de novembro de 2006

Literate Commenting

Literate programming is a programming methodology that combines a programming language with a documentation language, making programs more robust, more portable, and more easily maintained than programs written only in a high-level language.
Donald E. Knuth

Literate Programming é uma idéia genial. Se você é programador e gosta da arte de programar, sugiro que leia o livro ou que vá direto à fonte.


Por volta de 1995, quando eu estava lendo o livro, tive muita vontade de experimentar a metodologia. Mais ou menos na mesma época eu estava ouvindo o disco Aqualung do Jethro Tull. Na capa do disco havia um texto, meio que um poema, que me interessou--talvez porque eu não tenha conseguido entendê-lo. Algumas palavras do texto chamaram a minha atenção, não por sua relação com o texto em si, mas por sua relação com o meu trabalho como programador. Daí me veio a idéia de tentar usar o texto como comentários de um programa. O programa não precisaria fazer muito sentido, mas precisaria ser compilável e "casar" o mais perfeitamente possível com os comentários.


Até que o exercício não foi muito difícil. Depois da primeira versão, corrigi alguns poucos bugs e, modéstia às favas, fiquei bastante satisfeito com o resultado. Cheguei até a pensar em mandá-lo para o Knuth como sugestão para ele usá-lo como exemplo em algum novo livro seu, mas desisti. Possivelmente ele diria que isto está mais para Literate Commenting que para Literate Programming.


De qualquer modo, eis o resultado do meu esforço. Ah! Estou aberto para receber críticas e sugestões. As modificações incorporadas em futuras versões do programa terão suas fontes devidamente citadas. :-)

#include <cassert>

typedef int (*Entity)();

int Man()
{
// 1. In the beginning Man created God;
// and in the image of Man
// created he him.

    Entity God = Man;

// 2. And Man gave unto God a multitude of
// names, that he might be Lord of all
// the earth when it was suited to Man

    Entity &Lord = God;
    Entity &Jeovah = God;
    Entity &Alah = God;
    Entity &Rah = God;

    static bool suited = true;

    if (suited)
        suited = false;
    else
        return 0;

// 3. And on the seven millionth
// day Man rested and did lean
// heavily on his God and saw that
// it was good.

    for (unsigned day=0; day != 7000000; ++day);

    assert(God != 0);

// 4. And Man formed Aqualung of
// the dust of the ground, and a
// host of others likened unto his kind.

    char *Aqualung = new char[1024];

    char *host[10];

    for (int i=0; i < 10; ++i)
        host[i] = new char[1024];

// 5. And these lesser men were cast into the
// void; And some were burned, and some were
// put apart from their kind.

    void *lesser[10];

    for (int i=0; i < 10; ++i) {
        if ((i % 2) == 0)
            delete[] host[i];
        else
            lesser[i] = static_cast(host[i]);
    }

// 6. And Man became the God that he had
// created and with his miracles did
// rule over all the earth.

    God();

// 7. But as all these things
// came to pass, the Spirit that did
// cause man to create his God
// lived on within all men: even
// within Aqualung.

    char *Spirit = "main";

    Aqualung = "main";

// 8. And man saw it not.

    bool saw = false;

// 9. But for Christ's sake he'd
// better start looking.

    assert(saw);
}

main()
{
    Man();
}

sábado, 18 de novembro de 2006

Scott Adams, filósofo

Há um bom tempo eu sou fã das tirinhas do Dilbert. Pra quem não sabe, sai uma nova a cada dia. Eu as leio religiosamente desde que cadastrei o site no meu blogroll. Vira e mexe aparece uma que me pega desprevenido e me tira do peito aquela gargalhada pra "disopilá o figo".

Há alguns dias eu descobri que o Scott Adams, autor das tirinhas, também tem um blog. É uma delícia ler o que ele escreve. Além de um estilo leve e irônico que me lembra muito o do Douglas Adams, autor do clássico satírico The Hitchhiker's Guide to the Galaxy, o que o Scott escreve tem "sustança". Já li dele coisas importantes sobre religião, filosofia e democracia, mas também coisas mais leves sobre hipnotismo e gripe.

No post de hoje ele escreve sobre brevidade filosófica, quer dizer, aquelas frases curtas que têm a capacidade de condensar uma grande idéia ou de encerrar uma discussão interminável. Nos comentários alguns leitores sugeriram outras frases interessantes. Segue minha tentativa de traduzir algumas das que mais gostei.
  • Sobre a guerra entre cristãos e muçulmanos que estamos presenciando desde o 9/11, ele diz que são "aqueles que acreditam que um cara caminhou sobre as águas contra aqueles que pensam que um cavalo pode voar".
  • O comediante Larry Miller descreveu a estratégia dos EUA na guerra contra o Iraque assim: "seguir dirigindo até que eles atirem na gente".
  • "A vida é uma doença terminal transmitida sexualmente."
  • "Há 10 tipos de pessoas no mundo: aqueles que sabem binário e aqueles que não sabem."
  • "Quando você chegar ao final da jornada, dê um nó e enforque-se."
  • "Para aqueles que insistem em dizer que você tem que adquirir um gosto por alguma coisa eu digo que você pode adquirir gosto por merda, mas pra que você ia querer fazer isso?"
  • "Não leve a vida tão a sério. Você não vai sair vivo dela."
  • "Well-rounded people are pointless." (Ótima, mas intraduzível.)
  • "O dinheiro só tem valor se você o gasta."
  • "Don't Panic." (Não podia faltar.)
  • "Guerras religiosas são brigas de vida ou morte pra decidir quem tem o melhor amigo imaginário."
  • Mahatma Gandhi, quando perguntado sobre o que achava da civilização ocidental: "Seria uma ótima idéia."
A que eu mais gostei foi a que a mãe do Einstein disse pra ele no filme Young Einstein. Depois de explodir o telhado da casa em que morava, o jovem Einstein resolve explicar a teoria da relatividade pra sua mãe. Depois de ouvir a longa explicação, a mãe olha pro filho e diz: "em outras palavras 'tudo o que sobe tem que descer'".

Gostei porque me lembrou o que minha mãe me disse no verão de 1984/1985 quando, tendo terminado o meu primeiro ano de faculdade em ciência da computação, tentei explicar pra ela a beleza da tecnologia por trás dos computadores e da matemática por trás da programação: "mas se esse negócio não faz nada sozinho, se você tem que 'programar', então qual é a vantagem?". Acho que até hoje não consegui esclarecer esse ponto pra ela.

sexta-feira, 17 de novembro de 2006

A Boa e a Má Procrastinação

(Tradução para o português do ensaio original Good and Bad Procrastination, de Paul Graham.)

Dezembro de 2005

As pessoas mais impressionantes que eu conheço são todas terríveis procrastinadoras. Será possível que a procrastinação possa não ser sempre ruim?

A maioria dos que escrevem sobre procrastinação, escrevem sobre como curá-la. Mas, estritamente falando, isso é impossível. Há um número infinito de coisas que você pode fazer. Seja no que for que você esteja trabalhando, você estará deixando de trabalhar no resto. Então, a questão não é como evitar a procrastinação, mas como procrastinar bem.

Há três variantes da procrastinação, dependendo do que você faz ao invés de trabalhar em algo: você pode trabalhar (a) em nada, (b) em algo menos importante ou (c) em algo mais importante. Eu acredito que este último tipo seja a boa procrastinação.

É como aquele "cientista distraído" que se esquece de se barbear, de comer, e até mesmo de olhar pra onde está indo enquanto pensa num problema interessante. Sua mente se desliga deste mundo porque está trabalhando duro em outro.

É nesse sentido que as pessoas mais impressionantes que eu conheço são todas procrastinadoras. Elas são procrastinadoras do tipo C: deixam de fazer as pequenas coisas pra trabalhar nas coisas importantes.

O que são essas "pequenas coisas"? São aqueles trabalhos que não têm nenhuma chance de serem mencionados em seu obituário. É difícil dizer qual virá a ser sua obra prima (será sua magnum opus sobre a arquitetura dos templos sumérios ou o romance policial que você escreveu usando um pseudônimo?), mas há toda uma classe de tarefas que você pode seguramente descartar: barbear-se, lavar a roupa, limpar a casa, escrever notinhas de agradecimento--qualquer coisa que possa ser chamada de afazer.

A boa procrastinação é a que evita os afazeres para poder realizar trabalho de verdade.

Boa em um sentido, pelo menos. As pessoas que esperam que você cumpra com seus afazeres não vão pensar que ela seja boa. Mas provavelmente você tenha mesmo que incomodá-las se quiser realmente fazer alguma coisa. Mesmo as pessoas mais gentis, quando querem realizar algum trabalho, tornam-se um tanto rudes quando precisam evitar os afazeres.

Alguns afazeres, como responder cartas, desaparecem se você os ignorar (desaparecendo também com os amigos, talvez). Outros, como cortar grama ou preencher o formulário do imposto de renda, só se complicam quando são adiados. Em princípio, não deveria dar certo adiar o segundo tipo de afazeres. Você vai acabar tendo que fazê-los de qualquer jeito algum dia. Por que, então, não fazê-los agora?

A razão que faz valer a pena postergar mesmo estes afazeres é que o trabalho de verdade precisa de duas coisas que os afazeres não precisam: longas horas de dedicação ininterrupta e a disposição certa. Se você ficar inspirado por um projeto, pode ser vantajoso adiar tudo o que você supostamente deveria fazer nos próximos dias pra trabalhar nele. É, estes afazeres podem lhe custar mais caro quando você finalmente puder fazê-los. Mas se você conseguir realizar trabalho de verdade durante estes dias, o resultado final terá maior valor.

De fato, a diferença pode ser mais em espécie que em grau. Pode haver tipos de trabalho que só possam ser realizados em longos e ininterruptos estirões, quando a inspiração chega, ao invés de em curtas tarefas cronogramadas. Empiricamente, parece que é assim. Quando eu penso nas pessoas que conheço que realizaram grandes coisas, eu não consigo imaginá-las organizadamente riscando itens das suas listas de afazeres. Eu as imagino escondendo-se para trabalhar em alguma nova idéia.

Por outro lado, forçar alguém a cumprir seus afazeres de maneira síncrona acaba limitando sua produtividade. O custo de uma interrupção não é apenas o tempo que ela dura, mas é que ela quebra o tempo dois dois lados pela metade. Você provavelmente só precisa interromper alguém umas duas vezes por dia pra que ela seja incapaz de trabalhar em qualquer problema difícil.

Eu pensei um bocado sobre por que as empresas startups são mais produtivas bem no início, quando consistem apenas nos sócios trabalhando num apartamento. A principal razão pode ser que não haja ninguém para interrompê-los ainda. Em teoria, é bom quando os sócios fundadores finalmente conseguem bastante dinheiro para poderem contratar empregados para fazer parte do trabalho pra eles. Mas pode ser melhor estar sobrecarregado do que super-interrompido. Depois que você dilui a startup com empregados assalariados---procrastinadores tipo B---toda a empresa começa a funcionar no ritmo deles. Eles são dirigidos por interrupções e logo você também acaba sendo.

Os afazeres são tão efetivos no assassinato de grandes projetos que muitas pessoas os utilizam exatamente pra isso. Alguém que tenha decidido escrever um romance, por exemplo, subtamente descobre que a casa precisa de uma faxina. Aqueles que não conseguem escrever seus romances não o fazem porque passaram dias e dias sentados em frente a uma folha de papel em branco sem conseguir escrever nada. Eles o fazem porque ficaram alimentando o gato, saindo para comprar alguma coisa pro apartamento, tomando café com um amigo, lendo email. "Eu não tenho tempo pra trabalhar", eles dizem. E não têm mesmo; fizeram de tudo pra não ter.

(Há também outra variante em que a pessoa não tem lugar pra trabalhar. A cura é visitar os locais onde pessoas famosas trabalharam e ver o quão inadequados eles eram.)

Eu mesmo já usei estas duas desculpas mais de uma vez. Aprendi um monte de truques pra me fazer trabalhar nos últimos 20 anos, mas até hoje não consigo vencer consistentemente. Alguns dias eu consigo realizar trabalho de verdade. Outros dias são gastos com afazeres. E eu sei que é quase sempre minha culpa: eu deixo os afazeres gastarem o meu dia pra não ter que enfrentar algum problema difícil.

A forma mais perigosa de procrastinação é a do tipo B que não é reconhecida como tal, porque ela não se parece com procrastinação. Afinal, você está "fazendo coisas". Só que as coisas erradas.

Todo conselho sobre procrastinação que se concentra em riscar coisas da sua lista de afazeres é não apenas incompleto mas positivamente enganoso se não considera a possibilidade de que a própria lista seja uma forma de procrastinação do tipo B. De fato, possibilidade é uma palavra muito fraca. Quase toda lista é uma forma de procrastinação do tipo B. A menos que você esteja trabalhando nas coisas mais importantes em que você poderia estar, você está procrastinando no tipo B, independentemente do quanto você esteja realizando.

Em seu famoso ensaio You and Your Research (que eu recomendo para todos os que têm ambição, não importa no que estejam trabalhando), Richard Hamming sugere que você se faça três perguntas:

  1. Quais são os problemas mais importantes na minha área?
  2. Estou trabalhando em algum deles?
  3. Por que não?

Hamming trabalhava nos Bell Labs quando começou a perguntar essas coisas. Em princípio, qualquer empregado dos Bell Labs deveria ser capaz de trabalhar nos problemas mais importantes da sua área. Talvez nem todos possam causar uma marca igualmente dramática no mundo; não sei; mas sejam quais forem as suas capacidades, sempre existem projetos que podem esticá-las. Deste modo, o exercício de Hamming pode ser generalizado da seguinte forma:

Qual é a melhor coisa em que você poderia estar trabalhando e por que não está?

A maioria das pessoas se intimida com esta questão. Eu próprio me intimido; vejo-a ali na página e rapidamente sigo pra próxima sentença. Hamming costumava circular perguntando essas coisas para seus colegas, o que não o fazia uma pessoa muito popular. Mas esta é uma questão que qualquer pessoa ambiciosa deveria se fazer.

O problema é que você pode fisgar um peixe muito grande com essa isca. Pra realizar bons trabalhos você precisa fazer mais do que encontrar bons projetos. Depois de encontrá-los você tem que conseguir trabalhar neles e isso pode ser difícil. Quanto maior o problema mais difícil é conseguir efetivamente trabalhar nele.

É claro, a principal razão que faz alguém achar difícil trabalhar num problema específico é que elas não o apreciam. Especialmente quando você é jovem, você frequentemente se encontra trabalhando em coisas de que você realmente não gosta--porque elas parecem impressionantes, por exemplo, ou porque alguém o mandou trabalhar nelas. A maioria dos estudantes de graduação ficam presos trabalhando em grandes problemas de que eles realmente não gostam, o que explica porque os cursos de graduação são sinônimos de procrastinação.

Mas mesmo quando você gosta daquilo em que está trabalhando, é mais fácil concentrar-se nos pequenos problemas que nos grandes. Por que? Por que é tão difícil trabalhar nos grandes problemas? Uma razão é que você pode não obter nenhuma recompensa no futuro próximo. Se você trabalha em algo que pode terminar em um dia ou dois você espera uma boa sensação de realização a curto prazo. Se a recompensa futura é distante e eventual, ela parece menos real.

Ironicamente, outra razão que leva as pessoas a não trabalharem nos grandes projetos é o medo de perder tempo. E se elas falharem? Então, todo o tempo que elas investiram terá sido em vão. (Na verdade, ele provavelmente não terá sido em vão porque o trabalho em projetos difíceis quase sempre leva à algum lugar.)

Mas o problema com os grandes projetos não pode ser apenas que eles não prometem recompensas imediatas e que podem fazê-lo perder seu tempo. Se fosse só isso eles não seriam piores que visitar o cunhado. Há mais que isso. Grandes projetos são amedrontadores. Há uma dor quase física em enfrentá-los. É como ter um aspirador de pó grudado na sua imaginação. Todas as suas idéias iniciais são imediatamente sugadas e você não tem mais nenhuma e o aspirador continua a sugar.

Você não pode encarar um grande problema diretamente nos olhos. Você deve aproximar-se dele com olhar oblíquo. Mas ajuste o ângulo depois: você precisa enfrentar o grande problema de modo suficientemente direto pra poder receber parte da excitação que ele irradia, mas não tanto que o medo o paralise. Você pode apertar o ângulo depois de começar, assim como um barco a vela pode velejar mais perto do vento depois de pegar velocidade.

Se você quer trabalhar em grandes coisas, parece que você precisa enganar-se a si mesmo para fazê-lo. Você precisa trabalhar em pequenas coisas que possam crescer e se transformar em grandes coisas ou trabalhar em coisas sucessivamente maiores ou repartir a carga moral com colaboradores. Não é um sinal de fraqueza depender desses truques. As obras mais importantes foram feitas assim.

Quando eu falo com pessoas que conseguiram trabalhar em grandes coisas, descubro que todas elas descumpriam seus afazeres e todas se sentiam culpadas por isso. Eu não acho que elas devam se sentir culpadas. Há mais a fazer do que qualquer um poderia. Assim, alguém realizando o melhor trabalho possível vai inevitavelmente deixar um monte de afazeres por fazer. Parece-me um erro se sentir mal por isso.

Eu acho que a maneira de "resolver" o problema da procrastinação é deixar o prazer puxá-lo ao invés de fazer uma lista de afazeres empurrá-lo. Trabalhe num projeto ambicioso de que você realmente goste e veleje tão perto do vento quanto possível e você deixará as coisas certas por fazer.

Meus agradecimentos a Trevor Blackwell, Jessica Livingston e Robert Morris por lerem versões preliminares deste ensaio.

© 2005 Paul Graham

segunda-feira, 31 de julho de 2006

lockd: cannot monitor

Este foi um dos problemas mais chatos que eu já enfrentei... Há quase duas semanas comecei a ter problemas com o OpenOffice.org no meu Debian (testing). Creio que tudo tenha começado quando tentei instalar a versão 2.0.3 do aplicativo. Ele travava sempre que eu tentava fechar uma de suas janelas e em algumas outras situações.

Depois de alguma investigação, percebi que no /var/log/messages (e em alguns outros arquivos de log) apareciam um monte de mensagens do seguinte tipo:

lockd: cannot monitor 10.202.128.109 lockd: failed to monitor 10.202.128.109

O Google encontrou vários relatórios de erro parecido mas nenhuma solução aplicável a minha situação.

Aproveitei o ensejo e instalei o Kubuntu (dapper), coisa que eu já queria fazer há algum tempo. Mas não resolveu a questão.

No meio do caminho acabei encontrando um problema com a memória do meu micro, algumas questões relativas ao suporte ao NFS4 e acho que mais uma coisa que já esqueci.

Hoje finalmente descobri a causa do problema. Faltava instalar o pacote nfs-common. Portanto, aviso aos navegantes de Debian e distribuições derivadas... se usam NFS, não se esqueçam deste pacote.

sexta-feira, 31 de março de 2006

Meus podcasts favoritos

Vira e mexe e alguém me pergunta o que é que eu tanto ouço no meu iPod. Não é segredo que eu quase não ouço músicas... ouço mesmo são podcasts. Então, eis a lista dos podcasts que eu ouço regularmente:

  • http://www.itconversations.com/

    "Listener-supported audio programs. Interviews and important events."

    Este site é ótimo. Eles gravam palestras de várias conferências importantes e as diponibilizam gratuitamente. O mais legal é que os ouvintes votam nos episódios de modo que você pode vasculhá-los por ordem de voto. Os mais bem votados são excelentes.

  • http://www.pbs.org/cringely/nerdtv/

    "NerdTV is a new weekly online TV show from PBS.org technology columnist Robert X. Cringely. NerdTV is essentially Charlie Rose for geeks - a one-hour interview show with a single guest from the world of technology. Guests like Sun Microsystems co-founder Bill Joy or Apple computer inventor Steve Wozniak are household names if your household is nerdy enough, but as historical figures and geniuses in their own right, they have plenty to say to ALL of us."

  • http://www.papotech.com.br/

    "Onde voce fica sabendo de tudo que acontece no mundo da tecnologia."

    Este é brasileiro e feito por um ex-funcionário do CPqD, o João Gandara. É muito bom... não tanto pela tecnologia, mas pelas risadas que eu sempre dou quando ouço. Se interessar, baixe os episódios 10 e 20 nos quais eles colocaram os "erros de gravação" dos episódios anteriores.

  • http://www.howtodostuff.org/

    "Extraordinary Wisdom. From ordinary people."

    Episódios curtos de poucos minutos nos quais o cara entrevista alguém que explica como funciona sua profissão. Não parece, mas é muito interessante. Baixe o ouça o episódio em que ele entrevistou uma depiladora que durante a entrevista fez a depilação das suas, como direi, ... nádegas. :-)

  • http://www.oreillynet.com/future/

    "Distributing the Future is O'Reilly Media's weekly podcast featuring the technology and the people behind what you use now and what you'll use next. This half hour program includes interviews and commentary on science, technology, related social issues, and just plain fun."

  • http://www.perlcast.com/

    "Perl News, Reviews and More."

    Pra quem gosta e usa Perl.

  • http://www.pointofinquiry.org/

    "The Podcast and Radio Show of the Center For Inquiry which is working to promote and defend reason, science, and freedom of inquiry in all areas of humam endeavor."

    Muito bom, pra quem gosta deste tipo de coisa.

  • http://grc.com/securitynow.htm

    "A weekly look at security issues with Steve Gibson of ShieldsUP!"

    Sobre segurança. Eu não escuto todos os episódios, mas recentemente ele começou umas séries sobre os fundamentos de TCP/IP, Ethernet e criptografia que eu estou achando bem interessantes.

quinta-feira, 16 de fevereiro de 2006

IPv6 Readiness

Um podcast muito interessante sobre IPv6. O que é? Como usar? Vale a pena?

IPv6 Readiness, oitavo episódio do Intellectual Icebergs.

How the Internet Works

Steve Gibson, o famoso e sempre criticado "especialista em segurança", conseguiu gravar dois podcasts muito interessantes contando o funcionamento básico dos protocolos IP, ICMP, TCP e UDP. São os episódios #25 e #26 da série Security Now!

sábado, 14 de janeiro de 2006

Hotmail: administrando sistemas

Estou lendo uma ótima entrevista com Phil Smoot. Ele é gerente do grupo que desenvolve e mantém a plataforma Hotmail-MSN Communication e trabalha há 11 anos na Microsoft.
O problema deles é o proverbial "trocar a roda com o carro andando". Eles evoluem constantemente o sistema do Hotmail que roda em milhares de servidores e não pode parar. O jeito é manter um controle de mudanças ferrenho e contar com uma equipe altamente disciplinada. As mudanças são implementadas e testadas em laboratório. Depois são implantadas num conjunto de dez servidores. Se tudo correr bem eles a implantam em 100 servidores. Depois 1000. Até que todos os servidores tenham sido atualizados. O grande problema é que durante uma implantação (que eu imagino que possa durar várias horas) eles têm servidores e clientes rodando versões N e N+1 do sistema e todos têm que "falar" com todos.

Perguntado sobre que tipo de skills ele procura num administrador de sistemas quando está contratando um ele diz o seguinte:

The administrative mantra is to automate. Scripting can also go a long way. From an engineering point of view, the requirement has to be to build automation and instrumentation into the service from the get-go.

Perguntado sobre que ferramentas eles usam eu achei que ele ia falar que os servidores rodam BSD e tal, mas ele é fiel ao patrão e menciona todas as ferramentas de desenvolvimento da Microsoft.

Sobre spam ele diz que o problema é sério mas que a taxa de crescimento caiu e provavelmente estejamos no pico. Mas que pico... ele acha que 75% das mensagens circulando na Internet são spam.

Sobre backups ele é bastante claro dizendo que fitas já não servem mais. A solução é fazer backup constante em disco.

Mas a melhor de todas foi a resposta que ele deu quando perguntado se eles usavam interface de linha de comando ou interfaces gráficas para administrar todos os sistemas do Hotmail:

Our operations group never wants to rely on any sort of user interface. Everything has to be scriptable and run from some sort of command line. That's the only way you're going to be able to execute scripts and gather the results over thousands of machines.

E isso numa empresa da Microsoft! :-)

Ele fala mais sobre QA e formalização dos processos, capacity planning, storage, etc. Vale a pena pra qualquer administrador de sistemas.

Ah, e pra terminar teve a pergunta padrão: que conselho ele daria pra alguém que pretenda gerenciar um mega-sistema como o Hotmail:

I'd see if this person really wants to do it. Has he or she considered teaching? The best advice is just basically to keep everything as simple as possible—simple processes, simple SKUs, simple engineering. These systems get to be very big very fast. I don't think there's really any one particularly hard, gnarly problem, but when you add them all up, there are lots and lots of little problems. As long as you can keep each of those pieces simple, that seems to be the key. It's more of a philosophy, I think, than anything else.

quinta-feira, 12 de janeiro de 2006

Papotech: Home Cinema

O PapoTech é o único podcast nacional que eu ouço regularmente. A dupla João Gandara e Vinicius Lobo produz semanalmente uma hora e pouco de um papo bem divertido sobre novidades tecnológicas bem variadas: hardware, software, Windows (nem tudo é perfeito, né?), Mac, fotografia digital, audio e video.

O João foi meu colega no CPqD até poucos anos atrás e conseguiu passar para o podcast um estilo de conversa irônico e sarcástico que sempre foi sua marca registrada. Ele já foi criticado por monopolizar o programa e não deixar o Vinicius falar muito, mas com o dobro da idade do colega é natural que suas sinapses recebam impulsos com maior freqüência. :-)

No episódio 16 o assunto principal foi a construção de um Home Theater (ou Home Cinema, como eles preferem). O assunto começou aos 22m25s do programa e durou 35 minutos. Vale a pena ouvir também o podcast especial de dois minutos sobre o Dolby headphone no qual eles mostram a tecnologia que a Dolby desenvolveu pra simular (muito decentemente) o efeito Dolby 5.1 num par de headphones stereo normais. Eu o ouvi no meu iPod com os headphones padrão (os branquinhos que não são lá essas coisas) e o efeito é realmente muito legal.

BTW, pra quem gostar desse episódio, sugiro ouvir o episódio 10 no qual eles inseriram dez minutos (a partir dos 57m10s) de erros de gravação dos primeiros episódios. Eu estava dirigindo enquanto ouvia e quase tive que parar no acostamento de tanto que eu ria.

Parabéns, João e Vinicius.