Mislav Marohnić criou um pequeno script que checa se sua aplicação Rails está preparada para rodar com Rails 2.0 (ainda não lançado). Espero que Mislav continue atualizando este código. De qualquer forma achei interessante porque ele também serve como um breve resumo do que vai mudar:

Primeiro a notícia curta: quem quiser assistir à palestra do DHH na RailsConf Europe 2007, eis o link para uma versão em flash video (eu sei, argh).

Agora a notícia quente: Charles Nutter relata que o primeiro compilador completo de Ruby 1.8 está pronto! Eles trabalharam duro, durante viagens, fazendo palestras em conferências e codificando no meio do caminho, mas nada disso impediu que o trabalho fosse feito.

A Apple lançou há poucas horas o temido firmware 1.1.1. Alguns dias atrás ela anunciou que lançaria e que ele poderia dar problemas com iPhones desbloqueados (jailbreaked e SIM unlocked). NÃO ATUALIZEM AINDA!!

Os relatos pela web ainda são inconclusivos. Alguns dizem que o iPhone não consegue fazer ligações nem mesmo com o SIM da AT&T, alguns dizem que tiveram sucesso parcial. Outros dizem que tiveram sucesso total. Ainda não há uma conclusão! No IRC disseram que o firmware veio encriptado.

Alguns dias atrás o indiano Satish Talim do site rubylearning.com entrou em contato comigo. Sua idéia era entrevistar vários representantes de Ruby e Rails pelo mundo para ter uma idéia de como o assunto se disseminou. Fiquei muito contente por ele ter me escolhido para representar o Brasil. E aqui vai a primeira parte da entrevista (em 3 partes) que ele acabou de publicar. Vocês encontrarão figurinhas carimbadas como Peter Cooper, Jamis Buck e Ola Bini mas também representantes na Singapura,...

Essa semana foi cheia de brigas :-) Na nossa comunidade local, “RoR vs .NET”, depois Obie com “RoR vs Java”. Depois um artigo Sobre a performance de JRuby e CPython. E agora, na própria O’Reilly: 7 Razões porque eu voltei para PHP depois de 2 anos de Rails.

No artigo anterior falei um pouco sobre GIT e ele parece mesmo promissor. Meu objetivo é não fazer uma migração big-bang. Não me interessa neste momento ter todo o trabalho de retirar meu Subversion do ar, instalar um servidor GIT, etc. Meu objetivo é ter um repositório local que seja: rápido, estável, confiável, que faça o arroz-com-feijão com competência. Só o tempo dirá. Mas os primeiros testes foram muito satisfatórios!

Instalar o GIT varia. Em Windows: não faço idéia. Em Linux: Google – ao que parece existem tarballs, pacotes para Yum, pacotes para Apt-get. Deve ser bem simples, façam sua lição de casa. Para Mac: MacPorts. Foi um pouco estranho, porque o git-svn parece que usa Perl5, e meu SVK que já estava instalado também. Acabei desinstalando o SVK e suas dependências e instalando novamente – deve ser o sono, já é bem tarde. Resumindo, acredito que a receita (para começar em um MacPorts limpo), seja algo assim:

Adiantando o final do artigo para os impacientes: está procurando um sistema de versionamento (VCS)? Tente GIT.

Hoje eu estava ouvindo um podcast muito interessante no FLOSS Weekly com Junio Hamano, mantenedor do sistema de versionamento GIT, que é um sistema DISTRIBUÍDO de controle de código fonte.

Nunca ouvi falar.

Varei a noite – outra vez – e durante a madrugada apareceu uma discussão muito engraçada, e ao mesmo tempo meio assustadora. Obie Fernandez anda ocupado escrevendo o livro “The Rails Way” que provavelmente tentará fazer o que Hal Fulton fez com “The Ruby Way”. Um grande desafio se equiparar a um livro do calibre do de Fulton – provavelmente o melhor livro sobre Ruby, disparado -, espero que Obie consiga, esse livro está na minha wishlist de compras.

David Hansson acabou de blogar aqui e aqui. As RailsConf (America e Europe) são de longe os eventos mais importantes de Rails no mundo. Juntos com a RubyConf isso fecha a RubyCentral como a maior referência mundial de eventos de Ruby e Rails, deixando qualquer outro bem distante. Claro, não podemos esquecer dos eventos regionais americanos como a Ruby HoeDown, que contam com muitas das mesmas pessoas como Charles Nutter, Thomas Fuchs, Ezra Zygmuntowicz, etc.

Pra variar, estou muito atarefado (ainda tenho um artigo que está no forno faz dias para eu terminar), mesmo assim achei este artigo interessante e – para variar – me deu vontade de traduzí-lo aqui. Tem uma discussão no site do TSS também. O Artigo original está na InfoQ, por Sadek Drobi, publicado agora há pouco. Lá vai:

No evento da TSS em Barcelona, Martin Fowler e Neal Ford deram uma palestra sobre programação orientada a linguagem, resumida aqui. Em seu artigo anterior, Fowler definiu esse conceito como ‘o estilo geral de desenvolvimento que opera sobre a idéia de construir software ao redor de um conjunto de linguagens específicas de domínio’. Fowler e Ford desenvolvem algumas idéias apresentadas por Fowler na JAOO 2006 e questionam a eventualidade de um “passo evolucionário além de programação orientada a objetos”.

Ontem, hoje e amanhã está rolando a RailsConf Europe, em Berlim, na Alemanha.

Dave Thomas, da Pragmatic Programmer, palestrou sobre o tema “Pode haver arte sem engenharia? Pode haver engenharia sem arte?” É a velha metáfora de uma tela de código em branco comparada a um quadro em branco. Dos pincéis e tintas como linguagens e frameworks. Uma maneira que eu particularmente gosto de imaginar. Assim como em arte, programação tem uma parte inegável de inspiração e talento envolvido, além das técnicas básicas. Requer treino, requer dedicação, requer estudo.

Faz meses que quero trocar de celular, mas nenhum me pareceu adequado. Rumores sobre um “iPhone” circulavam a internet faz muito tempo. Quando os rumores ficaram mais fortes, resolvi esperar. Desde então carrego meu odioso Nokia 6600, na esperança de substituí-lo por um aparelho decente. Este dia chegou em 29 de Junho de 2007, com o lançamento do estrondoso iPhone.

Ruby possui capacidades de meta-programação e DSL que poucos realmente exploram. Achei este artigo interessante porque ele vai passo-a-passo numa exploração de um recurso que pode ser muito útil em diversos casos de manipulação de ítens em coleções criando uma linguagem customizada para ser expressiva e simples de se entender.

publicado por: Kevin em 26/03

Aviso: muita mágica adiante! (e um longo artigo)

Eu cruzei com um conceito chamado Higher-Order Messaging hoje. É uma maneira útil de permitir linguagens orientadas-a-objeto enviar uma mensagem a todos os membros de uma coleção sem ter que iterar manualmente por ela. Algo parecido com (Ruby):

[0, 1, 2].where.nonzero?
=> [1, 2]

Isso significa “Me dê o sub-conjunto de [0, 1, 2] onde o ítem seja não-zero”. Sintaxe bem natural, não é? O normal equivalente em Ruby seria:

[0, 1, 2].select {|x| x.nonzero?}

Que é um pouco mais comprido. Quando li o paper, imediatamente pulei para implementar o método ‘select’ em Ruby. Então me lancei para uma tarde de investigação que me levou a algumas conclusões interessantes.

publicado por Tom Moertel em 07/04/06

Uma das coisas que eu sinto falta quando codifico em Ruby são composições baratas de função. Em Haskel, por exemplo, eu posso compor funções usando o operador ponto (.):

inc = (+1)
twice = (*2)
twiceOfInc = twice . inc

publicado por Glenn Vanderburg em 29/03/04

“Faço minhas as palavras do Glenn” (tradução a seguir):

Chad Fowler (via del.icio.us) me guiou a um post interessante à um mailing list. A discussão se virou para closures e objetos, e qual poderia ser considerado “mais rico” ou “mais poderoso” ou “mais fundamental”. Anton van Straazen entrou com um post que eu acho que resume a questão perfeitamente. Vale a pena ler a coisa toda mas o núcleo disso é:

por Neal Ford (ThoughtWorks), do blog Meme Agora
publicado hoje: 05/09

Em meu último post Ruby Matters, eu falei sobre meta-programação em Ruby, dizendo que Ruby lhe dá “lugares para colocar suas coisas”. Eu sempre pensei sobre meta-programação em Smalltalk e como ela se compara com Ruby, e Onde Colocar Coisas em Smalltalk. A peça final do quebra-cabeça veio depois que conversei com Glenn Vanderburg (o Cientista Chefe da Relevance).

Eu estava intrigado de por que o livro do Gang of Four (que tinha exemplos tanto em C++ quanto Smalltalk) não tinha mais meta-programação. Muitos dos design patterns são quase trivialmente fáceis de implementar com meta-programação, mas eles não fizeram isso nos exemplos de Smalltalk. Eles usaram o mesmo caminho estrutural do C++ . Parece mais e mais para mim que o livro de Design Patterns foi realmente apenas uma maneira de resolver problemas em C++ que poderia ser facilmente resolvido em uma linguagem mais poderosa como Smalltalk.

Esta discussão começou neste artigo, continuou nesta resposta e minha contra-resposta está neste comentário. Uma das coisas que mencionei foi a participação de Avi Bryant (o criador do excelente Seaside) na RailsConf 2007, resumido neste artigo de Giles Bowkett.

Eu vejo pouca gente comentando por aqui mas para quem gosta de abstrações, deveriam tentar Markaby. Para que serve? Que tal ‘escrever XHTML em Ruby’. Quem acha que templating tradicional é “feio”, existem opções muito simples e atrativas.

Essa é uma das afirmações mais falaciosas quando queremos criar uma Guerra Religiosa: “Sua linguagem não é 100% orientada-a-objetos, portanto, logo, por conseguinte, a minha é mais forte.” Quantas vezes já não ouvimos isso? Acho que desde que Simula (a primeira orientada a objetos) ou C with Classes (a primeira extenção de classes para C) foram lançados, décadas atrás, ouvimos a mesma coisa.

Ela parte de dois princípios argumentativos igualmente falaciosos:

  1. “Toda boa linguagem é orientada a objetos.”
  2. “A quantidade de funcionalidades OO que uma linguagem suporta é diretamente proporcial à sua capacidade.”

O Ronaldo recentemente fez uma palestra sobre Seaside no TreinaTom. Aconselho todos que não assistiram que baixem a palestra gravada.

Para quem não assistiu:

  • Smalltalk : o pai de todas as plataformas/linguagens orientadas a objeto de hoje. Garbage Collector? Virtual Machine? Byte-code? Introspection? Orientação-a-Objetos? Quem acha que foi Java que inventou isso, deveria mudar de faculdade.
  • Squeak : é uma implementação moderna do Smalltalk. Pense no Rubinius no mundo Ruby, mas vai mais longe que isso.
  • GOODS : Generic Object Oriented Database System. É a camada de banco de dados.
  • Seaside : novo framework web feito em Smalltalk, que utiliza fortemente o conceito de componentes e continuações. Inspirado em outros frameworks como o excelente Apple WebObjects (um dos poucos frameworks Java realmente interessantes).
  • Avi Bryant : criador do framework e de excelentes produtos como DabbleDB, evangelizador feroz de Smalltalk. Ainda não é o equivalente a um Paul Graham (do Lisp) mas está por lá.

Existem várias alternativas para se instalar o pacote completo de Rails (não só o interpretador Ruby como MySQL, Apache, etc). Receitas também existem às dezenas (googlem !). Mas este pacote é muito interessante, com suporte tanto para Linux quanto Mac: é o FiveRuns RB-Install. Baixe um único pacote e tenha a instalação completa de tudo que você precisa, num único passo. Para quem está começando talvez seja a melhor maneira de começar. De uma só vez você baixa e instala o seguinte conjunto de...

publicado por Nick Sieger

Esta semana eu estava trabalhando na integração dos recém-lançados JRuby 1.0.1 e Goldspike 1.3 em nosso ambiente, quando minha frustração alcançou um novo nível.

Segundo pesquisa internacional recente do instituto Evans Data, que entrevistou 400 desenvolvedores, Ruby já é utilizado por mais de 15% de programadores brasileiro e cerca de 33% tem intenção de adotá-la até 2008.

Dentre os países emergentes ainda estamos atrás da China, com 20% de utilização. Mas se essa tendência de crescimento se concretizar, até 2008 teremos proporcionalmente mais Rubystas até do que a China.

O CEO da Evans Data, John Andrews, demonstra otimismo ao crescimento de Ruby no futuro. Pelo visto nossos esforços de vanguarda estão surtindo efeito e, em breve, poderemos finalmente responder àquela famigerada pergunta: “mas ninguém usa Ruby no Brasil”. Bom, agora, oficialmente, usamos!

Parabéns a todos os early-adopters brasileiros!

Noite, madrugada de sábado, bom horário para começar a adiantar o trabalho (ouch, eu sei). Mas tudo bem, acabei de assistir novamente 300. Faz dias que comprei o DVD, só agora re-assisti, mas francamente nada se compara a uma boa sala digital THX como a do Kinoplex (ainda é a única sala THX de São Paulo?). Eu não me canso desse filme.

O trabalho cinematográfico de Zack Snyder é incrível, as câmeras dinâmicas, a fotografia, os efeitos especiais, figurino. Eu não consigo imaginar ninguém melhor do que Gerard Butler como Rei Leônidas. E, obviamente, a história de Frank Miller é impecável e inspiradora como sempre. Eu achava difícil superar o filme Sin City (outro dentre os favoritos da minha dvd-teca), mas 300 realmente ultrapassou todas as expectativas. Como Zack e Frank sempre disseram: isso não é um documentário, é um filme de entretenimento. O grosso da história real está lá, o resto é entretenimento puro.

Jamis Buck acabou de anunciar o lançamento da versão de melhorias 2.1 da novíssima série 2.0 do Capistrano. Acredito que todos já devem ter migrado para o novo Capistrano, que está realmente muito mais refinado.

Para instalar esta versão, é o de sempre:

gem install -s http://gems.rubyonrails.com capistrano

Vou repetir: é um Preview Release. O nome ‘preview’ tem motivos: leiam o artigo do Jamis porque muita coisa mudou e caso vocês não façam a devida lição de casa (cof sandbox cof) podem ser mordidos à toa.

Para quem ainda pretende migrar, aqui vão algumas dicas:

Eu sempre leio os posts de Arun Gupta, do blog Miles to go … (uma das dezenas de blog no meu Google Reader). Ele sempre posta a respeito de JRuby. Hoje ele trouxe alguns pontos importantes de uma entrevista do DHH. Aqui vai a tradução:

Recentemente achei curioso o pessoal da blogosfera trazer o Twitter à tona. Em 15 de abril eu publiquei um post chamado A Polêmica Twitter (que depois deu origem à série de entrevistas internacionais do blog, que foi inaugurado pelo Dr. Nic). Nele eu explico o que foi o fenômeno Twitter e a polêmica em torno da performance sobre Rails (Twitter é feito em Rails, para quem não sabia).


follow AkitaOnRails at http://twitter.com

Eu twitto faz alguns meses, desde que ouvi Leo Laporte (do TWiT.tvno pun intended) e Veronica Belmont (ex-C|NET Buzz out Loud, agora Mahalo), discutindo sobre isso, acho que no ano passado. Houve discussões no mundo dos podcasts entre Twitter vs Jaiku. Houve até uma polêmica em torno de Leo Laporte migrando do Twitter para Jaiku. Depois Kevin Rose (fundador do excelente Digg) anunciou seu próprio social networking ; Pownce (que comecei a usar recentemente).

Fred George é um ex-IBM, é programador há quase 40 anos e está na área desde antes da IBM criar o processo Waterfall (que ele enfatiza e eu concordo: funciona). Em seu blog Process, People, and Pods ele discute as vantagens dos métodos Ágeis do ponto de vista de alguém que realmente passou por todos os processos e tem experiência suficiente para discutí-las. Este último post seu eu achei particularmente engraçado. Então, aqui vai mais uma tradução:

Está lá, Você vê. Você tem essa urgência incontrolável de contar. É uma obrigação moral, uma chamada à guerra; sua missão pessoal.

Me refiro à contagem e medição de artefatos. Estou falando de gerentes de projeto e líderes de equipe, e algumas vezes programadores, testadores e analistas.

E se você parar um instante e pensar sobre isso, é uma grande perda de tempo. Uma filosofia melhor:

“Nunca conte seu dinheiro enquanto estiver sentado à mesa. Haverá tempo suficiente para contar quando o negócio estiver feito.” – Kenny Rogers, de The Gambler