Olá pessoal, ontem, 12 de setembro de 2009, tivemos o Rails For Kids, um evento on-line realizado pela e-genial contando com diversos temas relacionados a Ruby on Rails. Tive o prazer de participar do evento e assistir à palestras dos mais renomados railers do Brasil. Não consegui assistir 100% até o final, faltaram alguns detalhes, mas vou tentar passar um resumão rápido aqui do que aconteceu no evento até o momento em que eu estive presente.

Márcio Garcia

A palestra inicial era para ser a do Carlos Brando, mas devido a alguns problemas técnicos foi trocada pela do Márcio Garcia. Ele falou bastante sobre sua experiência com o pagseguro, e sobre a gem brEshop criada por ele e outros 3 railers que não me recordo bem o nome agora. Demonstrou exemplos de como usar a gem e fazendo a integração de um carrinho de compras com o pagseguro. Foi uma palestra bem legal, com dicas importantes para quem precisa desenvolver algo nessa área.

Carlos Brando

Em seguida foi a vez do Carlos Brando, com o tema: Eu odeio OpenSocial. Para quem não sabe, Carlos atualmente não está mais trabalhando para a Surgeworks, foi contratado por uma startup nacional chamada Anamaiê, que desenvolve projetos ligados a redes sociais, como o Orkut, o MySpace e o Facebook por exemplo.

Carlos explicou o que é o OpenSocial, plataforma para desenvolvimento de aplicativos para redes sociais que tem a intenção de padronizar a comunicação com essas redes. A idéia é desenvolver um aplicativo uma única vez e utilizar em todas as redes que fazem parte do OpenSocial. Mostrou como trabalhar com OpenSocial, a possibilidade de utilizar apenas 1 único arquivo XML, muito javascript, sendo até possível integrar jquery ou prototype por exemplo.

Também falou sobre o desenvolvimento de um framework específico que está trabalhando para utilizar OpenSocial, chamado Sociably. O projeto está sendo desenvolvido por ele na Anamaiê, e assim que for considerado estável para produção deve ser liberado como opensource. Ficamos no aguardo =).

Para quem não conhecia o OpenSocial foi uma introdução muito legal. Aguardamos a “continuação” da palestra no Rails Summit. Link com os slides da palestra aqui.

George Guimarães

George trabalhava um tema muitas vezes não compreendido por muitos railers, principalmente para quem está entrando nesse mundo: como fazer o deploy de aplicações Rails. Ele deu algumas dicas sobre as configurações do Rails em modo de produção, como por exemplo o cache e requisições locais. Explicou também rapidamente como os servidores web evoluíram, passando de conteúdo estático para CGI e FCGI, para então chegar ao que utilizamos hoje.

Ele também deu dicas muito legais sobre a instalação e configuração do Apache e do Phusion Passenger, seguindo essas dicas com certeza ficará bem mais fácil configurar um server para produção. Também falou bastante sobre a ferramenta Capistrano, como ela facilita para efetuar deploys em vários servidores ao mesmo tempo, e também passou uma receita básica que ele mesmo utiliza nos projetos da Plataforma Tec, empresa do qual é sócio. O link da receita está disponível aqui.

Outras dicas importantes trazidas pelo George referem-se a utilização de ferramentas como o Exception Notifier ou o Hoptoad, para avisar a equipe quando algum tipo de exceção ocorre no projeto; e também sobre ferramentas para análise de performance, como o New Relic e o Scout. Com todas essas dicas com certeza fica bem mais fácil colocar uma app Rails em produção.

Hugo Baraúna

O Hugo trouxe um tema muito legal para o evento: Agile. Por que? Pra que? Como? Ele começou a palestra explicando como chegamos ao modelo de Engenharia de Software Tradicional que conhecemos hoje, vindo do modelo Industrial de Produção, ou modelo Fabril como ele mesmo comentou. Isso gerou o processo de desenvolvimento em Cascata como muitos conhecem (Waterfall), um processo linear e engessado. Também levou ao conceito de fábricas de software, fazendo com que as pessoas pensassem que software poderia ser “fabricado” assim como um outro produto qualquer. O resultado tem sido um grande insucesso no desenvolvimento de software. Teve até um comentário muito legal do pessoal: “Me vê aí R$ 3,00 de software”.

Hugo continuou sua palestra falando sobre o Manifesto Ágil e o porque de ser ágil, além de explicar os principais focos do manifesto durante o desenvolvimento de um software. Após explicou com detalhes sobre o Scrum, como funciona a definição do produto, dos sprints, as reuniões diárias e as demais reuniões que compõem essa metodologia/filosofia. Comentou também sobre o XP e algumas de suas práticas. Uma coisa importante a ser definida é a diferença básica entre Scrum e XP: o primeiro tem foco mais no gerenciamento do projeto, enquanto o segundo é mais relacionado as práticas de desenvolvimento em si.

Para finalizar a palestra, Hugo indicou dois livros ótimos: o primeiro deles é o recomendadíssimo livro do Vinícius Teles sobre XP, e o segundo é um ebook disponibilizado pela InfoQ, chamado Scrum e XP das Trincheiras. Seguem os links para os livros aqui e aqui respectivamente.

Celestino Gomes

Imagino que muita gente estava aguardando a palestra do Celestino Gomes, que veio explicar por que o Git é o nosso melhor amigo. Ele iniciou sua palestra falando sobre a história do git, partindo então para a estrutura de arquivos, como ele armazena as informações relativas a branches, commits, e toda a sua estrutura interna. Falou sobre os tipos de objetos do git e também sobre os git hooks, que permitem que você execute algum código específico em determinadas operações do git, como por exemplo antes ou depois de um commit.

O próximo passo foi falar sobre comandos utilizados no dia a dia com o git: como criar um repositório novo ou a partir de outro (clone), como trabalhar com branchs remotos, alterar mensagens de commit, e várias outras dicas muito legais e importantes sobre git. Aproveitando, logo após da sua palestra ele já disponibilizou os slides aqui.

Júlio Monteiro

O catarinense Júlio Monteiro veio falar um pouco sobre sua experiência com Continous Integration (CI), ou Integração Contínua. Começou explicando a importância de se utilizar CI para encontrar bugs com antecedência no código e assim garantir que nenhum código com falha vá para produção, além de permitir rodar rotinas específicas no sistema, como o exemplo citado por ele de gerar toda a documentação do sistema.

Júlio demonstrou também quais os CIs disponíveis atualmente no mercado, não só do mundo Ruby mas também do Java e outros. Particularmente já usei o CruiseControl.rb, mas fiquei bastante interessado nas dicas do Júlio sobre o Integrity, o qual ele considera o mais simples e prático de trabalhar. Júlio também mostrou rapidamente a ferramenta report_card, para fazer análise de um conjunto de métricas do sistema. Vale a pena dar uma conferida.

Uma coisa bem bacana que o Júlio demonstrou foi a utilização dos git-hooks pre-commit e post-commit, executando por exemplo toda a bateria de testes antes de um commit (pre-commit) antes de efetivar o commit ou a geração dos docs após o commit, garantindo assim que um commit não seja feito com um teste quebrando (se qualquer exceção for gerada pelo hook pre-commit por exemplo, o commit é cancelado). O Júlio usou muito bem os recursos de ScreenSharing do TreinaTom para demonstrar o Integrity e os recursos de git-hooks.

Carl Youngblood

O Carl surpreendeu a maioria do pessoal que não o conhecia (assim como eu) pela fluência em português. Incrível como as pessoas de fora que aprendem nossa língua usam muito bem a gramática, coisa que muitas vezes nem nós nativos utilizamos. Voltando a palestra, Carl falou sobre Cucumber e deu muitos exemplos práticos utilizando cucumber + rspec. Para quem não conhece o Cucumber, segue a explicação do Carl: é uma ferramenta utilizada para fazer os testes de integração do sistema, ou seja, para criar os testes mais próximos possível da experiência que o usuário teria ao abrir o browser e iniciar sua navegação. Funciona como uma espécie de caixa preta, você não tem a menor idéia de como o sistema está desenvolvido internamente, mas sabe o resultado que quer. É o chamado desenvolvimento Outside-In, ou seja, de fora para dentro, onde você começa com as funcionalidades e vai implementando as internas do sistema de acordo com elas.

Ele iniciou sua palestra com uma breve história sobre o Cucumber e o TDD/BDD. Em seguida, explicou como funcionam as estórias do cucumber, como é possível e extremamente fácil utilizar qualquer idioma para escrever uma estória, até mesmo escrever as funcionalidades em português. Uma dica legal aqui deixada por ele é procurar sempre que possível utilizar as estórias no mesmo idioma do cliente, pois a comunicação fica facilitada e o próprio cliente irá aprender a descrever as funcionalidades que ele precisa diretamente no formato simplificado do cucumber.

Carl usou bastante o ScreenSharing para mostrar um exemplo completo de utilização de Cucumber + Rspec, o que deixou o pessoal com água na boca para brincar com a ferramenta. Foi uma palestra muito bacana e o Carl é um ótimo palestrante.

Cleiton Francisco Vieira Gomes

O Cleiton apresentou uma palestra bem legal sobre como usar o Rack para criar middlewares para o Rails. Um middleware nada mais é do que um objeto que responde ao método call e retorne os dados em um formato pré-definido para o Rack. Até mesmo um lambda pode ser usado, é bastante simples. Ele deu dicas bem legais e um exemplo criando um middleware simplificado, e ainda implementou nesse exemplo um método para enviar uma mensagem para o twitter no caso de ocorrer alguma falha na aplicação.

Foi uma introdução ótima para aqueles que não conheciam os middlewares e o poder que eles podem nos dar. O gist com o middleware desenvolvido pelo Cleiton está aqui.

Kivanio Barbosa

O Kivanio procurou fugir um pouco do assunto Ruby on Rails trazendo uma apresentação introdutória sobre o Sinatra. Ele demonstrou com detalhes o que é o Sinatra, explicando que possui um foco realmente voltado para o desenvolvimento de aplicações simples, diferente do Rails, que como o Daniel Lopes comentou posteriormente, é um full-stack web framework, ou seja, um framework completo e integrado, com ferramentas que permitem o desenvolvimento de aplicações tanto simplórias quando maiores e mais complexas. Mesmo assim, o Sinatra é bastante poderoso e simples de entender e trabalhar.

Kivanio deu uma geral sobre as possibilidades ao se trabalhar com Sinatra, helpers, tratamento de exceções, hooks, dentre outras coisas. Também mostrou como integrar um ORM tal como ActiveRecord, DataMapper ou Sequel ao framework, e também utilizar views tanto no formato ERB quando HAML.

Esta palestra foi bem produtiva principalmente para quem tem focado muito no Ruby on Rails, abrindo bastante a mente do pessoal para novas tecnologias que podem resolver problemas simples eficientemente. Para quem quiser conhecer um pouco mais o Sinatra, o Kivanio deixou vários links ótimos aqui.

Daniel Lopes

O Daniel Lopes fez uma excelente palestra falando sobre a otimição do front-end de aplicações Rails. Melhor dizendo, todas as dicas que o Daniel mostrou servem para qualquer aplicação web, apenas foi focado na utilização das funcionalidades já existentes no Rails. Uma informação muito legal que ele comentou (e que eu não tinha conhecimento): 80% a 90% do tempo é gasto no front-end da aplicação, ou seja, download e parse de arquivos javascript, css, imagens, entre outras coisas.

Daniel começou indicando o livro Alta Performance em Sites Web do autor Steve Souders, do qual baseou a palestra. Também mostrou as ferramentas YSlow do Yahoo e PageSpeed da Google, para auxiliar na análise e otimização de web apps. Particularmente ele, assim como eu, prefere usar o YSlow. As dicas incluem usar arquivos css e js externos, unificados sempre que possível e minimizados, remover duplicações e usar css sprites, além de sempre que possível manter o scripts no final da página e não nos cabeçalhos. Outras são mais ligadas ao apache, usando compressão gzip e etags sempre que possível.

O legal da palestra é que o Daniel conseguiu ir mostrando passo a passo pelo ScreenSharing como ir otimizando a aplicação Blog de exemplo que ele estava usando, adicionando por exemplo a opção :cache => true nos helpers stylesheet_link_tag e javascript_include_tag do Rails, usando o plugin asset_packager para unir e minimizar arquivos css e js, e configurando um arquivo htaccess do apache na aplicação. A cada passo ele ia mostrando como fazer e qual o resultado no código fonte gerado. Uma palestra essencial para quem trabalha com desenvolvimento web.

Update: link para os slides da palestra aqui.

Silvestre Mergulhão

O Mergulhão deu uma palestra rápida falando sobre escalabilidade no Rails, demonstrando como trabalharam na estrutura do redeparede.com para escalar e aguentar a média de 7,5 milhões de acessos por mês, excluindo nessa contagem os bots como o do google. Uma informação muito legal: o googlebot é responsável por cerca de 50% dos hits do redeparede.com, o que significa que eles chegam a responder a até 15 milhões de acessos.

A estrutura que eles montaram basicamente inclui alguns servidores bem parrudos, com 7500Mb de RAM por exemplo, liberando até 512Mb para o Memcache trabalhar, e uma estrutura de balanceamento de carga distribuindo entre esses servidores. Mergulhão deu uma geral sobre como configurar e usar o memcache no Rails e algumas outras dicas sobre cache_action e fragment_cache. Depois foi aberta a sessão de perguntas e respostas que o pessoal participou bastante.

É muito bom ter um case como esse de exemplo, dando mais confiabilidade a quem diz que o Rails não escala. Acredito que aí está a prova contrária =).

Marcos Tapajós

O Tapajós apresentou um tema que ainda indaga e confunde muita gente, incluindo a mim: CouchDB. Na verdade era uma palestra dividida em duas partes: ele iniciaria a apresentação do CouchDB e o Vinícius faria a segunda parte com exemplos e cases de utilização. Ele iniciou explicando o que é o CouchDB, como ele utiliza javascript para obter e gravar os dados através do protocolo HTTP. Introduziu de uma forma extremamente básica o Map/Reduce, deixando esse ponto para o Vinícius explicar melhor. Explicou também que os documentos do CouchDB são automaticamente versionados, e após abriu para perguntas e respostas.

Foi uma palestra rápida e bastante empolgante, o pessoal que estava presente fez várias perguntas para o Tapajós sobre o CouchDB, performance, dicas, etc. É perceptível que muitos tem dúvidas e não compreendem o CouchDB, acredito que é uma nova forma de visualizar a maneira como os dados são tratados, e devemos sair um pouco dessa nossa realidade “relacional” para entender bem a idéia por trás dele. Ah, e só para deixar claro, eu já sabia que o Tapajós estava trabalhando no redeparede.com com o Mergulhão =).

Vinícius Teles

A palestra do Vinícius era uma continuação sobre o CouchDB. Ele iniciou a palestra com um vídeo que havia gravado exemplificando a utilização de CouchDB + CouchRest em uma aplicação Rails, demonstrando vários exemplos via console, configurações do model, Map/Reduce, e também a interface web para gerenciamento dos dados.

Não consegui assistir a palestra inteira, o que foi uma pena. Minha internet que me ajudou muito o dia todo acabou falhando na hora do vídeo do Vinícius, portanto vou ficar devendo mais informações pra vocês. Assim que liberarem o conteúdo para download quero assistir novamente.

Update: link para o screencast da palestra aqui.

Fábio Akita

O Akita trouxe um tema muito legal para finalizar o evento: A evolução do Rails ao longo dos anos. Comentou sobre as ideias iniciais do DHH, as primeiras versões do Rails, como o framework foi melhorando ao longo dos anos e novas funcionalidades foram sendo implementadas. Nesse ponto consegui assistir alguns pedaços apenas, até o momento em que o Akita comentava sobre o Rails 1.1. Como o evento estava um pouco atrasado (era para terminar as 18, já passava das 19), não consegui ficar até o final, peço desculpas a todos. Assim que tiver oportunidade de ver o conteúdo da palestra posto algo no blog.

Finalizando

Bom pessoal, é isso. O Rails For Kids 2009 foi um evento excelente, parabéns a organização, a e-genial, e a todos os palestrantes pelo evento. Parabéns principalmente pela iniciativa de doar toda a arrecadação das inscrições para uma instituição de caridade. Os conteúdos no geral foram muito bem escolhidos, muitos deles se completavam e os palestrantes tiveram a oportunidade de engatar uns “ganchos” e umas dicas legais com base no que já havia sido passado em palestras anteriores no evento.

Parabéns também ao pessoal da Jus Navigandi (Cairo Noleto e Cleiton Francisco – se tiver mais alguém avisem nos comentários ok) pelo live do twitter, o pessoal presente postou bastante conteúdo, links, e mensagens pelo twitter com a hashtag #railsforkids, o que ajudou a melhorar ainda mais o evento.

Aguardamos o Rails For Kids 2010 e nos vemos no Rails Summit.