terça-feira, 29 de novembro de 2011

O que é melhor: liberações frequentes ou liberações maduras?

Hoje li um artigo falando à respeito da prática conhecida como "release early, release often". Nele o autor tentava expor as diferenças entre fazer liberações frequentes e fazer apenas liberações "maduras". Segundo ele, com liberações frequentes normalmente a versão inicial tem vários bugs, que são corrigidos à cada versão até chegar ao ponto onde tudo funciona corretamente. Por outro lado, se a prática escolhida é de apenas liberar releases maduros, são feitos poucos releases e neles o software deve estar totalmente livre de bugs.

Agora eu pergunto: o que você acha melhor, liberações frequentes ou liberações maduras?

Bem, será que as duas formas realmente são mutuamente exclusivas? Não podemos ter as duas ao mesmo tempo? Eu acredito que sim!

Para mim, liberações frequentes não significa liberar funcionalidades com bugs e deixar pra corrigir mais tarde, todo o release deve estar livre de bugs. A qualidade do software deve ser ponto indiscutível. O que muda é a quantidade de funcionalidades e não a qualidade delas.

A grande vantagem dos releases frequentes é ter um feedback o mais cedo possível do usuário. Quanto antes o usuário puder usar o software, ver se ele está adequado à realidade e dar o feedback, melhor. Um detalhe importante é que, o fato das funcionalidades estarem livres de bug não significa que elas necessariamente precisam estar "completas". E, por "completas" eu me refiro a "atender todas as necessidades possíveis e imagináveis". O mais importante é disponibilizar o quanto antes a parte principal da funcionalidade, obter o feedback e à partir dele ir expandindo o software.

Em resumo, pra mim o que melhor funciona é: liberar frequentemente, mesmo que a funcionalidade não esteja cobrindo todas as possibilidades, e obter o feedback o mais cedo possível. Sem que para isso a qualidade do software seja comprometida.

quarta-feira, 5 de outubro de 2011

Steve Jobs: o gênio do nosso tempo

Como todos já devem saber, hoje faleceu Steve Jobs.

Para definir Steve Jobs, só conheço uma palavra: GÊNIO. Copiando um artigo que vi a pouco tempo atrás, podemos verificar a definição de gênio.

Na Wikipedia diz o seguinte:
“Genius is something or someone embodying exceptional intellectual ability, creativity, or originality, typically to a degree that is associated with the achievement of unprecedented insight.” 
 Vejamos, dos itens acima, quais o Steve Jobs tinha?
  • Habilidade intelectual excepcional - Sim!
  • Criatividade - Sim!
  • Originalidade - Sim!
Agora, vejamos a definição de gênio para Immanuel Kant:
“Genius is a talent for producing something for which no determinate rule can be given, not a predisposition consisting of a skill for something that can be learned by following some rule or other.”
E, para Arthur Schopenhauer:
“Talent hits a target no one else can hit; Genius hits a target no one else can see.”

Em qualquer definição possível para a palavra gênio, Steve Jobs se encaixa perfeitamente!

Para quem ainda não viu, recomendo assistir o discurso que Steve fez na Universidade de Stanford em 2005. Altamente inspirador!




segunda-feira, 3 de outubro de 2011

Tutorial - Instalando o RVM no Ubuntu 11.04

Nesse rápido tutorial vou mostrar como instalar o RVM no Ubuntu 11.04. Esses passos devem servir para outras distribuições Linux, mas não testei.

Para quem não conhece, o RVM é um utilitário que permite que mais de uma versão do Ruby seja instalada na mesma máquina. Com ele é possível configurar cada projeto para usar uma versão diferente do Ruby.

A instalação do RVM não tem muito segredo, mas sempre tem algum detalhe que esqueço, por isso resolvi deixar aqui anotado o passo-a-passo. As informações aqui apresentadas retirei do guia oficial de instalação do RVM. Sugiro verificar esse link para informações sempre atualizadas.

Instalando

Antes de instalar o RVM é necessário ter alguns pacotes que por padrão não estão instalados no Ubuntu. Para obter esses pacotes, execute o comando abaixo:
sudo apt-get install git git-core curl

A seguir, instale o RVM executando os seguintes comandos:
bash < < (curl -s https://rvm.beginrescueend.com/install/rvm)

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

source .bash_profile

Com isso feito, você pode executar o comando "rvm requirements" para listar as bibliotecas necessárias para executar cada versão do Ruby. Caso você deseje executar o Ruby MRI, instale as bibliotecas executando o comando abaixo:
sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison


Por fim, deve-se instalar a versão do Ruby desejada. Para instalar a versão 1.9.2 do Ruby MRI, execute o comando abaixo:
rvm install 1.9.2


Com isso a instalação do RVM está concluída.

Usando

Apenas para fins de exemplo, abaixo estão os comandos utilizados para criar uma nova aplicação Rails usando o RVM.

Primeiro, defina a gemset a ser usada. O comando abaixo cria uma gemset usando o Ruby 1.9.2 para o projeto "teste":
rvm use 1.9.2@teste --create


Instale o Rails:
gem install rails


Crie a aplicação:
rails new teste


E, por fim, dentro do diretório da aplicação, crie o arquivo .rvmrc:
cd teste
rvm use 1.9.2@teste --rvmrc


O arquivo .rvmrc é usado pelo RVM para carregar a gemset utilizada no seu projeto. Para que o arquivo seja detectado, execute o comando abaixo e confirme a mensagem que será exibida.
cd .

Finalizando

Os comandos apresentados aqui funcionam no Ubuntu 11.04, porém, eles também devem funcionar em outras versões do Linux. Para informações atualizadas, sugiro verificar o guia oficial de instalação do RVM.

segunda-feira, 26 de setembro de 2011

Dica: instalando gems no Ubuntu ao usar o RVM

Essa é uma dica rápida para um problema que me deparei ao utilizar o Ruby on Rails no Ubuntu 11.04.

Ao tentar instalar alguma gem (e.g. gem install bundler) você pode receber o erro abaixo. Pelo que percebi, esse erro ocorre apenas ao utilizar o RVM.
ERROR:  Loading command: install (LoadError)    no such file to load -- zlibERROR:  While executing gem ... (NameError)    uninitialized constant Gem::Commands::InstallCommand

Corrigir esse erro é bastante simples, basta instalar a biblioteca zlib e reinstalar a versão do Ruby que está instalada na RVM.

Para instalar a biblioteca zlib execute o comando abaixo:
rvm pkg install zlib

Para reinstalar a versão do Ruby instalada na RVM use os seguintes comandos:
rvm remove 1.9.2rvm install 1.9.2

Lembrando que a versão do Ruby pode ser diferente da exibida no comando acima (1.9.2). Para verificar qual a versão, utilize o comando "rvm list".

Com isso, você já pode prosseguir com a instalação das gems! Mais detalhes você encontra no StackOverflow, que foi onde encontrei essa solução.

sexta-feira, 7 de janeiro de 2011

O backup do Windows é muito ruim

A quase um ano escrevi a respeito da estratégia de backup que uso no meu micro pessoal. Recomendo que você leia aquele artigo antes de continuar. Até o momento não tive nenhum problema com as ferramentas que utilizo, a não ser uma: a ferramenta de backup do próprio Windows 7.

Ao escrever esse artigo pensei em um título, mas a única coisa que não saia da minha cabeça era: “o backup do Windows é muito ruim”. Verdade, é muito ruim! Acho melhor copiar os arquivos manualmente que depender dele.

Não vou ficar aqui reclamando do Windows, mas em resumo, alguns dos problemas que tive foi incompatibilidade com o “backup contínuo” do IDrive, que não funcionava quando o backup do Windows estava ativo. Além disso, em certas ocasiões o Windows não detectava o HD contendo o backup, mostrando apenas uma mensagem de erro super genérica, com um código que nada ajudava.

A nova ferramenta de backup

No lugar do backup do Windows procurei uma ferramenta que simplesmente copiasse os arquivos e pastas escolhidos para o HD de backup, sem compactação, e sem fazer mais nada. Assim, poderia restaurar os arquivos manualmente sem depender do programa em caso de uma emergência.

Há vários programas desse tipo, o que escolhi foi o GFI Backup Home Edition. Escolhi esse programa por ser simples, gratuito e tem tudo o que preciso.
backup
O funcionamento dele é muito simples, basta criar uma tarefa de backup, onde são configuradas as pastas que devem ser incluídas no backup, o local onde o backup será gravado, a periodicidade do backup (diário, semanal…) e algumas opções a mais se necessário.

No site do produto tem maiores informações: GFI Backup Home Edition.

O IMPORTANTE NÃO É O BACKUP, MAS SIM A RECUPERAÇÃO

Essa frase temos que repetir sempre: o importante não é o backup, mas sim a recuperação.

Independente da forma escolhida para se fazer o backup, tenha certeza que você vai conseguir restaurar os arquivos!!