Esta é a primeira edição do Notícias do Front de 2010, o último que tive tempo de fazer foi em 27 de Dezembro do ano passado, portanto temos 3 meses de notícias para cobrir. Eu separei os que achei mais interessantes.

Como sempre, se ainda não acompanha, você pode ver os artigos que mais gostei de ler assinando meu feed do Google Reader e complementado com meu feed do Instapaper.

E de Janeiro até agora, eu publiquei 35 artigos no meu blog. Veja os arquivos de Janeiro, Fevereiro, Março e Abril para rever.

Comunidade Ruby

A comunidade Ruby definitivamente é fantástica, e notícia mais interessante foi a criação do Ruby Summer of Code, como resposta ao Google não ter incluído nenhum projeto Ruby no Google Summer of Code. Como resultado, com o dinheiro arrecadado há possibilidade de até 20 projetos de estudantes em vez dos 3 que o Google patrocinou ano passado.

Paralelo a isso, aqui no Brasil as coisas continuam crescendo. Se você é novo ao Ruby e Rails, procure a Caelum que dá cursos do básico ao avançado e também a e-Genial que dá cursos online.

Se você precisa de alguém para realizar seu projeto em Rails, procure pela Plataforma Tec e a GoNow.

Notícias da Comunidade

Repopular – é uma idéia interessante, de agregar tweets, e filtrar as principais notícias sobre tecnologia. Então eles organizam e categorizam, inclusive com ranking baseado em retweets. Se quiser saber o que as comunidades estão tweetando, pode ser um site curioso de acompanhar.

Rails Envy – Gregg Pollack e Jason Seifer ficaram muitos famosos principalmente depois dos infames vídeos do Eu sou Ruby on Rails, Eu sou [linguagem X]. Porém, eles tomaram caminhos separados. Muitos ficaram imaginando o que aconteceu e neste post o Gregg explica um pouco de sua história, embora não dê muitos detalhes da separação em si.

Ruby Heroes – Ilya Grigorik ganhou o prêmio em 2008, Aman Gupta ganhou em 2009, e quem será o Ruby Hero de 2010? Não deixe de votar no site.

Rails 3

O Rails 3 está em Beta 2 e muito próximo de ser lançado oficialmente. A comunidade já está usando em projetos reais e atualizando suas gems, plugins e tudo mais para ser compatível. Além disso o movimento para transitar do Rails 1.8 para 1.9 também está em andamento. Não fique para trás.

Rails Dispatch – a Engine Yard lançou mais um site, desta vez de notícias sobre Rails, especialmente Rails 3. Assinem o feed e acompanhem.

Rails 3.0: Second Beta Release – estamos muito próximos da versão final do Rails 3.0. O segundo beta corrige vários bugs e refina ainda mais o pacote. Vale a pena baixar e testar.

Bundler – é um gerenciador de dependência de gems para projetos Ruby. É um dos grandes projetos que foram derivados a partir dos esforços no Rails 3. Está evoluindo rápido e dentre outras coisas ele também facilita o processo de “vendorização”, ou seja, embutir as gems dependentes dentro da sua aplicação. Como funciona com Rails 2.3, Sinatra, Merb, e qualquer outro projeto Ruby, você pode começar a usar hoje mesmo.

The Lowdown on Routes in Rails 3 – outra coisa que mudou bastante no Rails 3 é o sistema de configuração de rotas. Em termos conceituais, as mesmas funcionalidades de antes estão lá, mas com uma DSL mais refinada e expressiva. Além das mudanças de sintaxe ele trás novas funcionalidades como a capacidade de mapear rotas diretamente para aplicações Rack, como Sinatra, facilitando a integração entre diferentes aplicações Web independentes.

Rails and Merb Merge: Rack – finalmente, na última parte da série, o Yehuda explica como o Rails 3 é muito mais amigável e integrado a Rack, a modularização de sua cadeia de requisições em middlewares e como integrar com outras aplicações Rack.

Rails and Merb Merge: ORM Agnosticism – Quinta parte da série onde o Yehuda explica sobre a decisão de fazer o Rails 3 ser amigável a outros ORM além do ActiveRecord e que mudanças eles precisaram fazer para suportar isso.

Rails and Merb Merge: Rails Core – nesta edição o Yehuda explica mudanças na estrutura básica de uma aplicação Rails, sua configuração, plugins e outras coisas do Railtie.

Rails and Merb Merge: Plugin API – plugins sempre tiveram uma vida dura a cada mudança de versão porque eles dependiam de muita coisa interna do Rails. Com os refinamentos do Rails 3 finalmente teremos APIs mais estáveis e confiáveis, o que deve tornar a comunidade de plugins muito mais ágil.

Rails and Merb Merge: Performance – mesmo acrescentando várias novas funcionalidades, um dos objetivos do Rails 3 foi de limpar muito do seu código antigo e melhorar os gargalos, como na geração de HTML, isso resultou em muito ganhos de performance, como o Yehuda explica neste artigo.

Rails and Merb Merge: The Anniversary – depois de um ano desde o anúncio da junção dos projetos Rails e Merb, Yehuda dá uma resumo das principais mudanças e inovações construídas até agora.

Rails 3 Upgrade Handbook – então você quer migrar suas aplicações para o Rails 3, mas como começar? Compre este eBook do Jeremy McAnally e aprendar como.

rails-upgrade: Automating a portion of the Rails 3 upgrade process – além de comprar o PDF do Jeremy, não deixe de acompanhar este projeto. É um script que tenta modificar sua aplicação para Rails 3, economizando tempo nas partes que são mais manuais.

Active Record Query Interface 3.0 – uma das maiores modificações no Rails 3 foi a inclusão do projeto Arel (A Relational Algebra) no ActiveRecord, modificando totalmente sua DSL de query. Neste artigo o Pratik Naik explica como usar isso em seus novos projetos.
Rails Metrics: know what is happening inside your Rails 3 application – o José Valim, da consultoria brasileira PlataformaTec, é um dos principais responsáveis pelo sucesso do Rails 3 e neste artigo ele mostra num screencast sobre o Rails Metrics, uma engine que coleta dados da sua aplicação e mostra numa interface gráfica para que você possa analisar o comportamento do seu site a partir do uso real dela.

Merb 1.1 ‘Black Hole’ released! – uma das promessas quando os projetos Rails e Merb se unificaram foi criar versões intermediárias para facilitar a transição. Esta versão é um primeiro passo nessa direção. Esta versão trás suporte melhor para Ruby 1.9 e passa a usar o Bundler também.

ActiveModel: Make Any Ruby Object Feel Like ActiveRecord – para tornar o Rails 3 agnóstico a outros ORM, era necessário separar o que é específico do ActiveRecord, o resultado foi o ActiveModel, que pode ser usado para tornar qualquer outro ORM compatível com o Rails, incluindo coisas como validações e callbacks.

The Skinny on Scopes – Named Scopes foi um recurso muito legal acrescentado ao ActiveRecord na era do Rails 2.x, agora ele se chama apenas “scope” e o Ryan Daigle explica o que mudou e como tirar proveito dessa nova funcionalidade no Rails 3.

Projetos Interessantes

Glyph – parece mais um projeto promissor promissor para gerar livros em PDF a partir de markups como Textile. Para quem quer criar apostilas, eBooks, pode ser uma boa opção.

MySQL 2 – é uma gem promissora que promete ser melhor que as tradicionais gems mysql e do_mysql, inclusive com mais performance e possibilidade de executar operações assíncronas.

Warbler 1.0 – finalmente Nick Sieger resolveu subir a versão para 1.0. Warbler é um projeto importante para a comunidade JRuby, para facilitar a criação de pacotes War para deployment em containers de servlet. Esta versão trás várias melhorias incluindo suporte ao novo sistema de organização de bibliotecas adotado pela comunidade Rails, o Bundler.

Sinatra 1.0 Released – mais um projeto que alcançou versão 1.0 é o famoso Sinatra, o mini-framework web Ruby. Se você ainda não conhece, vale a pena usá-lo especialmente para sites pequenos, end-points de webservices e coisas para as quais um Rails ou mesmo Merb podem ser grandes demais.

Simple Stored – é mais um ORM para CouchDB, que promete ser mais leve e mais simples. Os autores gravaram uma apresentação demonstrando seu uso.

SproutCore 1.0 is Done! – outro projeto open source que ouvimos falar pouco também alcançou 1.0 depois de 18 meses de desenvolvimento. A Apple usa esse projeto em todos os seus aplicativos online do Mobile Me. É um pouco complexo mas promete ajudar no desenvolvimento de aplicações dinâmicas. Ele usa Ruby por baixo para facilitar a geração de templates para seus projetos. Vale a pena conferir.

toto – este é provavelmente o mais minimalista de todos os engines de blog disponíveis. Ele é baseado em Rack, feito para ficar atrás de um HTTP cache como Varnish, e armazena seus posts todos em um repositório Git. Publicar um novo post é fazer um novo commit no Git. Vale a pena ver para quem tem necessidades muito simples.

ThinkingSphinx exits, enters ActsAsSolrReloaded – nunca, nunca faça pesquisas pesadas usando coisas como “select like”, isso é péssimo. Existem diversas técnicas que tornam pesquisas muito mais simples e rápidas, uma delas é o serviço Apache Solr. Neste artigo o Diego Carrion, da GoNow, explica como integrar Solr ao seu projeto Rails usando o plugin acts_as_solr_reloaded.

Avançando na Linguagem Ruby

Untangling Evented Code with Ruby Fibers – prestem atenção a programação orientada a eventos, isso é algo que em breve será muito requisitado e todo bom programador precisa entender isso. Ilya Grigorik é um dos blogueiros que melhor escreve sobre o assunto e este artigo fala novamente sobre Fibers de Ruby 1.9 e Eventmachine. Sistemas altamente escaláveis do futuro dependem de técnicas como estas.

Ruby Best Practices – O Gregory Brown, criador dos projetos Prawn e Ruport escreveu esse excelente livro para a O’Reilly e agora eles liberaram grátis para baixar como PDF. Aproveitem!

Metaprogramação: Eigenclass em Ruby – você sempre ouve falar nessa tal de “metaprogramação” do Ruby mas até agora não entendeu o que significa? O Anderson Leite, instrutor da Caelum, explica neste artigo. Então verá que a coisa é mais simples (porém mais poderosa) do que pode parecer.

Ruby’s Implementation Does Not Define its Semantics – um desenvolvedor que você deve seguir é Yehuda Katz, um dos principais responsáveis hoje pelo Rails 3. Ele escreve excelentes artigos sobre detalhes do Ruby e do Rails que não se encontra em muitos lugares. Neste artigo ele descreve mais detalhadamente o comportamento de Blocks e Procs no Ruby quando passamos como argumentos em métodos.

Ruby is NOT a Callable Oriented Language – o Yehuda explica porque Procs não são executáveis como métodos comuns usando parênteses. Um detalhe que muitos não devem ter dado conta, mas que revela muita coisa do funcionamento interno do Ruby.

AbstractQueryFactoryFactories and alias_method_chain: The Ruby Way – novamente, Yehuda explica algumas características dinâmicas do Ruby que tornam desnecessário certos Design Patterns em algumas circunstância onde muitos considerariam obrigatórios em outras linguagens. Um bom exemplo de como traduzir práticas de Java para Ruby resulta em Ruby mal feito.

The Building Blocks of Ruby – mais uma vez Yehuda explica conceitos fundamentais de Ruby e porque blocos são tão importantes na semântica do Ruby, praticamente sendo um dos pontos que a torna mais diferente de outras linguagens, seja Java ou mesmo outras dinâmicas como Python.

How Ruby Manages Memory and Garbage Collector – só porque você usa uma linguagem com suporte a garbage collector não significa que você não precisa entender sobre gerenciamento de memória. Precisa e deve. Esta apresentação do Joe Damato e Aman Gupta (provavelmente os rubistas que mais entendem desse assunto) mostra diversos conceitos sobre stack, heap e como Ruby se comporta. Obrigatório ver.

Why Riak should power your next Rails app – na disputa de quem é o melhor NoSQL, um novo competidor agora é o Riak. Ele segue o estilo do Amazon Dynamo, tem interface baseada em REST, escala horizontalmente com facilidade, fornece capacidades de map-reduce, etc. Este artigo explica porque Riak pode ser perfeito para quem gosta da filosofia do Rails.

HAML Sucks for Content – se você já gosta de usar HAML, provavelmente deve ter notado que ele é super chato para se editar muito conteúdo de texto formatado. Uma boa solução é misturar outra notação como o Markdown junto com o HAML. O resultado pode ser mais interessante do que você imagina.

Aprendendo Mais

Getting Started with Duby – Charles Nutter é mais conhecido com um dos principais desenvolvedores e evangelizadores do JRuby. Mais do que isso ele tem uma linguagem própria chamada Duby. Ela tenta se aproximar ao máximo da linguagem Ruby, mas sendo um pouco mais restrita e sem a biblioteca padrão. A idéia é que ela sirva para escrever código expressivo para Java e gerando bytecode para a JVM diretamente, em vez de ser interpretada. Nesse sentido ele é parecido com Scala.

A gentle introduction to MacRuby – os garotos da Phusion começaram a escrever alguns artigos sobre MacRuby e como usá-la para desenvolver aplicativos para Mac. Assinem o feed do blog deles para continuar acompanhando esses artigos. Para quem não sabe, MacRuby é uma versão de Ruby escrita em Objective-C, a linguagem padrão da Apple, e por acaso tem uma performance muito impressionante mesmo ainda sendo versão 0.5.

Making Ruby Fast: The Rubinius JIT – Just in Time é uma das técnicas para tentar rodar um código o mais rápido possível numa virtual machine. E Rubinius é uma virtual machine que tem o objetivo de ser a mais moderna para rodar Ruby. Ainda está em desenvolvimento para é sempre legal ler os artigos do Evan Phoenix, o autor, a respeito dos detalhes internos.

Peepcode: Cucumber – não se esqueçam do Peepcode, o Geoffrey continua produzindo suas excelentes video-aulas e desta vez o assunto é BDD usando Cucumber para garantir que suas aplicações tem o melhor nível de testes possível.

Screencast: Sinatra e DataMapper – se você gostou da idéia de usar um framework mais leve que o Rails para seus projetos menores, o Anderson Leite, instrutor da Caelum, demonstrar numa video-aula como começar.

Quake 2 ported to HTML 5 – (off-topic) não é relacionado diretamente a Rails, mas é uma prova de conceito relevante para demonstrar as possibilidades de um mundo Flash-free, usando apenas tecnologias HTML 5 como Javascript e WebGL.

comentários deste blog disponibilizados por Disqus