O lado negro da força

August 27th, 2009 § 8 comments § permalink

Dez horas da manhã, eu recebo um e-mail com uma singela planilha de Excel para revisar. Clico na planilha, ela começa a abrir e o Excel trava.

Legal, cliente de e-mail dos infernos–eu penso.

Queimo o processo do Excel e tento abrir a planilha de novo. Nada, o Excel trava de novo. Pontinha de dúvida bate, será que alguma coisa cagou na instalação dele?

Queimo o processo de novo e tento abrir outro arquivo. Excel trava. Nesse momento, bate a preocupação: caramba, se o Excel não está funcionando, como é que eu vou revisar a planilha e atualizar as outras coisas que estão pendentes. Pior, vou ter que acionar o help-desk, esperar um técnico aparecer–Caramba! Eu preciso desse Excel funcionando.

Nessa hora já estou hiper-ventilando. Voltando ao passado distante de programador, abro uma janela do console, encontro o arquivo de preferência do Excel e removo o arquivo. Tento tudo de novo e nada.

Finalmente, já desesperado, lembro que tenho o OpenOffice rodando–resquício também da época em que programava e fazia questão de usar software livre, nada dessas coisas corporativas e só de vez em quando para alguma coisa mais simples. OpenOffice trava também.

Começo a pensar que o problema deve ser no arquivo. Veja se não tem nada pendente de processos, abro um arquivo diferente e tudo funciona as mil maravilhas. Pelo visto, quando tentei abrir o outro arquivo da primeira vez, o processo ainda estava pendente e travou também.

Peço à pessoa para enviar outra versão do arquivo e consigo abrir. Ufa! Dia, vida, trabalho–todos salvos.

É só aí que caí a ficha: eu fui convertido ao lado negro da força.

Acho que vou precisar de terapia depois disso.

Balanço cultural de julho

August 26th, 2009 § 2 comments § permalink

Esse blog está quase virando somente uma lista dos livros e filmes que estou lendo e vendo mas vamos lá com o que fiz em julho:

  • 4 livros
  • 5 filmes

Nos livros, comecei o mês lendo a trilogia The Fionavar Tapestry, de Guy Gavriel Kay. O livro se passa parte em nosso mundo e parte em Fionavar, o primeiro de todos os mundos do qual todos os outros são meros reflexos. A “tapeçaria” do título se refere ao fato de que o destino, nos livros, é representado por um tecelão em um tear onde cada fio é uma vida. Os três livros então tratam das vidas de cinco estudantes do Toronto que são levados a Fionavar por um mago para desempenhar o seu papel em tentar salvar o primeiro dos mundos da ameaça sombria de um deus vingativo.

Eu já tinha lido dois livros por Kay e gostei bastante de seu estilo evocativo e poético. Kay tem o costume de tomar mitos e lendas de nosso mundo e criar versões ligeiramente diferentes das mesmas em mundos alternativos cuja estória é bem similar à nossa em muitos aspectos. Por exemplo, seu The Last Light of the Sun se passa em uma Inglaterra alternativa pré-medieval.

Apesar disso, confesso que fiquei um pouco desapontado com a trilogia. Embora os temas centrais–como livre arbítrio e resolução–sejam interessantes e os mitos usados também–arturianos, nórdicos, entre outros–, o livro tem um fluxo não muito coerente e soluções abruptas para alguns pontos do enredo. Além disso, há similaridades demais com Tolkien (Kay, inclusive, foi o editor de Silmarillion) que incomodam bastante (como todo o sub-texto dos anões, que é essencialmente o que Tolkien pôs em seus livros).

No geral, é uma leitura razoavelmente interessante mas tem esses defeitos que não me deixaram tão satisfeito como as demais leituras dele que fiz. Vale talvez pelo seu estilo.

Fechei o mês lendo The Last Days of Krypton, do Kevin J. Anderson. Achei o livro em um dos passeios pela Cultura e achei a idéia do mesmo curiosa: contar os últimos dias do planeta natal do Superman, mostrando o que realmente levou ao seu fim. Infelizmente, o livro não cola e me arrependi da compra. Primeiro porque embora o final do planeta seja contado de um ângulo interessante, não chega a ser suficientemente diferente do que já foi contado para valer a idéia. Segundo porque os personagens são extremamente superficiais e idealísticos, o que gera diálogos que seriam impossíveis entre pessoas com um mínimo de inteligência–o que é bem irônico considerando que Jor-El e Zor-El são retratados como gênios. No final das contas, só valeu mesmo pelas referências como a hora em Zod diz a frase famoso: “Kneel before Zod”. No resto, desperdício de tempo.

Nos filmes, comecei o mês com [Transformers 2]. Michael Bay consegui fazer o que todo mundo temia: tirou as partes boas do primeiro filme e aumentou as ruins. Os efeitos são mais exagerados e menos “acompanháveis” e a estória é virtualmente inexistente. Duas horas de pancadaria sem sentido. Serve pela diversão com os robôs (e pela Megan Fox) mas para pouca coisa além disso.

Depois de Transformers foi a vez de Fast and Furious, o quarto filme da franquia de mesmo nome. O filme é tão bom, mas tão bom, que eu não me lembro de quase nada do que aconteceu no mesmo. E isso porque eu sou um fã confesso da canastrice de Vin Diesel. O primeiro filme foi bem decente para a estória mas depois disso foi só ladeira abaixo.

Angels & Demons, o próximo filme, foi divertinho mas também não passa de uma adaptação meia boca de um livro meia boca. Deu para gastar um tempinho com as conspirações, mas o filme não consegue repetir o passo do livro e acaba deixando tudo meio solto. Também não valeu o tempo visto.

Harry Potter and the Half-Blood Prince, por sua vez, quase chegou a ser um filme bom. O sexto episódio cinemática da série repete o tom sombrio do anterior mas não consegue passar a estória de modo adequado. Achei muito corrido e com pouca ênfase nos conflitos tanto do anterior como do próprio livro. O mistério do half-blood prince, que em tese é o mistério principal do livro, é revelado de forma simples e sem impacto já que não teve todo o build-up do livro. Da mesma forma, toda a trama por trás das Horcruxes ficou meio descaracterizada e sem graça. Nem o ponto principal da estória, a morte de todo-mundo-sabe-quem, foi interessante. Só achei graça a homenagem a Duro de Matar.

O único filme decente do mês foi o brasileiro A Mulher Invisível. Luana Piovanni está maravilhosa, carismática e divertida na pele de Amanda e Selton Melo diverte também. A estória é boa e bem contada e embora o final seja mais fraco, não estraga o filme. Só não gostei mesmo dos trejeitos Carreyanos de Selton Melo. Prefiro sua representação natural.

No próximo mês, provavelmente nada.

Usem linguagens dinâmicas

August 11th, 2009 § 46 comments § permalink

Senhoras e senhores da classe de 2009:

Usem linguagens dinâmicas.

Se eu pudesse lhes oferecer somente um conselho para suas carreiras futuras de programação, seria o de usar linguagens dinâmicas. Os benefícios a longo prazo das linguagens dinâmicas já foram provados por milhares de programadores enquanto o resto dos meus conselhos não tem qualquer outra base se não minha própria conturbada experiência.

Eu lhes darei esses conselhos agora.

Aproveite o poder e expressividade de uma linguagem homoicônica. Ou esqueça que elas existem. Você nunca vai entender o poder e expressividade de uma linguagem homoicônica até passar quarenta horas acordado depurando um heisenbug. Mas acredite quando eu digo que, daqui a vinte anos, você vai olhar para trás, para todo código que você escreveu e desejar que ele tivesse sido escrito em uma linguagem homoicônica. Seu código atual é elegante, mas nem tanto.

Não se preocupe com a quantidade de linhas que você escreve. Ou preocupe-se, mas saiba que contar linhas de código é tão efetivo quando tentar contar parênteses em Lisp. O tipo de métrica que realmente vai lhe trazer problemas é a quantidade de declarações de tipo presente em seu código–justamente o código que vai falhar em uma madrugada movida a cafeína e fazer você amaldiçoar o compilador com todas as suas forças pelo pretenso sistema de tipagem segura.

Escreva uma linha de código a cada dia que assuste outros programadores.

Comente.

Seja cuidadoso com o código das outras pessoas. Não tolere pessoas que não são cuidadosas com seu código e introduzem problemas de manutenção nas elegantes estruturas que você construiu.

Não use marcações TODO, HACK ou FIXME em seu código.

Não perca tempo em discussões sobre linguagens de programação. Algumas vezes a sua está à frente no índice TIOBE, outras vezes ela está atrás. A corrida para entrega do código é longa e, no final das contas, suas linhas são as únicas quem contam.

Lembre-se dos forks e patches que seu repositório recebeu. Esqueça os comentários sobre a qualidade do código. Se conseguir fazer isso, me diga como.

Jogue fora a documentação obsoleta. Guarde o código antigo.

Faça forks do código alheio.

Não se sinta culpado por ainda não ter aprendido Assembly. Os melhores programadores que eu conheço não aprenderam até precisarem. Alguns dos mais excepcionais programadores que eu conheço preferem não aprender.

Beba café em quantidades moderadas. Seja bondoso com suas mãos. Você vai sentir falta delas quando a LER atacar.

Talvez você escreva um compilador, talvez não. Talvez você escreva um driver para o kernel do Linux, talvez não. Talvez você programe sistemas de inteligência artifical em ML, talvez não. O que quer que você faça, lembre-se que isso é tão relevante quando decidir se você vai usar o Emacs ou o Vi.

Aproveite bem os testes que você escreveu. Use-os da melhor maneira que puder. Não tenha medo dos que os outros dizem sobre TDD ou o que as pessoas pensam sobre BDD. Sanidade no desenvolvimento é a maior ferramenta que você vai ter em toda sua carreira.

Comemore cada build bem sucedido mesmo que você esteja sozinho no datacenter e ninguém mais possa compartilhar sua alegria.

Escreva um Makefile pelo menos uma vez, mesmo que depois nunca mais você vá usar algo similar.

Não leia revistas sobre tecnologias da Microsoft. Elas somente vão deprimir você pela pura estupidez da re-implementação.

Conheça os luminares de programação. Você vai sentir falta de saber o que Alan Turing e Donald Knuth fizeram algum dia. Seja gentil com seus colegas programadores. No futuro, eles são aqueles que provavelmente vão lhe apontar para o código que você precisar no momento certo.

Entenda que linguages aparecem, se tornam populares e desaparecem com a mesma facilidade mas há algumas que você deve prezar. Trabalhe muito para reconhecer as características boas de cada linguagens que você usa porque, quanto mais tempo de programação você tiver, mais vai precisar reconhecer quando e para quê certas técnicas e linguagens servem.

Programe em C durante um tempo, mas abandone a linguagem antes que ela lhe convença que controle manual de memória é uma coisa boa. Programe em Haskell algum tempo, mas abandone a linguagem antes que ela lhe convença que mensagens de erro absurdas são parte do fluxo normal de programação. E lembre-se de aprender uma nova linguagem de quando em quando.

Aceite certas verdades inalienáveis: linguagens do mercado como Java e C# são uma porcaria, tipagem dinâmica é melhor do que tipagem estática e sua carreira de programação vai terminar um dia. E quando ela terminar, você vai fantasiar que, quando você era um pogramador hot shot, linguagens de mercado eram boas–mas só pelo dinheiro–, que tipagem estática era mais segura e que sua carreira não terminaria nunca.

Respeite aqueles cujas carreiras já terminaram porque eles contribuíram bastante para o lugar em que você está.

Não espere que ninguém lhe ensine como programar melhor. Talvez você tenha um bom mentor. Talvez você tenha acesso a bons livros e documentação. Mas você nunca sabe quando essas coisas vão desaparecer.

Tenha uma biblioteca reusável mas não coloque coisa demais nela ou, quando você precisar, vai descobrir que a maioria do código lá está obsoleto ou é horrível demais para ser usado.

Seja cuidadoso com os algoritmos de terceiros que você usa, mas seja paciente com aqueles que os criaram. Algoritmos são como bichos de estimação. As pessoas que os criaram sempre pensam que eles são confiáveis, limpos e rápidos mas a verdade é sempre diferente e eles raramente valem o bytecode que geram.

Mas confie em mim quando eu falo de linguagens dinâmicas.


Melhor desfrutado ao som de “Wear Sunscreen” do qual é uma óbvia paródia.

Where am I?

You are currently viewing the archives for August, 2009 at Superfície Reflexiva.