[Off-Topic] Penn & Teller e Larry Flynt, sobre Liberdade

on March 07, 2010

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:

Limpando meu Ambiente de Desenvolvimento - Parte 2 - Homebrew

on February 27, 2010

Recentemente escrevi um artigo sobre como arrumei meu ambiente Ruby usando RVM. Desta vez quero falar sobre outros aplicativos open source como mysql, postgresql e mais.

Infelizmente, um dos grandes pontos fracos do Mac é a ausência de uma ferramenta oficial e robusta de gerenciamento de pacotes para software open source, algo como o Yum (Fedora, CentOS) ou Apt (Debian, Ubuntu). No mundo Mac temos duas ferramentas mais conhecidas, o Fink e o Macports. O Fink é baseado no Apt e pacotes Deb, é o que tem a maior quantidade de pacotes (mais de 10k), mas na minha experiência ele costuma não ter pacotes atualizados com muita frequência. O Macports é meio semi-oficial e é inspirado no Ports do BSD, tem menos pacotes mas os principais parecem mais atualizados.

O Fink instala seus pacotes normalmente no diretório /sw e o Macports no /opt/local. Uma coisa irritante sobre eles é que, como não são oficiais, eles criam um ambiente completamente separado. E o gerenciamento de dependência deles significa que, por exemplo, se um pacote depende do Python, ele não vai usar o Python já pré-instalado no sistema, mas vai instalar uma nova versão no diretório separado. Na maior parte do tempo eles até funcionam razoavelmente bem, até que alguma coisa começa a falhar e aí é um pesadelo. O Macports é o mais chato porque ele compila tudo a partir do código-fonte, incluindo todas as dependências, incluindo recompilar software que já existe no seu Mac.

No caso do MacPorts, ele compila tudo a partir do código-fonte, incluindo diversas dependências que você já tem instalado no Mac. Portanto ele gasta muito tempo duplicando as coisas. Softwares como ImageMagick e Git demoram bastante tempo para instalar. Para atualizar pacotes então, sempre é uma caixa de surpresas.

From Solo to Full Chef

on February 21, 2010

Yesterday I wrote about my exercises with Chef Solo. I’ve spent several hours experimenting different cookbooks, writing my own recipes, tweaking attributes, reverting snapshots of my virtual machine several times to execute everything again. That got me pretty excited as I was getting more and more confortable.

So, as the Solo exercise was great I decided to try the full blown client-server model. And, to my surprise, it was easier than I expected.

Cooking Solo with Chef

on February 20, 2010

Last year I interviewed Adam Jacob, from Opscode about Chef. Chef is a configuration management tool, which does something similar to what Puppet and CFEngine provides. Check out the interview to have a better idea about it.

One thing that I like about Chef is its Chef Solo setup. It makes it easy for me to have a single server, such as a VPS (virtual machine) and set it up the same way everytime. So I did an exercise and installed a bare bone Debian server into a Parallels Desktop virtual machine. I want to configure it to the point where it can receive a simple MySQL based Rails app and run it under Phusion Passenger for Nginx.

[Off-Topic] Wake up Call

on February 14, 2010

Esta semana assisti ao excelente filme Up in the Air (recomendo). Eu me identifico muito com a forma de pensar do personagem Ryan Bingham, mas o artigo não é sobre isso. Esse filme conta a história de um profissional do ramo de “recolocação profissional” (eufemismo para “cara que demite”). A idéia do filme não é ser uma lição de moral ou coisa assim, mas tem um trecho que vale a pena compartilhar:

Todo mundo sabe que eu evito auto-ajudas, mas de vez em quando acho que não é tão ruim ;-) Uma coisa que eu sempre digo para quase todos que já trabalharam comigo em anos recentes: empregos não são vitalícios, você nunca sabe onde estará amanhã e jamais deve assumir que estará no mesmo lugar. Enquanto está num emprego deve sim fazer todo o possível para realizar o melhor trabalho possível, mesmo que muitas vezes isso signifique varar noites, trabalhar extra e suportar grandes responsabilidades.

Até o limite do que é tolerável e não signique abuso. Mas lembrando que, a menos que você seja o dono da empresa, sócio ou um bom acionista, esse limite deve ser bem curto. Se você ganha R$ 40 mil/ano ou R$ 250 mil/ano, não faz diferença. O resultado que é sempre o mesmo é: quanto mais tempo você ficar no mesmo lugar, fazendo a mesma coisa, menos você vale. Só existe uma pessoa a quem você deve lealdade cega: você mesmo.

O mais importante: qual é o seu objetivo? Por que você está fazendo o que está fazendo? O que você está fazendo hoje contribui para o objetivo que quer atingir? E se não, por que continua fazendo isso? “Mas eu não tenho nenhum objetivo em particular …” – Bem, encontre um.

Deploy com Git Push

on February 13, 2010

Até hoje eu usava o Capistrano para fazer o deployment de modificações no código do meu blog. Mas resolvi fazer algo mais simples: usar hooks de git. É uma técnica já bem conhecida e muito simples, por isso acho que vale algumas dicas.

Minha configuração é bem simples: o repositório git fica no mesmo servidor do site. Para criar um repositório privado de Git não é necessário muita coisa, basta que seu servidor seja acessível via SSH. Crie um par de chaves na sua máquina e coloque a chave pública no authorized_keys do servidor.

Anotações de Lançamento Ruby on Rails 3.0 (Beta)

on February 05, 2010

Upgrade 05/02: o Rails 3 Beta está oficialmente lançado! Leia o post do DHH e a restrospectiva do Yehuda. Agora já dá para instalar via gems:

1
2
3
gem uninstall bundler # => precisa desinstalar os bundlers abaixo da versão 0.9.2
gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
gem install rails --pre

Upgrade 04/02: o David atualizou as anotações. Acabei de retraduzir o principal.

O Rails 3.0 é pôneis e arco-iris! Ele vai te cozinhar o jantar e lavar sua roupa. Você vai se perguntar como era possível viver antes dele chegar. É a Melhor Versão do Rails Já Feito!

Mas falando sério, é realmente coisa boa. Estão todas as boas idéias trazidas quando a equipe do Merb se juntou à festa e trouxe um foco de agnosticismo de frameworks, partes internas mais leves e rápidas, e várias ótimas APIs. Se você está vindo para o Rails 3.0 a partir do Merb 1.x, vai reconhecer muito disso. Se você está vindo do Rails 2.x, vai adorar também.

Mesmo que você não dê a mínima para nada disso das limpezas internas, Rails 3.0 vai agradar. Temos várias novas funcionalidades e APIs melhoradas. Nunca houve um momento melhor para ser um desenvolvedor Rails. Algumas das coisas principais são:

  • Novo roteador com ênfase em declarações RESTful
  • Nova API de Action Mailer modelada com base no Action Controller (e agora sem a parte agonizante para enviar mensagens multipart!)
  • Nova linguagem de query encadeável para Active Record construída sobre Álgebra Relacional
  • Helpers para Javascript Não-Obstrusivo com drivers para Prototype, jQuery e mais chegando (é o fim do JS inline)
  • Gerenciamento explícito de dependências com Bundler

Em cima disso tudo tentamos nosso melhor para deprecar as APIs antigas com avisos. Isso significa que você pode mover sua aplicação existente para Rails 3 sem imediatamente reescrever todo seu código antigo para as últimas boas práticas.

Estas anotações de lançamento cobre todas as principais atualizações, mas não incluem cada uma das pequenas correções de bug e mudanças. Rails 3.0 consiste de quase 4 mil commits por mais de 250 autores! Se quiser ver tudo, veja a Lista de Commits no repositório principal do Rails no Github.

[Off-Topic] Lendo os Princípios Ágeis

on January 30, 2010

O Manifesto Ágil é calcado em 4 valores. Não sei quantas eu já repeti isso. Mais do que isso ele é calcado em 12 princípios importantes. Muitos os consideram como os 10 mandamentos. Eu sempre sou contra qualquer coisa dogmatizada, por outro lado se você prefere dogmatizar o Manifesto, nunca pegue apenas uma frase dele em isolado. Se for levar um deles ao pé-da-letra, leve todos ao pé-da-letra, senão seria o mesmo que dogmatizar os 10 mandamentos e dizer “Eu obedeço os 10 mandamentos: eu já cometi adultério, mas não tem importância porque nunca matei ninguém, nunca roubei e não foi com a mulher do vizinho que cometi adultério.”

[Off-Topic] Críticas ao iPad

on January 30, 2010

No dia 27 de Janeiro, a Apple finalmente anunciou o lançamento do seu iPad. Como muitos já descreveram, é basicamente um iPhone com tela 4 vezes maior :-) Não vou repetir o que todo website já descreveu sobre suas funcionalidades. Recomendo muito que se assista o vídeo do keynote para entender melhor do que se trata.

Porém, muitas críticas já apareceram. Gostaria de discutir algumas delas pelo meu ponto de vista :-) Mas não as considere como “certo” ou “errado”, mas como uma forma de raciocinar o possível “por que” de algumas das decisões. Pode parecer mais estranho considerando o artigo que acabei de escrever, mas a idéia não é justificar porque o iPad vai revolucionar o mercado ou coisa parecida, apenas elocubrar sobre algumas características do produto.

[Off-Topic] Empresas, Pessoas, Sucesso

on January 30, 2010

Adoro o vídeo Wear Sunscreen, acho que eu vi pela primeira vez em 2003 ou 2004 e ela ficou para mim como um “aviso”, algo a se lembrar de vez em quando. As partes que mais gosto são:

“Tenha cuidado com quais conselhos você aceita, mas seja paciente com quem lhes dá conselhos. Conselho é uma forma de nostalgia, distribuí-lo é uma forma de pescar o passado do lixo, limpá-lo, pintar sobre as partes feias e reciclá-lo por mais do que vale.”

Outra parte importante:

“Talvez você se case, talvez não, talvez você tenha filhos, talvez não, talvez você se divorcie aos 40, talvez você dance a dança da galinha no seu 75o aniversário de casamento. Não importa o que faça, não se parabenize demais ou se critique demais. Suas chances são de 50%, assim como as de todo mundo.”
Recommend me at Working with Rails
Info Online Blogs: Gestão 2.0
Peepcode Supports AkitaOnRails.com
Leia a tradução do livro Getting Real