24. 04.
Há poucos dias foram lançadas as versões para download e impressa do livro Aprendendo Django no Planeta Terra, de Marinho Brandão. Mais do que um livro sobre Django, a iniciativa é fonte de inspiração e prova de que é possível contribuir com a comunidade de software livre de maneira efetiva quando existe boa vontade e disposição para trabalhar duro. O livro pode ser adquirido por meio do serviço Lulu.com. Para mais informações, visite a página do anúncio oficial.
Leia também
9. 01.
Não posso deixar de divulgar essa apresentação que descobri enquanto procurava por livros de Javascript para referenciar em umas aulas que estou preparando. São cerca de duas horas de vídeo que valem cada minuto, sobretudo quando lembramos que, até bem pouco tempo, a oportunidade de ver e ouvir um palestrante como Douglas Crockford (arquiteto de JavaScript do Yahoo!) custaria muito caro.
A palestra tem um tom introdutório, mas é abrangente o suficiente para que até mesmo que já usa a linguagem com certa frequência no dia-a-dia possa tirar proveito de informações sobre alguns detalhes que às vezes passam despercebidos.
Douglas Crockford: The JavaScript Programming Language (1 de 4)
Douglas Crockford: The JavaScript Programming Language (2 de 4)
Douglas Crockford: The JavaScript Programming Language (3 de 4)
Douglas Crockford: The JavaScript Programming Language (4 de 4)
Leia também
9. 12.
Hoje o Google lançou mais uma novidade no seu Gmail Labs. O aplicativo Tasks permite que o usuário organize suas listas de tarefas sem precisar sair do Gmail. As funcionalidades são muito semelhantes às do plugin do Remember The Milk para o Gmail. Certamente o pessoal de Mountain View deve ter percebido a qualidade da solução do concorrente e correu atrás do prejuízo.
Comecei a testar o Tasks hoje, depois de quase um ano utilizando o plugin do RTM diariamente. A princípio, a diferença mais significativa é a economia do espaço na tela. A lista de tarefas se sobrepõe ao Gmail da mesma forma que as conversas do GTalk. No RTM, ou o usuário escondia a visualização das tarefas, ou ela “roubava” uma boa parte do espaço da página.
Para quem aprecia o GTD “clássico”, a abordagem do RTM ainda é mais recomendada. Quem não se importa em trocar funcionalidades mais poderosas por múltiplas listas simples de tarefas hierarquizadas, pode encontrar na solução do Google uma alternativa bem interessante.
Leia também
5. 09.
Contextualizando…
Hoje recebi um email de Swaroop C. H., autor do livro “A Byte of Python”, avisando que o texto foi atualizado para contemplar as mudanças que virão com o Python 3. O aviso foi endereçado a mim porque, há algum tempo, fui a primeira pessoa a se voluntariar para traduzir a obra para o Português Brasileiro. Na época, cheguei a abrir o projeto de tradução para o público, mas ainda assim o trabalho evoluiu devagar. Acredito que o processo de tradução ficou mais complicado que o necessário, o que deve ter afugentado algumas pessoas. Algum tempo depois, Samuel Dias Neto tomou a dianteira e fez um ótimo trabalho, disponibilizando a tradução completa do livro.
Dessa vez, a nova versão do livro foi disponibilizada originalmente em formato de wiki, o que vai facilitar o processo colaborativo de tradução para diferentes idiomas. Ainda pensando nisso, o autor também modificou a licença, que continua Creative Commons, mas ficou ainda menos restritiva, passando de Attribution Non-commercial Share Alike (by-nc-sa) para Attribution Share Alike (by-sa).
E onde eu quero chegar?
Como trata-se de um texto voltado principalmente para iniciantes absolutos tanto em Python quanto em programação, nunca é demais tê-lo disponível em nosso idioma. Para isso, vamos aproveitar a proximidade da chegada de Python 3 e tentar (novamente) traduzir o livro. Dessa vez, vou tentar utilizar a abordagem mais simples possível, apenas para dar visibilidade aos voluntários sobre quem está traduzindo/revisando o quê.
Como contribuir com a tradução
Bastam três passos simples:
- Ter uma conta no Google para poder editar a planilha de controle
- Mandar um email para abop-ptbr (at) rodrigoamaral (dot) net, para que eu possa dar permissão de escrita na planilha
- Escolher um ou mais capítulos para traduzir ou revisar, colocando seu nome na coluna correspondente e editando a coluna de status para indicar a situação atual do capítulo
Depois, é só criar uma conta no wiki seguir o Translation Howto, acessar o índice da tradução em português brasileiro, clicar no capítulo desejado e colocar a mão na massa, lembrando sempre de atualizar na planilha o status do capítulo quando o trabalho estiver terminado.
Preparar… Fogo! Apontar…
Simples assim. A idéia é ir ajustando o projeto da tradução de acordo com as necessidades que surgirem. Para isso, conto com a colaboração de quem já tenha experiência em outras traduções para contribuir com dicas e sugestões, que poderão ser enviadas para o email acima ou postadas nos aqui nos comentários. O mesmo vale para as dúvidas.
Bom final de semana a todos!
Leia também
16. 08.
A natureza maleável do software muitas vezes traz a sensação de que ele pode ser produzido quase que instantaneamente. Embora esse sentimento seja justificável, escrever software de qualidade, para durar o tempo necessário para agregar valor para seus usuários, leva tempo. Às vezes mais do que todas as partes interessadas desejariam.
Independente de qual seja a definição de pronto da equipe de desenvolvimento, a construção de cada parte do software deve demorar o tempo suficiente para satisfazê-la. Um determinado time de desenvolvimento, por exemplo, poderia adotar a seguinte convenção para considerar que uma funcionalidade está pronta:
- Testes unitários e de integração realizados
- Deploy em servidor de demonstração/homologação
- Funcionalidade pronta para testes de aceitação
Mesmo com poucos itens, a lista acima requer uma boa dose de esforço para se alcançar. Na verdade, em muitos casos é comum aceitar como “pronta” uma funcionalidade que acabou de ser codificada. Tal prática é nociva para qualquer processo de desenvolvimento, uma vez que, além de comprometer a qualidade do produto, impossibilita a correta medição de esforço e prejudica as estimativas para projetos futuros.
Os métodos ágeis prevêem algumas práticas e princípios para disciplinar esse aspecto do desenvolvimento. Ao definir iterações curtas, na verdade estamos tentando garantir que o escopo para a iteração seja cuidadosamente escolhido, de modo a forçar a decomposição em atividades atômicas o suficiente garantir que cada uma seja executada por completo. Ao trazer o cliente para perto da equipe, facilitamos sua compreensão de que é importante que todos os passos previstos para completar uma funcionalidade sejam realizados na íntegra.
Ou seja, o produto estará pronto quando estiver pronto.
Os textos e livros a seguir discorrem com mais detalhes sobre o assunto:
- Building a definition of done
- Cuidando para o que o software não apodreça
- Scrum and XP from the trenches
- The Pragmatic Programmer
Leia também
9. 08.
Nos dias 18, 19 e 20 de setembro acontecerá a quarta edição da PyConBrasil, o maior evento brasileiro da comunidade Python. Este ano, o encontro será sediado na Universidade Veiga de Almeida, no Rio de Janeiro. Durante os três dias, várias palestras sobre diversos temas do mundo Python serão ministradas por grandes nomes da comunidade brasileira. É esperada também a ilustre presença de Bruce Eckel. Infelizmente, será mais um ano em que não poderei me deslocar até o evento, mas meu planejamento para a PyConBrasil 2009 começa desde já!
Informações Importantes
Mais detalhes podem ser encontrados no site do evento.
Leia também
2. 08.
A internet proporcionou uma ampliação do potencial de difusão de conhecimento sem precedentes na história. Nos dias de hoje, é virtualmente impossível que até mesmo o aspecto mais obscuro de qualquer assunto não possua referências na rede. Ainda assim, muitas vezes existe a necessidade de buscar ajuda e tirar dúvidas em comunidades, fóruns, listas de discussão ou salas de chat.
No entanto, especialmente em fóruns técnicos, é necessário adotar a postura adequada para que as dúvidas tenham chance de ser resolvidas por mais pessoas. É justamente por se tratar de pessoas – e não de máquinas – que a abordagem deve facilitar a vida de quem vai responder. Para isso, a pergunta precisa ter algumas características fundamentais:
- Detalhes do que se está tentando fazer ou do problema a ser resolvido. A menos que a pessoa esteja fisicamente a seu lado, não há como adivinhar detalhes como configuração de hardware, sistema operacional utilizado, versão dos aplicativos ou linguagens, entre outros aspectos que podem fazer toda a diferença entre uma resposta precisa, uma resposta vaga ou resposta alguma. Além disso, evite esconder seu código. Acredite: existem mais chances de você ganhar duas vezes na mega sena acumulada do que as de seu código ser inédito.
- Descrição pormenorizada do que está dando errado. Muitas vezes o próprio erro fornece indicações de como resolvê-lo. É comum vermos frases como “tentei executar o trecho de código X, mas deu erro”. Tudo bem, mas que tipo de erro? O que aconteceu? Havia alguma mensagem?
- Indicação do resultado esperado. Não é raro tentarmos resolver um problema pelo caminho mais difícil simplesmente por não saber que havia uma alternativa mais fácil. Se você concentra sua pergunta em “como estou fazendo” ao invés de “o que eu preciso obter”, pode estar perdendo uma chance de economizar tempo e de aprender algo novo.
- Identificação de quem está perguntando. Essa talvez não seja tão fundamental assim, mas considero importante do ponto de vista de humanizar a interação, principalmente quando se está em um meio profissional. Afinal, na internet ninguém sabe que você é um cachorro.
Há alguns anos, Eric Raymond escreveu um artigo chamado How To Ask Questions The Smart Way. Nele, o ilustre programador detalha esses e outros pontos importantes na hora de perguntar. O artigo também está disponível em português brasileiro. Outra boa fonte de dicas é o wiki da comunidade Python Brasil, na página AntesDePerguntar. Apesar de dar ênfase a perguntas para a Python Brasil, os princípios apresentados se aplicam a qualquer comunidade técnica.
Em suma, é primordial ter respeito pelo tempo alheio. Embora a maioria das pessoas tenha boa vontade para ajudar, elas o fazem voluntariamente e, assim como você, também têm seus compromissos. Além disso, bom senso, bons modos e humildade para acatar as orientações também contam pontos na hora de obter boas respostas. Afinal, só pergunta quem ainda não sabe e só se aprende perguntando.
Leia também
8. 07.
Há algum tempo a Sun contratou dois pythonistas renomados para aproximá-la da linguagem. Uma conseqüência natural dessa aproximação seria o suporte a Python em sua IDE NetBeans . Na verdade, a iniciativa já vinha de antes do recrutamento de Ted Leung e Frank Wierzbicki . O projeto NBPython , iniciado por Allan Davis , ganhou o auxílio dos dois novos colaboradores e uma versão inicial já está disponível para quem quiser testar. Por enquanto, o plugin só funciona em nightly builds , já que está em fase inicial de desenvolvimento.
Outra boa notícia vinda da Sun é o lançamento de seu Python Developer Center . O site ainda tem pouco conteúdo, mas não deixa de ser mais uma oportunidade de divulgar Python e seus frameworks para um público que, via de regra, ainda não despertou para o fato de que existe vida além do Java.
Referência: Python in NetBeans: NBPython
Leia também
3. 06.
O programa foi alterado para contemplar as modificações realizadas no site da Bovespa, que tinham inutilizado a versão anterior. Espero que seja de alguma utilidade para quem acompanha a Bolsa. Em breve pretendo soltar um novo release contendo também uma nova versão da interface gráfica, com mais funcionalidades. Postem suas críticas, dúvidas e sugestões nos comentários.
Download: bovespa-utils-0.0.2.tar.gz
Leia também
6. 05.
Google apresentou ontem alguns novos incrementos de funcionalidade ao seu Google Reader . Particularmente, um dos novos recursos vinha fazendo muita falta: a possibilidade de anexar uma nota pessoal a um item compartilhado. Além disso, agora também é possível:
- Compartilhar um item sem a necessidade de assinar o feed previamente, através do bookmarklet Note in Reader , encontrado na seção "Your stuff > Notes"
- Postar uma nota sem anexá-la a algum item
- Personalizar a página de itens compartilhados
Mais detalhes sobre as mudanças podem ser conferidos em Share anything. Anytime. Anywhere.
Rodrigo Amaral