Durante o Encontro de TI que teve esse sábado, tive a chance de trocar idéias com o Guilherme Chapiewski. Caímos no assunto de Net Negative Producing Programmer (NNPP). Eu li sobre esse termo pela primeira vez no artigo do Jay Fields. Depois dele outros bloggers exploraram mais o assunto como o Kris Kemper. Tem também um paper do G. Gordon Schulmeyer explorando em mais detalhes ainda. De qualquer forma, o resumo da ópera é o seguinte:

“Retirar um elemento tecnicamente ruim de uma equipe pode ser mais produtivo do que adicionar um elemento melhor capacitado.”

Quarta-feira teve a reunião do SouJava onde fui convidado para palestrar sobre Ruby, JRuby e Testes. No total foram cerca de 2:30 de apresentação (espero que não tenha sido muito cansativa). No começo mostrei o que a linguagem Ruby é capaz de fazer, como funcionam os conceitos dinâmicos, a meta-programação e outros conceitos mais básicos da linguagem. Em seguida fiz uma demonstração de uso do JRuby para criar testes em RSpec para testar classes em Java puro usando o projeto JTest4R. Finalmente no final demonstrei rapidamente o Cucumber para definição de User Stories e cenários de aceitação, para um desenvolvimento top-down no melhor estilo BDD.

Acima segue o PDF da apresentação. Existem uns 5 slides que na verdade são vídeo de demonstração, elas podem ser baixadas separadamente neste link. Depois vejo e faço uma versão melhor, narrada, mas já deve dar para acompanhar.

Desde o ano passado que eu queria fazer esse projetinho, mas acabei postergando e finalmente resolvi que já passou da hora de fazer isso. Uma das vantagens de estar aqui na Locaweb é que eu fui direto num dos desenvolvedores do serviço Pagamento Certo, coloquei meu notebook do lado, pareamos por 1 hora e meia e voilá, uma primeira versão saiu rapidamente.

Depois de dar um acabamento, adicionar uma documentação, agora ela está disponível no Github, como código open source, e para instalar direto a gem basta fazer:

1
gem install akitaonrails-lw-pagto-certo --source=http://gems.github.com

O Pagamento Certo disponibiliza um web service em SOAP, então a primeira coisa que fiz foi instalar o Soap4R. Ele vem com uma ferramenta wsdl2ruby, que lê o arquivo WSDL e gera os stubs e estrutura em Ruby. Feito isso, depois foi só uma questão de ajustes e acertar o fluxo.

Quando vi sobre o BlueRuby no ano passado, como projeto experimental, imaginei que fosse acabar como vaporware. Porém, fiquei surpreso ontem ao ver que o projeto continua em andamento!

O estágio atual está com a seguinte cobertura: 647 de 729 especificações de linguagem (88.8%) – Object, Class, Module, Block, Proc, …

2670 de 4180 especificações das bibliotecas principais (63.9%) – String, Fixnum, Array, Hash, Regexp, …
3317 de 4909 total de especificações (67.6%)

Eles criaram um editor via...

O encontro foi muito legal, só posso dizer que estou exausto! Hoje no começo da tarde estive primeiro no Web Expo Forum onde fiz uma palestra sobre filosofia de desenvolvimento de software e Ruby on Rails – claro :-) Quem estiver interessado nos slides, clique aqui. É uma variância da palestra que dei na Campus Party este ano, Em seguida, passei pelo pior temporal de São Paulo nos últimos tempos. E chuva aqui vocês sabem o que significa: CAOS! Alagamentos, semáforos quebrados, congestionament...

Não se esqueçam que amanhã é nosso Barcamp Locaweb de Ruby on Rails. Clique aqui para mais detalhes do local e também para preencher o formulário de presença. A entrada será gratuita e os comes e bebes são por nossa conta, mas registre-se para sabermos quantas pessoas esperar! Mais do que isso: sabendo do evento, a Editora Novatec me contactou e ofereceu um brinde para sortearmos durante o evento: uma cópia do livro Desenvolvimento Fácil e Rápido de Aplicações Web em Ruby on Rails do Rodrigo ...

Para os iniciantes em Ruby, hoje existem pelo menos 4 grandes bibliotecas de XML sendo utilizadas, o REXML, Hpricot (do why, the Lucky Stiff), o novato Nokogiri e o LibXML (que acabou de ter sua versão 1.0 final, depois de 7 anos de desenvolvimento). Aaron Peterson, o autor do Nokogiri, publicou uma suíte de benchmark de XMLparsing.rdoc e, segundo sua análise, o Nokogiri é o mais rápido de todos, seguido de perto pelo novo LibXML. Faça seus próprios testes, mas se quiser tirar vantagem disso ...

Update 16/03: Rails 2.3.2 foi lançado! gem update rails deve trazer a nova versão para quem já tinha uma anterior instalado.

O DHH anunciou esses dias que provavelmente lançará o Rails 2.3 amanhã, domingo, dia 14/03. Para os impacientes, mesmo hoje você já pode instalar a versão Release Candidate 2 baixando do repositório de gems da 37signals:

1
sudo gem install rails --source http://gems.rubyonrails.org

Além disso, todos os detalhes do lançamento já foram descritos no site do Rails Guides e sugiro que dêem uma boa olhada. Quero apenas fazer alguns comentários sobre as principais funcionalidades.

Antes de mais nada, a resposta à pergunta de sempre: “minha aplicação já está em produção com um Rails mais antigo, devo atualizar para esta?” Resposta simples de sempre: “não.” Resposta mais completa de sempre: “apenas atualize se existir alguma nova funcionalidade – vide este artigo – que você realmente precise muito. Certifique-se que a cobertura de testes de sua aplicação esteja bem antes de começar.”

Hoje, passei a tarde experimentando o básico da gem rails-sqlserver-2000-2005 que é a melhor versão de adapter para SQL Server que temos hoje. Só para entender, antigamente havia a gem activerecord-sqlserver-adapter que vinha junto com o Rails. A partir da versão 2.0.2, se não me engano, ela foi considerada obsoleta e retirada do pacote ActiveRecord. Depois de algum tempo, ninguém mais deu manutenção e ela foi esquecida. Foi quando o Ken Collins e amigos resolveram ressucitar esse projeto e ela se tornou a nova gem “2000-2005” no Github. Portanto, se você esbarrar em algum tutorial velho mencionando a antiga gem, esqueça-a.

Tecnicamente, tive vários pequenos probleminhas que levaram horas para eu entender por isso resolvi compilar num artigo para que eu não me esqueça de novo (já não é a primeira vez que faço a mesma coisa e sempre esqueço os detalhes).

Minha configuração é bem simples, um Macbook Pro com VMWare Fusion rodando duas máquinas virtuais: um Windows XP SP2 e um Ubuntu Intrepid Ibex Server. No meu cenário, o XP tem o SQL Server 2005 Express rodando e com o Management Studio também instalado. Eu quero uma aplicação Rails básica que simplesmente conecta nesse banco. E quero conectar a partir do próprio Windows, do Mac OS X e do Ubuntu como clientes desse banco.