No ano passado trabalhei na Globo.com, e lá tive algumas oportunidades de trabalhar com Scrum (aliás, para quem ainda não leu, recomendo o post do Guilherme Chapiewski sobre a adoção de Scrum na Globo.com). Eu pretendia escrever sobre isso há algum tempo, mas a procrastinação me impedia de transformar um rascunho antigo neste post.

Quando cheguei na empresa, eu não sabia nada sobre Scrum, e fiquei muito curioso ao ver que, em determinado horário, todos os dias, todos os membros de algumas equipes levantavam-se, reuniam-se (em pé!) em torno de um cartaz na parede com vários post-its, e, após 15 minutos, todos retornavam às suas atividades normais. Comecei a observar e estudar o assunto, e aos poucos fui percebendo a simplicidade desta metodologia: tudo o que não for realmente necessário não deve ser feito. Acredito que isto seja um dos principais elementos do Scrum, pois ajuda a manter o foco naquilo que é realmente importante.

Outro ponto importantíssimo, e que é o assunto principal deste post, é o comprometimento. Para que o Scrum realmente funcione, é necessário que o time esteja comprometido com o projeto.

Num dos projetos em que trabalhei com Scrum, o Scrum Master era o Guilherme Chapiewski e o Product Owner, inicialmente, era o Antônio Carlos Silveira. Porém, por falta de tempo disponível para dedicar-se ao projeto, o Antônio saiu do time, repassando o papel de PO para outra pessoa. De todo o time, incluindo o SM e o PO, eu era o único que não estava envolvido em outro projeto. O GC, por exemplo, trabalhava em um outro projeto que era muito maior e mais importante que este, que, consequentemente, tinha baixa prioridade. Desta forma, começamos a passar pelos seguintes problemas:

  • nos Daily Meetings geralmente eu tinha concluído a minha tarefa, e muitas vezes até adiantado alguma outra, enquanto os demais membros do time não tinham nem iniciado as suas, pois estavam muito ocupados com seus outros projetos, e já sabiam que não poderiam iniciá-las nos próximos 2 ou 3 dias;
  • após algumas semanas, começamos a não conseguir mais realizar o Daily Meeting todos os dias, pois não conseguíamos 15 minutos livres de todos os membros do time simultaneamente.

Quando isso começou a acontecer com mais frequencia, começamos, na prática, a parar de usar Scrum, pois já não havia mais comprometimento. Como o Bruno Carvalho já escreveu, Daily Meeting é comprometimento. Não estou dizendo que o time estava desestimulado ou não queria se dedicar ao projeto. Pelo contrário, todos achavam o projeto bem interessante, porém não conseguiam se comprometer a ele, exatamente por estarem comprometidos com outro.

A solução encontrada pelo GC foi pararmos de usar Scrum neste projeto, pois tornou-se impossível praticar Scrum sem que todos os membros estivessem comprometidos. Continuamos a utilizar algumas das práticas do Scrum, como o Planning e o Review, mas na verdade não era Scrum.

A lição que tirei daí foi que é importantíssimo ter um time comprometido com um projeto para que o Scrum realmente aconteça, e que, sem isso, fica muito difícil utilizá-lo na prática. Até acredito que seja possível trabalhar em dois projetos simultâneos com Scrum, mas com certeza exigiria uma grande disciplina para conseguir dividir igualmente o tempo entre os dois, sem deixar de comprometer-se com um ou outro.


Há muito tempo o OpenOffice oferece uma opção para exportação de documentos para o formato PDF. Apesar de ser muito útil, falta uma opção para importar esse formato para edição. Faltava! A extensão PDF Import Extension da Sun faz exatamente isso: arquivos PDF podem ser importados e editados no OpenOffice Draw.

Apesar de a extensão estar em versão beta, fiz alguns testes e funcionou muito bem (apesar de alguns comentários de usuários com problemas na página da extensão). Achei a importação dos arquivos um pouco lenta, conforme alguns testes que eu fiz:

  • Arquivo com 18 páginas (300 kB) =~ 10 segundos
  • Arquivo com 209 páginas (6,28 MB) =~ 2 minutos
  • Arquivo com 322 páginas (1,15 MB) =~ 3 minutos

Num dos arquivos, uma página que continha muitos gráficos não foi importada adequadamente, mas foi o único problema que tive.

A opção salvar utiliza o formato ODF Drawing (.odg). Para salvar novamente como PDF, é necessário utilizar a tradicional opção de exportação para este formato. Porém, percebi que num dos testes a fonte ficou um pouquinho diferente da original. Mas, mesmo assim, a exportação foi de boa qualidade.

Referência sobre o assunto (incluindo uma descrição passo-a-passo da instalação): Modificando PDF no OpenOffice.org 3.0.


O Google se tornou, há muito tempo, a ferramenta padrão para qualquer desenvolvedor procurar ajuda para resolver os problemas que encontra. Porém, os resultados retornados nem sempre são satisfatórios e confiáveis. O objetivo do Custom Ruby on Rails search engine é resolver este tipo de problema: ele filtra os resultados de uma busca no Google para exibir somente os resultados que vêm de uma lista específica de sites que o autor considera como confiáveis - além de links “oficiais”, como o site oficial do Rails, o wiki do Rails, o Ruby Forum e a API do Rails, alguns dos blogs mais conhecidos. O autor também aceita sugestões de sites para incluir nos resultados.

A ferramenta pode ser utilizada através do link direto ou através de um bookmarklet, conforme descrito no blog.


Recentemente escrevi um post listando as extensões do Firefox para desenvolvedores web que eu recomendo. Outro dia, achei que o meu Firefox estava ficando muito lento. Quando fui verificar, percebi que eu tinha cerca de 30 extensões instaladas! Obviamente, quanto mais extensões instaladas, mais memória o browser utilizará.

Uma dica útil para quem deseja utilizar muitas extensões, mas não tem necessidade de utilizar todas no mesmo momento, é utilizar diferentes perfis. Em cada perfil, você pode instalar extensões diferentes, ou alterar as configurações do browser e instalar temas. Ao executar o Firefox, você pode selecionar o perfil desejado. Para isso, utilize o Profile Manager. Basta executar o Firefox com a seguinte linha de comando:

firefox -profilemanager

Fazendo isto, aparecerá uma janela como a seguinte:

Profile Manager

Nesta janela, aparecerão todos os perfis existentes, e você pode selecionar o que deseja utilizar. Também é possível criar, renomear e excluir perfis. Desmarcando a opção “Don’t ask at startup”, esta tela do Profile Manager será exibida sempre que o Firefox for executado.

Caso você queira carregar um perfil que já existe em outro diretório, basta criar um novo perfil e selecionar o diretório correspondente. Se o perfil já existir, ele será somente adicionado à lista. Na opção excluir perfil, você pode escolher se deseja realmente excluir os arquivos e diretórios ou somente remover o perfil da lista.

Outra opção de linha de comando bastante útil é o Safe Mode. Caso o Firefox comece a ficar instável após a instalação de alguma extensão, basta executar:

firefox -safe-mode

No Safe Mode, todas as extensões, temas e demais customizações são desabilitadas, permitindo a desinstalação da extensão problemática, se for o caso. Além disso, é possível fazer algumas alterações permanentes, como resetar as preferências e bookmarks de usuários e desabilitar as extensões.

Firefox Safe Mode

Para fazer backup de um perfil, existem várias extensões disponíveis. A que achei mais interessante é o FEBE. Esta extensão permite selecionar especificamente quais itens do perfil você deseja incluir no backup (extensões, temas, bookmarks, configurações, cookies, histórico e outras opções), executar o backup manualmente ou agendar para execução diária, semanal ou mensal, verificar os backups anteriores e outras opções. A opção de restauração de um backup também é seletiva: você pode restaurar somente os itens que desejar ou o perfil completo.

Mais informações sobre o backup de perfis usando o FEBE: Export your Firefox 3.0 full profile to Firefox 3.1 (including all addons, themes, cookies, passwords, etc).

Outra opção para backup de perfis é o Profile Manager and Synchronizer, que ainda é experimental. Não testei esta extensão, mas pela descrição ela não parece ter tantas opções quanto o FEBE, apesar de ter recursos interessantes para sincronizar perfis em diferentes máquinas.

UPDATE: Outro recurso interessante é o parâmetro -no-remote, que permite a execução de duas instâncias do Firefox com perfis diferentes. Basta executar o Firefox com a seguinte linha de comando:

firefox -P profile -no-remote

Onde -P é a forma reduzida do parâmetro -profilemanager e profile é o nome do perfil desejado, conforme aparece no Profile Manager. Este perfil não pode ser o padrão. Para abrir a tela do Profile Manager, basta deixar o nome do perfil em branco:

firefox -P -no-remote

Mais informações:

Obrigado ao Tóin pelas dicas.


Recentemente, a equipe de desenvolvimento do Rails, que vem trabalhando na versão 3 do framework, divulgou o merge do Rails com o Merb, outro framework Ruby bastante interessante, que até há pouco tempo, era visto como concorrente do Rails. A fusão já deve ocorrer na versão 3 do Rails. Muitos comentários que eu tenho lido sobre esta notícia foram bastante positivos, já que deve conciliar as melhores características de cada um.

Para mais detalhes, seguem alguns links sobre o assunto:

Aproveitando o assunto, começa na próxima semana um curso online de Merb do Satish Talim. Fiz o curso de Ruby dele e achei muito bom, acredito que este também seja.