Documentação, por favor

August 31st, 2007 § 7 comments § permalink

Nas minhas contínuas pesquisas sobre frameworks para desenvolvimento Web, uma das coisas que têm me chamada atenção é a documentação disponível e a facilidade com que um usuário iniciante consegue informações que lhe permitam começar o processo de desenvolvimento.

Hype à parte, o único ganhador nesse caso é o Rails. Mesmo o Django não consegue o mesmo nível de facilidade–em parte, eu acredito, pelo site confuso que não provê um caminho direto para usuários e a falta de um tutorial mais atualizado e condizente com as mudanças que estão acontecendo no mesmo.

O Seaside, por mais poderoso que seja, tem uma curva de aprendizado extremamente íngreme: não existe nenhum tutorial para a versão mais recente, a documentação bordeja o ridículo, e mesmo os exemplos que vêm com o pacote primário se referem a uma versão anterior. O resultado é que tarefas simples se convertem em uma caçada à classes e um processo de tentativa e erro.

O irônico é que volta e meia alguém reclama da popularidade do Rails e os usuários do dito framework se dividem em dois na listas. O primeiro grupo diz que o objetivo não é competir com o Rails, mas na verdade gostariam de que pelo menos o hype fosse o mesmo. O outro grupo sugere medidas interessantes, mas não faz absolutamente nada.

O fato é que código é notoriamente difícil de se ler. Sem documentação, nenhum framework segue em frente. Há momentos em que eu gostaria que certos desenvolvedores parassem se escrever código e documentassem. Na falta disso, que indicassem o proverbial caminho das pedras para que outros pudessem escrever código.

Rails com acesso turbinado ao banco

August 30th, 2007 § 4 comments § permalink

Uma das coisas interessantes no uso de Seaside e Smalltalk é o Glorp, uma camada de acesso ao banco de dados que permite o uso da própria sintaxe do Smalltalk para gerar queries. Essa é uma das coisas que o Rails não tinha e, por melhor que a sintaxe do ActiveRecord seja, ainda é muito opaca.

A palavra-chave na frase acima é tinha porque agora o Rails pode contar com isso. Um grupo de luminares da comunidade Rails lançou uma nova gem chamada ambition que faz exatamente isso. Embora o projeto esteja no começo, já está funcionando a todo vapor e os resultados são promissores.

Alguns exemplos do uso estão abaixo (retirados diretamente da entrada referenciada acima) e mostram o potencial de uma ferramenta assim:

User.first
SELECT * FROM users LIMIT 1 

User.select { |m| m.name != "macgyver" }
SELECT * FROM users WHERE users.name <> "macgyver" 

User.select { |u| u.email =~ /chris/ }.first
SELECT * FROM users WHERE (users.email REGEXP "chris") LIMIT 1 

User.select { |u| u.karma > 20 }.sort_by(&:karma).first(5)
SELECT * FROM users WHERE (users.karma > 20)
ORDER BY users.karma LIMIT 5 

User.select { |u| u.email =~ "ch%" }.size
SELECT count(*) AS count_all FROM users 
 WHERE (users.email LIKE "ch%") 

User.sort_by { |u| [ u.email, -u.created_at ] }
SELECT * FROM users ORDER BY users.email, users.created_at DESC 

User.detect { |u| u.email =~ "chris%" && u.profile.blog == "Err" }
SELECT users.id AS t0_r0 ... FROM users 
LEFT OUTER JOIN profiles ON profiles.user_id = users.id 
WHERE ((users.email LIKE "chris%" AND profiles.blog = "Err")) 
LIMIT 1 

Como é fácil perceber, a leitura do código fica muito mas interessante e prático, reduzindo a possibilidade de erros e aumentando a expressividade da linguagem. Esse é possivelmente o melhor exemplo de uma DSL que eu já vi para o Ruby/Rails e com certeza vai se tornar algo dominante entre os desenvolvedores.

Palestra sobre Seaside no sábado

August 29th, 2007 § 2 comments § permalink

Só para lembrar os interessados, a palestra que eu vou dar sobre Seaside acontece no sábado próximo às 14h:30 (horário oficial).

Como mencionado anteriormente, a mesma será feita usando a estrutura do TreinaTom e basta acessar o site do evento do dia para entrar no ambiente.

Novo Bloglines

August 27th, 2007 § 2 comments § permalink

Via Bruno Torres, a notícia de que o Bloglines lançou um beta aberto de sua nova versão.

Dei uma corrida de olho e gostei do esforço que o pessoal colocou em maximizar a experiência do usuário e resolver os problemas mais gritantes que o Bloglines tinha, como a questão de marcar todos itens como lidos quando você clicava em um feed qualquer.

A página inicial agora é no estilo Netvibes, o que não me agrada muito. Mas existem outras opções de visualização, e pode ser que eles insiram algo no estilo river of news que o Google Reader usa atualmente e que eu acho muito mais interessante na hora de escanear o que você quer ler ou não.

O design também é novo, uma tentativa de simular os atuais no estilo “Web 2.0″. Melhora o antigo, mas precisa de algumas refinadas para ficar mais solto e flexível.

Obviamente, como é uma beta, ainda há muita coisa a ser corrigida mas é interessante ver que o Bloglines finalmente está acordando e vendo que existe vida além da sua interface ultrapassada.

A minha experiência continua a mesma: basicamente qualquer nova subscrição ao meu blog é feita por outra agregador que não o Bloglines. Eu também pretendo continuar no Google Reader porque sou mais conservador e, depois de me acostumar com as novas flexibilidades, prefiro manter algo que já é intuitivo.

Escolhendo um Controle de Versão Distribuído

August 25th, 2007 § 10 comments § permalink

Uma das tarefas de trabalho do último mês é mover os nossos repositórios para algum sistema distribuído. Principalmente pela questão de deslocamento, um sistema distribuído provavelmente resolverá as pendências que temos como empresa no desenvolvimento de projetos.

O problema agora é escolher um. A arena está polvilhando de sistemas diferentes, cada um com suas vantagens e desvantagens. Fica a dúvida entre continuar com o Subversion–com a camada do SVK–ou escolher algum outro que já foi criado para ser distribuído.

No momento, estou entre o Mercurial e o Bazaar. Para o tipo de repositório que eu tenho em mente–nada enorme como um kernel do Linux ou um Mozilla, os dois parecessem essencialmente iguais.

Eu considerei brevemente tanto Git como darcs, mas o suporte limitado dos dois ao Windows é algo que não posso deixar de considerar no momento.

Se alguém tiver dicas e comparações práticas, fiquem muito à vontade para postar aqui. Eu estou interessado principalmente no uso de respositórios dentro de outros repositórios, incluindo de ferramentas diferentes. Por exemplo, um repositório Subversion sob um diretório versionado em outra ferramenta, ou um repositório independente com outros repositórios sob o mesmo via symlinks e situações similares.

Vídeos da maratona de palestras

August 23rd, 2007 § 3 comments § permalink

Os vídeos da maratona de palestras promovidas pela e-Genial no sábado passado já estão disponíveis para download e streaming direto.

São oito palestras diferentes com aproximadamente uma hora de duração com tópicos bem diversos e interessantes. Vale a pena dar uma conferida.

Soon I Will Be Invincible

August 21st, 2007 § 2 comments § permalink

Conheça o Doutor Impossível, o Homem Mais Brilhante do Planeta, Super-Vilão Extraordinário, agora o residente mais famoso em uma prisão para a contenção de meta-humanos onde ele serve a sua décima-segunda prisão depois de sua última e frustrada tentativa de dominar o mundo. É claro que ele tem um plano para a décima-terceira tentativa e a prisão não será capaz de contê-lo para sempre porque, mais uma vez, seu plano é invencível–e inclui, é claro, um modo de neutralizar suas maiores nêmesis, os Novos Campeões.

É assim que começa Soon I Will Be Invincible, um dos mais divertidos livros que eu li nos últimos tempos. O livro é ao mesmo tempo uma paródia e uma homenagem aos quadrinhos de super-heróis. Apesar do tom bastante cômico de muitas passagens–como a tendência do Doutor Impossível de sempre querer revelar e se gloriar em seu plano para conquistar o mundo–o livro também apresenta a incompreensão e solidão que um possível super-herói ou super-vilão sofreria somente pelo fato de estar além de normal. Essa exploração leva a alguns momentos bem interessantes e complementa o tom auto-consciente das narrativas paralelas em primeira pessoa que compõe o livro. Uma dessas narrativas é a do próprio Doutor Impossível, descrevendo seu plano e sua carreira; a outra, igualmente interessante, é a de Fatale, uma cyborg que faz parte do grupo principal de heróis.

O livro tem momentos absolutamente hilários como o vilão que ajuda o Doutor Impossível, possuidor de um martelo místico que lhe confere poderes sobrenaturais e que, sempre que ataca, grita “It’s hammer time”, para o total embaraço do Doutor Impossível.

O final do livro é bem interessante, fechando o ciclo da estória com um quadrinho. Se você gosta do gênero, está aí um livro que é uma boa pedida, principalmente pelas referências feitas aos heróis e vilões mais conhecidos das estórias em quadrinhos.

Palestra de linguagens de programação hoje

August 18th, 2007 § 1 comment § permalink

Só lembrando os interessados, a palestra sobre linguagens de programação que eu vou dar no ciclo de palestras da e-Genial é hoje.

Aventuras e desventuras no Mac OS X

August 17th, 2007 § 12 comments § permalink

Esse é o primeiro texto que eu escrevo do Mac OS X. Passei o dia todo configurando a máquina e me acostumando com o sistema. A máquina já estava aqui há uma semana, mas esse foi o primeiro dia que eu pude parar e realmente dar atenção ao trabalho de criar um ambiente novo.

Estou gostando bastante do novo sistema, embora o choque com a mudança seja bem alto.

O primeiro choque foi o mouse com um único botão. É muito estranho tentar dar um clique-direito e não conseguir. Depois de algumas horas, entrentanto, um único botão parece bem natural.

O segundo choque, e bem negativo, foram as teclas. Além dos familiares CTRL e ALT, existe o CMD. Eu não entendi foi a razão de existir tanto CMD e CTRL se um poderia resolver o outro completamente. Aliás, essa parte de atalhos no Mac OS X é algo complicado. Existem comandos em que você precisa apertar quatro teclas de uma vez só. Isso é um exagero.

O terceiro choque foi a localização das coisas. Muita coisa é familiar (pelo fato do Mac OS X ser um Unix disfarçado) e muita coisa não é.

Apesar disso tudo, instalar aplicações é bem fácil e consegui configurar basicamente tudo o que preciso para um primeiro momento–incluindo o famoso TextMate, que até agora não me animou muito. Continuo preferindo o modo emacs-rails do Emacs que, infelizmente se recusa a funcionar direito.

Meu ambiente de desenvolvimento está quase configurado e agora é só uma questão de ir me acostumando as poucos. Vamos ver o que acontece. :-)

Aqui está a segunda via da sua conta de informação

August 15th, 2007 § 5 comments § permalink

Eis um idéia maluca: em tese, o governo é responsável por prover algumas necessidades básicas para os governados, como segurança, educação, bem-estar, etc. De fato, como reconhecem as constituições mais decentes, o governo só existe para isso, para manter em movimento o maquinário que distribui estas necessidades.

Agora, atualmente, embora ainda não tenhamos chegada a esse ponto, uma das coisas que se tornará uma necessidade básica de qualquer cidadão é poder computacional e armazenamento. Hoje, existem soluções–como em qualquer mercado–prontas para disponibilizar isso a um custo relativamente moderado. Mas, com a distribuição de informação e o crescimento de interconectividade, isso pode passar a ser uma coisa que deve ser dada a qualquer pessoa pelo governo por não haver a possibilidade de gerenciar um estado de outra forma.

Isso envolve também acesso a essa informação de maneira transparente, algo que teria que ser proporcionado como parte básica da infra-estrutura também. Algo comparável é água e energia, que são indiretamente garantidos, mas que requerem um pagamento fixo para um suprimento constante. Embora estejam–mais uma vez, direta ou indiretamente–sob a mão do governo, há um custo repassado.

Em um mundo onde a maioria das transações pode e tende a acontecer mais e mais em uma plano que por definição é extremamente permeável, uma política de tratamento da relação governo-informação-cidadão seria algo bastante complexo. Se eu não confio em outras empresas para fazer isso, vou confiar no governo? Existem muitas razões pelas quais backdoors poderia ser construídas em um sistema assim.

A escrita está na parede, de certa forma. E só uma questão de tempo, segundo alguns. O que leva à questão: como uma agência governamental gerenciaria tais recursos?

Where am I?

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