Coisa feia, Debian…

October 13th, 2006 § 10 comments § permalink

Esse rolo todo por conta da marca registrada do Mozilla Firefox é algo que realmente nunca deveria acontecer na comunidade. Seja quais forem as razões válidas do Debian, compromisso aqui é alma do negócio. Já é muito complicado defender o aspecto político do código livre/aberto sem que brigas desse tipo dificultem ainda mais o processo. IceWeasel? Tenham dó. Será que ninguém pensou que, no mínimo, até o nome é complicado de pronunciar por pessoas para quem o inglês não é nativo?

Para quem não sabe de nada, ou para quem quer saber mais alguma coisa, deixo três bons artigos:

Ciência e crítica à religião

October 11th, 2006 § 4 comments § permalink

Meme Therapy, um blog conjunto sobre ficção científica, está tecendo algumas considerações sobre ciência e religião, mais específicamente perguntando se cientistas deveriam criticar a religião indiscriminadamente–e, por extensão, vice-versa. A entrada é motivada principalmente pelo documentário recente de Richard Dawkins, The Root of All Evil?, em que o famoso biólogo define a religião como um vírus mental que deveria ser combatido e erradicado da mesma que qualquer outra vírus biológico.

Eu já comentei sobre o assunto aqui em outra ocasião, respondendo a algumas entradas em outro blog, mas acabei não me esticando muito no assunto. Como cristão professo–de uma variedade que antigamente seria chamada de fundamentalista, embora a palavra tenha sido deturpada hoje para significar classes religiosas como a direita americana ou terroristas islâmicos–o assunto sempre me interessou. E como um apaixonado por ciência e filosofia, eu sempre vivi em um mundo balanceado entre os dois e sempre tentei demonstrar a possibilidade de conexão entre uma coisa e outra.

Mais notadamente, as entradas mencionadas acima consistem em respostas à questão pelos participantes do Meme Therapy, que variam desde detratações completas da religião a posições mais equilibradas. Os comentários são bem interessantes e a posição de John C. Wright, um notado e excelente escritor de ficção científica me pareceu particulamente sã. Respondendo a uma crítica unilateral em outro blog, ele desconstrói o argumento usado, fazendo algumas comparações bem aptas (com uma boa dose de sarcasmo, por sinal):

“Religion must be a phony, because, um, the overwhelming majority of the greatest sages, philosophers, thinkers and writers of every era on every continent have been religious men, except for Marx and Nietzsche, and their mystical impulses had other outlets. And we know geniuses are easy to fool.”
A bilateralidade entre ciência e religião é um ponto morto quando adotada radicalmente. Pensar em domínios e dividir a esfera de conhecimento humano em partes é algo que nenhum filósofo sensível pensaria em fazer e, entretanto, essa parece ser a posição dominante hoje.

Wright continua:

“And religion must be a power-grab, because people foreswear worldly position, and wealth, and some even give up the comforts and delights of marriage to better serve God. Those hermits who live without any worldly possessions must all be epicureans lusting for power over us … but they’re really, really subtle. And martyrs: people who die rather than renounce their faith, are obviously motivated by a materialistic calculation of how to make money in the stock market. Washing the feet of beggars in India is a sure way to grab supreme executive power!”
Eu volto a pensar na questão da palavra “fundamentalismo” como uma manifestação da inversão de pensamento ironizada acima. Um dos grandes argumentos contra a religião, um dos preferidos, é a propensão do ganho de poder temporal por parte de líderes. O fato de que poder temporal não é um resultado direto da religião, mas da utilização de uma característica psicológica inerente da raça humana é algo que passa despercebido em todas essas críticas.

Wright termina com a seguinte conclusão:

“All sarcasm aside, religion is a complex phenomenon, found universally among all societies and tribes of men, as far back as anthropology can spy. If religion is false, it is falsehood that is built into the genetic predispositions of the whole race, a massive psychological failure as hard to avoid as the sex-drive, and not the product of some sinister conspiracy of The Three Imposters.”
Desnecessário dizer, eu concordo com o que ele diz. Não há a menor necessidade de atribuir um valor negativo de julgamento à religião meramente por causa do seu uso indevido ou desgosto pessoal.

Religião e ciência são manifestações coesas do pensamento humano. Algo interessante a se pensar sobre isso é o fato de que algumas disciplinas da ciência sempre ficarem na borda entre o experimentável e o perceptível (psicologia, por exemplo). Eu não acredito que essa dicotomia venha da inexistência de métodos quantificáveis de tratamento para as mesmas, mas sim dessa inabilidade de aceitar a contraparte necessária da experiência humana.

Eu não estou dizendo é claro que uma shamã ou um pastor deveria ser consultado para validação científica antes da publicação de qualquer tese de psicologia ou antes da apresentação de uma dissertação sobre física quântica. Mas a pressuposição de que não há impacto científico na existência das religiões é tão vazio quanto a afirmação contrária.

O debate é longo e eu não vou me esticar. Fica, entretanto, a recomendação de leitura.

Code Reads

October 11th, 2006 § 0 comments § permalink

Scott Rosenberg, um dos fundadores do conhecido Salon e figura respeitada na indústria, está publicando uma série de artigos sobre livros, textos e ensaios fundamentais na história da computação.

O primeiro artigo foi sobre o seminal The Mythical Man-Month, de Frederick Brooks, e o segundo fala sobre o ensaio Go To Statement Considered Harmful, de Edsger Dijkstra, ambos muito conhecidos.

Leitura interessante, com considerações rápidas e pertinentes sobre o tema. Mais comentários depois.

Histórias de Programação

October 10th, 2006 § 0 comments § permalink

Antes de entrar para o CEFET-MG, para o curso técnico de Informática Industrial, meu contato com computadores havia sido mínimo.

Eu me lembro da primeira vez em que vi um computador na vida, quando tinha uns dez anos de idade, e de como fiquei maravilhado com aquela máquina que podia fazer o que quer que eu quisesse. Eu não me lembro o modelo, já que não conhecia muito bem as diferenças na época, mas lembro da sensação de ter algo programável ao meu alcance.

O dono do computador, um amigo meu, queria simplesmente jogar, mas eu, que já conhecia o potencial do aparelho das poucas revistas e livros em que eu conseguira botar as mãos, me cansei rapidamente de bolinhas pulando para lá e para cá na tela.

Em um dos livros que eu tinha, uma história ilustrada da computação que eu conseguira com um amigo, apresentava um programa em BASIC como seu único exemplo de código–a listagem compara dois números e dizia qual era o maior. Depois de alguns dias, eu finalmente consegui convencer meu amigo a me deixar experimentar com o interpretador BASIC e digitei o programa, mudando-o para que ele comparasse três números. Funcionou de primeira. O único programa sem bugs em toda minha vida.

Uns dois anos mais tarde, eu já lera um livro de Pascal, mas ainda não tivera oportunidade de experimentar com a linguagem realmente. Eu não tinha condições de ter um computador e também não conhecia ninguém que tinha–aquele amigo há muito se mudara. Um outro amigo recebeu então um computador de presente do pai.

Mais uma vez eu consegui cooptar algum tempo do computador ao invés de jogar Enduro. Escrevei meu segundo programa completo baseado em um exercício presente no livro: ordenar uma lista de números inteiros. Muitos problemas depois, consegui fazer rodar o programa. Eu me senti o rei do mundo ao resolver um problema de ordenação e imaginar que o algoritmo era ultra-eficiente. Só quando comecei a programar realmente é que descobri que implementara o Bubble Sort.

Anos depois, já no CEFET-MG, no segundo ano que era realmente o primeiro ano em que aprendemos a programar, a tarefa final do último bimestre era implementar um programa equivalente ao Paint em Pascal, usando rotinas gráficas VGA rodando sobre o DOS. Curioso que eu era, eu tinha avançado além da classe e já estava mexendo com isso há alguns meses e até ajudei a maioria dos outros alunos com as rotinas básicas de desenho e uso do mouse.

É claro que as melhores rotinas eu reservei para mim:rotinas para alterar o cursor do mouse de acordo com a ferramenta, compactar os arquivos para uso mais eficiente do disco e outras coisinhas mais.

Minha perdição foi ter topado com a seção de orientação a objetos em um livro de Pascal avançado. Quando eu terminei o meu sistema de janelas gráfico, completo com herança, filas de mensagens e outras amenidades, eu tinha menos que dois dias para a entrega do programa em si, algo que nem as técnicas “avançadas” que eu estava usando resolveram. Meu programa levou a menor nota entre todos os trabalhos. Mas pelo menos ganhei dois pontos mais pelo uso de orientação a objetos e ponteiros.

Atlas Shrugged

October 10th, 2006 § 0 comments § permalink

“That which you call your soul or spirit is your consciousness, and that which you call ‘free will’ is your mind’s freedom to think or not, the only will you have, your only freedom, the choice that controls all the choices you make and determines your life and your character.”

Pelo que parece, Atlas Shrugged, de Ayn Rand, vai mesmo virar um filme, com a personagem principal interpretada por ninguém menos que Angelina Jolie. Considerando que as pessoas envolvidas no projeto até o momento parecem admiradoras da obra, é bem possível que o filme seja uma adaptação decente–até onde é possível fazer isso com um livro que chega a quase 1100 páginas e que inclui um capítulo com 60 páginas formadas por um único discurso.

Mesmo não sendo um partidário do Objetivismo, eu considero Atlas Shrugged um dos melhores livros do século XX. A obra, publicada em 1957, é uma crítica social brilhante que permanece válida em muitos níveis, inspirando dezenas de outros trabalhos–entre os quais a extremamente popular série de fantasia The Sword of Truth, que é basicamente uma releitura do trabalho de Ayn Rand (incluindo os longos discursos).

Concordando ou não com muitas das conclusões a que ela chega, é inegável para o leitor que a autora pensou cuidadosamente sobre os temas que aborda no livro e se ela não resistiu à vontade de pontificar, refletir esses temas e a relação dos mesmos com outros trabalhos de cunho filosófico é um bom exercício.

O filme chega em 2008 e se você gosta desse tipo de obra, a leitura vale a pena.

Rails para sua Diversão e Lucro

October 9th, 2006 § 36 comments § permalink

Rails para sua Diversão e Lucro é um novo tutorial meu sobre o Rails que mostra desde o básico do desenvolvimento de uma aplicação a tópicos um pouco mais avançados como filtros customizados, escopos, módulos e extensões, incluindo uma introdução a Ajax e Unit Testing.

A intenção é oferecer uma apresentação relativamente mais extensiva que o tutorial anterior, que possibilite o leitor iniciante a experimentar com a tecnologia e o leitor já com um certo conhecimento a ter contato com algumas das características avançadas, principalmente as introduzidas na versão 1.1 do Rails.

São quase 300 páginas de exemplos e código funcional, liberados sob a GFDL.

Espero que vocês gostem. :-)

O que os olhos não vêem…

October 9th, 2006 § 2 comments § permalink

Você só descobre que alguma coisa está dando errado quando precisa que o resultado seja certo. Eu tenho um processo no servidor que faz o backup diário de todos os bancos de dados no mesmo. Eu já testei o processo várias vezes em outras ocasiões sem nunca ter detectado qualquer problema.

Esses dias, quando precisei de voltar um dos bancos que havia dado problemas, percebi que, pelas últimas semanas, o processo estava falhando bem próximo do seu início, salvando não mais do que dois ou três bancos de dados–e isso tudo por causa de uma tabela corrompida.

Mais uma lição do Murphy, de que nunca se deve confiar em algo mesmo que a documentação existente lhe diga o contrário. O problema está corrigido, com validações adicionais, mas como a rotação dos arquivos é semanal, os dados que eu precisava não existem mais. Pelo menos, como o sistema em questão é bem pequeno, foi possível restaurá-lo com o que havia ficado. Menos mal.

TDD vs. BDD

October 9th, 2006 § 0 comments § permalink

Para falar a verdade, um dos aspectos que sempre me incomodou no que se refere às práticas da metodologia Extreme Programming está justamente em um dos seus pilares: TDD, ou Test-Driven Development.

Eu sempre fui um proponente de métodos ágeis, mesmo antes que houvesse um palavra ou um grupo de técnicas com os quais eu pudesse formalmente me identificar em meu processo de desenvolvimento. Mesmo assim, em minha adoção desses métodos, eu sempre me arrastei na questão de testes: alguma coisas neles me parecia contra-intuitiva, como se eu estivesse me aproximando do desenvolvimento de algum ângulo errado.

Obviamente, eu atribuía isso a alguma deficiência em minha própria compreensão do que o TDD realmente significava–possivelmente alguma impedância natural entre os meus processos mentais usuais e o estilo de programação adotado pelos proponentes e usuários do XP. O resultado, é claro, é uma certa discrepância entre a teoria e prática nos sistemas que eu vinha desenvolvendo, deixando alguma coisa a desejar no processo de verificação trazido pelos testes.

Recentemente, porém, eu encontrei uma nova reflexão sobre o processo, conhecida como BDD, ou Behavior-Driven Development. O tema não é novo, mas eu realmente não tinha visto nada sobre o mesmo ainda e depois de estudar um pouco, eu acho que o BDD realmente clareou alguns aspectos que eu achava problemáticos no TDD. Ao invés de uma linguagem declarativa passiva, como existe no TDD, o BBD representa algo mais intencional–e que também remove um pouco do estigma associado a testes.

Como eu estou usando basicamente o Ruby e o Rails para todo o meu desenvolvimento atual, obviamente soluções relacionadas ao mesmo são o que eu estou estudando agora: RSpec e ActiveSpec. A introdução ao segundo é muito boa, explicando o que está sendo desenvolvido agora, e o tutorial do primeiro fornece uma boa explicação das diferenças entre TDD e BDD.

Entre o BDD e o TDD, a diferença está basicamente na implicação de verificação de funcionalidade, que é muito mais explícita do BDD. Escrever uma especificação para este último é um processo muito mais natural e mais lógico que para o primeiro, trazendo benefício mais específicos no caso de testes individuais. Para testes funcionais que implicam relacionamentos, o TDD certamente é o procedimento mais indicado, e nisso reside o grande interesse do BDD.

Eu não vou entrar em detalhes agora, até porque estou lendo mais sobre o assunto, mas fica a recomendação para aqueles que possam estar experimentando a mesma sensação com o TDD para certos tipos de testes.

Google Code Search e segurança

October 8th, 2006 § 0 comments § permalink

O Google lançou esses dias um mecanismo de busca para código, o Google Code Search. Existem outros projetos similares mas o do Google parece ser bem mais completo, e um tanto ou quanto perigoso também–para aqueles que não cuidam bem da segurança de seus dados.

É impressionante ver como muitos dos programas mais comuns praticam um péssima segurança no que concerne a localização de seus dados vitais como nomes de usuários e senhas. O Rails nesse aspecto tem a característica interessante de mapear um diretório especial sem contato com configurações com raiz da aplicação, que é o que toda aplicação deveria fazer. É claro que isso não é uma particularidade do Rails, mas fazer isso por padrão é uma boa prática.

A prática de deixar backups completos na forma de arquivos compactados na raiz de sites parece uma prática bem popular, infelizmente. O que volta a velha questão de que segurança é realmente uma atitude e não uma série de passos a seguir.

Seminário Ruby on Rails

October 8th, 2006 § 2 comments § permalink

Eu sou provavelmente o último interessado em Rails no Brasil a anunciar isso, mas a Tempo Real promove no dia 28 de outubro o seu primeiro Seminário Ruby on Rails.

A programação, que você pode ver da página do evento, é uma boa oportunidade para entrar em contato com o Ruby e com o Rails, além de conhecer o pessoal que esta movendo a adoção dos mesmos aqui no Brasil.

Eu provavelmente estarei lá. Se houver alguém de Belo Horizonte indo, que leia esse blog, fale comigo e talvez possamos arranjar algum modo de otimizarmos nossa ida.

Where am I?

You are currently viewing the archives for October, 2006 at Superfície Reflexiva.