Ano passado tivemos 3 bons projetos de estudantes financiados pelo venerado Google Summer of Code. Graças a isso o Rails 3 saiu mais forte com contribuições como do José Valim (brasileiro que agora integra a equipe Rails Core) com os novos generators e Emilio Tagua que integrou o projeto Arel ao Rails. Este ano, vários projetos foram inscritos mas nenhum foi aprovado pelo Google, o que significa que este ano não haverá um único projeto de Ruby no Summer of Code do Google. Altamente questionáv...

Faz 1 ano que eu publiquei sobre o suporte a Java no Google App Engine (GAE) pela primeira vez.

A primeira plataforma suportada no GAE foi Python, por motivos óbvios, mas a coisa mais significativa foi de longe terem colocado suporte a Java. A tendência hoje é aproveitar a robustez e maturidade da Java Virtual Machine (JVM), substituindo a linguagem Java por outras mais modernas, que incluem também Python (via Jython), Scala, Clojure, Groovy, Javascript (via Rhino) e, claro, Ruby, via JRuby, uma das linguagens dinâmicas sobre a JVM mais madura de todas. Para saber o que funciona de Java sobre o GAE, leia o artigo Will it Play in App Engine.

De lá para cá o suporte do JRuby cresceu. Dentro do próprio Google temos um rubista evangelizando o uso de Ruby sobre o GAE, este é John Woodell. Acompanhe seu blog JRuby on App Engine para novidades. Além disso temos um projeto chamado appengine-jruby, que trás uma série de bibliotecas e ferramentas para tornar fácil desenvolver, empacotar e fazer deployment de aplicações JRuby para o GAE.

Acho que todos já devem ter pelo menos ouvido falar de CoffeeScript e já devem ter lido o artigo do Dr Nic ensinando como integrar num projeto Rails. Para não repetir o que ele já disse, eu criei uma pequena aplicação de demonstração usando o que o Dr Nic ensinou: a gem Bistro Car, uma rake task que gera o arquivo javascript estático para ser gerado antes de um deploy (por exemplo, no Heroku, que não tem CoffeeScript no servidor). Leia o artigo dele para entender.

Parece que temos uma pequena tendência aqui: escrever HTML correto às vezes pode ser tedioso. Eu particularmente gosto do HAML para criar código limpo, enxuto e expressivo. Para CSS temos o SASS que faz a mesma coisa e permite coisas legais como criar variáveis e fazer aritmética de cores e tamanhos.

O conhecimento mais trivial hoje em dia quando se fala em conexões e servidores é em 1 conexão por thread (Java, .NET) ou processo (Ruby, Python, Perl, etc). A forma de “escalar” isso é aumentar verticalmente a máquina (aumentando a capacidade possível de threads e processos), depois aumentar horizontalmente (colocando mais máquinas iguais às anteriores com um balanceador de carga na frente). Porém, em casos mais extremos isso já não é suficiente. O que fazer?

Desde meu último artigo sobre o Cramp, ando interessado em Evented I/O, Reactors. Tenho que dizer que ainda sou um iniciante nesse assunto. Até por bobeira na verdade porque o assunto já caiu no meu colo algumas vezes pelo menos desde que o Java iniciou com New I/O ainda no Java 1.4, ou seja, desde 2002.

Recapitulando (me corrijam se eu estiver errado). No mundo Unix/POSIX uma forma de fazer isso é usando select e pselect, que permite monitorar múltiplos descritores de arquivos, esperando até que um deles fique “pronto” para alguma operação de I/O. Outra forma é usando poll, que é similar mas até algum tempo atrás era menos portável que select, mas hoje parece ser mais usado.

Pra variar resolvi me exercitar um pouco com JRuby. Na falta do que fazer, procurei pelo bom e velho exemplo canônico de uma aplicação Swing: uma Calculadora. O exercício foi converter o código Java ipsis-literis para Ruby. No caminho eu aproveitei e fiz algumas otimizações mínimas para tornar o código mais próximo de Ruby em vez de Java. No final, a aplicação ficou idêntica à versão original, pois usa os mesmos códigos. Instalem o JRuby e baixe o demo:1 2 3 4 5 6

git clone git://github.co...

Uma coisa que era defasada no Git até então era seu suporte a HTTP. Para quem não sabe, um repositório remoto de Git é nada mais nada menos do que um diretório num servidor acessível via SSH. Para criar um novo repositório apenas faça isso no seu servidor:

1
2
3
mkdir meu_projeto.git
cd meu_projeto.git
git init --bare

Agora você pode clonar e dar pushes desta forma:

1
git clone meu_usuario@meu_servidor:meu_projeto.git

É exatamente a mesma sintaxe se você fosse usar SSH ou SCP e ele vai se conectar via a porta padrão 22. Porém, muitas pessoas estão limitadas apenas à porta 80 ou 443 (HTTP e HTTPS). Antigamente, quando eu usava Subversion, uma funcionalidade importante era o suporte a WebDAV. Apesar de eu pessoalmente não gostar de DAV, pelo menos havia a opção.

O Git até vem com um suporte primitivo a HTTP, que é inclusive chamado de Protocolo Idiota porque você nem precisa ter git instalado no servidor. Ele simplesmente procura o arquivo info/refs do seu projeto e vai puxando pacote a pacote via o nome SHA1 dele. Se precisar puxar apenas um arquivo dentro de um pack, não dá. É um processo lento e limitado, inclusive só pode ser read-only.

Since June of 2008, it’s been almost 2 years since I joined Locaweb, a Brazilian web hosting company. I first approached them with the intention of having them sponsor a Rails event. From there they invited me to sign in. The very first thing we did together was delivering the first big Latin American Ruby on Rails conference which became Rails Summit. Then I helped to increase their entrance in the Brazilian development communities, and also to implement Rails support on their Linux shared h...

Hoje finalmente migrei todos os comentários do meu blog para o Disqus. Não foi um processo difícil, mas gastei mais tempo do que eu gostaria procurando informações e documentação. O processo consiste de três partes:

  • Criar uma conta no Discus e configurá-lo para seu site (essa é a parte fácil)
  • Alterar o código do seu blog para que no final do seu post ele faça embed do Disqus (não é tão complicado)
  • Migrar todos os comentários antigos do seu blog para o Disqus (isso deu mais trabalho)

Configurar uma conta no Disqus é simples. Você vai configurar se quer que os comentários sejam moderados, com quais redes sociais quer se integrar e assim por diante. Recomendo gastar um tempo no configurador para se familiarizar com as opções.

Estava assistindo o canal FX ontem e por acaso esbarrei numa reprise do excelente show Penn & Teller, Bullshit!. Eles são mágicos famosos que se apresentam em Las Vegas, já apareceram em diversos programas de TV e tem se próprio programa, o Bullshit!, que discute política, disputa o status quo, quebra falácias e folclores populares. Nesse episódio eles terminaram com um truque de mágica, queimando a bandeira americana e falando sobre Liberdade de Expressão. Assistam este trecho antes de continuar: