Rails for Kids: faltam dois dias

December 13th, 2007 § 0 comments § permalink

No próximo sábado acontece o Rails for Kids, organizado pela e-Genial. O evento, que reune dez palestrantes para falar sobre Ruby, Rails e o mercado, acontece ao longo de todo o dia via TreinaTom e terá toda a sua renda doada para uma instituição de caridade do Mato Grosso do Sul.

Se você ainda não se inscreveu, não perca tempo. A inscrição só vai até amanhã e mesmo que você tenha interesse em somente uma das palestras, será um dinheiro bem gasto. Além disso, os participantes que não puderem ver as palestras no dia terão acesso às gravações das mesmas após o evento. Todo mundo ganha com isso. O preço é R$25,00, bem pequeno para um evento assim. Aproveite e ajude quem precisa.

Rio on Rails

December 8th, 2007 § 13 comments § permalink

Cheguei são e salvo ao Rio. Fazia tanto tempo que eu não vinha aqui que tinha esquecido que a aproximação do Galeão é sobre o mar. Para quem não gosta de pousos, a sensação é bem desagradável. Tirando isso, o dia está quente e bonito e o evento começou bem.

No momento, o Demetrius Nunes está fazendo uma introdução ao Rails e Ruby e pelos olhares atentos o pessoal está gostando. Mostrar um pouco da mágica do Rails é uma coisa que sempre funciona para atrair o pessoal para o que realmente importa. Nesse quesito, o Rails não tem rivais entre os demais frameworks e isso, obviamente, explica muito da sua popularidade. Com esse começo, acho que o pessoal vai se entender bem com o resto das palestras.

Minha palestra ainda é a segunda da tarde e eu já estou nervoso. :-)

Atualização: A apresentação do Nunes terminou, recheada de vídeos do Matrix–eu não posso reclamar, é claro–e foi muito boa, deixando o pessoal realmente com água na boca. Em vista do meu texto de ontem, há uma certa ironia com o fanatismo demonstrado pela comunidade Ruby. O que é, de certa forma, esperado, dada a enorme distância dos outros frameworks, mas não algo do qual gosto.

Atualização: A segunda palestra é sobre o Brazilian Rails, um plugin desenvolvido pelo pessoal da Improve IT com o propósito de facilitar o desenvolvimento em Rails para comunidades falantes de português. Iniciativa legal e do tipo que estamos precisando mais. Agora, usarcomodinheiro :valor foi dose. :-)

Atualização: A terceira palestra do dia é o case do O Curioso que tivemos no Minas on Rails também. A palestra é realmente interessante e mostra um uso real do Rails em uma aplicação com um base enorme de dados (400 mil usuários onde só a tabela de scraps adquirida tem 160GB). “O Curioso é um site pirata mesmo”, diz o Eduardo. :-)

Atualização: A quarta palestra é com o pessoal do projeto Lucidus, da Improve IT. Eu já tinha visto a apresentação em Belo Horizonte com o Vinícius e agora estou vendo com toda a equipe. Como tinha dito no meu breve relatório sobre o Minas on Rails, a apresentação é uma visão excelente do uso do Rails com XP e de como uma equipe pode otimizar o processo ao máximo e basicamente vencer basicamente qualquer obstáculo tecnológico ou social no desenvolvimento. A apresentação foi mais rápida, com um bocado de tempo para perguntas que funciona muito bem nesse tipo de apresentação.

Atualização: A quinta palestra é com o Fábio Akita, falando sobre a mágica por trás do Rails. Para o pessoal que já está impressionado, acho que a palestra vai deixá-los ainda mais de queixo caído. O Akita disse que eu sou culpado por uma mudança na palestra dele. Eu juro que não foi intencional. :-) Aliás, boa citação das três leis de Clarke das quais sou fã de longa data. Aliás, boa sacada de combinar um screencast gravado com uma apresentação. Facilita enormemente se você quer exibir código em certo detalhe. O único problema é a velocidade que tem que ser graduada.

Atualização Parentética: Eu acho que sou o único Ronaldo da comunidade Rails mais vísivel (pelo menos no Working With Rails eu sou o único de dois Ronaldos com um perfil definido) mas todo mundo me chama de Ronaldo Ferraz. Deve ter alguma razão para isso. :-)

Atualizacão: Akita está mostrando as mudanças para o Rails 2.0 usando o tradicional exemplo do blog com as facilidades da nova versão que deixam o exemplo bem mais simples em termos gerais (existem detalhes, é claro, que para o desenvolvedor experiente são mais fáceis que para o novo e não mapeiam bem mas o exemplo geral é muito bom). O mais legal é ver o povo que já desenvolve balançando a cabeça em aprovação das novidades.

Atualização: A apresentação foi muito boa mas algumas coisas poderiam ser cortadas pela semi-impossibilidade de mostrar tudo 100% (como as partes do Ajax, iPhone e algumas outras). Ainda assim, foi bom para o pessoal ver como o Rails se move bem rapidamente em termos de desenvolvimento.

Atualização: Hora da minha palestra. A gente volta daqui a pouco. :-)

Atualização: Acho que a palestra foi razoavelmente bem, mas como sempre é complicado passar DSLs para uma audiência mista. Quem já tem uma experiência mais pesada gosta de código e quem não tem tanta experiência fica meio chocado com o peso. :-)

Atualização: A próxima palestra é com o Danilo Sato falando sobre BDD e RSpec. Eu geralmente prefiro o BDD ao TDD puro e é bem interessante expor mais o pessoal ao assunto.

Atualização: Sempre que eu uso, leio ou ouço sobre RSpec, eu não me vejo fazendo outra coisa. Pode ser da forma como minha mente funciona, mas BDD é muito mais intuitivo e mais interessante do que TDD puro.

Atualização: Palestra final começando com algum atraso. O Carlos Eduardo vai falar sobre Flex, via TreinaTom, algo que deve interessar bastante gente. Quero ver é se a conexão de rede agüenta. Durante o dia estava estável mas bem lenta e cheia de bloqueios. Se der, o pessoal com certeza vai se impressionar com o que dá para fazer em termos de RIA.

Atualização: Acabei de chegar em BH. Cansado mas contente com o resultado do evento. A organização foi excelente, o pessoal do Rio é extremamente solícito e o pós-evento foi bastante divertido, relaxando perto da praia e jogando papo fora com o pessoal. Quase perco o último ônibus para BH mas acabou dando tudo certo. Agora só preciso de descansar para levar o filhote no parque mais tarde.

Para terminar, um obrigado especial ao Vinícius e ao resto da turma da Improve IT / Lucidus tanto pelo convite quanto pelo tratamento do Rio. Foi bom também conhecer algumas pessoas que antes só eram avatares em programas: Cris Dias, que é mais pragmático do que eu imaginava; Fernando Campos, do curso da e-Genial; Fábio Akita; e vários outros que minha proverbial falta de memória impede de recordar o nome. Aliás, eu realmente preciso de alguma técnica de associação: lembrar o rosto e não lembrar o nome é dose.

No resumo, foi um evento muito bom e acho que ano que vem já estamos encaminhados para algo bem positivo por toda a comunidade Ruby e Rails. Agora peço licença enquanto vou jogar um pouco de Need For Speed. Até a próxima.

Rails ou Django? Rails e Django!

December 7th, 2007 § 6 comments § permalink

Os dois frameworks irmãos, Django e Rails, receberam recentemente sua dose de atenção da revista Info. O mais interessante é que, nos dois casos, o Python e o Ruby foram considerados os pontos fracos dos seus respectivos frameworks.

Embora eu não tenha lido as matérias na íntegra, eu imagino que os autores das mesmas tenham pensando em ter que aprender uma linguagem nova como o ponto fraco e não nas linguagens em si como algum problema. Novamente, não posso dizer se os autores são programadores mas, se não forem, também é possível entender porque chegaram a uma conclusão assim.

Negativismo à parte, eu acho interessante a atenção que novas linguagens estão recebendo, principalmente as dinâmicas. O fato de que as linguagens são consideradas um problema é mais uma reflexão do mercado do que da realidade de uso das mesmas. Qualquer programador que valha metade do seu cargo sabe que aprender novas linguagens é essencial para sua permanência no mercado, mesmo que ele vá usar uma delas na maioria do tempo.

A proximidade das matérias me leva a crer que a consciência do Rails, Ruby, Django e Python está crescendo como nunca. Quando matérias desse tipo se tornam mainstream, não demora muito para que se filtrem também para o topo da escala decisória.

O que fica, pelo menos como eu considero a questão, é uma lição para programadores Web. Aprender somente Ruby ou somente Django pode ser menos trabalhoso mas aprender os dois provavelmente faz bem não só para sua carreira em termos de crescimento técnico como também em termos de mercado.

Amanhã é o Rio on Rails

December 7th, 2007 § 4 comments § permalink

Amanhã é dia do Rio on Rails e eu estarei lá para mais uma palestra. O assunto é Domain Specific Languages, sobre o qual já falei no Minas on Rails. Dei uma melhora e incrementada no material–no dia do Minas on Rails eu tive que correr um pouco por causa do tempo bem limitado–e acho que dá para explicar bastante o que são DSLs e como elas podem ajudar qualquer programador.

Se você se interessa pelo assunto–sendo Ruby ou não–e mora no Rio, apareça. Nos vemos amanhã.

Depuração: Patologia forense versus medicina, uma analogia

December 3rd, 2007 § 5 comments § permalink

Há alguns meses atrás, um programador Ruby chamado Giles Bowkett publicou um texto um tanto ou quanto provocador com o título: Debugger Support Considered Harmful.

O grosso do argumento era que Ruby não precisa de um depurador porque possui testes automatizados. Desnecessário dizer, o texto provocou repostas inflamadas de vários outros programadores dizendo que Bowkett não sabia nem o que estava falando quanto mais o que um depurador era.

Controvérsias à parte, Giles Bowkett reconheceu depois que a terminologia era inadequada, embora não tenha reconhecido a principal falha no seu argumento. Por mais que se diga que testes são preventivos–e realmente o são–o pouco uso que se fazer de um depurador em Ruby se deve, com certeza, ao fato de que até pouco tempo atrás, o suporte ao mesmo era péssimo. Eu já conversei com dezenas de programadores Rails, por exemplo, e para tarefas em que o depurador é necessário, abunda a típica técnica de depuração que o pessoal do ASP costuma chamar de Response.Write debugging.

O fato é que um testes são, em última instância, verificadores de especificação. Não tem e nunca tiveram o propósito de ajudar um programador a identificar erros esdrúxulos escondidos no meio do código.

Um programador experiente introduz cerca de um bug a cada dez linhas de código, seja qual a linguagem ou ambiente que estiver usando de acordo com o que é possível observar na maioria dos projetos. Um teste pode e geralmente revela esses bugs e um programador experiente, na maioria das vezes, consegue identificar o problema com uma única olhada no código. Quando maior a experiência, maior a chance de que uma mera verificação do código em questão revele o problema.

Entretanto, há momentos em que o problema está escondido e é necessário passar o código linha por linha e acompanhar dezenas de variáveis em busca do defeito. Nesses casos, um teste é absolutamente inútil. Mesmo que o teste seja ajustado para lidar com pedaços ainda menores do código, certas condições não aparecerão a menos que o código seja testado item por item.

A falta de um depurador nesse momento vai simplesmente fazer com que o programador introduza artefatos como impressão de variáveis, comentários de partes do código e em geral use estratégias inferiores que poderiam ser resolvidas com um suporte um pouco melhor do ambiente de desenvolvimento. Infelizmente, linguagens de scripting sofrem um pouco mais com isso e, quanto mais seu uso se intensifica, mais o problema se torna claro.

Na seqüência de comentários resultantes do texto do Bowkett, uma das respostas mais interessantes foi de James Robertson, evangelista do Cincom Smalltalk.

Em sua resposta, Robertson compara o depurador existente na maioria das linguagens a um patologista forense. O depurador faz o papel de um CSI investigando a cena do crimeapós o fato tentando descobrir o que matou a vítima. Por outro lado, o depurador sofisticado de uma linguagem como Smalltalk é mais parecido com um médico, tratando um paciente anestesiado e resolvendo seu problema enquanto o mesmo ainda está vivo.

Qualquer um que tenha trabalhado com o depurador do Smalltalk sabe que a analogia é muito própria. Durante o desenvolvimento de uma aplicação Seaside, por exemplo, o processo mais comum de depuração é o seguinte:

  1. Um teste é desenvolvido para a funcionalidade
  2. O teste é rodado
  3. O teste falha e mostra onde o problema ocorreu
  4. O código em questão (que pode até não existir ainda) é mostrado no depurador
  5. O código é corrigido (ou criado, incluindo declaração de classes, variáveis, etc)
  6. A execução é reiniciada
  7. O teste passa

Se há um problema durante a execução da página, o processo é similar:

  1. A página mostra o erro e oferece um link para o depurador
  2. O link é clicado e o depurador se abre na imagem em execução
  3. O código é corrigido
  4. A página é continuada
  5. A página termina de executar, já com o novo código, como se nada houvesse acontecido

O depurador, então, é parte integral do processo de desenvolvimento e, na verdade, não deveria ser chamado de depurador. É mais um explorador do estado do código atual, visto dinamicamente.

Qualquer mudança feita durante a depuração se propaga pelo ambiente todo instantaneamente. Da mesma forma, se um erro acontece durante a depuração, um novo depurador é aberto com as mesmas propriedades. Corrigido o novo problema, a execução retorna ao depurador inicial e o processo continua daí. Não existem coisas como loops infinitos ou necessidade de reiniciar uma página ou código para testar a correção de um problema. Como Robertson coloca no final de seu texto, é uma questão de pedir ao sistema para se explicar sobre o que está acontecendo.

Nesse sentido, não há comparação entre os depuradores comuns, seja do Ruby ou do C# ou o que você quiser. A diferença é grande demais para ser considerada. E dizer que testes resolvem esse problema é a mesma coisa que dizer que você pode resolver problemas de código escrevendo documentação. A arrogância e a incompreensão simplesmente se tornam auto-evidentes.

Minas on Rails, o depois

December 2nd, 2007 § 7 comments § permalink

Ontem foi o Minas on Rails, edição 2007 e finalmente estou acordado depois da maratona. Se eu estou assim, nem imagino o resto dos organizadores, que, confesso, ralaram bem mais do que eu para que o mesmo acontecesse. Depois de 15 horas de sono quase que ininterrupto, ainda estou me sentindo um trapo.

Mas, cansaço a parte, acho que o evento foi muito bom. Como todo marinheiro de primeira viagem, cometemos muitos erros mas o feedback posterior foi muito bom e acho que conseguimos nosso objetivo de informar um pouco mais sobre o Ruby e o Rails a quem não conhecia.

Infelizmente, nossos planos tanto para gravar como transmitir o evento ao vivo foram por água abaixo–graças a uma combinação de problemas técnicos no momento que tiveram a ver, em maior parte, com a mudança abrupta de local acontecida na última semana. O material das palestras, entretanto, será disponibilizado depois.

Revi e conheci mais um porção de gente interessante e isso já mais do que compensou o esforço. Muita gente que eu só conhecia virtualmente apareceu, incluindo o Leonardo Faria, o Vinícius Teles–que me deixou encabulado com os elogios–o Edgar, que eu conhecia do curso da e-Genial e que fez uma heróica viagem de trem de 12 horas para chegar ao evento, e o Lincoln de Sousa–que estava no pós-encontro e me levou em casa depois em uma viagem insana de carro com o Rafael Apocalypse e o Lucas Petes (aliás, com tanto louco no carro, não sei como chegamos vivos; e eu nem bebo).

No geral, a experiência foi ótimo. Ano que vem, espero que possamos fazer ainda melhor com o aprendizado desse. Muito obrigado aos mais de 120 participantes que fizeram do evento um sucesso.

Minas on Rails: o trem está rolando!

December 1st, 2007 § 9 comments § permalink

Com uma hora de atraso, estamos felizes em começar o Minas on Rails ’07. Como sempre, aventuras na hora de organizar que render histórias engraçadas depois. A primeira palestra está rolando, com o André Fonseca, falando um pouco sobre o Baú de Arquivos e como o Rails facilitou o processo de desenvolvimento do mesmo.

Atualização: Primeira palestra apresentou bem o Rails e agora estamos na segunda palestra com o TaQ, falando sobre o Ruby (passado, presente e futuro). Boa seqüência à anterior para familiarizar o pessoal com o que o Ruby oferece para depois falar de coisas mais complexas.

Atualização: TaQ: Tio, faz assim. Coisa de paulista. :-)

Atualização: Terceira palestra do dia com o Eduardo Rocha, do O Curioso, um site relacionado ao Orkut (salva os scraps permanentemente) usando Rails pesadamente com crawler, dezenas de processos, etc. O caminho de upgrade foi interessante e mostra que o Rails consegue evoluir tranqüilamente. Interessante as configurações: 20 mil usuários com 1×4 Xeon + 2GB, o que é modesto. Hoje são 400 mil usuários com máquinas não tão enormemente maiores.

Atualização: Quarta palestra começando sobre JRuby. Diógenes Araújo dando uma revista no assunto falando sobre o que está acontecendo, o que vai acontecer e como desenvolvedores Java e MRI podem se aproveitar do JRuby. O JRuby está se movendo em um passo muito rápido o que é muito bom.

Atualização: Quarta palestra começando com o Rafael Apocalypse falando sobre design Web com o padrão MVC e como lidar com programadores e designers ao mesmo tempo sem comprometer a qualidade final do produto. A próxima é a minha. Medo.

Atualização: Acabei minha palestra e depois fui levar o TaQ em Confins. Pela resposta da aduiência dá para melhorar bastante coisa antes da próxima apresentação. Esperado, é claro. Perdi a palestra seguinte, de TDD, e agora está rolando a palestra do Vinícius sobre o projeto Lucidus.

Atualização: O projeto Lucidus é um exemplo muito interessante de XP + Rails em grande escala. Ainda não havia visto a apresentação do mesmo e ver o processo aplicado em detalhes em uma empresa grande versus equipe grande é bem positivo.

Atualização: Palestra do Vinícius terminando, com bastante questões. Muito positivo. Agora falta somente o último passo nessa longa caminhada. :-)

Atualização: Palestra do Carlos Júnior começando falando sobre REST e Rails.

Atualização: Com o evento terminando, já dá para notar bastante coisa que fizemos certo e bastante coisa que fizemos errado. Marinheiros de primeira viagem, acho que até conseguimos executar bem. Resta saber a reação do pessoal depois. :-)

Atualização: Última palestra concluída. Evento basicamente terminado só com um tempo aberto para perguntas e respostas com os palestrantes.

Minas on Rails, primeira edição, amanhã

November 30th, 2007 § 3 comments § permalink

Lembrando os interessados que a primeira edição do Minas on Rails acontece amanhã, das nove às dezenove. As inscrições ainda estão abertas e vale a pena participar para ouvir vários palestrantes com tópicos muito interessantes sobre o Rails, incluindo o TaQ e o Vinícius Telles.

Para chegar no local, veja o mapa do evento. Se quiser combinar para ir ou pegar carona com alguém, verifique na lista pelas “caravanas” que estão se formando.

Idiomas a serem evitados em Ruby

November 23rd, 2007 § 0 comments § permalink

Parece que virou temporada de código perigoso em Ruby: primeiro, String#to_proc e agora uma forma de list comprehensions. Ambas usam execução de strings como código que é, para dizer o mínimo, sujeita a toda uma série de problemas escondidos.

Em outras palavras, não use. O conselho no primeiro texto é usar sem exagerar (e ainda avisa que pessoas vão reclamar sobre performance, como se isso fosse o que importasse). Execução de strings como código não é algo ilegal em Ruby, é claro–o próprio Rails usa muito e de uma forma bem interessante–mas isso não é algo que deveria se tornar comum em código externo. Em bibliotecas, há sempre uma justificativa possível de encapsulamento mas isso não é válido para código fora das mesmas.

Além dos potenciais problemas de depuração, bugs sem informação precisa de onde aconteceram, problemas potenciais em testes, o código simplesmente não bate com a elegância que sempre foi associada ao Ruby.

Então, repetindo, não use esse tipo de código–em especial, não o torne parte de suas ferramentas diárias.

Minas on Rails

November 16th, 2007 § 5 comments § permalink

O site do Minas on Rails está no ar e você já pode se inscrever para o primeiro evento do Rails no estado. Promovido pela comunidade Rails-MG, o Minas on Rails acontece no dia primeiro de dezembro, das 9h às 19h.

É um oportunidade para ouvir vários palestrantes falando sobre os mais diversos aspectos do desenvolvimento e implantação do Rails incluindo técnicas avançadas para suas próprias aplicações. Entre os palestrantes estão o TaQ e o Vinícius Teles. A taxa de inscrição é de R$20,00 e inclui uma camisa e o coffee break. Participando, você também recebe um certificado e tem a oportunidade de concorrer aos vários brindes que serão sorteados no dia.

Em resumo: é um excelente evento e uma oportunidade muito boa de ficar ligado à comunidade que está movendo o Rails aqui em Minas Gerais. Não perca.

Where Am I?

You are currently browsing the Ruby category at Superfície Reflexiva.